Index: cfe/trunk/docs/LibFormat.rst
===================================================================
--- cfe/trunk/docs/LibFormat.rst
+++ cfe/trunk/docs/LibFormat.rst
@@ -44,11 +44,11 @@
 
 .. code-block:: c++
 
-  /// \brief Returns a format style complying with the LLVM coding standards:
+  /// Returns a format style complying with the LLVM coding standards:
   /// http://llvm.org/docs/CodingStandards.html.
   FormatStyle getLLVMStyle();
 
-  /// \brief Returns a format style complying with Google's C++ style guide:
+  /// Returns a format style complying with Google's C++ style guide:
   /// http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml.
   FormatStyle getGoogleStyle();
 
Index: cfe/trunk/docs/doxygen.cfg.in
===================================================================
--- cfe/trunk/docs/doxygen.cfg.in
+++ cfe/trunk/docs/doxygen.cfg.in
@@ -174,7 +174,7 @@
 # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
 # line (until the first dot) of a Qt-style comment as the brief description. If
 # set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
+# requiring an explicit command for a brief description.)
 # The default value is: NO.
 
 QT_AUTOBRIEF           = YES
Index: cfe/trunk/include/clang-c/BuildSystem.h
===================================================================
--- cfe/trunk/include/clang-c/BuildSystem.h
+++ cfe/trunk/include/clang-c/BuildSystem.h
@@ -28,19 +28,19 @@
  */
 
 /**
- * \brief Return the timestamp for use with Clang's
+ * Return the timestamp for use with Clang's
  * \c -fbuild-session-timestamp= option.
  */
 CINDEX_LINKAGE unsigned long long clang_getBuildSessionTimestamp(void);
 
 /**
- * \brief Object encapsulating information about overlaying virtual
+ * Object encapsulating information about overlaying virtual
  * file/directories over the real file system.
  */
 typedef struct CXVirtualFileOverlayImpl *CXVirtualFileOverlay;
 
 /**
- * \brief Create a \c CXVirtualFileOverlay object.
+ * Create a \c CXVirtualFileOverlay object.
  * Must be disposed with \c clang_VirtualFileOverlay_dispose().
  *
  * \param options is reserved, always pass 0.
@@ -49,7 +49,7 @@
 clang_VirtualFileOverlay_create(unsigned options);
 
 /**
- * \brief Map an absolute virtual file path to an absolute real one.
+ * Map an absolute virtual file path to an absolute real one.
  * The virtual path must be canonicalized (not contain "."/"..").
  * \returns 0 for success, non-zero to indicate an error.
  */
@@ -59,7 +59,7 @@
                                         const char *realPath);
 
 /**
- * \brief Set the case sensitivity for the \c CXVirtualFileOverlay object.
+ * Set the case sensitivity for the \c CXVirtualFileOverlay object.
  * The \c CXVirtualFileOverlay object is case-sensitive by default, this
  * option can be used to override the default.
  * \returns 0 for success, non-zero to indicate an error.
@@ -69,7 +69,7 @@
 											int caseSensitive);
 
 /**
- * \brief Write out the \c CXVirtualFileOverlay object to a char buffer.
+ * Write out the \c CXVirtualFileOverlay object to a char buffer.
  *
  * \param options is reserved, always pass 0.
  * \param out_buffer_ptr pointer to receive the buffer pointer, which should be
@@ -83,7 +83,7 @@
                                        unsigned *out_buffer_size);
 
 /**
- * \brief free memory allocated by libclang, such as the buffer returned by
+ * free memory allocated by libclang, such as the buffer returned by
  * \c CXVirtualFileOverlay() or \c clang_ModuleMapDescriptor_writeToBuffer().
  *
  * \param buffer memory pointer to free.
@@ -91,17 +91,17 @@
 CINDEX_LINKAGE void clang_free(void *buffer);
 
 /**
- * \brief Dispose a \c CXVirtualFileOverlay object.
+ * Dispose a \c CXVirtualFileOverlay object.
  */
 CINDEX_LINKAGE void clang_VirtualFileOverlay_dispose(CXVirtualFileOverlay);
 
 /**
- * \brief Object encapsulating information about a module.map file.
+ * Object encapsulating information about a module.map file.
  */
 typedef struct CXModuleMapDescriptorImpl *CXModuleMapDescriptor;
 
 /**
- * \brief Create a \c CXModuleMapDescriptor object.
+ * Create a \c CXModuleMapDescriptor object.
  * Must be disposed with \c clang_ModuleMapDescriptor_dispose().
  *
  * \param options is reserved, always pass 0.
@@ -110,7 +110,7 @@
 clang_ModuleMapDescriptor_create(unsigned options);
 
 /**
- * \brief Sets the framework module name that the module.map describes.
+ * Sets the framework module name that the module.map describes.
  * \returns 0 for success, non-zero to indicate an error.
  */
 CINDEX_LINKAGE enum CXErrorCode
@@ -118,7 +118,7 @@
                                                  const char *name);
 
 /**
- * \brief Sets the umbrealla header name that the module.map describes.
+ * Sets the umbrealla header name that the module.map describes.
  * \returns 0 for success, non-zero to indicate an error.
  */
 CINDEX_LINKAGE enum CXErrorCode
@@ -126,7 +126,7 @@
                                             const char *name);
 
 /**
- * \brief Write out the \c CXModuleMapDescriptor object to a char buffer.
+ * Write out the \c CXModuleMapDescriptor object to a char buffer.
  *
  * \param options is reserved, always pass 0.
  * \param out_buffer_ptr pointer to receive the buffer pointer, which should be
@@ -140,7 +140,7 @@
                                        unsigned *out_buffer_size);
 
 /**
- * \brief Dispose a \c CXModuleMapDescriptor object.
+ * Dispose a \c CXModuleMapDescriptor object.
  */
 CINDEX_LINKAGE void clang_ModuleMapDescriptor_dispose(CXModuleMapDescriptor);
 
Index: cfe/trunk/include/clang-c/CXCompilationDatabase.h
===================================================================
--- cfe/trunk/include/clang-c/CXCompilationDatabase.h
+++ cfe/trunk/include/clang-c/CXCompilationDatabase.h
@@ -38,7 +38,7 @@
 typedef void * CXCompilationDatabase;
 
 /**
- * \brief Contains the results of a search in the compilation database
+ * Contains the results of a search in the compilation database
  *
  * When searching for the compile command for a file, the compilation db can
  * return several commands, as the file may have been compiled with
@@ -49,28 +49,28 @@
 typedef void * CXCompileCommands;
 
 /**
- * \brief Represents the command line invocation to compile a specific file.
+ * Represents the command line invocation to compile a specific file.
  */
 typedef void * CXCompileCommand;
 
 /**
- * \brief Error codes for Compilation Database
+ * Error codes for Compilation Database
  */
 typedef enum  {
   /*
-   * \brief No error occurred
+   * No error occurred
    */
   CXCompilationDatabase_NoError = 0,
 
   /*
-   * \brief Database can not be loaded
+   * Database can not be loaded
    */
   CXCompilationDatabase_CanNotLoadDatabase = 1
 
 } CXCompilationDatabase_Error;
 
 /**
- * \brief Creates a compilation database from the database found in directory
+ * Creates a compilation database from the database found in directory
  * buildDir. For example, CMake can output a compile_commands.json which can
  * be used to build the database.
  *
@@ -81,13 +81,13 @@
                                         CXCompilationDatabase_Error *ErrorCode);
 
 /**
- * \brief Free the given compilation database
+ * Free the given compilation database
  */
 CINDEX_LINKAGE void
 clang_CompilationDatabase_dispose(CXCompilationDatabase);
 
 /**
- * \brief Find the compile commands used for a file. The compile commands
+ * Find the compile commands used for a file. The compile commands
  * must be freed by \c clang_CompileCommands_dispose.
  */
 CINDEX_LINKAGE CXCompileCommands
@@ -95,24 +95,24 @@
                                              const char *CompleteFileName);
 
 /**
- * \brief Get all the compile commands in the given compilation database.
+ * Get all the compile commands in the given compilation database.
  */
 CINDEX_LINKAGE CXCompileCommands
 clang_CompilationDatabase_getAllCompileCommands(CXCompilationDatabase);
 
 /**
- * \brief Free the given CompileCommands
+ * Free the given CompileCommands
  */
 CINDEX_LINKAGE void clang_CompileCommands_dispose(CXCompileCommands);
 
 /**
- * \brief Get the number of CompileCommand we have for a file
+ * Get the number of CompileCommand we have for a file
  */
 CINDEX_LINKAGE unsigned
 clang_CompileCommands_getSize(CXCompileCommands);
 
 /**
- * \brief Get the I'th CompileCommand for a file
+ * Get the I'th CompileCommand for a file
  *
  * Note : 0 <= i < clang_CompileCommands_getSize(CXCompileCommands)
  */
@@ -120,26 +120,26 @@
 clang_CompileCommands_getCommand(CXCompileCommands, unsigned I);
 
 /**
- * \brief Get the working directory where the CompileCommand was executed from
+ * Get the working directory where the CompileCommand was executed from
  */
 CINDEX_LINKAGE CXString
 clang_CompileCommand_getDirectory(CXCompileCommand);
 
 /**
- * \brief Get the filename associated with the CompileCommand.
+ * Get the filename associated with the CompileCommand.
  */
 CINDEX_LINKAGE CXString
 clang_CompileCommand_getFilename(CXCompileCommand);
 
 /**
- * \brief Get the number of arguments in the compiler invocation.
+ * Get the number of arguments in the compiler invocation.
  *
  */
 CINDEX_LINKAGE unsigned
 clang_CompileCommand_getNumArgs(CXCompileCommand);
 
 /**
- * \brief Get the I'th argument value in the compiler invocations
+ * Get the I'th argument value in the compiler invocations
  *
  * Invariant :
  *  - argument 0 is the compiler executable
@@ -148,19 +148,19 @@
 clang_CompileCommand_getArg(CXCompileCommand, unsigned I);
 
 /**
- * \brief Get the number of source mappings for the compiler invocation.
+ * Get the number of source mappings for the compiler invocation.
  */
 CINDEX_LINKAGE unsigned
 clang_CompileCommand_getNumMappedSources(CXCompileCommand);
 
 /**
- * \brief Get the I'th mapped source path for the compiler invocation.
+ * Get the I'th mapped source path for the compiler invocation.
  */
 CINDEX_LINKAGE CXString
 clang_CompileCommand_getMappedSourcePath(CXCompileCommand, unsigned I);
 
 /**
- * \brief Get the I'th mapped source content for the compiler invocation.
+ * Get the I'th mapped source content for the compiler invocation.
  */
 CINDEX_LINKAGE CXString
 clang_CompileCommand_getMappedSourceContent(CXCompileCommand, unsigned I);
Index: cfe/trunk/include/clang-c/CXErrorCode.h
===================================================================
--- cfe/trunk/include/clang-c/CXErrorCode.h
+++ cfe/trunk/include/clang-c/CXErrorCode.h
@@ -21,19 +21,19 @@
 #endif
 
 /**
- * \brief Error codes returned by libclang routines.
+ * Error codes returned by libclang routines.
  *
  * Zero (\c CXError_Success) is the only error code indicating success.  Other
  * error codes, including not yet assigned non-zero values, indicate errors.
  */
 enum CXErrorCode {
   /**
-   * \brief No error.
+   * No error.
    */
   CXError_Success = 0,
 
   /**
-   * \brief A generic error code, no further details are available.
+   * A generic error code, no further details are available.
    *
    * Errors of this kind can get their own specific error codes in future
    * libclang versions.
@@ -41,18 +41,18 @@
   CXError_Failure = 1,
 
   /**
-   * \brief libclang crashed while performing the requested operation.
+   * libclang crashed while performing the requested operation.
    */
   CXError_Crashed = 2,
 
   /**
-   * \brief The function detected that the arguments violate the function
+   * The function detected that the arguments violate the function
    * contract.
    */
   CXError_InvalidArguments = 3,
 
   /**
-   * \brief An AST deserialization error has occurred.
+   * An AST deserialization error has occurred.
    */
   CXError_ASTReadError = 4
 };
Index: cfe/trunk/include/clang-c/CXString.h
===================================================================
--- cfe/trunk/include/clang-c/CXString.h
+++ cfe/trunk/include/clang-c/CXString.h
@@ -28,7 +28,7 @@
  */
 
 /**
- * \brief A character string.
+ * A character string.
  *
  * The \c CXString type is used to return strings from the interface when
  * the ownership of that string might differ from one call to the next.
@@ -46,17 +46,17 @@
 } CXStringSet;
 
 /**
- * \brief Retrieve the character data associated with the given string.
+ * Retrieve the character data associated with the given string.
  */
 CINDEX_LINKAGE const char *clang_getCString(CXString string);
 
 /**
- * \brief Free the given string.
+ * Free the given string.
  */
 CINDEX_LINKAGE void clang_disposeString(CXString string);
 
 /**
- * \brief Free the given string set.
+ * Free the given string set.
  */
 CINDEX_LINKAGE void clang_disposeStringSet(CXStringSet *set);
 
Index: cfe/trunk/include/clang-c/Documentation.h
===================================================================
--- cfe/trunk/include/clang-c/Documentation.h
+++ cfe/trunk/include/clang-c/Documentation.h
@@ -32,7 +32,7 @@
  */
 
 /**
- * \brief A parsed comment.
+ * A parsed comment.
  */
 typedef struct {
   const void *ASTNode;
@@ -40,38 +40,38 @@
 } CXComment;
 
 /**
- * \brief Given a cursor that represents a documentable entity (e.g.,
+ * Given a cursor that represents a documentable entity (e.g.,
  * declaration), return the associated parsed comment as a
  * \c CXComment_FullComment AST node.
  */
 CINDEX_LINKAGE CXComment clang_Cursor_getParsedComment(CXCursor C);
 
 /**
- * \brief Describes the type of the comment AST node (\c CXComment).  A comment
+ * Describes the type of the comment AST node (\c CXComment).  A comment
  * node can be considered block content (e. g., paragraph), inline content
  * (plain text) or neither (the root AST node).
  */
 enum CXCommentKind {
   /**
-   * \brief Null comment.  No AST node is constructed at the requested location
+   * Null comment.  No AST node is constructed at the requested location
    * because there is no text or a syntax error.
    */
   CXComment_Null = 0,
 
   /**
-   * \brief Plain text.  Inline content.
+   * Plain text.  Inline content.
    */
   CXComment_Text = 1,
 
   /**
-   * \brief A command with word-like arguments that is considered inline content.
+   * A command with word-like arguments that is considered inline content.
    *
    * For example: \\c command.
    */
   CXComment_InlineCommand = 2,
 
   /**
-   * \brief HTML start tag with attributes (name-value pairs).  Considered
+   * HTML start tag with attributes (name-value pairs).  Considered
    * inline content.
    *
    * For example:
@@ -82,7 +82,7 @@
   CXComment_HTMLStartTag = 3,
 
   /**
-   * \brief HTML end tag.  Considered inline content.
+   * HTML end tag.  Considered inline content.
    *
    * For example:
    * \verbatim
@@ -92,19 +92,19 @@
   CXComment_HTMLEndTag = 4,
 
   /**
-   * \brief A paragraph, contains inline comment.  The paragraph itself is
+   * A paragraph, contains inline comment.  The paragraph itself is
    * block content.
    */
   CXComment_Paragraph = 5,
 
   /**
-   * \brief A command that has zero or more word-like arguments (number of
+   * A command that has zero or more word-like arguments (number of
    * word-like arguments depends on command name) and a paragraph as an
    * argument.  Block command is block content.
    *
    * Paragraph argument is also a child of the block command.
    *
-   * For example: \\brief has 0 word-like arguments and a paragraph argument.
+   * For example: \has 0 word-like arguments and a paragraph argument.
    *
    * AST nodes of special kinds that parser knows about (e. g., \\param
    * command) have their own node kinds.
@@ -112,7 +112,7 @@
   CXComment_BlockCommand = 6,
 
   /**
-   * \brief A \\param or \\arg command that describes the function parameter
+   * A \\param or \\arg command that describes the function parameter
    * (name, passing direction, description).
    *
    * For example: \\param [in] ParamName description.
@@ -120,7 +120,7 @@
   CXComment_ParamCommand = 7,
 
   /**
-   * \brief A \\tparam command that describes a template parameter (name and
+   * A \\tparam command that describes a template parameter (name and
    * description).
    *
    * For example: \\tparam T description.
@@ -128,7 +128,7 @@
   CXComment_TParamCommand = 8,
 
   /**
-   * \brief A verbatim block command (e. g., preformatted code).  Verbatim
+   * A verbatim block command (e. g., preformatted code).  Verbatim
    * block has an opening and a closing command and contains multiple lines of
    * text (\c CXComment_VerbatimBlockLine child nodes).
    *
@@ -140,67 +140,67 @@
   CXComment_VerbatimBlockCommand = 9,
 
   /**
-   * \brief A line of text that is contained within a
+   * A line of text that is contained within a
    * CXComment_VerbatimBlockCommand node.
    */
   CXComment_VerbatimBlockLine = 10,
 
   /**
-   * \brief A verbatim line command.  Verbatim line has an opening command,
+   * A verbatim line command.  Verbatim line has an opening command,
    * a single line of text (up to the newline after the opening command) and
    * has no closing command.
    */
   CXComment_VerbatimLine = 11,
 
   /**
-   * \brief A full comment attached to a declaration, contains block content.
+   * A full comment attached to a declaration, contains block content.
    */
   CXComment_FullComment = 12
 };
 
 /**
- * \brief The most appropriate rendering mode for an inline command, chosen on
+ * The most appropriate rendering mode for an inline command, chosen on
  * command semantics in Doxygen.
  */
 enum CXCommentInlineCommandRenderKind {
   /**
-   * \brief Command argument should be rendered in a normal font.
+   * Command argument should be rendered in a normal font.
    */
   CXCommentInlineCommandRenderKind_Normal,
 
   /**
-   * \brief Command argument should be rendered in a bold font.
+   * Command argument should be rendered in a bold font.
    */
   CXCommentInlineCommandRenderKind_Bold,
 
   /**
-   * \brief Command argument should be rendered in a monospaced font.
+   * Command argument should be rendered in a monospaced font.
    */
   CXCommentInlineCommandRenderKind_Monospaced,
 
   /**
-   * \brief Command argument should be rendered emphasized (typically italic
+   * Command argument should be rendered emphasized (typically italic
    * font).
    */
   CXCommentInlineCommandRenderKind_Emphasized
 };
 
 /**
- * \brief Describes parameter passing direction for \\param or \\arg command.
+ * Describes parameter passing direction for \\param or \\arg command.
  */
 enum CXCommentParamPassDirection {
   /**
-   * \brief The parameter is an input parameter.
+   * The parameter is an input parameter.
    */
   CXCommentParamPassDirection_In,
 
   /**
-   * \brief The parameter is an output parameter.
+   * The parameter is an output parameter.
    */
   CXCommentParamPassDirection_Out,
 
   /**
-   * \brief The parameter is an input and output parameter.
+   * The parameter is an input and output parameter.
    */
   CXCommentParamPassDirection_InOut
 };
@@ -230,7 +230,7 @@
 CXComment clang_Comment_getChild(CXComment Comment, unsigned ChildIdx);
 
 /**
- * \brief A \c CXComment_Paragraph node is considered whitespace if it contains
+ * A \c CXComment_Paragraph node is considered whitespace if it contains
  * only \c CXComment_Text nodes that are empty or whitespace.
  *
  * Other AST nodes (except \c CXComment_Paragraph and \c CXComment_Text) are
@@ -487,7 +487,7 @@
 CINDEX_LINKAGE CXString clang_VerbatimLineComment_getText(CXComment Comment);
 
 /**
- * \brief Convert an HTML tag AST node to string.
+ * Convert an HTML tag AST node to string.
  *
  * \param Comment a \c CXComment_HTMLStartTag or \c CXComment_HTMLEndTag AST
  * node.
@@ -497,13 +497,13 @@
 CINDEX_LINKAGE CXString clang_HTMLTagComment_getAsString(CXComment Comment);
 
 /**
- * \brief Convert a given full parsed comment to an HTML fragment.
+ * Convert a given full parsed comment to an HTML fragment.
  *
  * Specific details of HTML layout are subject to change.  Don't try to parse
  * this HTML back into an AST, use other APIs instead.
  *
  * Currently the following CSS classes are used:
- * \li "para-brief" for \\brief paragraph and equivalent commands;
+ * \li "para-brief" for \paragraph and equivalent commands;
  * \li "para-returns" for \\returns paragraph and equivalent commands;
  * \li "word-returns" for the "Returns" word in \\returns paragraph.
  *
@@ -530,7 +530,7 @@
 CINDEX_LINKAGE CXString clang_FullComment_getAsHTML(CXComment Comment);
 
 /**
- * \brief Convert a given full parsed comment to an XML document.
+ * Convert a given full parsed comment to an XML document.
  *
  * A Relax NG schema for the XML can be found in comment-xml-schema.rng file
  * inside clang source tree.
Index: cfe/trunk/include/clang-c/Index.h
===================================================================
--- cfe/trunk/include/clang-c/Index.h
+++ cfe/trunk/include/clang-c/Index.h
@@ -24,7 +24,7 @@
 #include "clang-c/BuildSystem.h"
 
 /**
- * \brief The version constants for the libclang API.
+ * The version constants for the libclang API.
  * CINDEX_VERSION_MINOR should increase when there are API additions.
  * CINDEX_VERSION_MAJOR is intended for "major" source/ABI breaking changes.
  *
@@ -75,30 +75,30 @@
  */
 
 /**
- * \brief An "index" that consists of a set of translation units that would
+ * An "index" that consists of a set of translation units that would
  * typically be linked together into an executable or library.
  */
 typedef void *CXIndex;
 
 /**
- * \brief An opaque type representing target information for a given translation
+ * An opaque type representing target information for a given translation
  * unit.
  */
 typedef struct CXTargetInfoImpl *CXTargetInfo;
 
 /**
- * \brief A single translation unit, which resides in an index.
+ * A single translation unit, which resides in an index.
  */
 typedef struct CXTranslationUnitImpl *CXTranslationUnit;
 
 /**
- * \brief Opaque pointer representing client data that will be passed through
+ * Opaque pointer representing client data that will be passed through
  * to various callbacks and visitors.
  */
 typedef void *CXClientData;
 
 /**
- * \brief Provides the contents of a file that has not yet been saved to disk.
+ * Provides the contents of a file that has not yet been saved to disk.
  *
  * Each CXUnsavedFile instance provides the name of a file on the
  * system along with the current contents of that file that have not
@@ -106,66 +106,66 @@
  */
 struct CXUnsavedFile {
   /**
-   * \brief The file whose contents have not yet been saved.
+   * The file whose contents have not yet been saved.
    *
    * This file must already exist in the file system.
    */
   const char *Filename;
 
   /**
-   * \brief A buffer containing the unsaved contents of this file.
+   * A buffer containing the unsaved contents of this file.
    */
   const char *Contents;
 
   /**
-   * \brief The length of the unsaved contents of this buffer.
+   * The length of the unsaved contents of this buffer.
    */
   unsigned long Length;
 };
 
 /**
- * \brief Describes the availability of a particular entity, which indicates
+ * Describes the availability of a particular entity, which indicates
  * whether the use of this entity will result in a warning or error due to
  * it being deprecated or unavailable.
  */
 enum CXAvailabilityKind {
   /**
-   * \brief The entity is available.
+   * The entity is available.
    */
   CXAvailability_Available,
   /**
-   * \brief The entity is available, but has been deprecated (and its use is
+   * The entity is available, but has been deprecated (and its use is
    * not recommended).
    */
   CXAvailability_Deprecated,
   /**
-   * \brief The entity is not available; any use of it will be an error.
+   * The entity is not available; any use of it will be an error.
    */
   CXAvailability_NotAvailable,
   /**
-   * \brief The entity is available, but not accessible; any use of it will be
+   * The entity is available, but not accessible; any use of it will be
    * an error.
    */
   CXAvailability_NotAccessible
 };
 
 /**
- * \brief Describes a version number of the form major.minor.subminor.
+ * Describes a version number of the form major.minor.subminor.
  */
 typedef struct CXVersion {
   /**
-   * \brief The major version number, e.g., the '10' in '10.7.3'. A negative
+   * The major version number, e.g., the '10' in '10.7.3'. A negative
    * value indicates that there is no version number at all.
    */
   int Major;
   /**
-   * \brief The minor version number, e.g., the '7' in '10.7.3'. This value
+   * The minor version number, e.g., the '7' in '10.7.3'. This value
    * will be negative if no minor version number was provided, e.g., for 
    * version '10'.
    */
   int Minor;
   /**
-   * \brief The subminor version number, e.g., the '3' in '10.7.3'. This value
+   * The subminor version number, e.g., the '3' in '10.7.3'. This value
    * will be negative if no minor or subminor version number was provided,
    * e.g., in version '10' or '10.7'.
    */
@@ -173,60 +173,60 @@
 } CXVersion;
 
 /**
- * \brief Describes the exception specification of a cursor.
+ * Describes the exception specification of a cursor.
  *
  * A negative value indicates that the cursor is not a function declaration.
  */
 enum CXCursor_ExceptionSpecificationKind {
 
   /**
-   * \brief The cursor has no exception specification.
+   * The cursor has no exception specification.
    */
   CXCursor_ExceptionSpecificationKind_None,
 
   /**
-   * \brief The cursor has exception specification throw()
+   * The cursor has exception specification throw()
    */
   CXCursor_ExceptionSpecificationKind_DynamicNone,
 
   /**
-   * \brief The cursor has exception specification throw(T1, T2)
+   * The cursor has exception specification throw(T1, T2)
    */
   CXCursor_ExceptionSpecificationKind_Dynamic,
 
   /**
-   * \brief The cursor has exception specification throw(...).
+   * The cursor has exception specification throw(...).
    */
   CXCursor_ExceptionSpecificationKind_MSAny,
 
   /**
-   * \brief The cursor has exception specification basic noexcept.
+   * The cursor has exception specification basic noexcept.
    */
   CXCursor_ExceptionSpecificationKind_BasicNoexcept,
 
   /**
-   * \brief The cursor has exception specification computed noexcept.
+   * The cursor has exception specification computed noexcept.
    */
   CXCursor_ExceptionSpecificationKind_ComputedNoexcept,
 
   /**
-   * \brief The exception specification has not yet been evaluated.
+   * The exception specification has not yet been evaluated.
    */
   CXCursor_ExceptionSpecificationKind_Unevaluated,
 
   /**
-   * \brief The exception specification has not yet been instantiated.
+   * The exception specification has not yet been instantiated.
    */
   CXCursor_ExceptionSpecificationKind_Uninstantiated,
 
   /**
-   * \brief The exception specification has not been parsed yet.
+   * The exception specification has not been parsed yet.
    */
   CXCursor_ExceptionSpecificationKind_Unparsed
 };
 
 /**
- * \brief Provides a shared context for creating translation units.
+ * Provides a shared context for creating translation units.
  *
  * It provides two options:
  *
@@ -269,7 +269,7 @@
                                          int displayDiagnostics);
 
 /**
- * \brief Destroy the given index.
+ * Destroy the given index.
  *
  * The index must not be destroyed until all of the translation units created
  * within that index have been destroyed.
@@ -278,12 +278,12 @@
 
 typedef enum {
   /**
-   * \brief Used to indicate that no special CXIndex options are needed.
+   * Used to indicate that no special CXIndex options are needed.
    */
   CXGlobalOpt_None = 0x0,
 
   /**
-   * \brief Used to indicate that threads that libclang creates for indexing
+   * Used to indicate that threads that libclang creates for indexing
    * purposes should use background priority.
    *
    * Affects #clang_indexSourceFile, #clang_indexTranslationUnit,
@@ -292,7 +292,7 @@
   CXGlobalOpt_ThreadBackgroundPriorityForIndexing = 0x1,
 
   /**
-   * \brief Used to indicate that threads that libclang creates for editing
+   * Used to indicate that threads that libclang creates for editing
    * purposes should use background priority.
    *
    * Affects #clang_reparseTranslationUnit, #clang_codeCompleteAt,
@@ -301,7 +301,7 @@
   CXGlobalOpt_ThreadBackgroundPriorityForEditing = 0x2,
 
   /**
-   * \brief Used to indicate that all threads that libclang creates should use
+   * Used to indicate that all threads that libclang creates should use
    * background priority.
    */
   CXGlobalOpt_ThreadBackgroundPriorityForAll =
@@ -311,7 +311,7 @@
 } CXGlobalOptFlags;
 
 /**
- * \brief Sets general options associated with a CXIndex.
+ * Sets general options associated with a CXIndex.
  *
  * For example:
  * \code
@@ -326,7 +326,7 @@
 CINDEX_LINKAGE void clang_CXIndex_setGlobalOptions(CXIndex, unsigned options);
 
 /**
- * \brief Gets the general options associated with a CXIndex.
+ * Gets the general options associated with a CXIndex.
  *
  * \returns A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags that
  * are associated with the given CXIndex object.
@@ -334,7 +334,7 @@
 CINDEX_LINKAGE unsigned clang_CXIndex_getGlobalOptions(CXIndex);
 
 /**
- * \brief Sets the invocation emission path option in a CXIndex.
+ * Sets the invocation emission path option in a CXIndex.
  *
  * The invocation emission path specifies a path which will contain log
  * files for certain libclang invocations. A null value (default) implies that
@@ -350,22 +350,22 @@
  */
 
 /**
- * \brief A particular source file that is part of a translation unit.
+ * A particular source file that is part of a translation unit.
  */
 typedef void *CXFile;
 
 /**
- * \brief Retrieve the complete file and path name of the given file.
+ * Retrieve the complete file and path name of the given file.
  */
 CINDEX_LINKAGE CXString clang_getFileName(CXFile SFile);
 
 /**
- * \brief Retrieve the last modification time of the given file.
+ * Retrieve the last modification time of the given file.
  */
 CINDEX_LINKAGE time_t clang_getFileTime(CXFile SFile);
 
 /**
- * \brief Uniquely identifies a CXFile, that refers to the same underlying file,
+ * Uniquely identifies a CXFile, that refers to the same underlying file,
  * across an indexing session.
  */
 typedef struct {
@@ -373,7 +373,7 @@
 } CXFileUniqueID;
 
 /**
- * \brief Retrieve the unique ID for the given \c file.
+ * Retrieve the unique ID for the given \c file.
  *
  * \param file the file to get the ID for.
  * \param outID stores the returned CXFileUniqueID.
@@ -383,7 +383,7 @@
 CINDEX_LINKAGE int clang_getFileUniqueID(CXFile file, CXFileUniqueID *outID);
 
 /**
- * \brief Determine whether the given header is guarded against
+ * Determine whether the given header is guarded against
  * multiple inclusions, either with the conventional
  * \#ifndef/\#define/\#endif macro guards or with \#pragma once.
  */
@@ -391,7 +391,7 @@
 clang_isFileMultipleIncludeGuarded(CXTranslationUnit tu, CXFile file);
 
 /**
- * \brief Retrieve a file handle within the given translation unit.
+ * Retrieve a file handle within the given translation unit.
  *
  * \param tu the translation unit
  *
@@ -404,7 +404,7 @@
                                     const char *file_name);
 
 /**
- * \brief Retrieve the buffer associated with the given file.
+ * Retrieve the buffer associated with the given file.
  *
  * \param tu the translation unit
  *
@@ -419,13 +419,13 @@
                                                  CXFile file, size_t *size);
 
 /**
- * \brief Returns non-zero if the \c file1 and \c file2 point to the same file,
+ * Returns non-zero if the \c file1 and \c file2 point to the same file,
  * or they are both NULL.
  */
 CINDEX_LINKAGE int clang_File_isEqual(CXFile file1, CXFile file2);
 
 /**
- * \brief Returns the real path name of \c file.
+ * Returns the real path name of \c file.
  *
  * An empty string may be returned. Use \c clang_getFileName() in that case.
  */
@@ -449,7 +449,7 @@
  */
 
 /**
- * \brief Identifies a specific source location within a translation
+ * Identifies a specific source location within a translation
  * unit.
  *
  * Use clang_getExpansionLocation() or clang_getSpellingLocation()
@@ -461,7 +461,7 @@
 } CXSourceLocation;
 
 /**
- * \brief Identifies a half-open character range in the source code.
+ * Identifies a half-open character range in the source code.
  *
  * Use clang_getRangeStart() and clang_getRangeEnd() to retrieve the
  * starting and end locations from a source range, respectively.
@@ -473,12 +473,12 @@
 } CXSourceRange;
 
 /**
- * \brief Retrieve a NULL (invalid) source location.
+ * Retrieve a NULL (invalid) source location.
  */
 CINDEX_LINKAGE CXSourceLocation clang_getNullLocation(void);
 
 /**
- * \brief Determine whether two source locations, which must refer into
+ * Determine whether two source locations, which must refer into
  * the same translation unit, refer to exactly the same point in the source
  * code.
  *
@@ -489,7 +489,7 @@
                                              CXSourceLocation loc2);
 
 /**
- * \brief Retrieves the source location associated with a given file/line/column
+ * Retrieves the source location associated with a given file/line/column
  * in a particular translation unit.
  */
 CINDEX_LINKAGE CXSourceLocation clang_getLocation(CXTranslationUnit tu,
@@ -497,7 +497,7 @@
                                                   unsigned line,
                                                   unsigned column);
 /**
- * \brief Retrieves the source location associated with a given character offset
+ * Retrieves the source location associated with a given character offset
  * in a particular translation unit.
  */
 CINDEX_LINKAGE CXSourceLocation clang_getLocationForOffset(CXTranslationUnit tu,
@@ -505,30 +505,30 @@
                                                            unsigned offset);
 
 /**
- * \brief Returns non-zero if the given source location is in a system header.
+ * Returns non-zero if the given source location is in a system header.
  */
 CINDEX_LINKAGE int clang_Location_isInSystemHeader(CXSourceLocation location);
 
 /**
- * \brief Returns non-zero if the given source location is in the main file of
+ * Returns non-zero if the given source location is in the main file of
  * the corresponding translation unit.
  */
 CINDEX_LINKAGE int clang_Location_isFromMainFile(CXSourceLocation location);
 
 /**
- * \brief Retrieve a NULL (invalid) source range.
+ * Retrieve a NULL (invalid) source range.
  */
 CINDEX_LINKAGE CXSourceRange clang_getNullRange(void);
 
 /**
- * \brief Retrieve a source range given the beginning and ending source
+ * Retrieve a source range given the beginning and ending source
  * locations.
  */
 CINDEX_LINKAGE CXSourceRange clang_getRange(CXSourceLocation begin,
                                             CXSourceLocation end);
 
 /**
- * \brief Determine whether two ranges are equivalent.
+ * Determine whether two ranges are equivalent.
  *
  * \returns non-zero if the ranges are the same, zero if they differ.
  */
@@ -536,12 +536,12 @@
                                           CXSourceRange range2);
 
 /**
- * \brief Returns non-zero if \p range is null.
+ * Returns non-zero if \p range is null.
  */
 CINDEX_LINKAGE int clang_Range_isNull(CXSourceRange range);
 
 /**
- * \brief Retrieve the file, line, column, and offset represented by
+ * Retrieve the file, line, column, and offset represented by
  * the given source location.
  *
  * If the location refers into a macro expansion, retrieves the
@@ -569,7 +569,7 @@
                                                unsigned *offset);
 
 /**
- * \brief Retrieve the file, line and column represented by the given source
+ * Retrieve the file, line and column represented by the given source
  * location, as specified in a # line directive.
  *
  * Example: given the following source code in a file somefile.c
@@ -614,7 +614,7 @@
                                               unsigned *column);
 
 /**
- * \brief Legacy API to retrieve the file, line, column, and offset represented
+ * Legacy API to retrieve the file, line, column, and offset represented
  * by the given source location.
  *
  * This interface has been replaced by the newer interface
@@ -628,7 +628,7 @@
                                                    unsigned *offset);
 
 /**
- * \brief Retrieve the file, line, column, and offset represented by
+ * Retrieve the file, line, column, and offset represented by
  * the given source location.
  *
  * If the location refers into a macro instantiation, return where the
@@ -656,7 +656,7 @@
                                               unsigned *offset);
 
 /**
- * \brief Retrieve the file, line, column, and offset represented by
+ * Retrieve the file, line, column, and offset represented by
  * the given source location.
  *
  * If the location refers into a macro expansion, return where the macro was
@@ -685,31 +685,31 @@
                                           unsigned *offset);
 
 /**
- * \brief Retrieve a source location representing the first character within a
+ * Retrieve a source location representing the first character within a
  * source range.
  */
 CINDEX_LINKAGE CXSourceLocation clang_getRangeStart(CXSourceRange range);
 
 /**
- * \brief Retrieve a source location representing the last character within a
+ * Retrieve a source location representing the last character within a
  * source range.
  */
 CINDEX_LINKAGE CXSourceLocation clang_getRangeEnd(CXSourceRange range);
 
 /**
- * \brief Identifies an array of ranges.
+ * Identifies an array of ranges.
  */
 typedef struct {
-  /** \brief The number of ranges in the \c ranges array. */
+  /** The number of ranges in the \c ranges array. */
   unsigned count;
   /**
-   * \brief An array of \c CXSourceRanges.
+   * An array of \c CXSourceRanges.
    */
   CXSourceRange *ranges;
 } CXSourceRangeList;
 
 /**
- * \brief Retrieve all ranges that were skipped by the preprocessor.
+ * Retrieve all ranges that were skipped by the preprocessor.
  *
  * The preprocessor will skip lines when they are surrounded by an
  * if/ifdef/ifndef directive whose condition does not evaluate to true.
@@ -718,7 +718,7 @@
                                                          CXFile file);
 
 /**
- * \brief Retrieve all ranges from all files that were skipped by the
+ * Retrieve all ranges from all files that were skipped by the
  * preprocessor.
  *
  * The preprocessor will skip lines when they are surrounded by an
@@ -727,7 +727,7 @@
 CINDEX_LINKAGE CXSourceRangeList *clang_getAllSkippedRanges(CXTranslationUnit tu);
 
 /**
- * \brief Destroy the given \c CXSourceRangeList.
+ * Destroy the given \c CXSourceRangeList.
  */
 CINDEX_LINKAGE void clang_disposeSourceRangeList(CXSourceRangeList *ranges);
 
@@ -742,34 +742,34 @@
  */
 
 /**
- * \brief Describes the severity of a particular diagnostic.
+ * Describes the severity of a particular diagnostic.
  */
 enum CXDiagnosticSeverity {
   /**
-   * \brief A diagnostic that has been suppressed, e.g., by a command-line
+   * A diagnostic that has been suppressed, e.g., by a command-line
    * option.
    */
   CXDiagnostic_Ignored = 0,
 
   /**
-   * \brief This diagnostic is a note that should be attached to the
+   * This diagnostic is a note that should be attached to the
    * previous (non-note) diagnostic.
    */
   CXDiagnostic_Note    = 1,
 
   /**
-   * \brief This diagnostic indicates suspicious code that may not be
+   * This diagnostic indicates suspicious code that may not be
    * wrong.
    */
   CXDiagnostic_Warning = 2,
 
   /**
-   * \brief This diagnostic indicates that the code is ill-formed.
+   * This diagnostic indicates that the code is ill-formed.
    */
   CXDiagnostic_Error   = 3,
 
   /**
-   * \brief This diagnostic indicates that the code is ill-formed such
+   * This diagnostic indicates that the code is ill-formed such
    * that future parser recovery is unlikely to produce useful
    * results.
    */
@@ -777,23 +777,23 @@
 };
 
 /**
- * \brief A single diagnostic, containing the diagnostic's severity,
+ * A single diagnostic, containing the diagnostic's severity,
  * location, text, source ranges, and fix-it hints.
  */
 typedef void *CXDiagnostic;
 
 /**
- * \brief A group of CXDiagnostics.
+ * A group of CXDiagnostics.
  */
 typedef void *CXDiagnosticSet;
   
 /**
- * \brief Determine the number of diagnostics in a CXDiagnosticSet.
+ * Determine the number of diagnostics in a CXDiagnosticSet.
  */
 CINDEX_LINKAGE unsigned clang_getNumDiagnosticsInSet(CXDiagnosticSet Diags);
 
 /**
- * \brief Retrieve a diagnostic associated with the given CXDiagnosticSet.
+ * Retrieve a diagnostic associated with the given CXDiagnosticSet.
  *
  * \param Diags the CXDiagnosticSet to query.
  * \param Index the zero-based diagnostic number to retrieve.
@@ -805,36 +805,36 @@
                                                      unsigned Index);  
 
 /**
- * \brief Describes the kind of error that occurred (if any) in a call to
+ * Describes the kind of error that occurred (if any) in a call to
  * \c clang_loadDiagnostics.
  */
 enum CXLoadDiag_Error {
   /**
-   * \brief Indicates that no error occurred.
+   * Indicates that no error occurred.
    */
   CXLoadDiag_None = 0,
   
   /**
-   * \brief Indicates that an unknown error occurred while attempting to
+   * Indicates that an unknown error occurred while attempting to
    * deserialize diagnostics.
    */
   CXLoadDiag_Unknown = 1,
   
   /**
-   * \brief Indicates that the file containing the serialized diagnostics
+   * Indicates that the file containing the serialized diagnostics
    * could not be opened.
    */
   CXLoadDiag_CannotLoad = 2,
   
   /**
-   * \brief Indicates that the serialized diagnostics file is invalid or
+   * Indicates that the serialized diagnostics file is invalid or
    * corrupt.
    */
   CXLoadDiag_InvalidFile = 3
 };
   
 /**
- * \brief Deserialize a set of diagnostics from a Clang diagnostics bitcode
+ * Deserialize a set of diagnostics from a Clang diagnostics bitcode
  * file.
  *
  * \param file The name of the file to deserialize.
@@ -851,12 +851,12 @@
                                                   CXString *errorString);
 
 /**
- * \brief Release a CXDiagnosticSet and all of its contained diagnostics.
+ * Release a CXDiagnosticSet and all of its contained diagnostics.
  */
 CINDEX_LINKAGE void clang_disposeDiagnosticSet(CXDiagnosticSet Diags);
 
 /**
- * \brief Retrieve the child diagnostics of a CXDiagnostic. 
+ * Retrieve the child diagnostics of a CXDiagnostic. 
  *
  * This CXDiagnosticSet does not need to be released by
  * clang_disposeDiagnosticSet.
@@ -864,13 +864,13 @@
 CINDEX_LINKAGE CXDiagnosticSet clang_getChildDiagnostics(CXDiagnostic D);
 
 /**
- * \brief Determine the number of diagnostics produced for the given
+ * Determine the number of diagnostics produced for the given
  * translation unit.
  */
 CINDEX_LINKAGE unsigned clang_getNumDiagnostics(CXTranslationUnit Unit);
 
 /**
- * \brief Retrieve a diagnostic associated with the given translation unit.
+ * Retrieve a diagnostic associated with the given translation unit.
  *
  * \param Unit the translation unit to query.
  * \param Index the zero-based diagnostic number to retrieve.
@@ -882,7 +882,7 @@
                                                 unsigned Index);
 
 /**
- * \brief Retrieve the complete set of diagnostics associated with a
+ * Retrieve the complete set of diagnostics associated with a
  *        translation unit.
  *
  * \param Unit the translation unit to query.
@@ -891,19 +891,19 @@
   clang_getDiagnosticSetFromTU(CXTranslationUnit Unit);  
 
 /**
- * \brief Destroy a diagnostic.
+ * Destroy a diagnostic.
  */
 CINDEX_LINKAGE void clang_disposeDiagnostic(CXDiagnostic Diagnostic);
 
 /**
- * \brief Options to control the display of diagnostics.
+ * Options to control the display of diagnostics.
  *
  * The values in this enum are meant to be combined to customize the
  * behavior of \c clang_formatDiagnostic().
  */
 enum CXDiagnosticDisplayOptions {
   /**
-   * \brief Display the source-location information where the
+   * Display the source-location information where the
    * diagnostic was located.
    *
    * When set, diagnostics will be prefixed by the file, line, and
@@ -918,7 +918,7 @@
   CXDiagnostic_DisplaySourceLocation = 0x01,
 
   /**
-   * \brief If displaying the source-location information of the
+   * If displaying the source-location information of the
    * diagnostic, also include the column number.
    *
    * This option corresponds to the clang flag \c -fshow-column.
@@ -926,7 +926,7 @@
   CXDiagnostic_DisplayColumn = 0x02,
 
   /**
-   * \brief If displaying the source-location information of the
+   * If displaying the source-location information of the
    * diagnostic, also include information about source ranges in a
    * machine-parsable format.
    *
@@ -936,7 +936,7 @@
   CXDiagnostic_DisplaySourceRanges = 0x04,
   
   /**
-   * \brief Display the option name associated with this diagnostic, if any.
+   * Display the option name associated with this diagnostic, if any.
    *
    * The option name displayed (e.g., -Wconversion) will be placed in brackets
    * after the diagnostic text. This option corresponds to the clang flag
@@ -945,7 +945,7 @@
   CXDiagnostic_DisplayOption = 0x08,
   
   /**
-   * \brief Display the category number associated with this diagnostic, if any.
+   * Display the category number associated with this diagnostic, if any.
    *
    * The category number is displayed within brackets after the diagnostic text.
    * This option corresponds to the clang flag 
@@ -954,7 +954,7 @@
   CXDiagnostic_DisplayCategoryId = 0x10,
 
   /**
-   * \brief Display the category name associated with this diagnostic, if any.
+   * Display the category name associated with this diagnostic, if any.
    *
    * The category name is displayed within brackets after the diagnostic text.
    * This option corresponds to the clang flag 
@@ -964,7 +964,7 @@
 };
 
 /**
- * \brief Format the given diagnostic in a manner that is suitable for display.
+ * Format the given diagnostic in a manner that is suitable for display.
  *
  * This routine will format the given diagnostic to a string, rendering
  * the diagnostic according to the various options given. The
@@ -982,7 +982,7 @@
                                                unsigned Options);
 
 /**
- * \brief Retrieve the set of display options most similar to the
+ * Retrieve the set of display options most similar to the
  * default behavior of the clang compiler.
  *
  * \returns A set of display options suitable for use with \c
@@ -991,13 +991,13 @@
 CINDEX_LINKAGE unsigned clang_defaultDiagnosticDisplayOptions(void);
 
 /**
- * \brief Determine the severity of the given diagnostic.
+ * Determine the severity of the given diagnostic.
  */
 CINDEX_LINKAGE enum CXDiagnosticSeverity
 clang_getDiagnosticSeverity(CXDiagnostic);
 
 /**
- * \brief Retrieve the source location of the given diagnostic.
+ * Retrieve the source location of the given diagnostic.
  *
  * This location is where Clang would print the caret ('^') when
  * displaying the diagnostic on the command line.
@@ -1005,12 +1005,12 @@
 CINDEX_LINKAGE CXSourceLocation clang_getDiagnosticLocation(CXDiagnostic);
 
 /**
- * \brief Retrieve the text of the given diagnostic.
+ * Retrieve the text of the given diagnostic.
  */
 CINDEX_LINKAGE CXString clang_getDiagnosticSpelling(CXDiagnostic);
 
 /**
- * \brief Retrieve the name of the command-line option that enabled this
+ * Retrieve the name of the command-line option that enabled this
  * diagnostic.
  *
  * \param Diag The diagnostic to be queried.
@@ -1025,7 +1025,7 @@
                                                   CXString *Disable);
 
 /**
- * \brief Retrieve the category number for this diagnostic.
+ * Retrieve the category number for this diagnostic.
  *
  * Diagnostics can be categorized into groups along with other, related
  * diagnostics (e.g., diagnostics under the same warning flag). This routine 
@@ -1037,7 +1037,7 @@
 CINDEX_LINKAGE unsigned clang_getDiagnosticCategory(CXDiagnostic);
 
 /**
- * \brief Retrieve the name of a particular diagnostic category.  This
+ * Retrieve the name of a particular diagnostic category.  This
  *  is now deprecated.  Use clang_getDiagnosticCategoryText()
  *  instead.
  *
@@ -1050,20 +1050,20 @@
 CXString clang_getDiagnosticCategoryName(unsigned Category);
 
 /**
- * \brief Retrieve the diagnostic category text for a given diagnostic.
+ * Retrieve the diagnostic category text for a given diagnostic.
  *
  * \returns The text of the given diagnostic category.
  */
 CINDEX_LINKAGE CXString clang_getDiagnosticCategoryText(CXDiagnostic);
   
 /**
- * \brief Determine the number of source ranges associated with the given
+ * Determine the number of source ranges associated with the given
  * diagnostic.
  */
 CINDEX_LINKAGE unsigned clang_getDiagnosticNumRanges(CXDiagnostic);
 
 /**
- * \brief Retrieve a source range associated with the diagnostic.
+ * Retrieve a source range associated with the diagnostic.
  *
  * A diagnostic's source ranges highlight important elements in the source
  * code. On the command line, Clang displays source ranges by
@@ -1079,13 +1079,13 @@
                                                       unsigned Range);
 
 /**
- * \brief Determine the number of fix-it hints associated with the
+ * Determine the number of fix-it hints associated with the
  * given diagnostic.
  */
 CINDEX_LINKAGE unsigned clang_getDiagnosticNumFixIts(CXDiagnostic Diagnostic);
 
 /**
- * \brief Retrieve the replacement information for a given fix-it.
+ * Retrieve the replacement information for a given fix-it.
  *
  * Fix-its are described in terms of a source range whose contents
  * should be replaced by a string. This approach generalizes over
@@ -1128,13 +1128,13 @@
  */
 
 /**
- * \brief Get the original translation unit source file name.
+ * Get the original translation unit source file name.
  */
 CINDEX_LINKAGE CXString
 clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit);
 
 /**
- * \brief Return the CXTranslationUnit for a given source file and the provided
+ * Return the CXTranslationUnit for a given source file and the provided
  * command line arguments one would pass to the compiler.
  *
  * Note: The 'source_filename' argument is optional.  If the caller provides a
@@ -1182,7 +1182,7 @@
                                          struct CXUnsavedFile *unsaved_files);
 
 /**
- * \brief Same as \c clang_createTranslationUnit2, but returns
+ * Same as \c clang_createTranslationUnit2, but returns
  * the \c CXTranslationUnit instead of an error code.  In case of an error this
  * routine returns a \c NULL \c CXTranslationUnit, without further detailed
  * error codes.
@@ -1192,7 +1192,7 @@
     const char *ast_filename);
 
 /**
- * \brief Create a translation unit from an AST file (\c -emit-ast).
+ * Create a translation unit from an AST file (\c -emit-ast).
  *
  * \param[out] out_TU A non-NULL pointer to store the created
  * \c CXTranslationUnit.
@@ -1205,7 +1205,7 @@
     CXTranslationUnit *out_TU);
 
 /**
- * \brief Flags that control the creation of translation units.
+ * Flags that control the creation of translation units.
  *
  * The enumerators in this enumeration type are meant to be bitwise
  * ORed together to specify which options should be used when
@@ -1213,13 +1213,13 @@
  */
 enum CXTranslationUnit_Flags {
   /**
-   * \brief Used to indicate that no special translation-unit options are
+   * Used to indicate that no special translation-unit options are
    * needed.
    */
   CXTranslationUnit_None = 0x0,
 
   /**
-   * \brief Used to indicate that the parser should construct a "detailed"
+   * Used to indicate that the parser should construct a "detailed"
    * preprocessing record, including all macro definitions and instantiations.
    *
    * Constructing a detailed preprocessing record requires more memory
@@ -1231,7 +1231,7 @@
   CXTranslationUnit_DetailedPreprocessingRecord = 0x01,
 
   /**
-   * \brief Used to indicate that the translation unit is incomplete.
+   * Used to indicate that the translation unit is incomplete.
    *
    * When a translation unit is considered "incomplete", semantic
    * analysis that is typically performed at the end of the
@@ -1244,7 +1244,7 @@
   CXTranslationUnit_Incomplete = 0x02,
   
   /**
-   * \brief Used to indicate that the translation unit should be built with an 
+   * Used to indicate that the translation unit should be built with an 
    * implicit precompiled header for the preamble.
    *
    * An implicit precompiled header is used as an optimization when a
@@ -1260,7 +1260,7 @@
   CXTranslationUnit_PrecompiledPreamble = 0x04,
   
   /**
-   * \brief Used to indicate that the translation unit should cache some
+   * Used to indicate that the translation unit should cache some
    * code-completion results with each reparse of the source file.
    *
    * Caching of code-completion results is a performance optimization that
@@ -1270,7 +1270,7 @@
   CXTranslationUnit_CacheCompletionResults = 0x08,
 
   /**
-   * \brief Used to indicate that the translation unit will be serialized with
+   * Used to indicate that the translation unit will be serialized with
    * \c clang_saveTranslationUnit.
    *
    * This option is typically used when parsing a header with the intent of
@@ -1279,7 +1279,7 @@
   CXTranslationUnit_ForSerialization = 0x10,
 
   /**
-   * \brief DEPRECATED: Enabled chained precompiled preambles in C++.
+   * DEPRECATED: Enabled chained precompiled preambles in C++.
    *
    * Note: this is a *temporary* option that is available only while
    * we are testing C++ precompiled preamble support. It is deprecated.
@@ -1287,7 +1287,7 @@
   CXTranslationUnit_CXXChainedPCH = 0x20,
 
   /**
-   * \brief Used to indicate that function/method bodies should be skipped while
+   * Used to indicate that function/method bodies should be skipped while
    * parsing.
    *
    * This option can be used to search for declarations/definitions while
@@ -1296,14 +1296,14 @@
   CXTranslationUnit_SkipFunctionBodies = 0x40,
 
   /**
-   * \brief Used to indicate that brief documentation comments should be
+   * Used to indicate that brief documentation comments should be
    * included into the set of code completions returned from this translation
    * unit.
    */
   CXTranslationUnit_IncludeBriefCommentsInCodeCompletion = 0x80,
 
   /**
-   * \brief Used to indicate that the precompiled preamble should be created on
+   * Used to indicate that the precompiled preamble should be created on
    * the first parse. Otherwise it will be created on the first reparse. This
    * trades runtime on the first parse (serializing the preamble takes time) for
    * reduced runtime on the second parse (can now reuse the preamble).
@@ -1311,7 +1311,7 @@
   CXTranslationUnit_CreatePreambleOnFirstParse = 0x100,
 
   /**
-   * \brief Do not stop processing when fatal errors are encountered.
+   * Do not stop processing when fatal errors are encountered.
    *
    * When fatal errors are encountered while parsing a translation unit,
    * semantic analysis is typically stopped early when compiling code. A common
@@ -1322,13 +1322,13 @@
   CXTranslationUnit_KeepGoing = 0x200,
 
   /**
-   * \brief Sets the preprocessor in a mode for parsing a single file only.
+   * Sets the preprocessor in a mode for parsing a single file only.
    */
   CXTranslationUnit_SingleFileParse = 0x400
 };
 
 /**
- * \brief Returns the set of flags that is suitable for parsing a translation
+ * Returns the set of flags that is suitable for parsing a translation
  * unit that is being edited.
  *
  * The set of flags returned provide options for \c clang_parseTranslationUnit()
@@ -1342,7 +1342,7 @@
 CINDEX_LINKAGE unsigned clang_defaultEditingTranslationUnitOptions(void);
 
 /**
- * \brief Same as \c clang_parseTranslationUnit2, but returns
+ * Same as \c clang_parseTranslationUnit2, but returns
  * the \c CXTranslationUnit instead of an error code.  In case of an error this
  * routine returns a \c NULL \c CXTranslationUnit, without further detailed
  * error codes.
@@ -1357,7 +1357,7 @@
                            unsigned options);
 
 /**
- * \brief Parse the given source file and the translation unit corresponding
+ * Parse the given source file and the translation unit corresponding
  * to that file.
  *
  * This routine is the main entry point for the Clang C API, providing the
@@ -1411,7 +1411,7 @@
                             CXTranslationUnit *out_TU);
 
 /**
- * \brief Same as clang_parseTranslationUnit2 but requires a full command line
+ * Same as clang_parseTranslationUnit2 but requires a full command line
  * for \c command_line_args including argv[0]. This is useful if the standard
  * library paths are relative to the binary.
  */
@@ -1422,7 +1422,7 @@
     unsigned options, CXTranslationUnit *out_TU);
 
 /**
- * \brief Flags that control how translation units are saved.
+ * Flags that control how translation units are saved.
  *
  * The enumerators in this enumeration type are meant to be bitwise
  * ORed together to specify which options should be used when
@@ -1430,13 +1430,13 @@
  */
 enum CXSaveTranslationUnit_Flags {
   /**
-   * \brief Used to indicate that no special saving options are needed.
+   * Used to indicate that no special saving options are needed.
    */
   CXSaveTranslationUnit_None = 0x0
 };
 
 /**
- * \brief Returns the set of flags that is suitable for saving a translation
+ * Returns the set of flags that is suitable for saving a translation
  * unit.
  *
  * The set of flags returned provide options for
@@ -1447,17 +1447,17 @@
 CINDEX_LINKAGE unsigned clang_defaultSaveOptions(CXTranslationUnit TU);
 
 /**
- * \brief Describes the kind of error that occurred (if any) in a call to
+ * Describes the kind of error that occurred (if any) in a call to
  * \c clang_saveTranslationUnit().
  */
 enum CXSaveError {
   /**
-   * \brief Indicates that no error occurred while saving a translation unit.
+   * Indicates that no error occurred while saving a translation unit.
    */
   CXSaveError_None = 0,
   
   /**
-   * \brief Indicates that an unknown error occurred while attempting to save
+   * Indicates that an unknown error occurred while attempting to save
    * the file.
    *
    * This error typically indicates that file I/O failed when attempting to 
@@ -1466,7 +1466,7 @@
   CXSaveError_Unknown = 1,
   
   /**
-   * \brief Indicates that errors during translation prevented this attempt
+   * Indicates that errors during translation prevented this attempt
    * to save the translation unit.
    * 
    * Errors that prevent the translation unit from being saved can be
@@ -1475,14 +1475,14 @@
   CXSaveError_TranslationErrors = 2,
   
   /**
-   * \brief Indicates that the translation unit to be saved was somehow
+   * Indicates that the translation unit to be saved was somehow
    * invalid (e.g., NULL).
    */
   CXSaveError_InvalidTU = 3
 };
   
 /**
- * \brief Saves a translation unit into a serialized representation of
+ * Saves a translation unit into a serialized representation of
  * that translation unit on disk.
  *
  * Any translation unit that was parsed without error can be saved
@@ -1509,7 +1509,7 @@
                                              unsigned options);
 
 /**
- * \brief Suspend a translation unit in order to free memory associated with it.
+ * Suspend a translation unit in order to free memory associated with it.
  *
  * A suspended translation unit uses significantly less memory but on the other
  * side does not support any other calls than \c clang_reparseTranslationUnit
@@ -1518,12 +1518,12 @@
 CINDEX_LINKAGE unsigned clang_suspendTranslationUnit(CXTranslationUnit);
 
 /**
- * \brief Destroy the specified CXTranslationUnit object.
+ * Destroy the specified CXTranslationUnit object.
  */
 CINDEX_LINKAGE void clang_disposeTranslationUnit(CXTranslationUnit);
 
 /**
- * \brief Flags that control the reparsing of translation units.
+ * Flags that control the reparsing of translation units.
  *
  * The enumerators in this enumeration type are meant to be bitwise
  * ORed together to specify which options should be used when
@@ -1531,13 +1531,13 @@
  */
 enum CXReparse_Flags {
   /**
-   * \brief Used to indicate that no special reparsing options are needed.
+   * Used to indicate that no special reparsing options are needed.
    */
   CXReparse_None = 0x0
 };
  
 /**
- * \brief Returns the set of flags that is suitable for reparsing a translation
+ * Returns the set of flags that is suitable for reparsing a translation
  * unit.
  *
  * The set of flags returned provide options for
@@ -1549,7 +1549,7 @@
 CINDEX_LINKAGE unsigned clang_defaultReparseOptions(CXTranslationUnit TU);
 
 /**
- * \brief Reparse the source files that produced this translation unit.
+ * Reparse the source files that produced this translation unit.
  *
  * This routine can be used to re-parse the source files that originally
  * created the given translation unit, for example because those source files
@@ -1593,7 +1593,7 @@
                                                 unsigned options);
 
 /**
-  * \brief Categorizes how memory is being used by a translation unit.
+  * Categorizes how memory is being used by a translation unit.
   */
 enum CXTUResourceUsageKind {
   CXTUResourceUsage_AST = 1,
@@ -1619,38 +1619,38 @@
 };
 
 /**
-  * \brief Returns the human-readable null-terminated C string that represents
+  * Returns the human-readable null-terminated C string that represents
   *  the name of the memory category.  This string should never be freed.
   */
 CINDEX_LINKAGE
 const char *clang_getTUResourceUsageName(enum CXTUResourceUsageKind kind);
 
 typedef struct CXTUResourceUsageEntry {
-  /* \brief The memory usage category. */
+  /* The memory usage category. */
   enum CXTUResourceUsageKind kind;  
-  /* \brief Amount of resources used. 
+  /* Amount of resources used. 
       The units will depend on the resource kind. */
   unsigned long amount;
 } CXTUResourceUsageEntry;
 
 /**
-  * \brief The memory usage of a CXTranslationUnit, broken into categories.
+  * The memory usage of a CXTranslationUnit, broken into categories.
   */
 typedef struct CXTUResourceUsage {
-  /* \brief Private data member, used for queries. */
+  /* Private data member, used for queries. */
   void *data;
 
-  /* \brief The number of entries in the 'entries' array. */
+  /* The number of entries in the 'entries' array. */
   unsigned numEntries;
 
-  /* \brief An array of key-value pairs, representing the breakdown of memory
+  /* An array of key-value pairs, representing the breakdown of memory
             usage. */
   CXTUResourceUsageEntry *entries;
 
 } CXTUResourceUsage;
 
 /**
-  * \brief Return the memory usage of a translation unit.  This object
+  * Return the memory usage of a translation unit.  This object
   *  should be released with clang_disposeCXTUResourceUsage().
   */
 CINDEX_LINKAGE CXTUResourceUsage clang_getCXTUResourceUsage(CXTranslationUnit TU);
@@ -1658,7 +1658,7 @@
 CINDEX_LINKAGE void clang_disposeCXTUResourceUsage(CXTUResourceUsage usage);
 
 /**
- * \brief Get target information for this translation unit.
+ * Get target information for this translation unit.
  *
  * The CXTargetInfo object cannot outlive the CXTranslationUnit object.
  */
@@ -1666,13 +1666,13 @@
 clang_getTranslationUnitTargetInfo(CXTranslationUnit CTUnit);
 
 /**
- * \brief Destroy the CXTargetInfo object.
+ * Destroy the CXTargetInfo object.
  */
 CINDEX_LINKAGE void
 clang_TargetInfo_dispose(CXTargetInfo Info);
 
 /**
- * \brief Get the normalized target triple as a string.
+ * Get the normalized target triple as a string.
  *
  * Returns the empty string in case of any error.
  */
@@ -1680,7 +1680,7 @@
 clang_TargetInfo_getTriple(CXTargetInfo Info);
 
 /**
- * \brief Get the pointer width of the target in bits.
+ * Get the pointer width of the target in bits.
  *
  * Returns -1 in case of error.
  */
@@ -1692,12 +1692,12 @@
  */
 
 /**
- * \brief Describes the kind of entity that a cursor refers to.
+ * Describes the kind of entity that a cursor refers to.
  */
 enum CXCursorKind {
   /* Declarations */
   /**
-   * \brief A declaration whose specific kind is not exposed via this
+   * A declaration whose specific kind is not exposed via this
    * interface.
    *
    * Unexposed declarations have the same operations as any other kind
@@ -1706,84 +1706,84 @@
    * of the declaration is not reported.
    */
   CXCursor_UnexposedDecl                 = 1,
-  /** \brief A C or C++ struct. */
+  /** A C or C++ struct. */
   CXCursor_StructDecl                    = 2,
-  /** \brief A C or C++ union. */
+  /** A C or C++ union. */
   CXCursor_UnionDecl                     = 3,
-  /** \brief A C++ class. */
+  /** A C++ class. */
   CXCursor_ClassDecl                     = 4,
-  /** \brief An enumeration. */
+  /** An enumeration. */
   CXCursor_EnumDecl                      = 5,
   /**
-   * \brief A field (in C) or non-static data member (in C++) in a
+   * A field (in C) or non-static data member (in C++) in a
    * struct, union, or C++ class.
    */
   CXCursor_FieldDecl                     = 6,
-  /** \brief An enumerator constant. */
+  /** An enumerator constant. */
   CXCursor_EnumConstantDecl              = 7,
-  /** \brief A function. */
+  /** A function. */
   CXCursor_FunctionDecl                  = 8,
-  /** \brief A variable. */
+  /** A variable. */
   CXCursor_VarDecl                       = 9,
-  /** \brief A function or method parameter. */
+  /** A function or method parameter. */
   CXCursor_ParmDecl                      = 10,
-  /** \brief An Objective-C \@interface. */
+  /** An Objective-C \@interface. */
   CXCursor_ObjCInterfaceDecl             = 11,
-  /** \brief An Objective-C \@interface for a category. */
+  /** An Objective-C \@interface for a category. */
   CXCursor_ObjCCategoryDecl              = 12,
-  /** \brief An Objective-C \@protocol declaration. */
+  /** An Objective-C \@protocol declaration. */
   CXCursor_ObjCProtocolDecl              = 13,
-  /** \brief An Objective-C \@property declaration. */
+  /** An Objective-C \@property declaration. */
   CXCursor_ObjCPropertyDecl              = 14,
-  /** \brief An Objective-C instance variable. */
+  /** An Objective-C instance variable. */
   CXCursor_ObjCIvarDecl                  = 15,
-  /** \brief An Objective-C instance method. */
+  /** An Objective-C instance method. */
   CXCursor_ObjCInstanceMethodDecl        = 16,
-  /** \brief An Objective-C class method. */
+  /** An Objective-C class method. */
   CXCursor_ObjCClassMethodDecl           = 17,
-  /** \brief An Objective-C \@implementation. */
+  /** An Objective-C \@implementation. */
   CXCursor_ObjCImplementationDecl        = 18,
-  /** \brief An Objective-C \@implementation for a category. */
+  /** An Objective-C \@implementation for a category. */
   CXCursor_ObjCCategoryImplDecl          = 19,
-  /** \brief A typedef. */
+  /** A typedef. */
   CXCursor_TypedefDecl                   = 20,
-  /** \brief A C++ class method. */
+  /** A C++ class method. */
   CXCursor_CXXMethod                     = 21,
-  /** \brief A C++ namespace. */
+  /** A C++ namespace. */
   CXCursor_Namespace                     = 22,
-  /** \brief A linkage specification, e.g. 'extern "C"'. */
+  /** A linkage specification, e.g. 'extern "C"'. */
   CXCursor_LinkageSpec                   = 23,
-  /** \brief A C++ constructor. */
+  /** A C++ constructor. */
   CXCursor_Constructor                   = 24,
-  /** \brief A C++ destructor. */
+  /** A C++ destructor. */
   CXCursor_Destructor                    = 25,
-  /** \brief A C++ conversion function. */
+  /** A C++ conversion function. */
   CXCursor_ConversionFunction            = 26,
-  /** \brief A C++ template type parameter. */
+  /** A C++ template type parameter. */
   CXCursor_TemplateTypeParameter         = 27,
-  /** \brief A C++ non-type template parameter. */
+  /** A C++ non-type template parameter. */
   CXCursor_NonTypeTemplateParameter      = 28,
-  /** \brief A C++ template template parameter. */
+  /** A C++ template template parameter. */
   CXCursor_TemplateTemplateParameter     = 29,
-  /** \brief A C++ function template. */
+  /** A C++ function template. */
   CXCursor_FunctionTemplate              = 30,
-  /** \brief A C++ class template. */
+  /** A C++ class template. */
   CXCursor_ClassTemplate                 = 31,
-  /** \brief A C++ class template partial specialization. */
+  /** A C++ class template partial specialization. */
   CXCursor_ClassTemplatePartialSpecialization = 32,
-  /** \brief A C++ namespace alias declaration. */
+  /** A C++ namespace alias declaration. */
   CXCursor_NamespaceAlias                = 33,
-  /** \brief A C++ using directive. */
+  /** A C++ using directive. */
   CXCursor_UsingDirective                = 34,
-  /** \brief A C++ using declaration. */
+  /** A C++ using declaration. */
   CXCursor_UsingDeclaration              = 35,
-  /** \brief A C++ alias declaration */
+  /** A C++ alias declaration */
   CXCursor_TypeAliasDecl                 = 36,
-  /** \brief An Objective-C \@synthesize definition. */
+  /** An Objective-C \@synthesize definition. */
   CXCursor_ObjCSynthesizeDecl            = 37,
-  /** \brief An Objective-C \@dynamic definition. */
+  /** An Objective-C \@dynamic definition. */
   CXCursor_ObjCDynamicDecl               = 38,
-  /** \brief An access specifier. */
+  /** An access specifier. */
   CXCursor_CXXAccessSpecifier            = 39,
 
   CXCursor_FirstDecl                     = CXCursor_UnexposedDecl,
@@ -1795,7 +1795,7 @@
   CXCursor_ObjCProtocolRef               = 41,
   CXCursor_ObjCClassRef                  = 42,
   /**
-   * \brief A reference to a type declaration.
+   * A reference to a type declaration.
    *
    * A type reference occurs anywhere where a type is named but not
    * declared. For example, given:
@@ -1812,21 +1812,21 @@
   CXCursor_TypeRef                       = 43,
   CXCursor_CXXBaseSpecifier              = 44,
   /** 
-   * \brief A reference to a class template, function template, template
+   * A reference to a class template, function template, template
    * template parameter, or class template partial specialization.
    */
   CXCursor_TemplateRef                   = 45,
   /**
-   * \brief A reference to a namespace or namespace alias.
+   * A reference to a namespace or namespace alias.
    */
   CXCursor_NamespaceRef                  = 46,
   /**
-   * \brief A reference to a member of a struct, union, or class that occurs in 
+   * A reference to a member of a struct, union, or class that occurs in 
    * some non-expression context, e.g., a designated initializer.
    */
   CXCursor_MemberRef                     = 47,
   /**
-   * \brief A reference to a labeled statement.
+   * A reference to a labeled statement.
    *
    * This cursor kind is used to describe the jump to "start_over" in the 
    * goto statement in the following example:
@@ -1843,7 +1843,7 @@
   CXCursor_LabelRef                      = 48,
   
   /**
-   * \brief A reference to a set of overloaded functions or function templates
+   * A reference to a set of overloaded functions or function templates
    * that has not yet been resolved to a specific function or function template.
    *
    * An overloaded declaration reference cursor occurs in C++ templates where
@@ -1881,7 +1881,7 @@
   CXCursor_OverloadedDeclRef             = 49,
   
   /**
-   * \brief A reference to a variable that occurs in some non-expression 
+   * A reference to a variable that occurs in some non-expression 
    * context, e.g., a C++ lambda capture list.
    */
   CXCursor_VariableRef                   = 50,
@@ -1900,7 +1900,7 @@
   CXCursor_FirstExpr                     = 100,
 
   /**
-   * \brief An expression whose specific kind is not exposed via this
+   * An expression whose specific kind is not exposed via this
    * interface.
    *
    * Unexposed expressions have the same operations as any other kind
@@ -1911,103 +1911,103 @@
   CXCursor_UnexposedExpr                 = 100,
 
   /**
-   * \brief An expression that refers to some value declaration, such
+   * An expression that refers to some value declaration, such
    * as a function, variable, or enumerator.
    */
   CXCursor_DeclRefExpr                   = 101,
 
   /**
-   * \brief An expression that refers to a member of a struct, union,
+   * An expression that refers to a member of a struct, union,
    * class, Objective-C class, etc.
    */
   CXCursor_MemberRefExpr                 = 102,
 
-  /** \brief An expression that calls a function. */
+  /** An expression that calls a function. */
   CXCursor_CallExpr                      = 103,
 
-  /** \brief An expression that sends a message to an Objective-C
+  /** An expression that sends a message to an Objective-C
    object or class. */
   CXCursor_ObjCMessageExpr               = 104,
 
-  /** \brief An expression that represents a block literal. */
+  /** An expression that represents a block literal. */
   CXCursor_BlockExpr                     = 105,
 
-  /** \brief An integer literal.
+  /** An integer literal.
    */
   CXCursor_IntegerLiteral                = 106,
 
-  /** \brief A floating point number literal.
+  /** A floating point number literal.
    */
   CXCursor_FloatingLiteral               = 107,
 
-  /** \brief An imaginary number literal.
+  /** An imaginary number literal.
    */
   CXCursor_ImaginaryLiteral              = 108,
 
-  /** \brief A string literal.
+  /** A string literal.
    */
   CXCursor_StringLiteral                 = 109,
 
-  /** \brief A character literal.
+  /** A character literal.
    */
   CXCursor_CharacterLiteral              = 110,
 
-  /** \brief A parenthesized expression, e.g. "(1)".
+  /** A parenthesized expression, e.g. "(1)".
    *
    * This AST node is only formed if full location information is requested.
    */
   CXCursor_ParenExpr                     = 111,
 
-  /** \brief This represents the unary-expression's (except sizeof and
+  /** This represents the unary-expression's (except sizeof and
    * alignof).
    */
   CXCursor_UnaryOperator                 = 112,
 
-  /** \brief [C99 6.5.2.1] Array Subscripting.
+  /** [C99 6.5.2.1] Array Subscripting.
    */
   CXCursor_ArraySubscriptExpr            = 113,
 
-  /** \brief A builtin binary operation expression such as "x + y" or
+  /** A builtin binary operation expression such as "x + y" or
    * "x <= y".
    */
   CXCursor_BinaryOperator                = 114,
 
-  /** \brief Compound assignment such as "+=".
+  /** Compound assignment such as "+=".
    */
   CXCursor_CompoundAssignOperator        = 115,
 
-  /** \brief The ?: ternary operator.
+  /** The ?: ternary operator.
    */
   CXCursor_ConditionalOperator           = 116,
 
-  /** \brief An explicit cast in C (C99 6.5.4) or a C-style cast in C++
+  /** An explicit cast in C (C99 6.5.4) or a C-style cast in C++
    * (C++ [expr.cast]), which uses the syntax (Type)expr.
    *
    * For example: (int)f.
    */
   CXCursor_CStyleCastExpr                = 117,
 
-  /** \brief [C99 6.5.2.5]
+  /** [C99 6.5.2.5]
    */
   CXCursor_CompoundLiteralExpr           = 118,
 
-  /** \brief Describes an C or C++ initializer list.
+  /** Describes an C or C++ initializer list.
    */
   CXCursor_InitListExpr                  = 119,
 
-  /** \brief The GNU address of label extension, representing &&label.
+  /** The GNU address of label extension, representing &&label.
    */
   CXCursor_AddrLabelExpr                 = 120,
 
-  /** \brief This is the GNU Statement Expression extension: ({int X=4; X;})
+  /** This is the GNU Statement Expression extension: ({int X=4; X;})
    */
   CXCursor_StmtExpr                      = 121,
 
-  /** \brief Represents a C11 generic selection.
+  /** Represents a C11 generic selection.
    */
   CXCursor_GenericSelectionExpr          = 122,
 
-  /** \brief Implements the GNU __null extension, which is a name for a null
+  /** Implements the GNU __null extension, which is a name for a null
    * pointer constant that has integral type (e.g., int or long) and is the same
    * size and alignment as a pointer.
    *
@@ -2017,23 +2017,23 @@
    */
   CXCursor_GNUNullExpr                   = 123,
 
-  /** \brief C++'s static_cast<> expression.
+  /** C++'s static_cast<> expression.
    */
   CXCursor_CXXStaticCastExpr             = 124,
 
-  /** \brief C++'s dynamic_cast<> expression.
+  /** C++'s dynamic_cast<> expression.
    */
   CXCursor_CXXDynamicCastExpr            = 125,
 
-  /** \brief C++'s reinterpret_cast<> expression.
+  /** C++'s reinterpret_cast<> expression.
    */
   CXCursor_CXXReinterpretCastExpr        = 126,
 
-  /** \brief C++'s const_cast<> expression.
+  /** C++'s const_cast<> expression.
    */
   CXCursor_CXXConstCastExpr              = 127,
 
-  /** \brief Represents an explicit C++ type conversion that uses "functional"
+  /** Represents an explicit C++ type conversion that uses "functional"
    * notion (C++ [expr.type.conv]).
    *
    * Example:
@@ -2043,60 +2043,60 @@
    */
   CXCursor_CXXFunctionalCastExpr         = 128,
 
-  /** \brief A C++ typeid expression (C++ [expr.typeid]).
+  /** A C++ typeid expression (C++ [expr.typeid]).
    */
   CXCursor_CXXTypeidExpr                 = 129,
 
-  /** \brief [C++ 2.13.5] C++ Boolean Literal.
+  /** [C++ 2.13.5] C++ Boolean Literal.
    */
   CXCursor_CXXBoolLiteralExpr            = 130,
 
-  /** \brief [C++0x 2.14.7] C++ Pointer Literal.
+  /** [C++0x 2.14.7] C++ Pointer Literal.
    */
   CXCursor_CXXNullPtrLiteralExpr         = 131,
 
-  /** \brief Represents the "this" expression in C++
+  /** Represents the "this" expression in C++
    */
   CXCursor_CXXThisExpr                   = 132,
 
-  /** \brief [C++ 15] C++ Throw Expression.
+  /** [C++ 15] C++ Throw Expression.
    *
    * This handles 'throw' and 'throw' assignment-expression. When
    * assignment-expression isn't present, Op will be null.
    */
   CXCursor_CXXThrowExpr                  = 133,
 
-  /** \brief A new expression for memory allocation and constructor calls, e.g:
+  /** A new expression for memory allocation and constructor calls, e.g:
    * "new CXXNewExpr(foo)".
    */
   CXCursor_CXXNewExpr                    = 134,
 
-  /** \brief A delete expression for memory deallocation and destructor calls,
+  /** A delete expression for memory deallocation and destructor calls,
    * e.g. "delete[] pArray".
    */
   CXCursor_CXXDeleteExpr                 = 135,
 
-  /** \brief A unary expression. (noexcept, sizeof, or other traits)
+  /** A unary expression. (noexcept, sizeof, or other traits)
    */
   CXCursor_UnaryExpr                     = 136,
 
-  /** \brief An Objective-C string literal i.e. @"foo".
+  /** An Objective-C string literal i.e. @"foo".
    */
   CXCursor_ObjCStringLiteral             = 137,
 
-  /** \brief An Objective-C \@encode expression.
+  /** An Objective-C \@encode expression.
    */
   CXCursor_ObjCEncodeExpr                = 138,
 
-  /** \brief An Objective-C \@selector expression.
+  /** An Objective-C \@selector expression.
    */
   CXCursor_ObjCSelectorExpr              = 139,
 
-  /** \brief An Objective-C \@protocol expression.
+  /** An Objective-C \@protocol expression.
    */
   CXCursor_ObjCProtocolExpr              = 140,
 
-  /** \brief An Objective-C "bridged" cast expression, which casts between
+  /** An Objective-C "bridged" cast expression, which casts between
    * Objective-C pointers and C pointers, transferring ownership in the process.
    *
    * \code
@@ -2105,7 +2105,7 @@
    */
   CXCursor_ObjCBridgedCastExpr           = 141,
 
-  /** \brief Represents a C++0x pack expansion that produces a sequence of
+  /** Represents a C++0x pack expansion that produces a sequence of
    * expressions.
    *
    * A pack expansion expression contains a pattern (which itself is an
@@ -2120,7 +2120,7 @@
    */
   CXCursor_PackExpansionExpr             = 142,
 
-  /** \brief Represents an expression that computes the length of a parameter
+  /** Represents an expression that computes the length of a parameter
    * pack.
    *
    * \code
@@ -2132,7 +2132,7 @@
    */
   CXCursor_SizeOfPackExpr                = 143,
 
-  /* \brief Represents a C++ lambda expression that produces a local function
+  /* Represents a C++ lambda expression that produces a local function
    * object.
    *
    * \code
@@ -2146,19 +2146,19 @@
    */
   CXCursor_LambdaExpr                    = 144,
   
-  /** \brief Objective-c Boolean Literal.
+  /** Objective-c Boolean Literal.
    */
   CXCursor_ObjCBoolLiteralExpr           = 145,
 
-  /** \brief Represents the "self" expression in an Objective-C method.
+  /** Represents the "self" expression in an Objective-C method.
    */
   CXCursor_ObjCSelfExpr                  = 146,
 
-  /** \brief OpenMP 4.0 [2.4, Array Section].
+  /** OpenMP 4.0 [2.4, Array Section].
    */
   CXCursor_OMPArraySectionExpr           = 147,
 
-  /** \brief Represents an @available(...) check.
+  /** Represents an @available(...) check.
    */
   CXCursor_ObjCAvailabilityCheckExpr     = 148,
 
@@ -2167,7 +2167,7 @@
   /* Statements */
   CXCursor_FirstStmt                     = 200,
   /**
-   * \brief A statement whose specific kind is not exposed via this
+   * A statement whose specific kind is not exposed via this
    * interface.
    *
    * Unexposed statements have the same operations as any other kind of
@@ -2177,7 +2177,7 @@
    */
   CXCursor_UnexposedStmt                 = 200,
   
-  /** \brief A labelled statement in a function. 
+  /** A labelled statement in a function. 
    *
    * This cursor kind is used to describe the "start_over:" label statement in 
    * the following example:
@@ -2190,329 +2190,329 @@
    */
   CXCursor_LabelStmt                     = 201,
 
-  /** \brief A group of statements like { stmt stmt }.
+  /** A group of statements like { stmt stmt }.
    *
    * This cursor kind is used to describe compound statements, e.g. function
    * bodies.
    */
   CXCursor_CompoundStmt                  = 202,
 
-  /** \brief A case statement.
+  /** A case statement.
    */
   CXCursor_CaseStmt                      = 203,
 
-  /** \brief A default statement.
+  /** A default statement.
    */
   CXCursor_DefaultStmt                   = 204,
 
-  /** \brief An if statement
+  /** An if statement
    */
   CXCursor_IfStmt                        = 205,
 
-  /** \brief A switch statement.
+  /** A switch statement.
    */
   CXCursor_SwitchStmt                    = 206,
 
-  /** \brief A while statement.
+  /** A while statement.
    */
   CXCursor_WhileStmt                     = 207,
 
-  /** \brief A do statement.
+  /** A do statement.
    */
   CXCursor_DoStmt                        = 208,
 
-  /** \brief A for statement.
+  /** A for statement.
    */
   CXCursor_ForStmt                       = 209,
 
-  /** \brief A goto statement.
+  /** A goto statement.
    */
   CXCursor_GotoStmt                      = 210,
 
-  /** \brief An indirect goto statement.
+  /** An indirect goto statement.
    */
   CXCursor_IndirectGotoStmt              = 211,
 
-  /** \brief A continue statement.
+  /** A continue statement.
    */
   CXCursor_ContinueStmt                  = 212,
 
-  /** \brief A break statement.
+  /** A break statement.
    */
   CXCursor_BreakStmt                     = 213,
 
-  /** \brief A return statement.
+  /** A return statement.
    */
   CXCursor_ReturnStmt                    = 214,
 
-  /** \brief A GCC inline assembly statement extension.
+  /** A GCC inline assembly statement extension.
    */
   CXCursor_GCCAsmStmt                    = 215,
   CXCursor_AsmStmt                       = CXCursor_GCCAsmStmt,
 
-  /** \brief Objective-C's overall \@try-\@catch-\@finally statement.
+  /** Objective-C's overall \@try-\@catch-\@finally statement.
    */
   CXCursor_ObjCAtTryStmt                 = 216,
 
-  /** \brief Objective-C's \@catch statement.
+  /** Objective-C's \@catch statement.
    */
   CXCursor_ObjCAtCatchStmt               = 217,
 
-  /** \brief Objective-C's \@finally statement.
+  /** Objective-C's \@finally statement.
    */
   CXCursor_ObjCAtFinallyStmt             = 218,
 
-  /** \brief Objective-C's \@throw statement.
+  /** Objective-C's \@throw statement.
    */
   CXCursor_ObjCAtThrowStmt               = 219,
 
-  /** \brief Objective-C's \@synchronized statement.
+  /** Objective-C's \@synchronized statement.
    */
   CXCursor_ObjCAtSynchronizedStmt        = 220,
 
-  /** \brief Objective-C's autorelease pool statement.
+  /** Objective-C's autorelease pool statement.
    */
   CXCursor_ObjCAutoreleasePoolStmt       = 221,
 
-  /** \brief Objective-C's collection statement.
+  /** Objective-C's collection statement.
    */
   CXCursor_ObjCForCollectionStmt         = 222,
 
-  /** \brief C++'s catch statement.
+  /** C++'s catch statement.
    */
   CXCursor_CXXCatchStmt                  = 223,
 
-  /** \brief C++'s try statement.
+  /** C++'s try statement.
    */
   CXCursor_CXXTryStmt                    = 224,
 
-  /** \brief C++'s for (* : *) statement.
+  /** C++'s for (* : *) statement.
    */
   CXCursor_CXXForRangeStmt               = 225,
 
-  /** \brief Windows Structured Exception Handling's try statement.
+  /** Windows Structured Exception Handling's try statement.
    */
   CXCursor_SEHTryStmt                    = 226,
 
-  /** \brief Windows Structured Exception Handling's except statement.
+  /** Windows Structured Exception Handling's except statement.
    */
   CXCursor_SEHExceptStmt                 = 227,
 
-  /** \brief Windows Structured Exception Handling's finally statement.
+  /** Windows Structured Exception Handling's finally statement.
    */
   CXCursor_SEHFinallyStmt                = 228,
 
-  /** \brief A MS inline assembly statement extension.
+  /** A MS inline assembly statement extension.
    */
   CXCursor_MSAsmStmt                     = 229,
 
-  /** \brief The null statement ";": C99 6.8.3p3.
+  /** The null statement ";": C99 6.8.3p3.
    *
    * This cursor kind is used to describe the null statement.
    */
   CXCursor_NullStmt                      = 230,
 
-  /** \brief Adaptor class for mixing declarations with statements and
+  /** Adaptor class for mixing declarations with statements and
    * expressions.
    */
   CXCursor_DeclStmt                      = 231,
 
-  /** \brief OpenMP parallel directive.
+  /** OpenMP parallel directive.
    */
   CXCursor_OMPParallelDirective          = 232,
 
-  /** \brief OpenMP SIMD directive.
+  /** OpenMP SIMD directive.
    */
   CXCursor_OMPSimdDirective              = 233,
 
-  /** \brief OpenMP for directive.
+  /** OpenMP for directive.
    */
   CXCursor_OMPForDirective               = 234,
 
-  /** \brief OpenMP sections directive.
+  /** OpenMP sections directive.
    */
   CXCursor_OMPSectionsDirective          = 235,
 
-  /** \brief OpenMP section directive.
+  /** OpenMP section directive.
    */
   CXCursor_OMPSectionDirective           = 236,
 
-  /** \brief OpenMP single directive.
+  /** OpenMP single directive.
    */
   CXCursor_OMPSingleDirective            = 237,
 
-  /** \brief OpenMP parallel for directive.
+  /** OpenMP parallel for directive.
    */
   CXCursor_OMPParallelForDirective       = 238,
 
-  /** \brief OpenMP parallel sections directive.
+  /** OpenMP parallel sections directive.
    */
   CXCursor_OMPParallelSectionsDirective  = 239,
 
-  /** \brief OpenMP task directive.
+  /** OpenMP task directive.
    */
   CXCursor_OMPTaskDirective              = 240,
 
-  /** \brief OpenMP master directive.
+  /** OpenMP master directive.
    */
   CXCursor_OMPMasterDirective            = 241,
 
-  /** \brief OpenMP critical directive.
+  /** OpenMP critical directive.
    */
   CXCursor_OMPCriticalDirective          = 242,
 
-  /** \brief OpenMP taskyield directive.
+  /** OpenMP taskyield directive.
    */
   CXCursor_OMPTaskyieldDirective         = 243,
 
-  /** \brief OpenMP barrier directive.
+  /** OpenMP barrier directive.
    */
   CXCursor_OMPBarrierDirective           = 244,
 
-  /** \brief OpenMP taskwait directive.
+  /** OpenMP taskwait directive.
    */
   CXCursor_OMPTaskwaitDirective          = 245,
 
-  /** \brief OpenMP flush directive.
+  /** OpenMP flush directive.
    */
   CXCursor_OMPFlushDirective             = 246,
 
-  /** \brief Windows Structured Exception Handling's leave statement.
+  /** Windows Structured Exception Handling's leave statement.
    */
   CXCursor_SEHLeaveStmt                  = 247,
 
-  /** \brief OpenMP ordered directive.
+  /** OpenMP ordered directive.
    */
   CXCursor_OMPOrderedDirective           = 248,
 
-  /** \brief OpenMP atomic directive.
+  /** OpenMP atomic directive.
    */
   CXCursor_OMPAtomicDirective            = 249,
 
-  /** \brief OpenMP for SIMD directive.
+  /** OpenMP for SIMD directive.
    */
   CXCursor_OMPForSimdDirective           = 250,
 
-  /** \brief OpenMP parallel for SIMD directive.
+  /** OpenMP parallel for SIMD directive.
    */
   CXCursor_OMPParallelForSimdDirective   = 251,
 
-  /** \brief OpenMP target directive.
+  /** OpenMP target directive.
    */
   CXCursor_OMPTargetDirective            = 252,
 
-  /** \brief OpenMP teams directive.
+  /** OpenMP teams directive.
    */
   CXCursor_OMPTeamsDirective             = 253,
 
-  /** \brief OpenMP taskgroup directive.
+  /** OpenMP taskgroup directive.
    */
   CXCursor_OMPTaskgroupDirective         = 254,
 
-  /** \brief OpenMP cancellation point directive.
+  /** OpenMP cancellation point directive.
    */
   CXCursor_OMPCancellationPointDirective = 255,
 
-  /** \brief OpenMP cancel directive.
+  /** OpenMP cancel directive.
    */
   CXCursor_OMPCancelDirective            = 256,
 
-  /** \brief OpenMP target data directive.
+  /** OpenMP target data directive.
    */
   CXCursor_OMPTargetDataDirective        = 257,
 
-  /** \brief OpenMP taskloop directive.
+  /** OpenMP taskloop directive.
    */
   CXCursor_OMPTaskLoopDirective          = 258,
 
-  /** \brief OpenMP taskloop simd directive.
+  /** OpenMP taskloop simd directive.
    */
   CXCursor_OMPTaskLoopSimdDirective      = 259,
 
-  /** \brief OpenMP distribute directive.
+  /** OpenMP distribute directive.
    */
   CXCursor_OMPDistributeDirective        = 260,
 
-  /** \brief OpenMP target enter data directive.
+  /** OpenMP target enter data directive.
    */
   CXCursor_OMPTargetEnterDataDirective   = 261,
 
-  /** \brief OpenMP target exit data directive.
+  /** OpenMP target exit data directive.
    */
   CXCursor_OMPTargetExitDataDirective    = 262,
 
-  /** \brief OpenMP target parallel directive.
+  /** OpenMP target parallel directive.
    */
   CXCursor_OMPTargetParallelDirective    = 263,
 
-  /** \brief OpenMP target parallel for directive.
+  /** OpenMP target parallel for directive.
    */
   CXCursor_OMPTargetParallelForDirective = 264,
 
-  /** \brief OpenMP target update directive.
+  /** OpenMP target update directive.
    */
   CXCursor_OMPTargetUpdateDirective      = 265,
 
-  /** \brief OpenMP distribute parallel for directive.
+  /** OpenMP distribute parallel for directive.
    */
   CXCursor_OMPDistributeParallelForDirective = 266,
 
-  /** \brief OpenMP distribute parallel for simd directive.
+  /** OpenMP distribute parallel for simd directive.
    */
   CXCursor_OMPDistributeParallelForSimdDirective = 267,
 
-  /** \brief OpenMP distribute simd directive.
+  /** OpenMP distribute simd directive.
    */
   CXCursor_OMPDistributeSimdDirective = 268,
 
-  /** \brief OpenMP target parallel for simd directive.
+  /** OpenMP target parallel for simd directive.
    */
   CXCursor_OMPTargetParallelForSimdDirective = 269,
 
-  /** \brief OpenMP target simd directive.
+  /** OpenMP target simd directive.
    */
   CXCursor_OMPTargetSimdDirective = 270,
 
-  /** \brief OpenMP teams distribute directive.
+  /** OpenMP teams distribute directive.
    */
   CXCursor_OMPTeamsDistributeDirective = 271,
 
-  /** \brief OpenMP teams distribute simd directive.
+  /** OpenMP teams distribute simd directive.
    */
   CXCursor_OMPTeamsDistributeSimdDirective = 272,
 
-  /** \brief OpenMP teams distribute parallel for simd directive.
+  /** OpenMP teams distribute parallel for simd directive.
    */
   CXCursor_OMPTeamsDistributeParallelForSimdDirective = 273,
 
-  /** \brief OpenMP teams distribute parallel for directive.
+  /** OpenMP teams distribute parallel for directive.
    */
   CXCursor_OMPTeamsDistributeParallelForDirective = 274,
 
-  /** \brief OpenMP target teams directive.
+  /** OpenMP target teams directive.
    */
   CXCursor_OMPTargetTeamsDirective = 275,
 
-  /** \brief OpenMP target teams distribute directive.
+  /** OpenMP target teams distribute directive.
    */
   CXCursor_OMPTargetTeamsDistributeDirective = 276,
 
-  /** \brief OpenMP target teams distribute parallel for directive.
+  /** OpenMP target teams distribute parallel for directive.
    */
   CXCursor_OMPTargetTeamsDistributeParallelForDirective = 277,
 
-  /** \brief OpenMP target teams distribute parallel for simd directive.
+  /** OpenMP target teams distribute parallel for simd directive.
    */
   CXCursor_OMPTargetTeamsDistributeParallelForSimdDirective = 278,
 
-  /** \brief OpenMP target teams distribute simd directive.
+  /** OpenMP target teams distribute simd directive.
    */
   CXCursor_OMPTargetTeamsDistributeSimdDirective = 279,
 
   CXCursor_LastStmt = CXCursor_OMPTargetTeamsDistributeSimdDirective,
 
   /**
-   * \brief Cursor that represents the translation unit itself.
+   * Cursor that represents the translation unit itself.
    *
    * The translation unit cursor exists primarily to act as the root
    * cursor for traversing the contents of a translation unit.
@@ -2522,7 +2522,7 @@
   /* Attributes */
   CXCursor_FirstAttr                     = 400,
   /**
-   * \brief An attribute whose specific kind is not exposed via this
+   * An attribute whose specific kind is not exposed via this
    * interface.
    */
   CXCursor_UnexposedAttr                 = 400,
@@ -2559,29 +2559,29 @@
 
   /* Extra Declarations */
   /**
-   * \brief A module import declaration.
+   * A module import declaration.
    */
   CXCursor_ModuleImportDecl              = 600,
   CXCursor_TypeAliasTemplateDecl         = 601,
   /**
-   * \brief A static_assert or _Static_assert node
+   * A static_assert or _Static_assert node
    */
   CXCursor_StaticAssert                  = 602,
   /**
-   * \brief a friend declaration.
+   * a friend declaration.
    */
   CXCursor_FriendDecl                    = 603,
   CXCursor_FirstExtraDecl                = CXCursor_ModuleImportDecl,
   CXCursor_LastExtraDecl                 = CXCursor_FriendDecl,
 
   /**
-   * \brief A code completion overload candidate.
+   * A code completion overload candidate.
    */
   CXCursor_OverloadCandidate             = 700
 };
 
 /**
- * \brief A cursor representing some element in the abstract syntax tree for
+ * A cursor representing some element in the abstract syntax tree for
  * a translation unit.
  *
  * The cursor abstraction unifies the different kinds of entities in a
@@ -2611,12 +2611,12 @@
  */
 
 /**
- * \brief Retrieve the NULL cursor, which represents no entity.
+ * Retrieve the NULL cursor, which represents no entity.
  */
 CINDEX_LINKAGE CXCursor clang_getNullCursor(void);
 
 /**
- * \brief Retrieve the cursor that represents the given translation unit.
+ * Retrieve the cursor that represents the given translation unit.
  *
  * The translation unit cursor can be used to start traversing the
  * various declarations within the given translation unit.
@@ -2624,32 +2624,32 @@
 CINDEX_LINKAGE CXCursor clang_getTranslationUnitCursor(CXTranslationUnit);
 
 /**
- * \brief Determine whether two cursors are equivalent.
+ * Determine whether two cursors are equivalent.
  */
 CINDEX_LINKAGE unsigned clang_equalCursors(CXCursor, CXCursor);
 
 /**
- * \brief Returns non-zero if \p cursor is null.
+ * Returns non-zero if \p cursor is null.
  */
 CINDEX_LINKAGE int clang_Cursor_isNull(CXCursor cursor);
 
 /**
- * \brief Compute a hash value for the given cursor.
+ * Compute a hash value for the given cursor.
  */
 CINDEX_LINKAGE unsigned clang_hashCursor(CXCursor);
   
 /**
- * \brief Retrieve the kind of the given cursor.
+ * Retrieve the kind of the given cursor.
  */
 CINDEX_LINKAGE enum CXCursorKind clang_getCursorKind(CXCursor);
 
 /**
- * \brief Determine whether the given cursor kind represents a declaration.
+ * Determine whether the given cursor kind represents a declaration.
  */
 CINDEX_LINKAGE unsigned clang_isDeclaration(enum CXCursorKind);
 
 /**
- * \brief Determine whether the given declaration is invalid.
+ * Determine whether the given declaration is invalid.
  *
  * A declaration is invalid if it could not be parsed successfully.
  *
@@ -2659,7 +2659,7 @@
 CINDEX_LINKAGE unsigned clang_isInvalidDeclaration(CXCursor);
 
 /**
- * \brief Determine whether the given cursor kind represents a simple
+ * Determine whether the given cursor kind represents a simple
  * reference.
  *
  * Note that other kinds of cursors (such as expressions) can also refer to
@@ -2669,90 +2669,90 @@
 CINDEX_LINKAGE unsigned clang_isReference(enum CXCursorKind);
 
 /**
- * \brief Determine whether the given cursor kind represents an expression.
+ * Determine whether the given cursor kind represents an expression.
  */
 CINDEX_LINKAGE unsigned clang_isExpression(enum CXCursorKind);
 
 /**
- * \brief Determine whether the given cursor kind represents a statement.
+ * Determine whether the given cursor kind represents a statement.
  */
 CINDEX_LINKAGE unsigned clang_isStatement(enum CXCursorKind);
 
 /**
- * \brief Determine whether the given cursor kind represents an attribute.
+ * Determine whether the given cursor kind represents an attribute.
  */
 CINDEX_LINKAGE unsigned clang_isAttribute(enum CXCursorKind);
 
 /**
- * \brief Determine whether the given cursor has any attributes.
+ * Determine whether the given cursor has any attributes.
  */
 CINDEX_LINKAGE unsigned clang_Cursor_hasAttrs(CXCursor C);
 
 /**
- * \brief Determine whether the given cursor kind represents an invalid
+ * Determine whether the given cursor kind represents an invalid
  * cursor.
  */
 CINDEX_LINKAGE unsigned clang_isInvalid(enum CXCursorKind);
 
 /**
- * \brief Determine whether the given cursor kind represents a translation
+ * Determine whether the given cursor kind represents a translation
  * unit.
  */
 CINDEX_LINKAGE unsigned clang_isTranslationUnit(enum CXCursorKind);
 
 /***
- * \brief Determine whether the given cursor represents a preprocessing
+ * Determine whether the given cursor represents a preprocessing
  * element, such as a preprocessor directive or macro instantiation.
  */
 CINDEX_LINKAGE unsigned clang_isPreprocessing(enum CXCursorKind);
   
 /***
- * \brief Determine whether the given cursor represents a currently
+ * Determine whether the given cursor represents a currently
  *  unexposed piece of the AST (e.g., CXCursor_UnexposedStmt).
  */
 CINDEX_LINKAGE unsigned clang_isUnexposed(enum CXCursorKind);
 
 /**
- * \brief Describe the linkage of the entity referred to by a cursor.
+ * Describe the linkage of the entity referred to by a cursor.
  */
 enum CXLinkageKind {
-  /** \brief This value indicates that no linkage information is available
+  /** This value indicates that no linkage information is available
    * for a provided CXCursor. */
   CXLinkage_Invalid,
   /**
-   * \brief This is the linkage for variables, parameters, and so on that
+   * This is the linkage for variables, parameters, and so on that
    *  have automatic storage.  This covers normal (non-extern) local variables.
    */
   CXLinkage_NoLinkage,
-  /** \brief This is the linkage for static variables and static functions. */
+  /** This is the linkage for static variables and static functions. */
   CXLinkage_Internal,
-  /** \brief This is the linkage for entities with external linkage that live
+  /** This is the linkage for entities with external linkage that live
    * in C++ anonymous namespaces.*/
   CXLinkage_UniqueExternal,
-  /** \brief This is the linkage for entities with true, external linkage. */
+  /** This is the linkage for entities with true, external linkage. */
   CXLinkage_External
 };
 
 /**
- * \brief Determine the linkage of the entity referred to by a given cursor.
+ * Determine the linkage of the entity referred to by a given cursor.
  */
 CINDEX_LINKAGE enum CXLinkageKind clang_getCursorLinkage(CXCursor cursor);
 
 enum CXVisibilityKind {
-  /** \brief This value indicates that no visibility information is available
+  /** This value indicates that no visibility information is available
    * for a provided CXCursor. */
   CXVisibility_Invalid,
 
-  /** \brief Symbol not seen by the linker. */
+  /** Symbol not seen by the linker. */
   CXVisibility_Hidden,
-  /** \brief Symbol seen by the linker but resolves to a symbol inside this object. */
+  /** Symbol seen by the linker but resolves to a symbol inside this object. */
   CXVisibility_Protected,
-  /** \brief Symbol seen by the linker and acts like a normal symbol. */
+  /** Symbol seen by the linker and acts like a normal symbol. */
   CXVisibility_Default
 };
 
 /**
- * \brief Describe the visibility of the entity referred to by a cursor.
+ * Describe the visibility of the entity referred to by a cursor.
  *
  * This returns the default visibility if not explicitly specified by
  * a visibility attribute. The default visibility may be changed by
@@ -2765,7 +2765,7 @@
 CINDEX_LINKAGE enum CXVisibilityKind clang_getCursorVisibility(CXCursor cursor);
 
 /**
- * \brief Determine the availability of the entity that this cursor refers to,
+ * Determine the availability of the entity that this cursor refers to,
  * taking the current target platform into account.
  *
  * \param cursor The cursor to query.
@@ -2781,39 +2781,39 @@
  */
 typedef struct CXPlatformAvailability {
   /**
-   * \brief A string that describes the platform for which this structure
+   * A string that describes the platform for which this structure
    * provides availability information.
    *
    * Possible values are "ios" or "macos".
    */
   CXString Platform;
   /**
-   * \brief The version number in which this entity was introduced.
+   * The version number in which this entity was introduced.
    */
   CXVersion Introduced;
   /**
-   * \brief The version number in which this entity was deprecated (but is
+   * The version number in which this entity was deprecated (but is
    * still available).
    */
   CXVersion Deprecated;
   /**
-   * \brief The version number in which this entity was obsoleted, and therefore
+   * The version number in which this entity was obsoleted, and therefore
    * is no longer available.
    */
   CXVersion Obsoleted;
   /**
-   * \brief Whether the entity is unconditionally unavailable on this platform.
+   * Whether the entity is unconditionally unavailable on this platform.
    */
   int Unavailable;
   /**
-   * \brief An optional message to provide to a user of this API, e.g., to
+   * An optional message to provide to a user of this API, e.g., to
    * suggest replacement APIs.
    */
   CXString Message;
 } CXPlatformAvailability;
 
 /**
- * \brief Determine the availability of the entity that this cursor refers to
+ * Determine the availability of the entity that this cursor refers to
  * on any platforms for which availability information is known.
  *
  * \param cursor The cursor to query.
@@ -2858,13 +2858,13 @@
                                     int availability_size);
 
 /**
- * \brief Free the memory associated with a \c CXPlatformAvailability structure.
+ * Free the memory associated with a \c CXPlatformAvailability structure.
  */
 CINDEX_LINKAGE void
 clang_disposeCXPlatformAvailability(CXPlatformAvailability *availability);
   
 /**
- * \brief Describe the "language" of the entity referred to by a cursor.
+ * Describe the "language" of the entity referred to by a cursor.
  */
 enum CXLanguageKind {
   CXLanguage_Invalid = 0,
@@ -2874,12 +2874,12 @@
 };
 
 /**
- * \brief Determine the "language" of the entity referred to by a given cursor.
+ * Determine the "language" of the entity referred to by a given cursor.
  */
 CINDEX_LINKAGE enum CXLanguageKind clang_getCursorLanguage(CXCursor cursor);
 
 /**
- * \brief Describe the "thread-local storage (TLS) kind" of the declaration
+ * Describe the "thread-local storage (TLS) kind" of the declaration
  * referred to by a cursor.
  */
 enum CXTLSKind {
@@ -2889,33 +2889,33 @@
 };
 
 /**
- * \brief Determine the "thread-local storage (TLS) kind" of the declaration
+ * Determine the "thread-local storage (TLS) kind" of the declaration
  * referred to by a cursor.
  */
 CINDEX_LINKAGE enum CXTLSKind clang_getCursorTLSKind(CXCursor cursor);
 
 /**
- * \brief Returns the translation unit that a cursor originated from.
+ * Returns the translation unit that a cursor originated from.
  */
 CINDEX_LINKAGE CXTranslationUnit clang_Cursor_getTranslationUnit(CXCursor);
 
 /**
- * \brief A fast container representing a set of CXCursors.
+ * A fast container representing a set of CXCursors.
  */
 typedef struct CXCursorSetImpl *CXCursorSet;
 
 /**
- * \brief Creates an empty CXCursorSet.
+ * Creates an empty CXCursorSet.
  */
 CINDEX_LINKAGE CXCursorSet clang_createCXCursorSet(void);
 
 /**
- * \brief Disposes a CXCursorSet and releases its associated memory.
+ * Disposes a CXCursorSet and releases its associated memory.
  */
 CINDEX_LINKAGE void clang_disposeCXCursorSet(CXCursorSet cset);
 
 /**
- * \brief Queries a CXCursorSet to see if it contains a specific CXCursor.
+ * Queries a CXCursorSet to see if it contains a specific CXCursor.
  *
  * \returns non-zero if the set contains the specified cursor.
 */
@@ -2923,7 +2923,7 @@
                                                    CXCursor cursor);
 
 /**
- * \brief Inserts a CXCursor into a CXCursorSet.
+ * Inserts a CXCursor into a CXCursorSet.
  *
  * \returns zero if the CXCursor was already in the set, and non-zero otherwise.
 */
@@ -2931,7 +2931,7 @@
                                                  CXCursor cursor);
 
 /**
- * \brief Determine the semantic parent of the given cursor.
+ * Determine the semantic parent of the given cursor.
  *
  * The semantic parent of a cursor is the cursor that semantically contains
  * the given \p cursor. For many declarations, the lexical and semantic parents
@@ -2966,7 +2966,7 @@
 CINDEX_LINKAGE CXCursor clang_getCursorSemanticParent(CXCursor cursor);
 
 /**
- * \brief Determine the lexical parent of the given cursor.
+ * Determine the lexical parent of the given cursor.
  *
  * The lexical parent of a cursor is the cursor in which the given \p cursor
  * was actually written. For many declarations, the lexical and semantic parents
@@ -3002,7 +3002,7 @@
 CINDEX_LINKAGE CXCursor clang_getCursorLexicalParent(CXCursor cursor);
 
 /**
- * \brief Determine the set of methods that are overridden by the given
+ * Determine the set of methods that are overridden by the given
  * method.
  *
  * In both Objective-C and C++, a method (aka virtual member function,
@@ -3049,13 +3049,13 @@
                                                unsigned *num_overridden);
 
 /**
- * \brief Free the set of overridden cursors returned by \c
+ * Free the set of overridden cursors returned by \c
  * clang_getOverriddenCursors().
  */
 CINDEX_LINKAGE void clang_disposeOverriddenCursors(CXCursor *overridden);
 
 /**
- * \brief Retrieve the file that is included by the given inclusion directive
+ * Retrieve the file that is included by the given inclusion directive
  * cursor.
  */
 CINDEX_LINKAGE CXFile clang_getIncludedFile(CXCursor cursor);
@@ -3076,7 +3076,7 @@
  */
 
 /**
- * \brief Map a source location to the cursor that describes the entity at that
+ * Map a source location to the cursor that describes the entity at that
  * location in the source code.
  *
  * clang_getCursor() maps an arbitrary source location within a translation
@@ -3093,7 +3093,7 @@
 CINDEX_LINKAGE CXCursor clang_getCursor(CXTranslationUnit, CXSourceLocation);
 
 /**
- * \brief Retrieve the physical location of the source constructor referenced
+ * Retrieve the physical location of the source constructor referenced
  * by the given cursor.
  *
  * The location of a declaration is typically the location of the name of that
@@ -3105,7 +3105,7 @@
 CINDEX_LINKAGE CXSourceLocation clang_getCursorLocation(CXCursor);
 
 /**
- * \brief Retrieve the physical extent of the source construct referenced by
+ * Retrieve the physical extent of the source construct referenced by
  * the given cursor.
  *
  * The extent of a cursor starts with the file/line/column pointing at the
@@ -3128,16 +3128,16 @@
  */
 
 /**
- * \brief Describes the kind of type
+ * Describes the kind of type
  */
 enum CXTypeKind {
   /**
-   * \brief Represents an invalid type (e.g., where no type is available).
+   * Represents an invalid type (e.g., where no type is available).
    */
   CXType_Invalid = 0,
 
   /**
-   * \brief A type whose specific kind is not exposed via this
+   * A type whose specific kind is not exposed via this
    * interface.
    */
   CXType_Unexposed = 1,
@@ -3198,7 +3198,7 @@
   CXType_Auto = 118,
 
   /**
-   * \brief Represents a type that was referred to using an elaborated type keyword.
+   * Represents a type that was referred to using an elaborated type keyword.
    *
    * E.g., struct S, or via a qualified name, e.g., N::M::type, or both.
    */
@@ -3251,7 +3251,7 @@
 };
 
 /**
- * \brief Describes the calling convention of a function type
+ * Describes the calling convention of a function type
  */
 enum CXCallingConv {
   CXCallingConv_Default = 0,
@@ -3278,7 +3278,7 @@
 };
 
 /**
- * \brief The type of an element in the abstract syntax tree.
+ * The type of an element in the abstract syntax tree.
  *
  */
 typedef struct {
@@ -3287,12 +3287,12 @@
 } CXType;
 
 /**
- * \brief Retrieve the type of a CXCursor (if any).
+ * Retrieve the type of a CXCursor (if any).
  */
 CINDEX_LINKAGE CXType clang_getCursorType(CXCursor C);
 
 /**
- * \brief Pretty-print the underlying type using the rules of the
+ * Pretty-print the underlying type using the rules of the
  * language of the translation unit from which it came.
  *
  * If the type is invalid, an empty string is returned.
@@ -3300,7 +3300,7 @@
 CINDEX_LINKAGE CXString clang_getTypeSpelling(CXType CT);
 
 /**
- * \brief Retrieve the underlying type of a typedef declaration.
+ * Retrieve the underlying type of a typedef declaration.
  *
  * If the cursor does not reference a typedef declaration, an invalid type is
  * returned.
@@ -3308,7 +3308,7 @@
 CINDEX_LINKAGE CXType clang_getTypedefDeclUnderlyingType(CXCursor C);
 
 /**
- * \brief Retrieve the integer type of an enum declaration.
+ * Retrieve the integer type of an enum declaration.
  *
  * If the cursor does not reference an enum declaration, an invalid type is
  * returned.
@@ -3316,7 +3316,7 @@
 CINDEX_LINKAGE CXType clang_getEnumDeclIntegerType(CXCursor C);
 
 /**
- * \brief Retrieve the integer value of an enum constant declaration as a signed
+ * Retrieve the integer value of an enum constant declaration as a signed
  *  long long.
  *
  * If the cursor does not reference an enum constant declaration, LLONG_MIN is returned.
@@ -3326,7 +3326,7 @@
 CINDEX_LINKAGE long long clang_getEnumConstantDeclValue(CXCursor C);
 
 /**
- * \brief Retrieve the integer value of an enum constant declaration as an unsigned
+ * Retrieve the integer value of an enum constant declaration as an unsigned
  *  long long.
  *
  * If the cursor does not reference an enum constant declaration, ULLONG_MAX is returned.
@@ -3336,14 +3336,14 @@
 CINDEX_LINKAGE unsigned long long clang_getEnumConstantDeclUnsignedValue(CXCursor C);
 
 /**
- * \brief Retrieve the bit width of a bit field declaration as an integer.
+ * Retrieve the bit width of a bit field declaration as an integer.
  *
  * If a cursor that is not a bit field declaration is passed in, -1 is returned.
  */
 CINDEX_LINKAGE int clang_getFieldDeclBitWidth(CXCursor C);
 
 /**
- * \brief Retrieve the number of non-variadic arguments associated with a given
+ * Retrieve the number of non-variadic arguments associated with a given
  * cursor.
  *
  * The number of arguments can be determined for calls as well as for
@@ -3352,7 +3352,7 @@
 CINDEX_LINKAGE int clang_Cursor_getNumArguments(CXCursor C);
 
 /**
- * \brief Retrieve the argument cursor of a function or method.
+ * Retrieve the argument cursor of a function or method.
  *
  * The argument cursor can be determined for calls as well as for declarations
  * of functions or methods. For other cursors and for invalid indices, an
@@ -3361,7 +3361,7 @@
 CINDEX_LINKAGE CXCursor clang_Cursor_getArgument(CXCursor C, unsigned i);
 
 /**
- * \brief Describes the kind of a template argument.
+ * Describes the kind of a template argument.
  *
  * See the definition of llvm::clang::TemplateArgument::ArgKind for full
  * element descriptions.
@@ -3381,7 +3381,7 @@
 };
 
 /**
- *\brief Returns the number of template args of a function decl representing a
+ *Returns the number of template args of a function decl representing a
  * template specialization.
  *
  * If the argument cursor cannot be converted into a template function
@@ -3399,7 +3399,7 @@
 CINDEX_LINKAGE int clang_Cursor_getNumTemplateArguments(CXCursor C);
 
 /**
- * \brief Retrieve the kind of the I'th template argument of the CXCursor C.
+ * Retrieve the kind of the I'th template argument of the CXCursor C.
  *
  * If the argument CXCursor does not represent a FunctionDecl, an invalid
  * template argument kind is returned.
@@ -3418,7 +3418,7 @@
     CXCursor C, unsigned I);
 
 /**
- * \brief Retrieve a CXType representing the type of a TemplateArgument of a
+ * Retrieve a CXType representing the type of a TemplateArgument of a
  *  function decl representing a template specialization.
  *
  * If the argument CXCursor does not represent a FunctionDecl whose I'th
@@ -3439,7 +3439,7 @@
                                                            unsigned I);
 
 /**
- * \brief Retrieve the value of an Integral TemplateArgument (of a function
+ * Retrieve the value of an Integral TemplateArgument (of a function
  *  decl representing a template specialization) as a signed long long.
  *
  * It is undefined to call this function on a CXCursor that does not represent a
@@ -3459,7 +3459,7 @@
                                                                unsigned I);
 
 /**
- * \brief Retrieve the value of an Integral TemplateArgument (of a function
+ * Retrieve the value of an Integral TemplateArgument (of a function
  *  decl representing a template specialization) as an unsigned long long.
  *
  * It is undefined to call this function on a CXCursor that does not represent a
@@ -3479,7 +3479,7 @@
     CXCursor C, unsigned I);
 
 /**
- * \brief Determine whether two CXTypes represent the same type.
+ * Determine whether two CXTypes represent the same type.
  *
  * \returns non-zero if the CXTypes represent the same type and
  *          zero otherwise.
@@ -3487,7 +3487,7 @@
 CINDEX_LINKAGE unsigned clang_equalTypes(CXType A, CXType B);
 
 /**
- * \brief Return the canonical type for a CXType.
+ * Return the canonical type for a CXType.
  *
  * Clang's type system explicitly models typedefs and all the ways
  * a specific type can be represented.  The canonical type is the underlying
@@ -3497,61 +3497,61 @@
 CINDEX_LINKAGE CXType clang_getCanonicalType(CXType T);
 
 /**
- * \brief Determine whether a CXType has the "const" qualifier set,
+ * Determine whether a CXType has the "const" qualifier set,
  * without looking through typedefs that may have added "const" at a
  * different level.
  */
 CINDEX_LINKAGE unsigned clang_isConstQualifiedType(CXType T);
 
 /**
- * \brief Determine whether a  CXCursor that is a macro, is
+ * Determine whether a  CXCursor that is a macro, is
  * function like.
  */
 CINDEX_LINKAGE unsigned clang_Cursor_isMacroFunctionLike(CXCursor C);
 
 /**
- * \brief Determine whether a  CXCursor that is a macro, is a
+ * Determine whether a  CXCursor that is a macro, is a
  * builtin one.
  */
 CINDEX_LINKAGE unsigned clang_Cursor_isMacroBuiltin(CXCursor C);
 
 /**
- * \brief Determine whether a  CXCursor that is a function declaration, is an
+ * Determine whether a  CXCursor that is a function declaration, is an
  * inline declaration.
  */
 CINDEX_LINKAGE unsigned clang_Cursor_isFunctionInlined(CXCursor C);
 
 /**
- * \brief Determine whether a CXType has the "volatile" qualifier set,
+ * Determine whether a CXType has the "volatile" qualifier set,
  * without looking through typedefs that may have added "volatile" at
  * a different level.
  */
 CINDEX_LINKAGE unsigned clang_isVolatileQualifiedType(CXType T);
 
 /**
- * \brief Determine whether a CXType has the "restrict" qualifier set,
+ * Determine whether a CXType has the "restrict" qualifier set,
  * without looking through typedefs that may have added "restrict" at a
  * different level.
  */
 CINDEX_LINKAGE unsigned clang_isRestrictQualifiedType(CXType T);
 
 /**
- * \brief Returns the address space of the given type.
+ * Returns the address space of the given type.
  */
 CINDEX_LINKAGE unsigned clang_getAddressSpace(CXType T);
 
 /**
- * \brief Returns the typedef name of the given type.
+ * Returns the typedef name of the given type.
  */
 CINDEX_LINKAGE CXString clang_getTypedefName(CXType CT);
 
 /**
- * \brief For pointer types, returns the type of the pointee.
+ * For pointer types, returns the type of the pointee.
  */
 CINDEX_LINKAGE CXType clang_getPointeeType(CXType T);
 
 /**
- * \brief Return the cursor for the declaration of the given type.
+ * Return the cursor for the declaration of the given type.
  */
 CINDEX_LINKAGE CXCursor clang_getTypeDeclaration(CXType T);
 
@@ -3566,33 +3566,33 @@
 CINDEX_LINKAGE CXString clang_Type_getObjCEncoding(CXType type); 
 
 /**
- * \brief Retrieve the spelling of a given CXTypeKind.
+ * Retrieve the spelling of a given CXTypeKind.
  */
 CINDEX_LINKAGE CXString clang_getTypeKindSpelling(enum CXTypeKind K);
 
 /**
- * \brief Retrieve the calling convention associated with a function type.
+ * Retrieve the calling convention associated with a function type.
  *
  * If a non-function type is passed in, CXCallingConv_Invalid is returned.
  */
 CINDEX_LINKAGE enum CXCallingConv clang_getFunctionTypeCallingConv(CXType T);
 
 /**
- * \brief Retrieve the return type associated with a function type.
+ * Retrieve the return type associated with a function type.
  *
  * If a non-function type is passed in, an invalid type is returned.
  */
 CINDEX_LINKAGE CXType clang_getResultType(CXType T);
 
 /**
- * \brief Retrieve the exception specification type associated with a function type.
+ * Retrieve the exception specification type associated with a function type.
  *
  * If a non-function type is passed in, an error code of -1 is returned.
  */
 CINDEX_LINKAGE int clang_getExceptionSpecificationType(CXType T);
 
 /**
- * \brief Retrieve the number of non-variadic parameters associated with a
+ * Retrieve the number of non-variadic parameters associated with a
  * function type.
  *
  * If a non-function type is passed in, -1 is returned.
@@ -3600,7 +3600,7 @@
 CINDEX_LINKAGE int clang_getNumArgTypes(CXType T);
 
 /**
- * \brief Retrieve the type of a parameter of a function type.
+ * Retrieve the type of a parameter of a function type.
  *
  * If a non-function type is passed in or the function does not have enough
  * parameters, an invalid type is returned.
@@ -3608,32 +3608,32 @@
 CINDEX_LINKAGE CXType clang_getArgType(CXType T, unsigned i);
 
 /**
- * \brief Return 1 if the CXType is a variadic function type, and 0 otherwise.
+ * Return 1 if the CXType is a variadic function type, and 0 otherwise.
  */
 CINDEX_LINKAGE unsigned clang_isFunctionTypeVariadic(CXType T);
 
 /**
- * \brief Retrieve the return type associated with a given cursor.
+ * Retrieve the return type associated with a given cursor.
  *
  * This only returns a valid type if the cursor refers to a function or method.
  */
 CINDEX_LINKAGE CXType clang_getCursorResultType(CXCursor C);
 
 /**
- * \brief Retrieve the exception specification type associated with a given cursor.
+ * Retrieve the exception specification type associated with a given cursor.
  *
  * This only returns a valid result if the cursor refers to a function or method.
  */
 CINDEX_LINKAGE int clang_getCursorExceptionSpecificationType(CXCursor C);
 
 /**
- * \brief Return 1 if the CXType is a POD (plain old data) type, and 0
+ * Return 1 if the CXType is a POD (plain old data) type, and 0
  *  otherwise.
  */
 CINDEX_LINKAGE unsigned clang_isPODType(CXType T);
 
 /**
- * \brief Return the element type of an array, complex, or vector type.
+ * Return the element type of an array, complex, or vector type.
  *
  * If a type is passed in that is not an array, complex, or vector type,
  * an invalid type is returned.
@@ -3641,7 +3641,7 @@
 CINDEX_LINKAGE CXType clang_getElementType(CXType T);
 
 /**
- * \brief Return the number of elements of an array or vector type.
+ * Return the number of elements of an array or vector type.
  *
  * If a type is passed in that is not an array or vector type,
  * -1 is returned.
@@ -3649,28 +3649,28 @@
 CINDEX_LINKAGE long long clang_getNumElements(CXType T);
 
 /**
- * \brief Return the element type of an array type.
+ * Return the element type of an array type.
  *
  * If a non-array type is passed in, an invalid type is returned.
  */
 CINDEX_LINKAGE CXType clang_getArrayElementType(CXType T);
 
 /**
- * \brief Return the array size of a constant array.
+ * Return the array size of a constant array.
  *
  * If a non-array type is passed in, -1 is returned.
  */
 CINDEX_LINKAGE long long clang_getArraySize(CXType T);
 
 /**
- * \brief Retrieve the type named by the qualified-id.
+ * Retrieve the type named by the qualified-id.
  *
  * If a non-elaborated type is passed in, an invalid type is returned.
  */
 CINDEX_LINKAGE CXType clang_Type_getNamedType(CXType T);
 
 /**
- * \brief Determine if a typedef is 'transparent' tag.
+ * Determine if a typedef is 'transparent' tag.
  *
  * A typedef is considered 'transparent' if it shares a name and spelling
  * location with its underlying tag type, as is the case with the NS_ENUM macro.
@@ -3680,7 +3680,7 @@
 CINDEX_LINKAGE unsigned clang_Type_isTransparentTagTypedef(CXType T);
 
 /**
- * \brief List the possible error codes for \c clang_Type_getSizeOf,
+ * List the possible error codes for \c clang_Type_getSizeOf,
  *   \c clang_Type_getAlignOf, \c clang_Type_getOffsetOf and
  *   \c clang_Cursor_getOffsetOf.
  *
@@ -3689,29 +3689,29 @@
  */
 enum CXTypeLayoutError {
   /**
-   * \brief Type is of kind CXType_Invalid.
+   * Type is of kind CXType_Invalid.
    */
   CXTypeLayoutError_Invalid = -1,
   /**
-   * \brief The type is an incomplete Type.
+   * The type is an incomplete Type.
    */
   CXTypeLayoutError_Incomplete = -2,
   /**
-   * \brief The type is a dependent Type.
+   * The type is a dependent Type.
    */
   CXTypeLayoutError_Dependent = -3,
   /**
-   * \brief The type is not a constant size type.
+   * The type is not a constant size type.
    */
   CXTypeLayoutError_NotConstantSize = -4,
   /**
-   * \brief The Field name is not valid for this record.
+   * The Field name is not valid for this record.
    */
   CXTypeLayoutError_InvalidFieldName = -5
 };
 
 /**
- * \brief Return the alignment of a type in bytes as per C++[expr.alignof]
+ * Return the alignment of a type in bytes as per C++[expr.alignof]
  *   standard.
  *
  * If the type declaration is invalid, CXTypeLayoutError_Invalid is returned.
@@ -3725,14 +3725,14 @@
 CINDEX_LINKAGE long long clang_Type_getAlignOf(CXType T);
 
 /**
- * \brief Return the class type of an member pointer type.
+ * Return the class type of an member pointer type.
  *
  * If a non-member-pointer type is passed in, an invalid type is returned.
  */
 CINDEX_LINKAGE CXType clang_Type_getClassType(CXType T);
 
 /**
- * \brief Return the size of a type in bytes as per C++[expr.sizeof] standard.
+ * Return the size of a type in bytes as per C++[expr.sizeof] standard.
  *
  * If the type declaration is invalid, CXTypeLayoutError_Invalid is returned.
  * If the type declaration is an incomplete type, CXTypeLayoutError_Incomplete
@@ -3743,7 +3743,7 @@
 CINDEX_LINKAGE long long clang_Type_getSizeOf(CXType T);
 
 /**
- * \brief Return the offset of a field named S in a record of type T in bits
+ * Return the offset of a field named S in a record of type T in bits
  *   as it would be returned by __offsetof__ as per C++11[18.2p4]
  *
  * If the cursor is not a record field declaration, CXTypeLayoutError_Invalid
@@ -3758,7 +3758,7 @@
 CINDEX_LINKAGE long long clang_Type_getOffsetOf(CXType T, const char *S);
 
 /**
- * \brief Return the offset of the field represented by the Cursor.
+ * Return the offset of the field represented by the Cursor.
  *
  * If the cursor is not a field declaration, -1 is returned.
  * If the cursor semantic parent is not a record field declaration,
@@ -3773,28 +3773,28 @@
 CINDEX_LINKAGE long long clang_Cursor_getOffsetOfField(CXCursor C);
 
 /**
- * \brief Determine whether the given cursor represents an anonymous record
+ * Determine whether the given cursor represents an anonymous record
  * declaration.
  */
 CINDEX_LINKAGE unsigned clang_Cursor_isAnonymous(CXCursor C);
 
 enum CXRefQualifierKind {
-  /** \brief No ref-qualifier was provided. */
+  /** No ref-qualifier was provided. */
   CXRefQualifier_None = 0,
-  /** \brief An lvalue ref-qualifier was provided (\c &). */
+  /** An lvalue ref-qualifier was provided (\c &). */
   CXRefQualifier_LValue,
-  /** \brief An rvalue ref-qualifier was provided (\c &&). */
+  /** An rvalue ref-qualifier was provided (\c &&). */
   CXRefQualifier_RValue
 };
 
 /**
- * \brief Returns the number of template arguments for given template
+ * Returns the number of template arguments for given template
  * specialization, or -1 if type \c T is not a template specialization.
  */
 CINDEX_LINKAGE int clang_Type_getNumTemplateArguments(CXType T);
 
 /**
- * \brief Returns the type template argument of a template class specialization
+ * Returns the type template argument of a template class specialization
  * at given index.
  *
  * This function only returns template type arguments and does not handle
@@ -3803,7 +3803,7 @@
 CINDEX_LINKAGE CXType clang_Type_getTemplateArgumentAsType(CXType T, unsigned i);
 
 /**
- * \brief Retrieve the ref-qualifier kind of a function or method.
+ * Retrieve the ref-qualifier kind of a function or method.
  *
  * The ref-qualifier is returned for C++ functions or methods. For other types
  * or non-C++ declarations, CXRefQualifier_None is returned.
@@ -3811,19 +3811,19 @@
 CINDEX_LINKAGE enum CXRefQualifierKind clang_Type_getCXXRefQualifier(CXType T);
 
 /**
- * \brief Returns non-zero if the cursor specifies a Record member that is a
+ * Returns non-zero if the cursor specifies a Record member that is a
  *   bitfield.
  */
 CINDEX_LINKAGE unsigned clang_Cursor_isBitField(CXCursor C);
 
 /**
- * \brief Returns 1 if the base class specified by the cursor with kind
+ * Returns 1 if the base class specified by the cursor with kind
  *   CX_CXXBaseSpecifier is virtual.
  */
 CINDEX_LINKAGE unsigned clang_isVirtualBase(CXCursor);
     
 /**
- * \brief Represents the C++ access control level to a base class for a
+ * Represents the C++ access control level to a base class for a
  * cursor with kind CX_CXXBaseSpecifier.
  */
 enum CX_CXXAccessSpecifier {
@@ -3834,7 +3834,7 @@
 };
 
 /**
- * \brief Returns the access control level for the referenced object.
+ * Returns the access control level for the referenced object.
  *
  * If the cursor refers to a C++ declaration, its access control level within its
  * parent scope is returned. Otherwise, if the cursor refers to a base specifier or
@@ -3843,7 +3843,7 @@
 CINDEX_LINKAGE enum CX_CXXAccessSpecifier clang_getCXXAccessSpecifier(CXCursor);
 
 /**
- * \brief Represents the storage classes as declared in the source. CX_SC_Invalid
+ * Represents the storage classes as declared in the source. CX_SC_Invalid
  * was added for the case that the passed cursor in not a declaration.
  */
 enum CX_StorageClass {
@@ -3858,7 +3858,7 @@
 };
 
 /**
- * \brief Returns the storage class for a function or variable declaration.
+ * Returns the storage class for a function or variable declaration.
  *
  * If the passed in Cursor is not a function or variable declaration,
  * CX_SC_Invalid is returned else the storage class.
@@ -3866,7 +3866,7 @@
 CINDEX_LINKAGE enum CX_StorageClass clang_Cursor_getStorageClass(CXCursor);
 
 /**
- * \brief Determine the number of overloaded declarations referenced by a 
+ * Determine the number of overloaded declarations referenced by a 
  * \c CXCursor_OverloadedDeclRef cursor.
  *
  * \param cursor The cursor whose overloaded declarations are being queried.
@@ -3877,7 +3877,7 @@
 CINDEX_LINKAGE unsigned clang_getNumOverloadedDecls(CXCursor cursor);
 
 /**
- * \brief Retrieve a cursor for one of the overloaded declarations referenced
+ * Retrieve a cursor for one of the overloaded declarations referenced
  * by a \c CXCursor_OverloadedDeclRef cursor.
  *
  * \param cursor The cursor whose overloaded declarations are being queried.
@@ -3904,7 +3904,7 @@
  */
 
 /**
- * \brief For cursors representing an iboutletcollection attribute,
+ * For cursors representing an iboutletcollection attribute,
  *  this function returns the collection element type.
  *
  */
@@ -3924,7 +3924,7 @@
  */
 
 /**
- * \brief Describes how the traversal of the children of a particular
+ * Describes how the traversal of the children of a particular
  * cursor should proceed after visiting a particular child cursor.
  *
  * A value of this enumeration type should be returned by each
@@ -3932,23 +3932,23 @@
  */
 enum CXChildVisitResult {
   /**
-   * \brief Terminates the cursor traversal.
+   * Terminates the cursor traversal.
    */
   CXChildVisit_Break,
   /**
-   * \brief Continues the cursor traversal with the next sibling of
+   * Continues the cursor traversal with the next sibling of
    * the cursor just visited, without visiting its children.
    */
   CXChildVisit_Continue,
   /**
-   * \brief Recursively traverse the children of this cursor, using
+   * Recursively traverse the children of this cursor, using
    * the same visitor and client data.
    */
   CXChildVisit_Recurse
 };
 
 /**
- * \brief Visitor invoked for each cursor found by a traversal.
+ * Visitor invoked for each cursor found by a traversal.
  *
  * This visitor function will be invoked for each cursor found by
  * clang_visitCursorChildren(). Its first argument is the cursor being
@@ -3964,7 +3964,7 @@
                                                    CXClientData client_data);
 
 /**
- * \brief Visit the children of a particular cursor.
+ * Visit the children of a particular cursor.
  *
  * This function visits all the direct children of the given cursor,
  * invoking the given \p visitor function with the cursors of each
@@ -3991,7 +3991,7 @@
 #ifdef __has_feature
 #  if __has_feature(blocks)
 /**
- * \brief Visitor invoked for each cursor found by a traversal.
+ * Visitor invoked for each cursor found by a traversal.
  *
  * This visitor block will be invoked for each cursor found by
  * clang_visitChildrenWithBlock(). Its first argument is the cursor being
@@ -4028,7 +4028,7 @@
  */
 
 /**
- * \brief Retrieve a Unified Symbol Resolution (USR) for the entity referenced
+ * Retrieve a Unified Symbol Resolution (USR) for the entity referenced
  * by the given cursor.
  *
  * A Unified Symbol Resolution (USR) is a string that identifies a particular
@@ -4039,32 +4039,32 @@
 CINDEX_LINKAGE CXString clang_getCursorUSR(CXCursor);
 
 /**
- * \brief Construct a USR for a specified Objective-C class.
+ * Construct a USR for a specified Objective-C class.
  */
 CINDEX_LINKAGE CXString clang_constructUSR_ObjCClass(const char *class_name);
 
 /**
- * \brief Construct a USR for a specified Objective-C category.
+ * Construct a USR for a specified Objective-C category.
  */
 CINDEX_LINKAGE CXString
   clang_constructUSR_ObjCCategory(const char *class_name,
                                  const char *category_name);
 
 /**
- * \brief Construct a USR for a specified Objective-C protocol.
+ * Construct a USR for a specified Objective-C protocol.
  */
 CINDEX_LINKAGE CXString
   clang_constructUSR_ObjCProtocol(const char *protocol_name);
 
 /**
- * \brief Construct a USR for a specified Objective-C instance variable and
+ * Construct a USR for a specified Objective-C instance variable and
  *   the USR for its containing class.
  */
 CINDEX_LINKAGE CXString clang_constructUSR_ObjCIvar(const char *name,
                                                     CXString classUSR);
 
 /**
- * \brief Construct a USR for a specified Objective-C method and
+ * Construct a USR for a specified Objective-C method and
  *   the USR for its containing class.
  */
 CINDEX_LINKAGE CXString clang_constructUSR_ObjCMethod(const char *name,
@@ -4072,19 +4072,19 @@
                                                       CXString classUSR);
 
 /**
- * \brief Construct a USR for a specified Objective-C property and the USR
+ * Construct a USR for a specified Objective-C property and the USR
  *  for its containing class.
  */
 CINDEX_LINKAGE CXString clang_constructUSR_ObjCProperty(const char *property,
                                                         CXString classUSR);
 
 /**
- * \brief Retrieve a name for the entity referenced by this cursor.
+ * Retrieve a name for the entity referenced by this cursor.
  */
 CINDEX_LINKAGE CXString clang_getCursorSpelling(CXCursor);
 
 /**
- * \brief Retrieve a range for a piece that forms the cursors spelling name.
+ * Retrieve a range for a piece that forms the cursors spelling name.
  * Most of the times there is only one range for the complete spelling but for
  * Objective-C methods and Objective-C message expressions, there are multiple
  * pieces for each selector identifier.
@@ -4099,13 +4099,13 @@
                                                           unsigned options);
 
 /**
- * \brief Opaque pointer representing a policy that controls pretty printing
+ * Opaque pointer representing a policy that controls pretty printing
  * for \c clang_getCursorPrettyPrinted.
  */
 typedef void *CXPrintingPolicy;
 
 /**
- * \brief Properties for the printing policy.
+ * Properties for the printing policy.
  *
  * See \c clang::PrintingPolicy for more information.
  */
@@ -4141,21 +4141,21 @@
 };
 
 /**
- * \brief Get a property value for the given printing policy.
+ * Get a property value for the given printing policy.
  */
 CINDEX_LINKAGE unsigned
 clang_PrintingPolicy_getProperty(CXPrintingPolicy Policy,
                                  enum CXPrintingPolicyProperty Property);
 
 /**
- * \brief Set a property value for the given printing policy.
+ * Set a property value for the given printing policy.
  */
 CINDEX_LINKAGE void clang_PrintingPolicy_setProperty(CXPrintingPolicy Policy,
                                                      enum CXPrintingPolicyProperty Property,
                                                      unsigned Value);
 
 /**
- * \brief Retrieve the default policy for the cursor.
+ * Retrieve the default policy for the cursor.
  *
  * The policy should be released after use with \c
  * clang_PrintingPolicy_dispose.
@@ -4163,12 +4163,12 @@
 CINDEX_LINKAGE CXPrintingPolicy clang_getCursorPrintingPolicy(CXCursor);
 
 /**
- * \brief Release a printing policy.
+ * Release a printing policy.
  */
 CINDEX_LINKAGE void clang_PrintingPolicy_dispose(CXPrintingPolicy Policy);
 
 /**
- * \brief Pretty print declarations.
+ * Pretty print declarations.
  *
  * \param Cursor The cursor representing a declaration.
  *
@@ -4182,7 +4182,7 @@
                                                      CXPrintingPolicy Policy);
 
 /**
- * \brief Retrieve the display name for the entity referenced by this cursor.
+ * Retrieve the display name for the entity referenced by this cursor.
  *
  * The display name contains extra information that helps identify the cursor,
  * such as the parameters of a function or template or the arguments of a 
@@ -4190,7 +4190,7 @@
  */
 CINDEX_LINKAGE CXString clang_getCursorDisplayName(CXCursor);
   
-/** \brief For a cursor that is a reference, retrieve a cursor representing the
+/** For a cursor that is a reference, retrieve a cursor representing the
  * entity that it references.
  *
  * Reference cursors refer to other entities in the AST. For example, an
@@ -4203,7 +4203,7 @@
 CINDEX_LINKAGE CXCursor clang_getCursorReferenced(CXCursor);
 
 /**
- *  \brief For a cursor that is either a reference to or a declaration
+ *  For a cursor that is either a reference to or a declaration
  *  of some entity, retrieve a cursor that describes the definition of
  *  that entity.
  *
@@ -4233,13 +4233,13 @@
 CINDEX_LINKAGE CXCursor clang_getCursorDefinition(CXCursor);
 
 /**
- * \brief Determine whether the declaration pointed to by this cursor
+ * Determine whether the declaration pointed to by this cursor
  * is also a definition of that entity.
  */
 CINDEX_LINKAGE unsigned clang_isCursorDefinition(CXCursor);
 
 /**
- * \brief Retrieve the canonical cursor corresponding to the given cursor.
+ * Retrieve the canonical cursor corresponding to the given cursor.
  *
  * In the C family of languages, many kinds of entities can be declared several
  * times within a single translation unit. For example, a structure type can
@@ -4265,7 +4265,7 @@
 CINDEX_LINKAGE CXCursor clang_getCanonicalCursor(CXCursor);
 
 /**
- * \brief If the cursor points to a selector identifier in an Objective-C
+ * If the cursor points to a selector identifier in an Objective-C
  * method or message expression, this returns the selector index.
  *
  * After getting a cursor with #clang_getCursor, this can be called to
@@ -4278,7 +4278,7 @@
 CINDEX_LINKAGE int clang_Cursor_getObjCSelectorIndex(CXCursor);
 
 /**
- * \brief Given a cursor pointing to a C++ method call or an Objective-C
+ * Given a cursor pointing to a C++ method call or an Objective-C
  * message, returns non-zero if the method/message is "dynamic", meaning:
  * 
  * For a C++ method: the call is virtual.
@@ -4291,13 +4291,13 @@
 CINDEX_LINKAGE int clang_Cursor_isDynamicCall(CXCursor C);
 
 /**
- * \brief Given a cursor pointing to an Objective-C message or property
+ * Given a cursor pointing to an Objective-C message or property
  * reference, or C++ method call, returns the CXType of the receiver.
  */
 CINDEX_LINKAGE CXType clang_Cursor_getReceiverType(CXCursor C);
 
 /**
- * \brief Property attributes for a \c CXCursor_ObjCPropertyDecl.
+ * Property attributes for a \c CXCursor_ObjCPropertyDecl.
  */
 typedef enum {
   CXObjCPropertyAttr_noattr    = 0x00,
@@ -4317,7 +4317,7 @@
 } CXObjCPropertyAttrKind;
 
 /**
- * \brief Given a cursor that represents a property declaration, return the
+ * Given a cursor that represents a property declaration, return the
  * associated property attributes. The bits are formed from
  * \c CXObjCPropertyAttrKind.
  *
@@ -4327,7 +4327,7 @@
                                                              unsigned reserved);
 
 /**
- * \brief 'Qualifiers' written next to the return and parameter types in
+ * 'Qualifiers' written next to the return and parameter types in
  * Objective-C method declarations.
  */
 typedef enum {
@@ -4341,7 +4341,7 @@
 } CXObjCDeclQualifierKind;
 
 /**
- * \brief Given a cursor that represents an Objective-C method or parameter
+ * Given a cursor that represents an Objective-C method or parameter
  * declaration, return the associated Objective-C qualifiers for the return
  * type or the parameter respectively. The bits are formed from
  * CXObjCDeclQualifierKind.
@@ -4349,19 +4349,19 @@
 CINDEX_LINKAGE unsigned clang_Cursor_getObjCDeclQualifiers(CXCursor C);
 
 /**
- * \brief Given a cursor that represents an Objective-C method or property
+ * Given a cursor that represents an Objective-C method or property
  * declaration, return non-zero if the declaration was affected by "\@optional".
  * Returns zero if the cursor is not such a declaration or it is "\@required".
  */
 CINDEX_LINKAGE unsigned clang_Cursor_isObjCOptional(CXCursor C);
 
 /**
- * \brief Returns non-zero if the given cursor is a variadic function or method.
+ * Returns non-zero if the given cursor is a variadic function or method.
  */
 CINDEX_LINKAGE unsigned clang_Cursor_isVariadic(CXCursor C);
 
 /**
- * \brief Returns non-zero if the given cursor points to a symbol marked with
+ * Returns non-zero if the given cursor points to a symbol marked with
  * external_source_symbol attribute.
  *
  * \param language If non-NULL, and the attribute is present, will be set to
@@ -4378,21 +4378,21 @@
                                        unsigned *isGenerated);
 
 /**
- * \brief Given a cursor that represents a declaration, return the associated
+ * Given a cursor that represents a declaration, return the associated
  * comment's source range.  The range may include multiple consecutive comments
  * with whitespace in between.
  */
 CINDEX_LINKAGE CXSourceRange clang_Cursor_getCommentRange(CXCursor C);
 
 /**
- * \brief Given a cursor that represents a declaration, return the associated
+ * Given a cursor that represents a declaration, return the associated
  * comment text, including comment markers.
  */
 CINDEX_LINKAGE CXString clang_Cursor_getRawCommentText(CXCursor C);
 
 /**
- * \brief Given a cursor that represents a documentable entity (e.g.,
- * declaration), return the associated \\brief paragraph; otherwise return the
+ * Given a cursor that represents a documentable entity (e.g.,
+ * declaration), return the associated \paragraph; otherwise return the
  * first paragraph.
  */
 CINDEX_LINKAGE CXString clang_Cursor_getBriefCommentText(CXCursor C);
@@ -4407,18 +4407,18 @@
  */
 
 /**
- * \brief Retrieve the CXString representing the mangled name of the cursor.
+ * Retrieve the CXString representing the mangled name of the cursor.
  */
 CINDEX_LINKAGE CXString clang_Cursor_getMangling(CXCursor);
 
 /**
- * \brief Retrieve the CXStrings representing the mangled symbols of the C++
+ * Retrieve the CXStrings representing the mangled symbols of the C++
  * constructor or destructor at the cursor.
  */
 CINDEX_LINKAGE CXStringSet *clang_Cursor_getCXXManglings(CXCursor);
 
 /**
- * \brief Retrieve the CXStrings representing the mangled symbols of the ObjC
+ * Retrieve the CXStrings representing the mangled symbols of the ObjC
  * class interface or implementation at the cursor.
  */
 CINDEX_LINKAGE CXStringSet *clang_Cursor_getObjCManglings(CXCursor);
@@ -4438,12 +4438,12 @@
 typedef void *CXModule;
 
 /**
- * \brief Given a CXCursor_ModuleImportDecl cursor, return the associated module.
+ * Given a CXCursor_ModuleImportDecl cursor, return the associated module.
  */
 CINDEX_LINKAGE CXModule clang_Cursor_getModule(CXCursor C);
 
 /**
- * \brief Given a CXFile header file, return the module that contains it, if one
+ * Given a CXFile header file, return the module that contains it, if one
  * exists.
  */
 CINDEX_LINKAGE CXModule clang_getModuleForFile(CXTranslationUnit, CXFile);
@@ -4518,73 +4518,73 @@
  */
 
 /**
- * \brief Determine if a C++ constructor is a converting constructor.
+ * Determine if a C++ constructor is a converting constructor.
  */
 CINDEX_LINKAGE unsigned clang_CXXConstructor_isConvertingConstructor(CXCursor C);
 
 /**
- * \brief Determine if a C++ constructor is a copy constructor.
+ * Determine if a C++ constructor is a copy constructor.
  */
 CINDEX_LINKAGE unsigned clang_CXXConstructor_isCopyConstructor(CXCursor C);
 
 /**
- * \brief Determine if a C++ constructor is the default constructor.
+ * Determine if a C++ constructor is the default constructor.
  */
 CINDEX_LINKAGE unsigned clang_CXXConstructor_isDefaultConstructor(CXCursor C);
 
 /**
- * \brief Determine if a C++ constructor is a move constructor.
+ * Determine if a C++ constructor is a move constructor.
  */
 CINDEX_LINKAGE unsigned clang_CXXConstructor_isMoveConstructor(CXCursor C);
 
 /**
- * \brief Determine if a C++ field is declared 'mutable'.
+ * Determine if a C++ field is declared 'mutable'.
  */
 CINDEX_LINKAGE unsigned clang_CXXField_isMutable(CXCursor C);
 
 /**
- * \brief Determine if a C++ method is declared '= default'.
+ * Determine if a C++ method is declared '= default'.
  */
 CINDEX_LINKAGE unsigned clang_CXXMethod_isDefaulted(CXCursor C);
 
 /**
- * \brief Determine if a C++ member function or member function template is
+ * Determine if a C++ member function or member function template is
  * pure virtual.
  */
 CINDEX_LINKAGE unsigned clang_CXXMethod_isPureVirtual(CXCursor C);
 
 /**
- * \brief Determine if a C++ member function or member function template is 
+ * Determine if a C++ member function or member function template is 
  * declared 'static'.
  */
 CINDEX_LINKAGE unsigned clang_CXXMethod_isStatic(CXCursor C);
 
 /**
- * \brief Determine if a C++ member function or member function template is
+ * Determine if a C++ member function or member function template is
  * explicitly declared 'virtual' or if it overrides a virtual method from
  * one of the base classes.
  */
 CINDEX_LINKAGE unsigned clang_CXXMethod_isVirtual(CXCursor C);
 
 /**
- * \brief Determine if a C++ record is abstract, i.e. whether a class or struct
+ * Determine if a C++ record is abstract, i.e. whether a class or struct
  * has a pure virtual member function.
  */
 CINDEX_LINKAGE unsigned clang_CXXRecord_isAbstract(CXCursor C);
 
 /**
- * \brief Determine if an enum declaration refers to a scoped enum.
+ * Determine if an enum declaration refers to a scoped enum.
  */
 CINDEX_LINKAGE unsigned clang_EnumDecl_isScoped(CXCursor C);
 
 /**
- * \brief Determine if a C++ member function or member function template is
+ * Determine if a C++ member function or member function template is
  * declared 'const'.
  */
 CINDEX_LINKAGE unsigned clang_CXXMethod_isConst(CXCursor C);
 
 /**
- * \brief Given a cursor that represents a template, determine
+ * Given a cursor that represents a template, determine
  * the cursor kind of the specializations would be generated by instantiating
  * the template.
  *
@@ -4603,7 +4603,7 @@
 CINDEX_LINKAGE enum CXCursorKind clang_getTemplateCursorKind(CXCursor C);
   
 /**
- * \brief Given a cursor that may represent a specialization or instantiation
+ * Given a cursor that may represent a specialization or instantiation
  * of a template, retrieve the cursor that represents the template that it
  * specializes or from which it was instantiated.
  *
@@ -4633,7 +4633,7 @@
 CINDEX_LINKAGE CXCursor clang_getSpecializedCursorTemplate(CXCursor C);
 
 /**
- * \brief Given a cursor that references something else, return the source range
+ * Given a cursor that references something else, return the source range
  * covering that reference.
  *
  * \param C A cursor pointing to a member reference, a declaration reference, or
@@ -4656,19 +4656,19 @@
 
 enum CXNameRefFlags {
   /**
-   * \brief Include the nested-name-specifier, e.g. Foo:: in x.Foo::y, in the
+   * Include the nested-name-specifier, e.g. Foo:: in x.Foo::y, in the
    * range.
    */
   CXNameRange_WantQualifier = 0x1,
   
   /**
-   * \brief Include the explicit template arguments, e.g. \<int> in x.f<int>,
+   * Include the explicit template arguments, e.g. \<int> in x.f<int>,
    * in the range.
    */
   CXNameRange_WantTemplateArgs = 0x2,
 
   /**
-   * \brief If the name is non-contiguous, return the full spanning range.
+   * If the name is non-contiguous, return the full spanning range.
    *
    * Non-contiguous names occur in Objective-C when a selector with two or more
    * parameters is used, or in C++ when using an operator:
@@ -4695,37 +4695,37 @@
  */
 
 /**
- * \brief Describes a kind of token.
+ * Describes a kind of token.
  */
 typedef enum CXTokenKind {
   /**
-   * \brief A token that contains some kind of punctuation.
+   * A token that contains some kind of punctuation.
    */
   CXToken_Punctuation,
 
   /**
-   * \brief A language keyword.
+   * A language keyword.
    */
   CXToken_Keyword,
 
   /**
-   * \brief An identifier (that is not a keyword).
+   * An identifier (that is not a keyword).
    */
   CXToken_Identifier,
 
   /**
-   * \brief A numeric, string, or character literal.
+   * A numeric, string, or character literal.
    */
   CXToken_Literal,
 
   /**
-   * \brief A comment.
+   * A comment.
    */
   CXToken_Comment
 } CXTokenKind;
 
 /**
- * \brief Describes a single preprocessing token.
+ * Describes a single preprocessing token.
  */
 typedef struct {
   unsigned int_data[4];
@@ -4733,12 +4733,12 @@
 } CXToken;
 
 /**
- * \brief Determine the kind of the given token.
+ * Determine the kind of the given token.
  */
 CINDEX_LINKAGE CXTokenKind clang_getTokenKind(CXToken);
 
 /**
- * \brief Determine the spelling of the given token.
+ * Determine the spelling of the given token.
  *
  * The spelling of a token is the textual representation of that token, e.g.,
  * the text of an identifier or keyword.
@@ -4746,18 +4746,18 @@
 CINDEX_LINKAGE CXString clang_getTokenSpelling(CXTranslationUnit, CXToken);
 
 /**
- * \brief Retrieve the source location of the given token.
+ * Retrieve the source location of the given token.
  */
 CINDEX_LINKAGE CXSourceLocation clang_getTokenLocation(CXTranslationUnit,
                                                        CXToken);
 
 /**
- * \brief Retrieve a source range that covers the given token.
+ * Retrieve a source range that covers the given token.
  */
 CINDEX_LINKAGE CXSourceRange clang_getTokenExtent(CXTranslationUnit, CXToken);
 
 /**
- * \brief Tokenize the source code described by the given range into raw
+ * Tokenize the source code described by the given range into raw
  * lexical tokens.
  *
  * \param TU the translation unit whose text is being tokenized.
@@ -4777,7 +4777,7 @@
                                    CXToken **Tokens, unsigned *NumTokens);
 
 /**
- * \brief Annotate the given set of tokens by providing cursors for each token
+ * Annotate the given set of tokens by providing cursors for each token
  * that can be mapped to a specific entity within the abstract syntax tree.
  *
  * This token-annotation routine is equivalent to invoking
@@ -4811,7 +4811,7 @@
                                          CXCursor *Cursors);
 
 /**
- * \brief Free the given set of tokens.
+ * Free the given set of tokens.
  */
 CINDEX_LINKAGE void clang_disposeTokens(CXTranslationUnit TU,
                                         CXToken *Tokens, unsigned NumTokens);
@@ -4859,7 +4859,7 @@
  */
 
 /**
- * \brief A semantic string that describes a code-completion result.
+ * A semantic string that describes a code-completion result.
  *
  * A semantic string that describes the formatting of a code-completion
  * result as a single "template" of text that should be inserted into the
@@ -4874,11 +4874,11 @@
 typedef void *CXCompletionString;
 
 /**
- * \brief A single result of code completion.
+ * A single result of code completion.
  */
 typedef struct {
   /**
-   * \brief The kind of entity that this completion refers to.
+   * The kind of entity that this completion refers to.
    *
    * The cursor kind will be a macro, keyword, or a declaration (one of the
    * *Decl cursor kinds), describing the entity that the completion is
@@ -4890,14 +4890,14 @@
   enum CXCursorKind CursorKind;
 
   /**
-   * \brief The code-completion string that describes how to insert this
+   * The code-completion string that describes how to insert this
    * code-completion result into the editing buffer.
    */
   CXCompletionString CompletionString;
 } CXCompletionResult;
 
 /**
- * \brief Describes a single piece of text within a code-completion string.
+ * Describes a single piece of text within a code-completion string.
  *
  * Each "chunk" within a code-completion string (\c CXCompletionString) is
  * either a piece of text with a specific "kind" that describes how that text
@@ -4905,7 +4905,7 @@
  */
 enum CXCompletionChunkKind {
   /**
-   * \brief A code-completion string that describes "optional" text that
+   * A code-completion string that describes "optional" text that
    * could be a part of the template (but is not required).
    *
    * The Optional chunk is the only kind of chunk that has a code-completion
@@ -4939,7 +4939,7 @@
    */
   CXCompletionChunk_Optional,
   /**
-   * \brief Text that a user would be expected to type to get this
+   * Text that a user would be expected to type to get this
    * code-completion result.
    *
    * There will be exactly one "typed text" chunk in a semantic string, which
@@ -4950,7 +4950,7 @@
    */
   CXCompletionChunk_TypedText,
   /**
-   * \brief Text that should be inserted as part of a code-completion result.
+   * Text that should be inserted as part of a code-completion result.
    *
    * A "text" chunk represents text that is part of the template to be
    * inserted into user code should this particular code-completion result
@@ -4958,7 +4958,7 @@
    */
   CXCompletionChunk_Text,
   /**
-   * \brief Placeholder text that should be replaced by the user.
+   * Placeholder text that should be replaced by the user.
    *
    * A "placeholder" chunk marks a place where the user should insert text
    * into the code-completion template. For example, placeholders might mark
@@ -4969,7 +4969,7 @@
    */
   CXCompletionChunk_Placeholder,
   /**
-   * \brief Informative text that should be displayed but never inserted as
+   * Informative text that should be displayed but never inserted as
    * part of the template.
    *
    * An "informative" chunk contains annotations that can be displayed to
@@ -4979,7 +4979,7 @@
    */
   CXCompletionChunk_Informative,
   /**
-   * \brief Text that describes the current parameter when code-completion is
+   * Text that describes the current parameter when code-completion is
    * referring to function call, message send, or template specialization.
    *
    * A "current parameter" chunk occurs when code-completion is providing
@@ -4999,45 +4999,45 @@
    */
   CXCompletionChunk_CurrentParameter,
   /**
-   * \brief A left parenthesis ('('), used to initiate a function call or
+   * A left parenthesis ('('), used to initiate a function call or
    * signal the beginning of a function parameter list.
    */
   CXCompletionChunk_LeftParen,
   /**
-   * \brief A right parenthesis (')'), used to finish a function call or
+   * A right parenthesis (')'), used to finish a function call or
    * signal the end of a function parameter list.
    */
   CXCompletionChunk_RightParen,
   /**
-   * \brief A left bracket ('[').
+   * A left bracket ('[').
    */
   CXCompletionChunk_LeftBracket,
   /**
-   * \brief A right bracket (']').
+   * A right bracket (']').
    */
   CXCompletionChunk_RightBracket,
   /**
-   * \brief A left brace ('{').
+   * A left brace ('{').
    */
   CXCompletionChunk_LeftBrace,
   /**
-   * \brief A right brace ('}').
+   * A right brace ('}').
    */
   CXCompletionChunk_RightBrace,
   /**
-   * \brief A left angle bracket ('<').
+   * A left angle bracket ('<').
    */
   CXCompletionChunk_LeftAngle,
   /**
-   * \brief A right angle bracket ('>').
+   * A right angle bracket ('>').
    */
   CXCompletionChunk_RightAngle,
   /**
-   * \brief A comma separator (',').
+   * A comma separator (',').
    */
   CXCompletionChunk_Comma,
   /**
-   * \brief Text that specifies the result type of a given result.
+   * Text that specifies the result type of a given result.
    *
    * This special kind of informative chunk is not meant to be inserted into
    * the text buffer. Rather, it is meant to illustrate the type that an
@@ -5045,15 +5045,15 @@
    */
   CXCompletionChunk_ResultType,
   /**
-   * \brief A colon (':').
+   * A colon (':').
    */
   CXCompletionChunk_Colon,
   /**
-   * \brief A semicolon (';').
+   * A semicolon (';').
    */
   CXCompletionChunk_SemiColon,
   /**
-   * \brief An '=' sign.
+   * An '=' sign.
    */
   CXCompletionChunk_Equal,
   /**
@@ -5068,7 +5068,7 @@
 };
 
 /**
- * \brief Determine the kind of a particular chunk within a completion string.
+ * Determine the kind of a particular chunk within a completion string.
  *
  * \param completion_string the completion string to query.
  *
@@ -5081,7 +5081,7 @@
                              unsigned chunk_number);
 
 /**
- * \brief Retrieve the text associated with a particular chunk within a
+ * Retrieve the text associated with a particular chunk within a
  * completion string.
  *
  * \param completion_string the completion string to query.
@@ -5095,7 +5095,7 @@
                              unsigned chunk_number);
 
 /**
- * \brief Retrieve the completion string associated with a particular chunk
+ * Retrieve the completion string associated with a particular chunk
  * within a completion string.
  *
  * \param completion_string the completion string to query.
@@ -5110,13 +5110,13 @@
                                          unsigned chunk_number);
 
 /**
- * \brief Retrieve the number of chunks in the given code-completion string.
+ * Retrieve the number of chunks in the given code-completion string.
  */
 CINDEX_LINKAGE unsigned
 clang_getNumCompletionChunks(CXCompletionString completion_string);
 
 /**
- * \brief Determine the priority of this code completion.
+ * Determine the priority of this code completion.
  *
  * The priority of a code completion indicates how likely it is that this 
  * particular completion is the completion that the user will select. The
@@ -5131,7 +5131,7 @@
 clang_getCompletionPriority(CXCompletionString completion_string);
   
 /**
- * \brief Determine the availability of the entity that this code-completion
+ * Determine the availability of the entity that this code-completion
  * string refers to.
  *
  * \param completion_string The completion string to query.
@@ -5142,7 +5142,7 @@
 clang_getCompletionAvailability(CXCompletionString completion_string);
 
 /**
- * \brief Retrieve the number of annotations associated with the given
+ * Retrieve the number of annotations associated with the given
  * completion string.
  *
  * \param completion_string the completion string to query.
@@ -5154,7 +5154,7 @@
 clang_getCompletionNumAnnotations(CXCompletionString completion_string);
 
 /**
- * \brief Retrieve the annotation associated with the given completion string.
+ * Retrieve the annotation associated with the given completion string.
  *
  * \param completion_string the completion string to query.
  *
@@ -5169,7 +5169,7 @@
                               unsigned annotation_number);
 
 /**
- * \brief Retrieve the parent context of the given completion string.
+ * Retrieve the parent context of the given completion string.
  *
  * The parent context of a completion string is the semantic parent of 
  * the declaration (if any) that the code completion represents. For example,
@@ -5189,14 +5189,14 @@
                           enum CXCursorKind *kind);
 
 /**
- * \brief Retrieve the brief documentation comment attached to the declaration
+ * Retrieve the brief documentation comment attached to the declaration
  * that corresponds to the given completion string.
  */
 CINDEX_LINKAGE CXString
 clang_getCompletionBriefComment(CXCompletionString completion_string);
 
 /**
- * \brief Retrieve a completion string for an arbitrary declaration or macro
+ * Retrieve a completion string for an arbitrary declaration or macro
  * definition cursor.
  *
  * \param cursor The cursor to query.
@@ -5208,7 +5208,7 @@
 clang_getCursorCompletionString(CXCursor cursor);
   
 /**
- * \brief Contains the results of code-completion.
+ * Contains the results of code-completion.
  *
  * This data structure contains the results of code completion, as
  * produced by \c clang_codeCompleteAt(). Its contents must be freed by
@@ -5216,19 +5216,19 @@
  */
 typedef struct {
   /**
-   * \brief The code-completion results.
+   * The code-completion results.
    */
   CXCompletionResult *Results;
 
   /**
-   * \brief The number of code-completion results stored in the
+   * The number of code-completion results stored in the
    * \c Results array.
    */
   unsigned NumResults;
 } CXCodeCompleteResults;
 
 /**
- * \brief Flags that can be passed to \c clang_codeCompleteAt() to
+ * Flags that can be passed to \c clang_codeCompleteAt() to
  * modify its behavior.
  *
  * The enumerators in this enumeration can be bitwise-OR'd together to
@@ -5236,19 +5236,19 @@
  */
 enum CXCodeComplete_Flags {
   /**
-   * \brief Whether to include macros within the set of code
+   * Whether to include macros within the set of code
    * completions returned.
    */
   CXCodeComplete_IncludeMacros = 0x01,
 
   /**
-   * \brief Whether to include code patterns for language constructs
+   * Whether to include code patterns for language constructs
    * within the set of code completions, e.g., for loops.
    */
   CXCodeComplete_IncludeCodePatterns = 0x02,
 
   /**
-   * \brief Whether to include brief documentation within the set of code
+   * Whether to include brief documentation within the set of code
    * completions returned.
    */
   CXCodeComplete_IncludeBriefComments = 0x04,
@@ -5262,144 +5262,144 @@
 };
 
 /**
- * \brief Bits that represent the context under which completion is occurring.
+ * Bits that represent the context under which completion is occurring.
  *
  * The enumerators in this enumeration may be bitwise-OR'd together if multiple
  * contexts are occurring simultaneously.
  */
 enum CXCompletionContext {
   /**
-   * \brief The context for completions is unexposed, as only Clang results
+   * The context for completions is unexposed, as only Clang results
    * should be included. (This is equivalent to having no context bits set.)
    */
   CXCompletionContext_Unexposed = 0,
   
   /**
-   * \brief Completions for any possible type should be included in the results.
+   * Completions for any possible type should be included in the results.
    */
   CXCompletionContext_AnyType = 1 << 0,
   
   /**
-   * \brief Completions for any possible value (variables, function calls, etc.)
+   * Completions for any possible value (variables, function calls, etc.)
    * should be included in the results.
    */
   CXCompletionContext_AnyValue = 1 << 1,
   /**
-   * \brief Completions for values that resolve to an Objective-C object should
+   * Completions for values that resolve to an Objective-C object should
    * be included in the results.
    */
   CXCompletionContext_ObjCObjectValue = 1 << 2,
   /**
-   * \brief Completions for values that resolve to an Objective-C selector
+   * Completions for values that resolve to an Objective-C selector
    * should be included in the results.
    */
   CXCompletionContext_ObjCSelectorValue = 1 << 3,
   /**
-   * \brief Completions for values that resolve to a C++ class type should be
+   * Completions for values that resolve to a C++ class type should be
    * included in the results.
    */
   CXCompletionContext_CXXClassTypeValue = 1 << 4,
   
   /**
-   * \brief Completions for fields of the member being accessed using the dot
+   * Completions for fields of the member being accessed using the dot
    * operator should be included in the results.
    */
   CXCompletionContext_DotMemberAccess = 1 << 5,
   /**
-   * \brief Completions for fields of the member being accessed using the arrow
+   * Completions for fields of the member being accessed using the arrow
    * operator should be included in the results.
    */
   CXCompletionContext_ArrowMemberAccess = 1 << 6,
   /**
-   * \brief Completions for properties of the Objective-C object being accessed
+   * Completions for properties of the Objective-C object being accessed
    * using the dot operator should be included in the results.
    */
   CXCompletionContext_ObjCPropertyAccess = 1 << 7,
   
   /**
-   * \brief Completions for enum tags should be included in the results.
+   * Completions for enum tags should be included in the results.
    */
   CXCompletionContext_EnumTag = 1 << 8,
   /**
-   * \brief Completions for union tags should be included in the results.
+   * Completions for union tags should be included in the results.
    */
   CXCompletionContext_UnionTag = 1 << 9,
   /**
-   * \brief Completions for struct tags should be included in the results.
+   * Completions for struct tags should be included in the results.
    */
   CXCompletionContext_StructTag = 1 << 10,
   
   /**
-   * \brief Completions for C++ class names should be included in the results.
+   * Completions for C++ class names should be included in the results.
    */
   CXCompletionContext_ClassTag = 1 << 11,
   /**
-   * \brief Completions for C++ namespaces and namespace aliases should be
+   * Completions for C++ namespaces and namespace aliases should be
    * included in the results.
    */
   CXCompletionContext_Namespace = 1 << 12,
   /**
-   * \brief Completions for C++ nested name specifiers should be included in
+   * Completions for C++ nested name specifiers should be included in
    * the results.
    */
   CXCompletionContext_NestedNameSpecifier = 1 << 13,
   
   /**
-   * \brief Completions for Objective-C interfaces (classes) should be included
+   * Completions for Objective-C interfaces (classes) should be included
    * in the results.
    */
   CXCompletionContext_ObjCInterface = 1 << 14,
   /**
-   * \brief Completions for Objective-C protocols should be included in
+   * Completions for Objective-C protocols should be included in
    * the results.
    */
   CXCompletionContext_ObjCProtocol = 1 << 15,
   /**
-   * \brief Completions for Objective-C categories should be included in
+   * Completions for Objective-C categories should be included in
    * the results.
    */
   CXCompletionContext_ObjCCategory = 1 << 16,
   /**
-   * \brief Completions for Objective-C instance messages should be included
+   * Completions for Objective-C instance messages should be included
    * in the results.
    */
   CXCompletionContext_ObjCInstanceMessage = 1 << 17,
   /**
-   * \brief Completions for Objective-C class messages should be included in
+   * Completions for Objective-C class messages should be included in
    * the results.
    */
   CXCompletionContext_ObjCClassMessage = 1 << 18,
   /**
-   * \brief Completions for Objective-C selector names should be included in
+   * Completions for Objective-C selector names should be included in
    * the results.
    */
   CXCompletionContext_ObjCSelectorName = 1 << 19,
   
   /**
-   * \brief Completions for preprocessor macro names should be included in
+   * Completions for preprocessor macro names should be included in
    * the results.
    */
   CXCompletionContext_MacroName = 1 << 20,
   
   /**
-   * \brief Natural language completions should be included in the results.
+   * Natural language completions should be included in the results.
    */
   CXCompletionContext_NaturalLanguage = 1 << 21,
   
   /**
-   * \brief The current context is unknown, so set all contexts.
+   * The current context is unknown, so set all contexts.
    */
   CXCompletionContext_Unknown = ((1 << 22) - 1)
 };
   
 /**
- * \brief Returns a default set of code-completion options that can be
+ * Returns a default set of code-completion options that can be
  * passed to\c clang_codeCompleteAt(). 
  */
 CINDEX_LINKAGE unsigned clang_defaultCodeCompleteOptions(void);
 
 /**
- * \brief Perform code completion at a given location in a translation unit.
+ * Perform code completion at a given location in a translation unit.
  *
  * This function performs code completion at a particular file, line, and
  * column within source code, providing results that suggest potential
@@ -5476,7 +5476,7 @@
                                             unsigned options);
 
 /**
- * \brief Sort the code-completion results in case-insensitive alphabetical 
+ * Sort the code-completion results in case-insensitive alphabetical 
  * order.
  *
  * \param Results The set of results to sort.
@@ -5487,20 +5487,20 @@
                                      unsigned NumResults);
   
 /**
- * \brief Free the given set of code-completion results.
+ * Free the given set of code-completion results.
  */
 CINDEX_LINKAGE
 void clang_disposeCodeCompleteResults(CXCodeCompleteResults *Results);
   
 /**
- * \brief Determine the number of diagnostics produced prior to the
+ * Determine the number of diagnostics produced prior to the
  * location where code completion was performed.
  */
 CINDEX_LINKAGE
 unsigned clang_codeCompleteGetNumDiagnostics(CXCodeCompleteResults *Results);
 
 /**
- * \brief Retrieve a diagnostic associated with the given code completion.
+ * Retrieve a diagnostic associated with the given code completion.
  *
  * \param Results the code completion results to query.
  * \param Index the zero-based diagnostic number to retrieve.
@@ -5513,7 +5513,7 @@
                                              unsigned Index);
 
 /**
- * \brief Determines what completions are appropriate for the context
+ * Determines what completions are appropriate for the context
  * the given code completion.
  * 
  * \param Results the code completion results to query
@@ -5526,7 +5526,7 @@
                                                 CXCodeCompleteResults *Results);
 
 /**
- * \brief Returns the cursor kind for the container for the current code
+ * Returns the cursor kind for the container for the current code
  * completion context. The container is only guaranteed to be set for
  * contexts where a container exists (i.e. member accesses or Objective-C
  * message sends); if there is not a container, this function will return
@@ -5547,7 +5547,7 @@
                                                      unsigned *IsIncomplete);
 
 /**
- * \brief Returns the USR for the container for the current code completion
+ * Returns the USR for the container for the current code completion
  * context. If there is not a container for the current context, this
  * function will return the empty string.
  *
@@ -5559,7 +5559,7 @@
 CXString clang_codeCompleteGetContainerUSR(CXCodeCompleteResults *Results);
 
 /**
- * \brief Returns the currently-entered selector for an Objective-C message
+ * Returns the currently-entered selector for an Objective-C message
  * send, formatted like "initWithFoo:bar:". Only guaranteed to return a
  * non-empty string for CXCompletionContext_ObjCInstanceMessage and
  * CXCompletionContext_ObjCClassMessage.
@@ -5583,13 +5583,13 @@
  */
 
 /**
- * \brief Return a version string, suitable for showing to a user, but not
+ * Return a version string, suitable for showing to a user, but not
  *        intended to be parsed (the format is not guaranteed to be stable).
  */
 CINDEX_LINKAGE CXString clang_getClangVersion(void);
 
 /**
- * \brief Enable/disable crash recovery.
+ * Enable/disable crash recovery.
  *
  * \param isEnabled Flag to indicate if crash recovery is enabled.  A non-zero
  *        value enables crash recovery, while 0 disables it.
@@ -5597,7 +5597,7 @@
 CINDEX_LINKAGE void clang_toggleCrashRecovery(unsigned isEnabled);
   
  /**
-  * \brief Visitor invoked for each file in a translation unit
+  * Visitor invoked for each file in a translation unit
   *        (used with clang_getInclusions()).
   *
   * This visitor function will be invoked by clang_getInclusions() for each
@@ -5613,7 +5613,7 @@
                                    CXClientData client_data);
 
 /**
- * \brief Visit the set of preprocessor inclusions in a translation unit.
+ * Visit the set of preprocessor inclusions in a translation unit.
  *   The visitor function is called with the provided data for every included
  *   file.  This does not include headers included by the PCH file (unless one
  *   is inspecting the inclusions in the PCH file itself).
@@ -5635,55 +5635,55 @@
 } CXEvalResultKind ;
 
 /**
- * \brief Evaluation result of a cursor
+ * Evaluation result of a cursor
  */
 typedef void * CXEvalResult;
 
 /**
- * \brief If cursor is a statement declaration tries to evaluate the 
+ * If cursor is a statement declaration tries to evaluate the 
  * statement and if its variable, tries to evaluate its initializer,
  * into its corresponding type.
  */
 CINDEX_LINKAGE CXEvalResult clang_Cursor_Evaluate(CXCursor C);
 
 /**
- * \brief Returns the kind of the evaluated result.
+ * Returns the kind of the evaluated result.
  */
 CINDEX_LINKAGE CXEvalResultKind clang_EvalResult_getKind(CXEvalResult E);
 
 /**
- * \brief Returns the evaluation result as integer if the
+ * Returns the evaluation result as integer if the
  * kind is Int.
  */
 CINDEX_LINKAGE int clang_EvalResult_getAsInt(CXEvalResult E);
 
 /**
- * \brief Returns the evaluation result as a long long integer if the
+ * Returns the evaluation result as a long long integer if the
  * kind is Int. This prevents overflows that may happen if the result is
  * returned with clang_EvalResult_getAsInt.
  */
 CINDEX_LINKAGE long long clang_EvalResult_getAsLongLong(CXEvalResult E);
 
 /**
- * \brief Returns a non-zero value if the kind is Int and the evaluation
+ * Returns a non-zero value if the kind is Int and the evaluation
  * result resulted in an unsigned integer.
  */
 CINDEX_LINKAGE unsigned clang_EvalResult_isUnsignedInt(CXEvalResult E);
 
 /**
- * \brief Returns the evaluation result as an unsigned integer if
+ * Returns the evaluation result as an unsigned integer if
  * the kind is Int and clang_EvalResult_isUnsignedInt is non-zero.
  */
 CINDEX_LINKAGE unsigned long long clang_EvalResult_getAsUnsigned(CXEvalResult E);
 
 /**
- * \brief Returns the evaluation result as double if the
+ * Returns the evaluation result as double if the
  * kind is double.
  */
 CINDEX_LINKAGE double clang_EvalResult_getAsDouble(CXEvalResult E);
 
 /**
- * \brief Returns the evaluation result as a constant string if the
+ * Returns the evaluation result as a constant string if the
  * kind is other than Int or float. User must not free this pointer,
  * instead call clang_EvalResult_dispose on the CXEvalResult returned
  * by clang_Cursor_Evaluate.
@@ -5691,7 +5691,7 @@
 CINDEX_LINKAGE const char* clang_EvalResult_getAsStr(CXEvalResult E);
 
 /**
- * \brief Disposes the created Eval memory.
+ * Disposes the created Eval memory.
  */
 CINDEX_LINKAGE void clang_EvalResult_dispose(CXEvalResult E);
 /**
@@ -5704,12 +5704,12 @@
  */
 
 /**
- * \brief A remapping of original source files and their translated files.
+ * A remapping of original source files and their translated files.
  */
 typedef void *CXRemapping;
 
 /**
- * \brief Retrieve a remapping.
+ * Retrieve a remapping.
  *
  * \param path the path that contains metadata about remappings.
  *
@@ -5719,7 +5719,7 @@
 CINDEX_LINKAGE CXRemapping clang_getRemappings(const char *path);
 
 /**
- * \brief Retrieve a remapping.
+ * Retrieve a remapping.
  *
  * \param filePaths pointer to an array of file paths containing remapping info.
  *
@@ -5733,12 +5733,12 @@
                                             unsigned numFiles);
 
 /**
- * \brief Determine the number of remappings.
+ * Determine the number of remappings.
  */
 CINDEX_LINKAGE unsigned clang_remap_getNumFiles(CXRemapping);
 
 /**
- * \brief Get the original and the associated filename from the remapping.
+ * Get the original and the associated filename from the remapping.
  * 
  * \param original If non-NULL, will be set to the original filename.
  *
@@ -5749,7 +5749,7 @@
                                      CXString *original, CXString *transformed);
 
 /**
- * \brief Dispose the remapping.
+ * Dispose the remapping.
  */
 CINDEX_LINKAGE void clang_remap_dispose(CXRemapping);
 
@@ -5774,15 +5774,15 @@
 
 typedef enum {
   /**
-   * \brief Function returned successfully.
+   * Function returned successfully.
    */
   CXResult_Success = 0,
   /**
-   * \brief One of the parameters was invalid for the function.
+   * One of the parameters was invalid for the function.
    */
   CXResult_Invalid = 1,
   /**
-   * \brief The function was terminated by a callback (e.g. it returned
+   * The function was terminated by a callback (e.g. it returned
    * CXVisit_Break)
    */
   CXResult_VisitBreak = 2
@@ -5790,7 +5790,7 @@
 } CXResult;
 
 /**
- * \brief Find references of a declaration in a specific file.
+ * Find references of a declaration in a specific file.
  * 
  * \param cursor pointing to a declaration or a reference of one.
  *
@@ -5807,7 +5807,7 @@
                                                CXCursorAndRangeVisitor visitor);
 
 /**
- * \brief Find #import/#include directives in a specific file.
+ * Find #import/#include directives in a specific file.
  *
  * \param TU translation unit containing the file to query.
  *
@@ -5840,29 +5840,29 @@
 #endif
 
 /**
- * \brief The client's data object that is associated with a CXFile.
+ * The client's data object that is associated with a CXFile.
  */
 typedef void *CXIdxClientFile;
 
 /**
- * \brief The client's data object that is associated with a semantic entity.
+ * The client's data object that is associated with a semantic entity.
  */
 typedef void *CXIdxClientEntity;
 
 /**
- * \brief The client's data object that is associated with a semantic container
+ * The client's data object that is associated with a semantic container
  * of entities.
  */
 typedef void *CXIdxClientContainer;
 
 /**
- * \brief The client's data object that is associated with an AST file (PCH
+ * The client's data object that is associated with an AST file (PCH
  * or module).
  */
 typedef void *CXIdxClientASTFile;
 
 /**
- * \brief Source location passed to index callbacks.
+ * Source location passed to index callbacks.
  */
 typedef struct {
   void *ptr_data[2];
@@ -5870,48 +5870,48 @@
 } CXIdxLoc;
 
 /**
- * \brief Data for ppIncludedFile callback.
+ * Data for ppIncludedFile callback.
  */
 typedef struct {
   /**
-   * \brief Location of '#' in the \#include/\#import directive.
+   * Location of '#' in the \#include/\#import directive.
    */
   CXIdxLoc hashLoc;
   /**
-   * \brief Filename as written in the \#include/\#import directive.
+   * Filename as written in the \#include/\#import directive.
    */
   const char *filename;
   /**
-   * \brief The actual file that the \#include/\#import directive resolved to.
+   * The actual file that the \#include/\#import directive resolved to.
    */
   CXFile file;
   int isImport;
   int isAngled;
   /**
-   * \brief Non-zero if the directive was automatically turned into a module
+   * Non-zero if the directive was automatically turned into a module
    * import.
    */
   int isModuleImport;
 } CXIdxIncludedFileInfo;
 
 /**
- * \brief Data for IndexerCallbacks#importedASTFile.
+ * Data for IndexerCallbacks#importedASTFile.
  */
 typedef struct {
   /**
-   * \brief Top level AST file containing the imported PCH, module or submodule.
+   * Top level AST file containing the imported PCH, module or submodule.
    */
   CXFile file;
   /**
-   * \brief The imported module or NULL if the AST file is a PCH.
+   * The imported module or NULL if the AST file is a PCH.
    */
   CXModule module;
   /**
-   * \brief Location where the file is imported. Applicable only for modules.
+   * Location where the file is imported. Applicable only for modules.
    */
   CXIdxLoc loc;
   /**
-   * \brief Non-zero if an inclusion directive was automatically turned into
+   * Non-zero if an inclusion directive was automatically turned into
    * a module import. Applicable only for modules.
    */
   int isImplicit;
@@ -5962,7 +5962,7 @@
 } CXIdxEntityLanguage;
 
 /**
- * \brief Extra C++ template information for an entity. This can apply to:
+ * Extra C++ template information for an entity. This can apply to:
  * CXIdxEntity_Function
  * CXIdxEntity_CXXClass
  * CXIdxEntity_CXXStaticMethod
@@ -6023,7 +6023,7 @@
   CXIdxLoc loc;
   const CXIdxContainerInfo *semanticContainer;
   /**
-   * \brief Generally same as #semanticContainer but can be different in
+   * Generally same as #semanticContainer but can be different in
    * cases like out-of-line C++ member functions.
    */
   const CXIdxContainerInfo *lexicalContainer;
@@ -6032,7 +6032,7 @@
   int isContainer;
   const CXIdxContainerInfo *declAsContainer;
   /**
-   * \brief Whether the declaration exists in code or was created implicitly
+   * Whether the declaration exists in code or was created implicitly
    * by the compiler, e.g. implicit Objective-C methods for properties.
    */
   int isImplicit;
@@ -6098,25 +6098,25 @@
 } CXIdxCXXClassDeclInfo;
 
 /**
- * \brief Data for IndexerCallbacks#indexEntityReference.
+ * Data for IndexerCallbacks#indexEntityReference.
  *
  * This may be deprecated in a future version as this duplicates
  * the \c CXSymbolRole_Implicit bit in \c CXSymbolRole.
  */
 typedef enum {
   /**
-   * \brief The entity is referenced directly in user's code.
+   * The entity is referenced directly in user's code.
    */
   CXIdxEntityRef_Direct = 1,
   /**
-   * \brief An implicit reference, e.g. a reference of an Objective-C method
+   * An implicit reference, e.g. a reference of an Objective-C method
    * via the dot syntax.
    */
   CXIdxEntityRef_Implicit = 2
 } CXIdxEntityRefKind;
 
 /**
- * \brief Roles that are attributed to symbol occurrences.
+ * Roles that are attributed to symbol occurrences.
  *
  * Internal: this currently mirrors low 9 bits of clang::index::SymbolRole with
  * higher bits zeroed. These high bits may be exposed in the future.
@@ -6135,21 +6135,21 @@
 } CXSymbolRole;
 
 /**
- * \brief Data for IndexerCallbacks#indexEntityReference.
+ * Data for IndexerCallbacks#indexEntityReference.
  */
 typedef struct {
   CXIdxEntityRefKind kind;
   /**
-   * \brief Reference cursor.
+   * Reference cursor.
    */
   CXCursor cursor;
   CXIdxLoc loc;
   /**
-   * \brief The entity that gets referenced.
+   * The entity that gets referenced.
    */
   const CXIdxEntityInfo *referencedEntity;
   /**
-   * \brief Immediate "parent" of the reference. For example:
+   * Immediate "parent" of the reference. For example:
    * 
    * \code
    * Foo *var;
@@ -6161,28 +6161,28 @@
    */
   const CXIdxEntityInfo *parentEntity;
   /**
-   * \brief Lexical container context of the reference.
+   * Lexical container context of the reference.
    */
   const CXIdxContainerInfo *container;
   /**
-   * \brief Sets of symbol roles of the reference.
+   * Sets of symbol roles of the reference.
    */
   CXSymbolRole role;
 } CXIdxEntityRefInfo;
 
 /**
- * \brief A group of callbacks used by #clang_indexSourceFile and
+ * A group of callbacks used by #clang_indexSourceFile and
  * #clang_indexTranslationUnit.
  */
 typedef struct {
   /**
-   * \brief Called periodically to check whether indexing should be aborted.
+   * Called periodically to check whether indexing should be aborted.
    * Should return 0 to continue, and non-zero to abort.
    */
   int (*abortQuery)(CXClientData client_data, void *reserved);
 
   /**
-   * \brief Called at the end of indexing; passes the complete diagnostic set.
+   * Called at the end of indexing; passes the complete diagnostic set.
    */
   void (*diagnostic)(CXClientData client_data,
                      CXDiagnosticSet, void *reserved);
@@ -6191,13 +6191,13 @@
                                      CXFile mainFile, void *reserved);
   
   /**
-   * \brief Called when a file gets \#included/\#imported.
+   * Called when a file gets \#included/\#imported.
    */
   CXIdxClientFile (*ppIncludedFile)(CXClientData client_data,
                                     const CXIdxIncludedFileInfo *);
   
   /**
-   * \brief Called when a AST file (PCH or module) gets imported.
+   * Called when a AST file (PCH or module) gets imported.
    * 
    * AST files will not get indexed (there will not be callbacks to index all
    * the entities in an AST file). The recommended action is that, if the AST
@@ -6208,7 +6208,7 @@
                                         const CXIdxImportedASTFileInfo *);
 
   /**
-   * \brief Called at the beginning of indexing a translation unit.
+   * Called at the beginning of indexing a translation unit.
    */
   CXIdxClientContainer (*startedTranslationUnit)(CXClientData client_data,
                                                  void *reserved);
@@ -6217,7 +6217,7 @@
                            const CXIdxDeclInfo *);
 
   /**
-   * \brief Called to index a reference of an entity.
+   * Called to index a reference of an entity.
    */
   void (*indexEntityReference)(CXClientData client_data,
                                const CXIdxEntityRefInfo *);
@@ -6248,39 +6248,39 @@
 clang_index_getCXXClassDeclInfo(const CXIdxDeclInfo *);
 
 /**
- * \brief For retrieving a custom CXIdxClientContainer attached to a
+ * For retrieving a custom CXIdxClientContainer attached to a
  * container.
  */
 CINDEX_LINKAGE CXIdxClientContainer
 clang_index_getClientContainer(const CXIdxContainerInfo *);
 
 /**
- * \brief For setting a custom CXIdxClientContainer attached to a
+ * For setting a custom CXIdxClientContainer attached to a
  * container.
  */
 CINDEX_LINKAGE void
 clang_index_setClientContainer(const CXIdxContainerInfo *,CXIdxClientContainer);
 
 /**
- * \brief For retrieving a custom CXIdxClientEntity attached to an entity.
+ * For retrieving a custom CXIdxClientEntity attached to an entity.
  */
 CINDEX_LINKAGE CXIdxClientEntity
 clang_index_getClientEntity(const CXIdxEntityInfo *);
 
 /**
- * \brief For setting a custom CXIdxClientEntity attached to an entity.
+ * For setting a custom CXIdxClientEntity attached to an entity.
  */
 CINDEX_LINKAGE void
 clang_index_setClientEntity(const CXIdxEntityInfo *, CXIdxClientEntity);
 
 /**
- * \brief An indexing action/session, to be applied to one or multiple
+ * An indexing action/session, to be applied to one or multiple
  * translation units.
  */
 typedef void *CXIndexAction;
 
 /**
- * \brief An indexing action/session, to be applied to one or multiple
+ * An indexing action/session, to be applied to one or multiple
  * translation units.
  *
  * \param CIdx The index object with which the index action will be associated.
@@ -6288,7 +6288,7 @@
 CINDEX_LINKAGE CXIndexAction clang_IndexAction_create(CXIndex CIdx);
 
 /**
- * \brief Destroy the given index action.
+ * Destroy the given index action.
  *
  * The index action must not be destroyed until all of the translation units
  * created within that index action have been destroyed.
@@ -6297,36 +6297,36 @@
 
 typedef enum {
   /**
-   * \brief Used to indicate that no special indexing options are needed.
+   * Used to indicate that no special indexing options are needed.
    */
   CXIndexOpt_None = 0x0,
   
   /**
-   * \brief Used to indicate that IndexerCallbacks#indexEntityReference should
+   * Used to indicate that IndexerCallbacks#indexEntityReference should
    * be invoked for only one reference of an entity per source file that does
    * not also include a declaration/definition of the entity.
    */
   CXIndexOpt_SuppressRedundantRefs = 0x1,
 
   /**
-   * \brief Function-local symbols should be indexed. If this is not set
+   * Function-local symbols should be indexed. If this is not set
    * function-local symbols will be ignored.
    */
   CXIndexOpt_IndexFunctionLocalSymbols = 0x2,
 
   /**
-   * \brief Implicit function/class template instantiations should be indexed.
+   * Implicit function/class template instantiations should be indexed.
    * If this is not set, implicit instantiations will be ignored.
    */
   CXIndexOpt_IndexImplicitTemplateInstantiations = 0x4,
 
   /**
-   * \brief Suppress all compiler warnings when parsing for indexing.
+   * Suppress all compiler warnings when parsing for indexing.
    */
   CXIndexOpt_SuppressWarnings = 0x8,
 
   /**
-   * \brief Skip a function/method body that was already parsed during an
+   * Skip a function/method body that was already parsed during an
    * indexing session associated with a \c CXIndexAction object.
    * Bodies in system headers are always skipped.
    */
@@ -6335,7 +6335,7 @@
 } CXIndexOptFlags;
 
 /**
- * \brief Index the given source file and the translation unit corresponding
+ * Index the given source file and the translation unit corresponding
  * to that file via callbacks implemented through #IndexerCallbacks.
  *
  * \param client_data pointer data supplied by the client, which will
@@ -6373,7 +6373,7 @@
                                          unsigned TU_options);
 
 /**
- * \brief Same as clang_indexSourceFile but requires a full command line
+ * Same as clang_indexSourceFile but requires a full command line
  * for \c command_line_args including argv[0]. This is useful if the standard
  * library paths are relative to the binary.
  */
@@ -6385,7 +6385,7 @@
     unsigned num_unsaved_files, CXTranslationUnit *out_TU, unsigned TU_options);
 
 /**
- * \brief Index the given translation unit via callbacks implemented through
+ * Index the given translation unit via callbacks implemented through
  * #IndexerCallbacks.
  * 
  * The order of callback invocations is not guaranteed to be the same as
@@ -6408,7 +6408,7 @@
                                               CXTranslationUnit);
 
 /**
- * \brief Retrieve the CXIdxFile, file, line, column, and offset represented by
+ * Retrieve the CXIdxFile, file, line, column, and offset represented by
  * the given CXIdxLoc.
  *
  * If the location refers into a macro expansion, retrieves the
@@ -6423,13 +6423,13 @@
                                                    unsigned *offset);
 
 /**
- * \brief Retrieve the CXSourceLocation represented by the given CXIdxLoc.
+ * Retrieve the CXSourceLocation represented by the given CXIdxLoc.
  */
 CINDEX_LINKAGE
 CXSourceLocation clang_indexLoc_getCXSourceLocation(CXIdxLoc loc);
 
 /**
- * \brief Visitor invoked for each field found by a traversal.
+ * Visitor invoked for each field found by a traversal.
  *
  * This visitor function will be invoked for each field found by
  * \c clang_Type_visitFields. Its first argument is the cursor being
@@ -6443,7 +6443,7 @@
                                                CXClientData client_data);
 
 /**
- * \brief Visit the fields of a particular type.
+ * Visit the fields of a particular type.
  *
  * This function visits all the direct fields of the given cursor,
  * invoking the given \p visitor function with the cursors of each
Index: cfe/trunk/include/clang/ARCMigrate/ARCMT.h
===================================================================
--- cfe/trunk/include/clang/ARCMigrate/ARCMT.h
+++ cfe/trunk/include/clang/ARCMigrate/ARCMT.h
@@ -22,7 +22,7 @@
 namespace arcmt {
   class MigrationPass;
 
-/// \brief Creates an AST with the provided CompilerInvocation but with these
+/// Creates an AST with the provided CompilerInvocation but with these
 /// changes:
 ///   -if a PCH/PTH is set, the original header is used instead
 ///   -Automatic Reference Counting mode is enabled
@@ -45,7 +45,7 @@
                      bool emitPremigrationARCErrors = false,
                      StringRef plistOut = StringRef());
 
-/// \brief Works similar to checkForManualIssues but instead of checking, it
+/// Works similar to checkForManualIssues but instead of checking, it
 /// applies automatic modifications to source files to conform to ARC.
 ///
 /// \returns false if no error is produced, true otherwise.
@@ -55,7 +55,7 @@
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
                      DiagnosticConsumer *DiagClient);
 
-/// \brief Applies automatic modifications and produces temporary files
+/// Applies automatic modifications and produces temporary files
 /// and metadata into the \p outputDir path.
 ///
 /// \param emitPremigrationARCErrors if true all ARC errors will get emitted
@@ -72,7 +72,7 @@
     DiagnosticConsumer *DiagClient, StringRef outputDir,
     bool emitPremigrationARCErrors, StringRef plistOut);
 
-/// \brief Get the set of file remappings from the \p outputDir path that
+/// Get the set of file remappings from the \p outputDir path that
 /// migrateWithTemporaryFiles produced.
 ///
 /// \returns false if no error is produced, true otherwise.
@@ -80,7 +80,7 @@
                        StringRef outputDir,
                        DiagnosticConsumer *DiagClient);
 
-/// \brief Get the set of file remappings from a list of files with remapping
+/// Get the set of file remappings from a list of files with remapping
 /// info.
 ///
 /// \returns false if no error is produced, true otherwise.
Index: cfe/trunk/include/clang/ARCMigrate/ARCMTActions.h
===================================================================
--- cfe/trunk/include/clang/ARCMigrate/ARCMTActions.h
+++ cfe/trunk/include/clang/ARCMigrate/ARCMTActions.h
@@ -55,7 +55,7 @@
                 bool emitPremigrationARCErrors);
 };
 
-/// \brief Migrates to modern ObjC syntax.
+/// Migrates to modern ObjC syntax.
 class ObjCMigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   unsigned    ObjCMigAction;
Index: cfe/trunk/include/clang/AST/APValue.h
===================================================================
--- cfe/trunk/include/clang/AST/APValue.h
+++ cfe/trunk/include/clang/AST/APValue.h
@@ -219,14 +219,14 @@
     MakeUninit();
   }
 
-  /// \brief Returns whether the object performed allocations.
+  /// Returns whether the object performed allocations.
   ///
   /// If APValues are constructed via placement new, \c needsCleanup()
   /// indicates whether the destructor must be called in order to correctly
   /// free all allocated memory.
   bool needsCleanup() const;
 
-  /// \brief Swaps the contents of this and the given APValue.
+  /// Swaps the contents of this and the given APValue.
   void swap(APValue &RHS);
 
   ValueKind getKind() const { return Kind; }
Index: cfe/trunk/include/clang/AST/ASTConsumer.h
===================================================================
--- cfe/trunk/include/clang/AST/ASTConsumer.h
+++ cfe/trunk/include/clang/AST/ASTConsumer.h
@@ -32,7 +32,7 @@
 /// clients that read ASTs.  This abstraction layer allows the client to be
 /// independent of the AST producer (e.g. parser vs AST dump file reader, etc).
 class ASTConsumer {
-  /// \brief Whether this AST consumer also requires information about
+  /// Whether this AST consumer also requires information about
   /// semantic analysis.
   bool SemaConsumer;
 
@@ -53,7 +53,7 @@
   /// \returns true to continue parsing, or false to abort parsing.
   virtual bool HandleTopLevelDecl(DeclGroupRef D);
 
-  /// \brief This callback is invoked each time an inline (method or friend)
+  /// This callback is invoked each time an inline (method or friend)
   /// function definition in a class is completed.
   virtual void HandleInlineFunctionDefinition(FunctionDecl *D) {}
 
@@ -72,22 +72,22 @@
   /// can be defined in declspecs).
   virtual void HandleTagDeclDefinition(TagDecl *D) {}
 
-  /// \brief This callback is invoked the first time each TagDecl is required to
+  /// This callback is invoked the first time each TagDecl is required to
   /// be complete.
   virtual void HandleTagDeclRequiredDefinition(const TagDecl *D) {}
 
-  /// \brief Invoked when a function is implicitly instantiated.
+  /// Invoked when a function is implicitly instantiated.
   /// Note that at this point point it does not have a body, its body is
   /// instantiated at the end of the translation unit and passed to
   /// HandleTopLevelDecl.
   virtual void HandleCXXImplicitFunctionInstantiation(FunctionDecl *D) {}
 
-  /// \brief Handle the specified top-level declaration that occurred inside
+  /// Handle the specified top-level declaration that occurred inside
   /// and ObjC container.
   /// The default implementation ignored them.
   virtual void HandleTopLevelDeclInObjCContainer(DeclGroupRef D);
 
-  /// \brief Handle an ImportDecl that was implicitly created due to an
+  /// Handle an ImportDecl that was implicitly created due to an
   /// inclusion directive.
   /// The default implementation passes it to HandleTopLevelDecl.
   virtual void HandleImplicitImportDecl(ImportDecl *D);
@@ -103,7 +103,7 @@
   /// modified by the introduction of an implicit zero initializer.
   virtual void CompleteTentativeDefinition(VarDecl *D) {}
 
-  /// \brief Callback invoked when an MSInheritanceAttr has been attached to a
+  /// Callback invoked when an MSInheritanceAttr has been attached to a
   /// CXXRecordDecl.
   virtual void AssignInheritanceModel(CXXRecordDecl *RD) {}
 
@@ -111,19 +111,19 @@
   // variable has been instantiated.
   virtual void HandleCXXStaticMemberVarInstantiation(VarDecl *D) {}
 
-  /// \brief Callback involved at the end of a translation unit to
+  /// Callback involved at the end of a translation unit to
   /// notify the consumer that a vtable for the given C++ class is
   /// required.
   ///
   /// \param RD The class whose vtable was used.
   virtual void HandleVTable(CXXRecordDecl *RD) {}
 
-  /// \brief If the consumer is interested in entities getting modified after
+  /// If the consumer is interested in entities getting modified after
   /// their initial creation, it should return a pointer to
   /// an ASTMutationListener here.
   virtual ASTMutationListener *GetASTMutationListener() { return nullptr; }
 
-  /// \brief If the consumer is interested in entities being deserialized from
+  /// If the consumer is interested in entities being deserialized from
   /// AST files, it should return a pointer to a ASTDeserializationListener here
   virtual ASTDeserializationListener *GetASTDeserializationListener() {
     return nullptr;
@@ -132,7 +132,7 @@
   /// PrintStats - If desired, print any statistics.
   virtual void PrintStats() {}
 
-  /// \brief This callback is called for each function if the Parser was
+  /// This callback is called for each function if the Parser was
   /// initialized with \c SkipFunctionBodies set to \c true.
   ///
   /// \return \c true if the function's body should be skipped. The function
Index: cfe/trunk/include/clang/AST/ASTContext.h
===================================================================
--- cfe/trunk/include/clang/AST/ASTContext.h
+++ cfe/trunk/include/clang/AST/ASTContext.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::ASTContext interface.
+/// Defines the clang::ASTContext interface.
 //
 //===----------------------------------------------------------------------===//
 
@@ -145,7 +145,7 @@
       : Width(Width), Align(Align), AlignIsRequired(AlignIsRequired) {}
 };
 
-/// \brief Holds long-lived AST nodes (such as types and decls) that can be
+/// Holds long-lived AST nodes (such as types and decls) that can be
 /// referred to throughout the semantic analysis of a file.
 class ASTContext : public RefCountedBase<ASTContext> {
   friend class NestedNameSpecifier;
@@ -207,13 +207,13 @@
                                      ASTContext&>
     SubstTemplateTemplateParmPacks;
 
-  /// \brief The set of nested name specifiers.
+  /// The set of nested name specifiers.
   ///
   /// This set is managed by the NestedNameSpecifier class.
   mutable llvm::FoldingSet<NestedNameSpecifier> NestedNameSpecifiers;
   mutable NestedNameSpecifier *GlobalNestedNameSpecifier = nullptr;
 
-  /// \brief A cache mapping from RecordDecls to ASTRecordLayouts.
+  /// A cache mapping from RecordDecls to ASTRecordLayouts.
   ///
   /// This is lazily created.  This is intentionally not serialized.
   mutable llvm::DenseMap<const RecordDecl*, const ASTRecordLayout*>
@@ -221,35 +221,35 @@
   mutable llvm::DenseMap<const ObjCContainerDecl*, const ASTRecordLayout*>
     ObjCLayouts;
 
-  /// \brief A cache from types to size and alignment information.
+  /// A cache from types to size and alignment information.
   using TypeInfoMap = llvm::DenseMap<const Type *, struct TypeInfo>;
   mutable TypeInfoMap MemoizedTypeInfo;
 
-  /// \brief A cache mapping from CXXRecordDecls to key functions.
+  /// A cache mapping from CXXRecordDecls to key functions.
   llvm::DenseMap<const CXXRecordDecl*, LazyDeclPtr> KeyFunctions;
 
-  /// \brief Mapping from ObjCContainers to their ObjCImplementations.
+  /// Mapping from ObjCContainers to their ObjCImplementations.
   llvm::DenseMap<ObjCContainerDecl*, ObjCImplDecl*> ObjCImpls;
 
-  /// \brief Mapping from ObjCMethod to its duplicate declaration in the same
+  /// Mapping from ObjCMethod to its duplicate declaration in the same
   /// interface.
   llvm::DenseMap<const ObjCMethodDecl*,const ObjCMethodDecl*> ObjCMethodRedecls;
 
-  /// \brief Mapping from __block VarDecls to their copy initialization expr.
+  /// Mapping from __block VarDecls to their copy initialization expr.
   llvm::DenseMap<const VarDecl*, Expr*> BlockVarCopyInits;
 
-  /// \brief Mapping from class scope functions specialization to their
+  /// Mapping from class scope functions specialization to their
   /// template patterns.
   llvm::DenseMap<const FunctionDecl*, FunctionDecl*>
     ClassScopeSpecializationPattern;
 
-  /// \brief Mapping from materialized temporaries with static storage duration
+  /// Mapping from materialized temporaries with static storage duration
   /// that appear in constant initializers to their evaluated values.  These are
   /// allocated in a std::map because their address must be stable.
   llvm::DenseMap<const MaterializeTemporaryExpr *, APValue *>
     MaterializedTemporaryValues;
 
-  /// \brief Representation of a "canonical" template template parameter that
+  /// Representation of a "canonical" template template parameter that
   /// is used in canonical template names.
   class CanonicalTemplateTemplateParm : public llvm::FoldingSetNode {
     TemplateTemplateParmDecl *Parm;
@@ -271,32 +271,32 @@
   TemplateTemplateParmDecl *
     getCanonicalTemplateTemplateParmDecl(TemplateTemplateParmDecl *TTP) const;
 
-  /// \brief The typedef for the __int128_t type.
+  /// The typedef for the __int128_t type.
   mutable TypedefDecl *Int128Decl = nullptr;
 
-  /// \brief The typedef for the __uint128_t type.
+  /// The typedef for the __uint128_t type.
   mutable TypedefDecl *UInt128Decl = nullptr;
 
-  /// \brief The typedef for the target specific predefined
+  /// The typedef for the target specific predefined
   /// __builtin_va_list type.
   mutable TypedefDecl *BuiltinVaListDecl = nullptr;
 
   /// The typedef for the predefined \c __builtin_ms_va_list type.
   mutable TypedefDecl *BuiltinMSVaListDecl = nullptr;
 
-  /// \brief The typedef for the predefined \c id type.
+  /// The typedef for the predefined \c id type.
   mutable TypedefDecl *ObjCIdDecl = nullptr;
 
-  /// \brief The typedef for the predefined \c SEL type.
+  /// The typedef for the predefined \c SEL type.
   mutable TypedefDecl *ObjCSelDecl = nullptr;
 
-  /// \brief The typedef for the predefined \c Class type.
+  /// The typedef for the predefined \c Class type.
   mutable TypedefDecl *ObjCClassDecl = nullptr;
 
-  /// \brief The typedef for the predefined \c Protocol class in Objective-C.
+  /// The typedef for the predefined \c Protocol class in Objective-C.
   mutable ObjCInterfaceDecl *ObjCProtocolClassDecl = nullptr;
 
-  /// \brief The typedef for the predefined 'BOOL' type.
+  /// The typedef for the predefined 'BOOL' type.
   mutable TypedefDecl *BOOLDecl = nullptr;
 
   // Typedefs which may be provided defining the structure of Objective-C
@@ -328,53 +328,53 @@
 
   QualType ObjCNSStringType;
 
-  /// \brief The typedef declaration for the Objective-C "instancetype" type.
+  /// The typedef declaration for the Objective-C "instancetype" type.
   TypedefDecl *ObjCInstanceTypeDecl = nullptr;
 
-  /// \brief The type for the C FILE type.
+  /// The type for the C FILE type.
   TypeDecl *FILEDecl = nullptr;
 
-  /// \brief The type for the C jmp_buf type.
+  /// The type for the C jmp_buf type.
   TypeDecl *jmp_bufDecl = nullptr;
 
-  /// \brief The type for the C sigjmp_buf type.
+  /// The type for the C sigjmp_buf type.
   TypeDecl *sigjmp_bufDecl = nullptr;
 
-  /// \brief The type for the C ucontext_t type.
+  /// The type for the C ucontext_t type.
   TypeDecl *ucontext_tDecl = nullptr;
 
-  /// \brief Type for the Block descriptor for Blocks CodeGen.
+  /// Type for the Block descriptor for Blocks CodeGen.
   ///
   /// Since this is only used for generation of debug info, it is not
   /// serialized.
   mutable RecordDecl *BlockDescriptorType = nullptr;
 
-  /// \brief Type for the Block descriptor for Blocks CodeGen.
+  /// Type for the Block descriptor for Blocks CodeGen.
   ///
   /// Since this is only used for generation of debug info, it is not
   /// serialized.
   mutable RecordDecl *BlockDescriptorExtendedType = nullptr;
 
-  /// \brief Declaration for the CUDA cudaConfigureCall function.
+  /// Declaration for the CUDA cudaConfigureCall function.
   FunctionDecl *cudaConfigureCallDecl = nullptr;
 
-  /// \brief Keeps track of all declaration attributes.
+  /// Keeps track of all declaration attributes.
   ///
   /// Since so few decls have attrs, we keep them in a hash map instead of
   /// wasting space in the Decl class.
   llvm::DenseMap<const Decl*, AttrVec*> DeclAttrs;
 
-  /// \brief A mapping from non-redeclarable declarations in modules that were
+  /// A mapping from non-redeclarable declarations in modules that were
   /// merged with other declarations to the canonical declaration that they were
   /// merged into.
   llvm::DenseMap<Decl*, Decl*> MergedDecls;
 
-  /// \brief A mapping from a defining declaration to a list of modules (other
+  /// A mapping from a defining declaration to a list of modules (other
   /// than the owning module of the declaration) that contain merged
   /// definitions of that entity.
   llvm::DenseMap<NamedDecl*, llvm::TinyPtrVector<Module*>> MergedDefModules;
 
-  /// \brief Initializers for a module, in order. Each Decl will be either
+  /// Initializers for a module, in order. Each Decl will be either
   /// something that has a semantic effect on startup (such as a variable with
   /// a non-constant initializer), or an ImportDecl (which recursively triggers
   /// initialization of another module).
@@ -389,7 +389,7 @@
   ASTContext &this_() { return *this; }
 
 public:
-  /// \brief A type synonym for the TemplateOrInstantiation mapping.
+  /// A type synonym for the TemplateOrInstantiation mapping.
   using TemplateOrSpecializationInfo =
       llvm::PointerUnion<VarTemplateDecl *, MemberSpecializationInfo *>;
 
@@ -399,7 +399,7 @@
   friend class ASTWriter;
   friend class CXXRecordDecl;
 
-  /// \brief A mapping to contain the template or declaration that
+  /// A mapping to contain the template or declaration that
   /// a variable declaration describes or was instantiated from,
   /// respectively.
   ///
@@ -432,7 +432,7 @@
   llvm::DenseMap<const VarDecl *, TemplateOrSpecializationInfo>
   TemplateOrInstantiation;
 
-  /// \brief Keeps track of the declaration from which a using declaration was
+  /// Keeps track of the declaration from which a using declaration was
   /// created during instantiation.
   ///
   /// The source and target declarations are always a UsingDecl, an
@@ -462,7 +462,7 @@
 
   llvm::DenseMap<FieldDecl *, FieldDecl *> InstantiatedFromUnnamedFieldDecl;
 
-  /// \brief Mapping that stores the methods overridden by a given C++
+  /// Mapping that stores the methods overridden by a given C++
   /// member function.
   ///
   /// Since most C++ member functions aren't virtual and therefore
@@ -471,18 +471,18 @@
   using CXXMethodVector = llvm::TinyPtrVector<const CXXMethodDecl *>;
   llvm::DenseMap<const CXXMethodDecl *, CXXMethodVector> OverriddenMethods;
 
-  /// \brief Mapping from each declaration context to its corresponding
+  /// Mapping from each declaration context to its corresponding
   /// mangling numbering context (used for constructs like lambdas which
   /// need to be consistently numbered for the mangler).
   llvm::DenseMap<const DeclContext *, std::unique_ptr<MangleNumberingContext>>
       MangleNumberingContexts;
 
-  /// \brief Side-table of mangling numbers for declarations which rarely
+  /// Side-table of mangling numbers for declarations which rarely
   /// need them (like static local vars).
   llvm::MapVector<const NamedDecl *, unsigned> MangleNumbers;
   llvm::MapVector<const VarDecl *, unsigned> StaticLocalNumbers;
 
-  /// \brief Mapping that stores parameterIndex values for ParmVarDecls when
+  /// Mapping that stores parameterIndex values for ParmVarDecls when
   /// that value exceeds the bitfield size of ParmVarDeclBits.ParameterIndex.
   using ParameterIndexTable = llvm::DenseMap<const VarDecl *, unsigned>;
   ParameterIndexTable ParamIndices;
@@ -495,38 +495,38 @@
   mutable BuiltinTemplateDecl *MakeIntegerSeqDecl = nullptr;
   mutable BuiltinTemplateDecl *TypePackElementDecl = nullptr;
 
-  /// \brief The associated SourceManager object.
+  /// The associated SourceManager object.
   SourceManager &SourceMgr;
 
-  /// \brief The language options used to create the AST associated with
+  /// The language options used to create the AST associated with
   ///  this ASTContext object.
   LangOptions &LangOpts;
 
-  /// \brief Blacklist object that is used by sanitizers to decide which
+  /// Blacklist object that is used by sanitizers to decide which
   /// entities should not be instrumented.
   std::unique_ptr<SanitizerBlacklist> SanitizerBL;
 
-  /// \brief Function filtering mechanism to determine whether a given function
+  /// Function filtering mechanism to determine whether a given function
   /// should be imbued with the XRay "always" or "never" attributes.
   std::unique_ptr<XRayFunctionFilter> XRayFilter;
 
-  /// \brief The allocator used to create AST objects.
+  /// The allocator used to create AST objects.
   ///
   /// AST objects are never destructed; rather, all memory associated with the
   /// AST objects will be released when the ASTContext itself is destroyed.
   mutable llvm::BumpPtrAllocator BumpAlloc;
 
-  /// \brief Allocator for partial diagnostics.
+  /// Allocator for partial diagnostics.
   PartialDiagnostic::StorageAllocator DiagAllocator;
 
-  /// \brief The current C++ ABI.
+  /// The current C++ ABI.
   std::unique_ptr<CXXABI> ABI;
   CXXABI *createCXXABI(const TargetInfo &T);
 
-  /// \brief The logical -> physical address space map.
+  /// The logical -> physical address space map.
   const LangASMap *AddrSpaceMap = nullptr;
 
-  /// \brief Address space map mangling must be used with language specific
+  /// Address space map mangling must be used with language specific
   /// address spaces (e.g. OpenCL/CUDA)
   bool AddrSpaceMapMangling;
 
@@ -542,10 +542,10 @@
   IntrusiveRefCntPtr<ExternalASTSource> ExternalSource;
   ASTMutationListener *Listener = nullptr;
 
-  /// \brief Contains parents of a node.
+  /// Contains parents of a node.
   using ParentVector = llvm::SmallVector<ast_type_traits::DynTypedNode, 2>;
 
-  /// \brief Maps from a node to its parents. This is used for nodes that have
+  /// Maps from a node to its parents. This is used for nodes that have
   /// pointer identity only, which are more common and we can save space by
   /// only storing a unique pointer to them.
   using ParentMapPointers =
@@ -603,7 +603,7 @@
     }
   };
 
-  /// \brief Returns the parents of the given node.
+  /// Returns the parents of the given node.
   ///
   /// Note that this will lazily compute the parents of all nodes
   /// and store them for later retrieval. Thus, the first call is O(n)
@@ -702,10 +702,10 @@
     return FullSourceLoc(Loc,SourceMgr);
   }
 
-  /// \brief All comments in this translation unit.
+  /// All comments in this translation unit.
   RawCommentList Comments;
 
-  /// \brief True if comments are already loaded from ExternalASTSource.
+  /// True if comments are already loaded from ExternalASTSource.
   mutable bool CommentsLoaded = false;
 
   class RawCommentAndCacheFlags {
@@ -762,18 +762,18 @@
     const Decl *OriginalDecl;
   };
 
-  /// \brief Mapping from declarations to comments attached to any
+  /// Mapping from declarations to comments attached to any
   /// redeclaration.
   ///
   /// Raw comments are owned by Comments list.  This mapping is populated
   /// lazily.
   mutable llvm::DenseMap<const Decl *, RawCommentAndCacheFlags> RedeclComments;
 
-  /// \brief Mapping from declarations to parsed comments attached to any
+  /// Mapping from declarations to parsed comments attached to any
   /// redeclaration.
   mutable llvm::DenseMap<const Decl *, comments::FullComment *> ParsedComments;
 
-  /// \brief Return the documentation comment attached to a given declaration,
+  /// Return the documentation comment attached to a given declaration,
   /// without looking into cache.
   RawComment *getRawCommentForDeclNoCache(const Decl *D) const;
 
@@ -788,7 +788,7 @@
     Comments.addComment(RC, LangOpts.CommentOpts, BumpAlloc);
   }
 
-  /// \brief Return the documentation comment attached to a given declaration.
+  /// Return the documentation comment attached to a given declaration.
   /// Returns nullptr if no comment is attached.
   ///
   /// \param OriginalDecl if not nullptr, is set to declaration AST node that
@@ -816,7 +816,7 @@
 private:
   mutable comments::CommandTraits CommentCommandTraits;
 
-  /// \brief Iterator that visits import declarations.
+  /// Iterator that visits import declarations.
   class import_iterator {
     ImportDecl *Import = nullptr;
 
@@ -858,13 +858,13 @@
     return CommentCommandTraits;
   }
 
-  /// \brief Retrieve the attributes for the given declaration.
+  /// Retrieve the attributes for the given declaration.
   AttrVec& getDeclAttrs(const Decl *D);
 
-  /// \brief Erase the attributes corresponding to the given declaration.
+  /// Erase the attributes corresponding to the given declaration.
   void eraseDeclAttrs(const Decl *D);
 
-  /// \brief If this variable is an instantiated static data member of a
+  /// If this variable is an instantiated static data member of a
   /// class template specialization, returns the templated static data member
   /// from which it was instantiated.
   // FIXME: Remove ?
@@ -879,7 +879,7 @@
   void setClassScopeSpecializationPattern(FunctionDecl *FD,
                                           FunctionDecl *Pattern);
 
-  /// \brief Note that the static data member \p Inst is an instantiation of
+  /// Note that the static data member \p Inst is an instantiation of
   /// the static data member template \p Tmpl of a class template.
   void setInstantiatedFromStaticDataMember(VarDecl *Inst, VarDecl *Tmpl,
                                            TemplateSpecializationKind TSK,
@@ -888,12 +888,12 @@
   void setTemplateOrSpecializationInfo(VarDecl *Inst,
                                        TemplateOrSpecializationInfo TSI);
 
-  /// \brief If the given using decl \p Inst is an instantiation of a
+  /// If the given using decl \p Inst is an instantiation of a
   /// (possibly unresolved) using decl from a template instantiation,
   /// return it.
   NamedDecl *getInstantiatedFromUsingDecl(NamedDecl *Inst);
 
-  /// \brief Remember that the using decl \p Inst is an instantiation
+  /// Remember that the using decl \p Inst is an instantiation
   /// of the using decl \p Pattern of a class template.
   void setInstantiatedFromUsingDecl(NamedDecl *Inst, NamedDecl *Pattern);
 
@@ -920,12 +920,12 @@
 
   overridden_method_range overridden_methods(const CXXMethodDecl *Method) const;
 
-  /// \brief Note that the given C++ \p Method overrides the given \p
+  /// Note that the given C++ \p Method overrides the given \p
   /// Overridden method.
   void addOverriddenMethod(const CXXMethodDecl *Method,
                            const CXXMethodDecl *Overridden);
 
-  /// \brief Return C++ or ObjC overridden methods for the given \p Method.
+  /// Return C++ or ObjC overridden methods for the given \p Method.
   ///
   /// An ObjC method is considered to override any method in the class's
   /// base classes, its protocols, or its categories' protocols, that has
@@ -936,7 +936,7 @@
                         const NamedDecl *Method,
                         SmallVectorImpl<const NamedDecl *> &Overridden) const;
 
-  /// \brief Notify the AST context that a new import declaration has been
+  /// Notify the AST context that a new import declaration has been
   /// parsed or implicitly created within this translation unit.
   void addedLocalImportDecl(ImportDecl *Import);
 
@@ -958,16 +958,16 @@
     MergedDecls[D] = Primary;
   }
 
-  /// \brief Note that the definition \p ND has been merged into module \p M,
+  /// Note that the definition \p ND has been merged into module \p M,
   /// and should be visible whenever \p M is visible.
   void mergeDefinitionIntoModule(NamedDecl *ND, Module *M,
                                  bool NotifyListeners = true);
 
-  /// \brief Clean up the merged definition list. Call this if you might have
+  /// Clean up the merged definition list. Call this if you might have
   /// added duplicates into the list.
   void deduplicateMergedDefinitonsFor(NamedDecl *ND);
 
-  /// \brief Get the additional modules in which the definition \p Def has
+  /// Get the additional modules in which the definition \p Def has
   /// been merged.
   ArrayRef<Module*> getModulesWithMergedDefinition(const NamedDecl *Def) {
     auto MergedIt = MergedDefModules.find(Def);
@@ -1038,20 +1038,20 @@
   ASTContext &operator=(const ASTContext &) = delete;
   ~ASTContext();
 
-  /// \brief Attach an external AST source to the AST context.
+  /// Attach an external AST source to the AST context.
   ///
   /// The external AST source provides the ability to load parts of
   /// the abstract syntax tree as needed from some external storage,
   /// e.g., a precompiled header.
   void setExternalSource(IntrusiveRefCntPtr<ExternalASTSource> Source);
 
-  /// \brief Retrieve a pointer to the external AST source associated
+  /// Retrieve a pointer to the external AST source associated
   /// with this AST context, if any.
   ExternalASTSource *getExternalSource() const {
     return ExternalSource.get();
   }
 
-  /// \brief Attach an AST mutation listener to the AST context.
+  /// Attach an AST mutation listener to the AST context.
   ///
   /// The AST mutation listener provides the ability to track modifications to
   /// the abstract syntax tree entities committed after they were initially
@@ -1060,7 +1060,7 @@
     this->Listener = Listener;
   }
 
-  /// \brief Retrieve a pointer to the AST mutation listener associated
+  /// Retrieve a pointer to the AST mutation listener associated
   /// with this AST context, if any.
   ASTMutationListener *getASTMutationListener() const { return Listener; }
 
@@ -1070,18 +1070,18 @@
   BuiltinTemplateDecl *buildBuiltinTemplateDecl(BuiltinTemplateKind BTK,
                                                 const IdentifierInfo *II) const;
 
-  /// \brief Create a new implicit TU-level CXXRecordDecl or RecordDecl
+  /// Create a new implicit TU-level CXXRecordDecl or RecordDecl
   /// declaration.
   RecordDecl *buildImplicitRecord(StringRef Name,
                                   RecordDecl::TagKind TK = TTK_Struct) const;
 
-  /// \brief Create a new implicit TU-level typedef declaration.
+  /// Create a new implicit TU-level typedef declaration.
   TypedefDecl *buildImplicitTypedef(QualType T, StringRef Name) const;
 
-  /// \brief Retrieve the declaration for the 128-bit signed integer type.
+  /// Retrieve the declaration for the 128-bit signed integer type.
   TypedefDecl *getInt128Decl() const;
 
-  /// \brief Retrieve the declaration for the 128-bit unsigned integer type.
+  /// Retrieve the declaration for the 128-bit unsigned integer type.
   TypedefDecl *getUInt128Decl() const;
 
   //===--------------------------------------------------------------------===//
@@ -1089,7 +1089,7 @@
   //===--------------------------------------------------------------------===//
 
 private:
-  /// \brief Return a type with extended qualifiers.
+  /// Return a type with extended qualifiers.
   QualType getExtQualType(const Type *Base, Qualifiers Quals) const;
 
   QualType getTypeDeclTypeSlow(const TypeDecl *Decl) const;
@@ -1097,7 +1097,7 @@
   QualType getPipeType(QualType T, bool ReadOnly) const;
 
 public:
-  /// \brief Return the uniqued reference to the type for an address space
+  /// Return the uniqued reference to the type for an address space
   /// qualified type with the specified type and address space.
   ///
   /// The resulting type has a union of the qualifiers from T and the address
@@ -1105,14 +1105,14 @@
   /// replaced.
   QualType getAddrSpaceQualType(QualType T, LangAS AddressSpace) const;
 
-  /// \brief Remove any existing address space on the type and returns the type
+  /// Remove any existing address space on the type and returns the type
   /// with qualifiers intact (or that's the idea anyway)
   ///
   /// The return type should be T with all prior qualifiers minus the address
   /// space.
   QualType removeAddrSpaceQualType(QualType T) const;
 
-  /// \brief Apply Objective-C protocol qualifiers to the given type.
+  /// Apply Objective-C protocol qualifiers to the given type.
   /// \param allowOnPointerType specifies if we can apply protocol
   /// qualifiers on ObjCObjectPointerType. It can be set to true when
   /// constructing the canonical type of a Objective-C type parameter.
@@ -1120,14 +1120,14 @@
       ArrayRef<ObjCProtocolDecl *> protocols, bool &hasError,
       bool allowOnPointerType = false) const;
 
-  /// \brief Return the uniqued reference to the type for an Objective-C
+  /// Return the uniqued reference to the type for an Objective-C
   /// gc-qualified type.
   ///
   /// The retulting type has a union of the qualifiers from T and the gc
   /// attribute.
   QualType getObjCGCQualType(QualType T, Qualifiers::GC gcAttr) const;
 
-  /// \brief Return the uniqued reference to the type for a \c restrict
+  /// Return the uniqued reference to the type for a \c restrict
   /// qualified type.
   ///
   /// The resulting type has a union of the qualifiers from \p T and
@@ -1136,7 +1136,7 @@
     return T.withFastQualifiers(Qualifiers::Restrict);
   }
 
-  /// \brief Return the uniqued reference to the type for a \c volatile
+  /// Return the uniqued reference to the type for a \c volatile
   /// qualified type.
   ///
   /// The resulting type has a union of the qualifiers from \p T and
@@ -1145,7 +1145,7 @@
     return T.withFastQualifiers(Qualifiers::Volatile);
   }
 
-  /// \brief Return the uniqued reference to the type for a \c const
+  /// Return the uniqued reference to the type for a \c const
   /// qualified type.
   ///
   /// The resulting type has a union of the qualifiers from \p T and \c const.
@@ -1154,14 +1154,14 @@
   /// calling T.withConst().
   QualType getConstType(QualType T) const { return T.withConst(); }
 
-  /// \brief Change the ExtInfo on a function type.
+  /// Change the ExtInfo on a function type.
   const FunctionType *adjustFunctionType(const FunctionType *Fn,
                                          FunctionType::ExtInfo EInfo);
 
   /// Adjust the given function result type.
   CanQualType getCanonicalFunctionResultType(QualType ResultType) const;
 
-  /// \brief Change the result type of a function type once it is deduced.
+  /// Change the result type of a function type once it is deduced.
   void adjustDeducedFunctionResultType(FunctionDecl *FD, QualType ResultType);
 
   /// Get a function type and produce the equivalent function type with the
@@ -1171,11 +1171,11 @@
   QualType getFunctionTypeWithExceptionSpec(
       QualType Orig, const FunctionProtoType::ExceptionSpecInfo &ESI);
 
-  /// \brief Determine whether two function types are the same, ignoring
+  /// Determine whether two function types are the same, ignoring
   /// exception specifications in cases where they're part of the type.
   bool hasSameFunctionTypeIgnoringExceptionSpec(QualType T, QualType U);
 
-  /// \brief Change the exception specification on a function once it is
+  /// Change the exception specification on a function once it is
   /// delay-parsed, instantiated, or computed.
   void adjustExceptionSpec(FunctionDecl *FD,
                            const FunctionProtoType::ExceptionSpecInfo &ESI,
@@ -1185,21 +1185,21 @@
   /// callee function.
   bool isParamDestroyedInCallee(QualType T) const;
 
-  /// \brief Return the uniqued reference to the type for a complex
+  /// Return the uniqued reference to the type for a complex
   /// number with the specified element type.
   QualType getComplexType(QualType T) const;
   CanQualType getComplexType(CanQualType T) const {
     return CanQualType::CreateUnsafe(getComplexType((QualType) T));
   }
 
-  /// \brief Return the uniqued reference to the type for a pointer to
+  /// Return the uniqued reference to the type for a pointer to
   /// the specified type.
   QualType getPointerType(QualType T) const;
   CanQualType getPointerType(CanQualType T) const {
     return CanQualType::CreateUnsafe(getPointerType((QualType) T));
   }
 
-  /// \brief Return the uniqued reference to a type adjusted from the original
+  /// Return the uniqued reference to a type adjusted from the original
   /// type to a new type.
   QualType getAdjustedType(QualType Orig, QualType New) const;
   CanQualType getAdjustedType(CanQualType Orig, CanQualType New) const {
@@ -1207,7 +1207,7 @@
         getAdjustedType((QualType)Orig, (QualType)New));
   }
 
-  /// \brief Return the uniqued reference to the decayed version of the given
+  /// Return the uniqued reference to the decayed version of the given
   /// type.  Can only be called on array and function types which decay to
   /// pointer types.
   QualType getDecayedType(QualType T) const;
@@ -1215,11 +1215,11 @@
     return CanQualType::CreateUnsafe(getDecayedType((QualType) T));
   }
 
-  /// \brief Return the uniqued reference to the atomic type for the specified
+  /// Return the uniqued reference to the atomic type for the specified
   /// type.
   QualType getAtomicType(QualType T) const;
 
-  /// \brief Return the uniqued reference to the type for a block of the
+  /// Return the uniqued reference to the type for a block of the
   /// specified type.
   QualType getBlockPointerType(QualType T) const;
 
@@ -1227,10 +1227,10 @@
   /// blocks.
   QualType getBlockDescriptorType() const;
 
-  /// \brief Return a read_only pipe type for the specified type.
+  /// Return a read_only pipe type for the specified type.
   QualType getReadPipeType(QualType T) const;
 
-  /// \brief Return a write_only pipe type for the specified type.
+  /// Return a write_only pipe type for the specified type.
   QualType getWritePipeType(QualType T) const;
 
   /// Gets the struct used to keep track of the extended descriptor for
@@ -1261,29 +1261,29 @@
                         Qualifiers::ObjCLifetime &Lifetime,
                         bool &HasByrefExtendedLayout) const;
 
-  /// \brief Return the uniqued reference to the type for an lvalue reference
+  /// Return the uniqued reference to the type for an lvalue reference
   /// to the specified type.
   QualType getLValueReferenceType(QualType T, bool SpelledAsLValue = true)
     const;
 
-  /// \brief Return the uniqued reference to the type for an rvalue reference
+  /// Return the uniqued reference to the type for an rvalue reference
   /// to the specified type.
   QualType getRValueReferenceType(QualType T) const;
 
-  /// \brief Return the uniqued reference to the type for a member pointer to
+  /// Return the uniqued reference to the type for a member pointer to
   /// the specified type in the specified class.
   ///
   /// The class \p Cls is a \c Type because it could be a dependent name.
   QualType getMemberPointerType(QualType T, const Type *Cls) const;
 
-  /// \brief Return a non-unique reference to the type for a variable array of
+  /// Return a non-unique reference to the type for a variable array of
   /// the specified element type.
   QualType getVariableArrayType(QualType EltTy, Expr *NumElts,
                                 ArrayType::ArraySizeModifier ASM,
                                 unsigned IndexTypeQuals,
                                 SourceRange Brackets) const;
 
-  /// \brief Return a non-unique reference to the type for a dependently-sized
+  /// Return a non-unique reference to the type for a dependently-sized
   /// array of the specified element type.
   ///
   /// FIXME: We will need these to be uniqued, or at least comparable, at some
@@ -1293,29 +1293,29 @@
                                       unsigned IndexTypeQuals,
                                       SourceRange Brackets) const;
 
-  /// \brief Return a unique reference to the type for an incomplete array of
+  /// Return a unique reference to the type for an incomplete array of
   /// the specified element type.
   QualType getIncompleteArrayType(QualType EltTy,
                                   ArrayType::ArraySizeModifier ASM,
                                   unsigned IndexTypeQuals) const;
 
-  /// \brief Return the unique reference to the type for a constant array of
+  /// Return the unique reference to the type for a constant array of
   /// the specified element type.
   QualType getConstantArrayType(QualType EltTy, const llvm::APInt &ArySize,
                                 ArrayType::ArraySizeModifier ASM,
                                 unsigned IndexTypeQuals) const;
 
-  /// \brief Returns a vla type where known sizes are replaced with [*].
+  /// Returns a vla type where known sizes are replaced with [*].
   QualType getVariableArrayDecayedType(QualType Ty) const;
 
-  /// \brief Return the unique reference to a vector type of the specified
+  /// Return the unique reference to a vector type of the specified
   /// element type and size.
   ///
   /// \pre \p VectorType must be a built-in type.
   QualType getVectorType(QualType VectorType, unsigned NumElts,
                          VectorType::VectorKind VecKind) const;
 
-  /// \brief Return the unique reference to an extended vector type
+  /// Return the unique reference to an extended vector type
   /// of the specified element type and size.
   ///
   /// \pre \p VectorType must be a built-in type.
@@ -1334,7 +1334,7 @@
                                         Expr *AddrSpaceExpr,
                                         SourceLocation AttrLoc) const;
 
-  /// \brief Return a K&R style C function type like 'int()'.
+  /// Return a K&R style C function type like 'int()'.
   QualType getFunctionNoProtoType(QualType ResultTy,
                                   const FunctionType::ExtInfo &Info) const;
 
@@ -1342,20 +1342,20 @@
     return getFunctionNoProtoType(ResultTy, FunctionType::ExtInfo());
   }
 
-  /// \brief Return a normal function type with a typed argument list.
+  /// Return a normal function type with a typed argument list.
   QualType getFunctionType(QualType ResultTy, ArrayRef<QualType> Args,
                            const FunctionProtoType::ExtProtoInfo &EPI) const {
     return getFunctionTypeInternal(ResultTy, Args, EPI, false);
   }
 
 private:
-  /// \brief Return a normal function type with a typed argument list.
+  /// Return a normal function type with a typed argument list.
   QualType getFunctionTypeInternal(QualType ResultTy, ArrayRef<QualType> Args,
                                    const FunctionProtoType::ExtProtoInfo &EPI,
                                    bool OnlyWantCanonical) const;
 
 public:
-  /// \brief Return the unique reference to the type for the specified type
+  /// Return the unique reference to the type for the specified type
   /// declaration.
   QualType getTypeDeclType(const TypeDecl *Decl,
                            const TypeDecl *PrevDecl = nullptr) const {
@@ -1371,7 +1371,7 @@
     return getTypeDeclTypeSlow(Decl);
   }
 
-  /// \brief Return the unique reference to the type for the specified
+  /// Return the unique reference to the type for the specified
   /// typedef-name decl.
   QualType getTypedefType(const TypedefNameDecl *Decl,
                           QualType Canon = QualType()) const;
@@ -1468,105 +1468,105 @@
   bool QIdProtocolsAdoptObjCObjectProtocols(QualType QT,
                                             ObjCInterfaceDecl *IDecl);
 
-  /// \brief Return a ObjCObjectPointerType type for the given ObjCObjectType.
+  /// Return a ObjCObjectPointerType type for the given ObjCObjectType.
   QualType getObjCObjectPointerType(QualType OIT) const;
 
-  /// \brief GCC extension.
+  /// GCC extension.
   QualType getTypeOfExprType(Expr *e) const;
   QualType getTypeOfType(QualType t) const;
 
-  /// \brief C++11 decltype.
+  /// C++11 decltype.
   QualType getDecltypeType(Expr *e, QualType UnderlyingType) const;
 
-  /// \brief Unary type transforms
+  /// Unary type transforms
   QualType getUnaryTransformType(QualType BaseType, QualType UnderlyingType,
                                  UnaryTransformType::UTTKind UKind) const;
 
-  /// \brief C++11 deduced auto type.
+  /// C++11 deduced auto type.
   QualType getAutoType(QualType DeducedType, AutoTypeKeyword Keyword,
                        bool IsDependent) const;
 
-  /// \brief C++11 deduction pattern for 'auto' type.
+  /// C++11 deduction pattern for 'auto' type.
   QualType getAutoDeductType() const;
 
-  /// \brief C++11 deduction pattern for 'auto &&' type.
+  /// C++11 deduction pattern for 'auto &&' type.
   QualType getAutoRRefDeductType() const;
 
-  /// \brief C++17 deduced class template specialization type.
+  /// C++17 deduced class template specialization type.
   QualType getDeducedTemplateSpecializationType(TemplateName Template,
                                                 QualType DeducedType,
                                                 bool IsDependent) const;
 
-  /// \brief Return the unique reference to the type for the specified TagDecl
+  /// Return the unique reference to the type for the specified TagDecl
   /// (struct/union/class/enum) decl.
   QualType getTagDeclType(const TagDecl *Decl) const;
 
-  /// \brief Return the unique type for "size_t" (C99 7.17), defined in
+  /// Return the unique type for "size_t" (C99 7.17), defined in
   /// <stddef.h>.
   ///
   /// The sizeof operator requires this (C99 6.5.3.4p4).
   CanQualType getSizeType() const;
 
-  /// \brief Return the unique signed counterpart of 
+  /// Return the unique signed counterpart of 
   /// the integer type corresponding to size_t.
   CanQualType getSignedSizeType() const;
 
-  /// \brief Return the unique type for "intmax_t" (C99 7.18.1.5), defined in
+  /// Return the unique type for "intmax_t" (C99 7.18.1.5), defined in
   /// <stdint.h>.
   CanQualType getIntMaxType() const;
 
-  /// \brief Return the unique type for "uintmax_t" (C99 7.18.1.5), defined in
+  /// Return the unique type for "uintmax_t" (C99 7.18.1.5), defined in
   /// <stdint.h>.
   CanQualType getUIntMaxType() const;
 
-  /// \brief Return the unique wchar_t type available in C++ (and available as
+  /// Return the unique wchar_t type available in C++ (and available as
   /// __wchar_t as a Microsoft extension).
   QualType getWCharType() const { return WCharTy; }
 
-  /// \brief Return the type of wide characters. In C++, this returns the
+  /// Return the type of wide characters. In C++, this returns the
   /// unique wchar_t type. In C99, this returns a type compatible with the type
   /// defined in <stddef.h> as defined by the target.
   QualType getWideCharType() const { return WideCharTy; }
 
-  /// \brief Return the type of "signed wchar_t".
+  /// Return the type of "signed wchar_t".
   ///
   /// Used when in C++, as a GCC extension.
   QualType getSignedWCharType() const;
 
-  /// \brief Return the type of "unsigned wchar_t".
+  /// Return the type of "unsigned wchar_t".
   ///
   /// Used when in C++, as a GCC extension.
   QualType getUnsignedWCharType() const;
 
-  /// \brief In C99, this returns a type compatible with the type
+  /// In C99, this returns a type compatible with the type
   /// defined in <stddef.h> as defined by the target.
   QualType getWIntType() const { return WIntTy; }
 
-  /// \brief Return a type compatible with "intptr_t" (C99 7.18.1.4),
+  /// Return a type compatible with "intptr_t" (C99 7.18.1.4),
   /// as defined by the target.
   QualType getIntPtrType() const;
 
-  /// \brief Return a type compatible with "uintptr_t" (C99 7.18.1.4),
+  /// Return a type compatible with "uintptr_t" (C99 7.18.1.4),
   /// as defined by the target.
   QualType getUIntPtrType() const;
 
-  /// \brief Return the unique type for "ptrdiff_t" (C99 7.17) defined in
+  /// Return the unique type for "ptrdiff_t" (C99 7.17) defined in
   /// <stddef.h>. Pointer - pointer requires this (C99 6.5.6p9).
   QualType getPointerDiffType() const;
 
-  /// \brief Return the unique unsigned counterpart of "ptrdiff_t"
+  /// Return the unique unsigned counterpart of "ptrdiff_t"
   /// integer type. The standard (C11 7.21.6.1p7) refers to this type
   /// in the definition of %tu format specifier.
   QualType getUnsignedPointerDiffType() const;
 
-  /// \brief Return the unique type for "pid_t" defined in
+  /// Return the unique type for "pid_t" defined in
   /// <sys/types.h>. We need this to compute the correct type for vfork().
   QualType getProcessIDType() const;
 
-  /// \brief Return the C structure type used to represent constant CFStrings.
+  /// Return the C structure type used to represent constant CFStrings.
   QualType getCFConstantStringType() const;
 
-  /// \brief Returns the C struct type for objc_super
+  /// Returns the C struct type for objc_super
   QualType getObjCSuperType() const;
   void setObjCSuperType(QualType ST) { ObjCSuperType = ST; }
 
@@ -1595,7 +1595,7 @@
     ObjCNSStringType = T;
   }
 
-  /// \brief Retrieve the type that \c id has been defined to, which may be
+  /// Retrieve the type that \c id has been defined to, which may be
   /// different from the built-in \c id if \c id has been typedef'd.
   QualType getObjCIdRedefinitionType() const {
     if (ObjCIdRedefinitionType.isNull())
@@ -1603,12 +1603,12 @@
     return ObjCIdRedefinitionType;
   }
 
-  /// \brief Set the user-written type that redefines \c id.
+  /// Set the user-written type that redefines \c id.
   void setObjCIdRedefinitionType(QualType RedefType) {
     ObjCIdRedefinitionType = RedefType;
   }
 
-  /// \brief Retrieve the type that \c Class has been defined to, which may be
+  /// Retrieve the type that \c Class has been defined to, which may be
   /// different from the built-in \c Class if \c Class has been typedef'd.
   QualType getObjCClassRedefinitionType() const {
     if (ObjCClassRedefinitionType.isNull())
@@ -1616,12 +1616,12 @@
     return ObjCClassRedefinitionType;
   }
 
-  /// \brief Set the user-written type that redefines 'SEL'.
+  /// Set the user-written type that redefines 'SEL'.
   void setObjCClassRedefinitionType(QualType RedefType) {
     ObjCClassRedefinitionType = RedefType;
   }
 
-  /// \brief Retrieve the type that 'SEL' has been defined to, which may be
+  /// Retrieve the type that 'SEL' has been defined to, which may be
   /// different from the built-in 'SEL' if 'SEL' has been typedef'd.
   QualType getObjCSelRedefinitionType() const {
     if (ObjCSelRedefinitionType.isNull())
@@ -1629,7 +1629,7 @@
     return ObjCSelRedefinitionType;
   }
 
-  /// \brief Set the user-written type that redefines 'SEL'.
+  /// Set the user-written type that redefines 'SEL'.
   void setObjCSelRedefinitionType(QualType RedefType) {
     ObjCSelRedefinitionType = RedefType;
   }
@@ -1689,68 +1689,68 @@
     return TypePackElementName;
   }
 
-  /// \brief Retrieve the Objective-C "instancetype" type, if already known;
+  /// Retrieve the Objective-C "instancetype" type, if already known;
   /// otherwise, returns a NULL type;
   QualType getObjCInstanceType() {
     return getTypeDeclType(getObjCInstanceTypeDecl());
   }
 
-  /// \brief Retrieve the typedef declaration corresponding to the Objective-C
+  /// Retrieve the typedef declaration corresponding to the Objective-C
   /// "instancetype" type.
   TypedefDecl *getObjCInstanceTypeDecl();
 
-  /// \brief Set the type for the C FILE type.
+  /// Set the type for the C FILE type.
   void setFILEDecl(TypeDecl *FILEDecl) { this->FILEDecl = FILEDecl; }
 
-  /// \brief Retrieve the C FILE type.
+  /// Retrieve the C FILE type.
   QualType getFILEType() const {
     if (FILEDecl)
       return getTypeDeclType(FILEDecl);
     return QualType();
   }
 
-  /// \brief Set the type for the C jmp_buf type.
+  /// Set the type for the C jmp_buf type.
   void setjmp_bufDecl(TypeDecl *jmp_bufDecl) {
     this->jmp_bufDecl = jmp_bufDecl;
   }
 
-  /// \brief Retrieve the C jmp_buf type.
+  /// Retrieve the C jmp_buf type.
   QualType getjmp_bufType() const {
     if (jmp_bufDecl)
       return getTypeDeclType(jmp_bufDecl);
     return QualType();
   }
 
-  /// \brief Set the type for the C sigjmp_buf type.
+  /// Set the type for the C sigjmp_buf type.
   void setsigjmp_bufDecl(TypeDecl *sigjmp_bufDecl) {
     this->sigjmp_bufDecl = sigjmp_bufDecl;
   }
 
-  /// \brief Retrieve the C sigjmp_buf type.
+  /// Retrieve the C sigjmp_buf type.
   QualType getsigjmp_bufType() const {
     if (sigjmp_bufDecl)
       return getTypeDeclType(sigjmp_bufDecl);
     return QualType();
   }
 
-  /// \brief Set the type for the C ucontext_t type.
+  /// Set the type for the C ucontext_t type.
   void setucontext_tDecl(TypeDecl *ucontext_tDecl) {
     this->ucontext_tDecl = ucontext_tDecl;
   }
 
-  /// \brief Retrieve the C ucontext_t type.
+  /// Retrieve the C ucontext_t type.
   QualType getucontext_tType() const {
     if (ucontext_tDecl)
       return getTypeDeclType(ucontext_tDecl);
     return QualType();
   }
 
-  /// \brief The result type of logical operations, '<', '>', '!=', etc.
+  /// The result type of logical operations, '<', '>', '!=', etc.
   QualType getLogicalOperationType() const {
     return getLangOpts().CPlusPlus ? BoolTy : IntTy;
   }
 
-  /// \brief Emit the Objective-CC type encoding for the given type \p T into
+  /// Emit the Objective-CC type encoding for the given type \p T into
   /// \p S.
   ///
   /// If \p Field is specified then record field names are also encoded.
@@ -1758,17 +1758,17 @@
                               const FieldDecl *Field=nullptr,
                               QualType *NotEncodedT=nullptr) const;
 
-  /// \brief Emit the Objective-C property type encoding for the given
+  /// Emit the Objective-C property type encoding for the given
   /// type \p T into \p S.
   void getObjCEncodingForPropertyType(QualType T, std::string &S) const;
 
   void getLegacyIntegralTypeEncoding(QualType &t) const;
 
-  /// \brief Put the string version of the type qualifiers \p QT into \p S.
+  /// Put the string version of the type qualifiers \p QT into \p S.
   void getObjCEncodingForTypeQualifier(Decl::ObjCDeclQualifier QT,
                                        std::string &S) const;
 
-  /// \brief Emit the encoded type for the function \p Decl into \p S.
+  /// Emit the encoded type for the function \p Decl into \p S.
   ///
   /// This is in the same format as Objective-C method encodings.
   ///
@@ -1776,12 +1776,12 @@
   /// types is incomplete), false otherwise.
   std::string getObjCEncodingForFunctionDecl(const FunctionDecl *Decl) const;
 
-  /// \brief Emit the encoded type for the method declaration \p Decl into
+  /// Emit the encoded type for the method declaration \p Decl into
   /// \p S.
   std::string getObjCEncodingForMethodDecl(const ObjCMethodDecl *Decl,
                                            bool Extended = false) const;
 
-  /// \brief Return the encoded type for this block declaration.
+  /// Return the encoded type for this block declaration.
   std::string getObjCEncodingForBlock(const BlockExpr *blockExpr) const;
 
   /// getObjCEncodingForPropertyDecl - Return the encoded type for
@@ -1798,15 +1798,15 @@
                                                   const ObjCPropertyDecl *PD,
                                                   const Decl *Container) const;
 
-  /// \brief Return the size of type \p T for Objective-C encoding purpose,
+  /// Return the size of type \p T for Objective-C encoding purpose,
   /// in characters.
   CharUnits getObjCEncodingTypeSize(QualType T) const;
 
-  /// \brief Retrieve the typedef corresponding to the predefined \c id type
+  /// Retrieve the typedef corresponding to the predefined \c id type
   /// in Objective-C.
   TypedefDecl *getObjCIdDecl() const;
 
-  /// \brief Represents the Objective-CC \c id type.
+  /// Represents the Objective-CC \c id type.
   ///
   /// This is set up lazily, by Sema.  \c id is always a (typedef for a)
   /// pointer type, a pointer to a struct.
@@ -1814,21 +1814,21 @@
     return getTypeDeclType(getObjCIdDecl());
   }
 
-  /// \brief Retrieve the typedef corresponding to the predefined 'SEL' type
+  /// Retrieve the typedef corresponding to the predefined 'SEL' type
   /// in Objective-C.
   TypedefDecl *getObjCSelDecl() const;
 
-  /// \brief Retrieve the type that corresponds to the predefined Objective-C
+  /// Retrieve the type that corresponds to the predefined Objective-C
   /// 'SEL' type.
   QualType getObjCSelType() const {
     return getTypeDeclType(getObjCSelDecl());
   }
 
-  /// \brief Retrieve the typedef declaration corresponding to the predefined
+  /// Retrieve the typedef declaration corresponding to the predefined
   /// Objective-C 'Class' type.
   TypedefDecl *getObjCClassDecl() const;
 
-  /// \brief Represents the Objective-C \c Class type.
+  /// Represents the Objective-C \c Class type.
   ///
   /// This is set up lazily, by Sema.  \c Class is always a (typedef for a)
   /// pointer type, a pointer to a struct.
@@ -1836,40 +1836,40 @@
     return getTypeDeclType(getObjCClassDecl());
   }
 
-  /// \brief Retrieve the Objective-C class declaration corresponding to
+  /// Retrieve the Objective-C class declaration corresponding to
   /// the predefined \c Protocol class.
   ObjCInterfaceDecl *getObjCProtocolDecl() const;
 
-  /// \brief Retrieve declaration of 'BOOL' typedef
+  /// Retrieve declaration of 'BOOL' typedef
   TypedefDecl *getBOOLDecl() const {
     return BOOLDecl;
   }
 
-  /// \brief Save declaration of 'BOOL' typedef
+  /// Save declaration of 'BOOL' typedef
   void setBOOLDecl(TypedefDecl *TD) {
     BOOLDecl = TD;
   }
 
-  /// \brief type of 'BOOL' type.
+  /// type of 'BOOL' type.
   QualType getBOOLType() const {
     return getTypeDeclType(getBOOLDecl());
   }
 
-  /// \brief Retrieve the type of the Objective-C \c Protocol class.
+  /// Retrieve the type of the Objective-C \c Protocol class.
   QualType getObjCProtoType() const {
     return getObjCInterfaceType(getObjCProtocolDecl());
   }
 
-  /// \brief Retrieve the C type declaration corresponding to the predefined
+  /// Retrieve the C type declaration corresponding to the predefined
   /// \c __builtin_va_list type.
   TypedefDecl *getBuiltinVaListDecl() const;
 
-  /// \brief Retrieve the type of the \c __builtin_va_list type.
+  /// Retrieve the type of the \c __builtin_va_list type.
   QualType getBuiltinVaListType() const {
     return getTypeDeclType(getBuiltinVaListDecl());
   }
 
-  /// \brief Retrieve the C type declaration corresponding to the predefined
+  /// Retrieve the C type declaration corresponding to the predefined
   /// \c __va_list_tag type used to help define the \c __builtin_va_list type
   /// for some targets.
   Decl *getVaListTagDecl() const;
@@ -1887,18 +1887,18 @@
   /// overloaded/redeclared.
   bool canBuiltinBeRedeclared(const FunctionDecl *) const;
 
-  /// \brief Return a type with additional \c const, \c volatile, or
+  /// Return a type with additional \c const, \c volatile, or
   /// \c restrict qualifiers.
   QualType getCVRQualifiedType(QualType T, unsigned CVR) const {
     return getQualifiedType(T, Qualifiers::fromCVRMask(CVR));
   }
 
-  /// \brief Un-split a SplitQualType.
+  /// Un-split a SplitQualType.
   QualType getQualifiedType(SplitQualType split) const {
     return getQualifiedType(split.Ty, split.Quals);
   }
 
-  /// \brief Return a type with additional qualifiers.
+  /// Return a type with additional qualifiers.
   QualType getQualifiedType(QualType T, Qualifiers Qs) const {
     if (!Qs.hasNonFastQualifiers())
       return T.withFastQualifiers(Qs.getFastQualifiers());
@@ -1907,14 +1907,14 @@
     return getExtQualType(Ptr, Qc);
   }
 
-  /// \brief Return a type with additional qualifiers.
+  /// Return a type with additional qualifiers.
   QualType getQualifiedType(const Type *T, Qualifiers Qs) const {
     if (!Qs.hasNonFastQualifiers())
       return QualType(T, Qs.getFastQualifiers());
     return getExtQualType(T, Qs);
   }
 
-  /// \brief Return a type with the given lifetime qualifier.
+  /// Return a type with the given lifetime qualifier.
   ///
   /// \pre Neither type.ObjCLifetime() nor \p lifetime may be \c OCL_None.
   QualType getLifetimeQualifiedType(QualType type,
@@ -1971,7 +1971,7 @@
     GE_Missing_ucontext
   };
 
-  /// \brief Return the type for the specified builtin.
+  /// Return the type for the specified builtin.
   ///
   /// If \p IntegerConstantArgs is non-null, it is filled in with a bitmask of
   /// arguments to the builtin that are required to be integer constant
@@ -1992,18 +1992,18 @@
   //===--------------------------------------------------------------------===//
 
 public:
-  /// \brief Return one of the GCNone, Weak or Strong Objective-C garbage
+  /// Return one of the GCNone, Weak or Strong Objective-C garbage
   /// collection attributes.
   Qualifiers::GC getObjCGCAttrKind(QualType Ty) const;
 
-  /// \brief Return true if the given vector types are of the same unqualified
+  /// Return true if the given vector types are of the same unqualified
   /// type or if they are equivalent to the same GCC vector type.
   ///
   /// \note This ignores whether they are target-specific (AltiVec or Neon)
   /// types.
   bool areCompatibleVectorTypes(QualType FirstVec, QualType SecondVec);
 
-  /// \brief Return true if this is an \c NSObject object with its \c NSObject
+  /// Return true if this is an \c NSObject object with its \c NSObject
   /// attribute set.
   static bool isObjCNSObjectType(QualType Ty) {
     return Ty->isObjCNSObjectType();
@@ -2013,48 +2013,48 @@
   //                         Type Sizing and Analysis
   //===--------------------------------------------------------------------===//
 
-  /// \brief Return the APFloat 'semantics' for the specified scalar floating
+  /// Return the APFloat 'semantics' for the specified scalar floating
   /// point type.
   const llvm::fltSemantics &getFloatTypeSemantics(QualType T) const;
 
-  /// \brief Get the size and alignment of the specified complete type in bits.
+  /// Get the size and alignment of the specified complete type in bits.
   TypeInfo getTypeInfo(const Type *T) const;
   TypeInfo getTypeInfo(QualType T) const { return getTypeInfo(T.getTypePtr()); }
 
-  /// \brief Get default simd alignment of the specified complete type in bits.
+  /// Get default simd alignment of the specified complete type in bits.
   unsigned getOpenMPDefaultSimdAlign(QualType T) const;
 
-  /// \brief Return the size of the specified (complete) type \p T, in bits.
+  /// Return the size of the specified (complete) type \p T, in bits.
   uint64_t getTypeSize(QualType T) const { return getTypeInfo(T).Width; }
   uint64_t getTypeSize(const Type *T) const { return getTypeInfo(T).Width; }
 
-  /// \brief Return the size of the character type, in bits.
+  /// Return the size of the character type, in bits.
   uint64_t getCharWidth() const {
     return getTypeSize(CharTy);
   }
 
-  /// \brief Convert a size in bits to a size in characters.
+  /// Convert a size in bits to a size in characters.
   CharUnits toCharUnitsFromBits(int64_t BitSize) const;
 
-  /// \brief Convert a size in characters to a size in bits.
+  /// Convert a size in characters to a size in bits.
   int64_t toBits(CharUnits CharSize) const;
 
-  /// \brief Return the size of the specified (complete) type \p T, in
+  /// Return the size of the specified (complete) type \p T, in
   /// characters.
   CharUnits getTypeSizeInChars(QualType T) const;
   CharUnits getTypeSizeInChars(const Type *T) const;
 
-  /// \brief Return the ABI-specified alignment of a (complete) type \p T, in
+  /// Return the ABI-specified alignment of a (complete) type \p T, in
   /// bits.
   unsigned getTypeAlign(QualType T) const { return getTypeInfo(T).Align; }
   unsigned getTypeAlign(const Type *T) const { return getTypeInfo(T).Align; }
 
-  /// \brief Return the ABI-specified alignment of a type, in bits, or 0 if
+  /// Return the ABI-specified alignment of a type, in bits, or 0 if
   /// the type is incomplete and we cannot determine the alignment (for
   /// example, from alignment attributes).
   unsigned getTypeAlignIfKnown(QualType T) const;
 
-  /// \brief Return the ABI-specified alignment of a (complete) type \p T, in
+  /// Return the ABI-specified alignment of a (complete) type \p T, in
   /// characters.
   CharUnits getTypeAlignInChars(QualType T) const;
   CharUnits getTypeAlignInChars(const Type *T) const;
@@ -2066,31 +2066,31 @@
   std::pair<CharUnits, CharUnits> getTypeInfoInChars(const Type *T) const;
   std::pair<CharUnits, CharUnits> getTypeInfoInChars(QualType T) const;
 
-  /// \brief Determine if the alignment the type has was required using an
+  /// Determine if the alignment the type has was required using an
   /// alignment attribute.
   bool isAlignmentRequired(const Type *T) const;
   bool isAlignmentRequired(QualType T) const;
 
-  /// \brief Return the "preferred" alignment of the specified type \p T for
+  /// Return the "preferred" alignment of the specified type \p T for
   /// the current target, in bits.
   ///
   /// This can be different than the ABI alignment in cases where it is
   /// beneficial for performance to overalign a data type.
   unsigned getPreferredTypeAlign(const Type *T) const;
 
-  /// \brief Return the default alignment for __attribute__((aligned)) on
+  /// Return the default alignment for __attribute__((aligned)) on
   /// this target, to be used if no alignment value is specified.
   unsigned getTargetDefaultAlignForAttributeAligned() const;
 
-  /// \brief Return the alignment in bits that should be given to a
+  /// Return the alignment in bits that should be given to a
   /// global variable with type \p T.
   unsigned getAlignOfGlobalVar(QualType T) const;
 
-  /// \brief Return the alignment in characters that should be given to a
+  /// Return the alignment in characters that should be given to a
   /// global variable with type \p T.
   CharUnits getAlignOfGlobalVarInChars(QualType T) const;
 
-  /// \brief Return a conservative estimate of the alignment of the specified
+  /// Return a conservative estimate of the alignment of the specified
   /// decl \p D.
   ///
   /// \pre \p D must not be a bitfield type, as bitfields do not have a valid
@@ -2102,12 +2102,12 @@
   /// pointers and large arrays get extra alignment.
   CharUnits getDeclAlign(const Decl *D, bool ForAlignof = false) const;
 
-  /// \brief Get or compute information about the layout of the specified
+  /// Get or compute information about the layout of the specified
   /// record (struct/union/class) \p D, which indicates its size and field
   /// position information.
   const ASTRecordLayout &getASTRecordLayout(const RecordDecl *D) const;
 
-  /// \brief Get or compute information about the layout of the specified
+  /// Get or compute information about the layout of the specified
   /// Objective-C interface.
   const ASTRecordLayout &getASTObjCInterfaceLayout(const ObjCInterfaceDecl *D)
     const;
@@ -2115,14 +2115,14 @@
   void DumpRecordLayout(const RecordDecl *RD, raw_ostream &OS,
                         bool Simple = false) const;
 
-  /// \brief Get or compute information about the layout of the specified
+  /// Get or compute information about the layout of the specified
   /// Objective-C implementation.
   ///
   /// This may differ from the interface if synthesized ivars are present.
   const ASTRecordLayout &
   getASTObjCImplementationLayout(const ObjCImplementationDecl *D) const;
 
-  /// \brief Get our current best idea for the key function of the
+  /// Get our current best idea for the key function of the
   /// given record decl, or nullptr if there isn't one.
   ///
   /// The key function is, according to the Itanium C++ ABI section 5.2.3:
@@ -2134,7 +2134,7 @@
   /// the result of this computation can change.
   const CXXMethodDecl *getCurrentKeyFunction(const CXXRecordDecl *RD);
 
-  /// \brief Observe that the given method cannot be a key function.
+  /// Observe that the given method cannot be a key function.
   /// Checks the key-function cache for the method's class and clears it
   /// if matches the given declaration.
   ///
@@ -2176,7 +2176,7 @@
   void CollectInheritedProtocols(const Decl *CDecl,
                           llvm::SmallPtrSet<ObjCProtocolDecl*, 8> &Protocols);
 
-  /// \brief Return true if the specified type has unique object representations
+  /// Return true if the specified type has unique object representations
   /// according to (C++17 [meta.unary.prop]p9)
   bool hasUniqueObjectRepresentations(QualType Ty) const;
 
@@ -2184,7 +2184,7 @@
   //                            Type Operators
   //===--------------------------------------------------------------------===//
 
-  /// \brief Return the canonical (structural) type corresponding to the
+  /// Return the canonical (structural) type corresponding to the
   /// specified potentially non-canonical type \p T.
   ///
   /// The non-canonical version of a type may have many "decorated" versions of
@@ -2200,14 +2200,14 @@
     return T->getCanonicalTypeInternal().getTypePtr();
   }
 
-  /// \brief Return the canonical parameter type corresponding to the specific
+  /// Return the canonical parameter type corresponding to the specific
   /// potentially non-canonical one.
   ///
   /// Qualifiers are stripped off, functions are turned into function
   /// pointers, and arrays decay one level into pointers.
   CanQualType getCanonicalParamType(QualType T) const;
 
-  /// \brief Determine whether the given types \p T1 and \p T2 are equivalent.
+  /// Determine whether the given types \p T1 and \p T2 are equivalent.
   bool hasSameType(QualType T1, QualType T2) const {
     return getCanonicalType(T1) == getCanonicalType(T2);
   }
@@ -2215,7 +2215,7 @@
     return getCanonicalType(T1) == getCanonicalType(T2);
   }
 
-  /// \brief Return this type as a completely-unqualified array type,
+  /// Return this type as a completely-unqualified array type,
   /// capturing the qualifiers in \p Quals.
   ///
   /// This will remove the minimal amount of sugaring from the types, similar
@@ -2230,7 +2230,7 @@
   /// that corresponds to it. Otherwise, returns T.getUnqualifiedType().
   QualType getUnqualifiedArrayType(QualType T, Qualifiers &Quals);
 
-  /// \brief Determine whether the given types are equivalent after
+  /// Determine whether the given types are equivalent after
   /// cvr-qualifiers have been removed.
   bool hasSameUnqualifiedType(QualType T1, QualType T2) const {
     return getCanonicalType(T1).getTypePtr() ==
@@ -2272,7 +2272,7 @@
 
   bool UnwrapSimilarPointerTypes(QualType &T1, QualType &T2);
 
-  /// \brief Retrieves the "canonical" nested name specifier for a
+  /// Retrieves the "canonical" nested name specifier for a
   /// given nested name specifier.
   ///
   /// The canonical nested name specifier is a nested name specifier
@@ -2298,11 +2298,11 @@
   NestedNameSpecifier *
   getCanonicalNestedNameSpecifier(NestedNameSpecifier *NNS) const;
 
-  /// \brief Retrieves the default calling convention for the current target.
+  /// Retrieves the default calling convention for the current target.
   CallingConv getDefaultCallingConvention(bool IsVariadic,
                                           bool IsCXXMethod) const;
 
-  /// \brief Retrieves the "canonical" template name that refers to a
+  /// Retrieves the "canonical" template name that refers to a
   /// given template.
   ///
   /// The canonical template name is the simplest expression that can
@@ -2322,11 +2322,11 @@
   /// types, values, and templates.
   TemplateName getCanonicalTemplateName(TemplateName Name) const;
 
-  /// \brief Determine whether the given template names refer to the same
+  /// Determine whether the given template names refer to the same
   /// template.
   bool hasSameTemplateName(TemplateName X, TemplateName Y);
 
-  /// \brief Retrieve the "canonical" template argument.
+  /// Retrieve the "canonical" template argument.
   ///
   /// The canonical template argument is the simplest template argument
   /// (which may be a type, value, expression, or declaration) that
@@ -2353,33 +2353,33 @@
     return dyn_cast_or_null<DependentSizedArrayType>(getAsArrayType(T));
   }
 
-  /// \brief Return the innermost element type of an array type.
+  /// Return the innermost element type of an array type.
   ///
   /// For example, will return "int" for int[m][n]
   QualType getBaseElementType(const ArrayType *VAT) const;
 
-  /// \brief Return the innermost element type of a type (which needn't
+  /// Return the innermost element type of a type (which needn't
   /// actually be an array type).
   QualType getBaseElementType(QualType QT) const;
 
-  /// \brief Return number of constant array elements.
+  /// Return number of constant array elements.
   uint64_t getConstantArrayElementCount(const ConstantArrayType *CA) const;
 
-  /// \brief Perform adjustment on the parameter type of a function.
+  /// Perform adjustment on the parameter type of a function.
   ///
   /// This routine adjusts the given parameter type @p T to the actual
   /// parameter type used by semantic analysis (C99 6.7.5.3p[7,8],
   /// C++ [dcl.fct]p3). The adjusted parameter type is returned.
   QualType getAdjustedParameterType(QualType T) const;
 
-  /// \brief Retrieve the parameter type as adjusted for use in the signature
+  /// Retrieve the parameter type as adjusted for use in the signature
   /// of a function, decaying array and function types and removing top-level
   /// cv-qualifiers.
   QualType getSignatureParameterType(QualType T) const;
 
   QualType getExceptionObjectType(QualType T) const;
 
-  /// \brief Return the properly qualified result of decaying the specified
+  /// Return the properly qualified result of decaying the specified
   /// array type to a pointer.
   ///
   /// This operation is non-trivial when handling typedefs etc.  The canonical
@@ -2389,35 +2389,35 @@
   /// See C99 6.7.5.3p7 and C99 6.3.2.1p3.
   QualType getArrayDecayedType(QualType T) const;
 
-  /// \brief Return the type that \p PromotableType will promote to: C99
+  /// Return the type that \p PromotableType will promote to: C99
   /// 6.3.1.1p2, assuming that \p PromotableType is a promotable integer type.
   QualType getPromotedIntegerType(QualType PromotableType) const;
 
-  /// \brief Recurses in pointer/array types until it finds an Objective-C
+  /// Recurses in pointer/array types until it finds an Objective-C
   /// retainable type and returns its ownership.
   Qualifiers::ObjCLifetime getInnerObjCOwnership(QualType T) const;
 
-  /// \brief Whether this is a promotable bitfield reference according
+  /// Whether this is a promotable bitfield reference according
   /// to C99 6.3.1.1p2, bullet 2 (and GCC extensions).
   ///
   /// \returns the type this bit-field will promote to, or NULL if no
   /// promotion occurs.
   QualType isPromotableBitField(Expr *E) const;
 
-  /// \brief Return the highest ranked integer type, see C99 6.3.1.8p1.
+  /// Return the highest ranked integer type, see C99 6.3.1.8p1.
   ///
   /// If \p LHS > \p RHS, returns 1.  If \p LHS == \p RHS, returns 0.  If
   /// \p LHS < \p RHS, return -1.
   int getIntegerTypeOrder(QualType LHS, QualType RHS) const;
 
-  /// \brief Compare the rank of the two specified floating point types,
+  /// Compare the rank of the two specified floating point types,
   /// ignoring the domain of the type (i.e. 'double' == '_Complex double').
   ///
   /// If \p LHS > \p RHS, returns 1.  If \p LHS == \p RHS, returns 0.  If
   /// \p LHS < \p RHS, return -1.
   int getFloatingTypeOrder(QualType LHS, QualType RHS) const;
 
-  /// \brief Return a real floating point or a complex type (based on
+  /// Return a real floating point or a complex type (based on
   /// \p typeDomain/\p typeSize).
   ///
   /// \param typeDomain a real floating point or complex type.
@@ -2548,7 +2548,7 @@
   //                    Integer Values
   //===--------------------------------------------------------------------===//
 
-  /// \brief Make an APSInt of the appropriate width and signedness for the
+  /// Make an APSInt of the appropriate width and signedness for the
   /// given \p Value and integer \p Type.
   llvm::APSInt MakeIntValue(uint64_t Value, QualType Type) const {
     // If Type is a signed integer type larger than 64 bits, we need to be sure
@@ -2563,28 +2563,28 @@
 
   bool isSentinelNullExpr(const Expr *E);
 
-  /// \brief Get the implementation of the ObjCInterfaceDecl \p D, or nullptr if
+  /// Get the implementation of the ObjCInterfaceDecl \p D, or nullptr if
   /// none exists.
   ObjCImplementationDecl *getObjCImplementation(ObjCInterfaceDecl *D);
 
-  /// \brief Get the implementation of the ObjCCategoryDecl \p D, or nullptr if
+  /// Get the implementation of the ObjCCategoryDecl \p D, or nullptr if
   /// none exists.
   ObjCCategoryImplDecl *getObjCImplementation(ObjCCategoryDecl *D);
 
-  /// \brief Return true if there is at least one \@implementation in the TU.
+  /// Return true if there is at least one \@implementation in the TU.
   bool AnyObjCImplementation() {
     return !ObjCImpls.empty();
   }
 
-  /// \brief Set the implementation of ObjCInterfaceDecl.
+  /// Set the implementation of ObjCInterfaceDecl.
   void setObjCImplementation(ObjCInterfaceDecl *IFaceD,
                              ObjCImplementationDecl *ImplD);
 
-  /// \brief Set the implementation of ObjCCategoryDecl.
+  /// Set the implementation of ObjCCategoryDecl.
   void setObjCImplementation(ObjCCategoryDecl *CatD,
                              ObjCCategoryImplDecl *ImplD);
 
-  /// \brief Get the duplicate declaration of a ObjCMethod in the same
+  /// Get the duplicate declaration of a ObjCMethod in the same
   /// interface, or null if none exists.
   const ObjCMethodDecl *
   getObjCMethodRedeclaration(const ObjCMethodDecl *MD) const;
@@ -2592,19 +2592,19 @@
   void setObjCMethodRedeclaration(const ObjCMethodDecl *MD,
                                   const ObjCMethodDecl *Redecl);
 
-  /// \brief Returns the Objective-C interface that \p ND belongs to if it is
+  /// Returns the Objective-C interface that \p ND belongs to if it is
   /// an Objective-C method/property/ivar etc. that is part of an interface,
   /// otherwise returns null.
   const ObjCInterfaceDecl *getObjContainingInterface(const NamedDecl *ND) const;
 
-  /// \brief Set the copy inialization expression of a block var decl.
+  /// Set the copy inialization expression of a block var decl.
   void setBlockVarCopyInits(VarDecl*VD, Expr* Init);
 
-  /// \brief Get the copy initialization expression of the VarDecl \p VD, or
+  /// Get the copy initialization expression of the VarDecl \p VD, or
   /// nullptr if none exists.
   Expr *getBlockVarCopyInits(const VarDecl* VD);
 
-  /// \brief Allocate an uninitialized TypeSourceInfo.
+  /// Allocate an uninitialized TypeSourceInfo.
   ///
   /// The caller should initialize the memory held by TypeSourceInfo using
   /// the TypeLoc wrappers.
@@ -2617,14 +2617,14 @@
   /// should be calculated based on the type.
   TypeSourceInfo *CreateTypeSourceInfo(QualType T, unsigned Size = 0) const;
 
-  /// \brief Allocate a TypeSourceInfo where all locations have been
+  /// Allocate a TypeSourceInfo where all locations have been
   /// initialized to a given location, which defaults to the empty
   /// location.
   TypeSourceInfo *
   getTrivialTypeSourceInfo(QualType T,
                            SourceLocation Loc = SourceLocation()) const;
 
-  /// \brief Add a deallocation callback that will be invoked when the
+  /// Add a deallocation callback that will be invoked when the
   /// ASTContext is destroyed.
   ///
   /// \param Callback A callback function that will be invoked on destruction.
@@ -2646,7 +2646,7 @@
   GVALinkage GetGVALinkageForFunction(const FunctionDecl *FD) const;
   GVALinkage GetGVALinkageForVariable(const VarDecl *VD);
 
-  /// \brief Determines if the decl can be CodeGen'ed or deserialized from PCH
+  /// Determines if the decl can be CodeGen'ed or deserialized from PCH
   /// lazily, only when used; this is only relevant for function or file scoped
   /// var definitions.
   ///
@@ -2654,7 +2654,7 @@
   /// it is not used.
   bool DeclMustBeEmitted(const Decl *D);
 
-  /// \brief Visits all versions of a multiversioned function with the passed
+  /// Visits all versions of a multiversioned function with the passed
   /// predicate.
   void forEachMultiversionedFunctionVersion(
       const FunctionDecl *FD,
@@ -2680,21 +2680,21 @@
   void setStaticLocalNumber(const VarDecl *VD, unsigned Number);
   unsigned getStaticLocalNumber(const VarDecl *VD) const;
 
-  /// \brief Retrieve the context for computing mangling numbers in the given
+  /// Retrieve the context for computing mangling numbers in the given
   /// DeclContext.
   MangleNumberingContext &getManglingNumberContext(const DeclContext *DC);
 
   std::unique_ptr<MangleNumberingContext> createMangleNumberingContext() const;
 
-  /// \brief Used by ParmVarDecl to store on the side the
+  /// Used by ParmVarDecl to store on the side the
   /// index of the parameter when it exceeds the size of the normal bitfield.
   void setParameterIndex(const ParmVarDecl *D, unsigned index);
 
-  /// \brief Used by ParmVarDecl to retrieve on the side the
+  /// Used by ParmVarDecl to retrieve on the side the
   /// index of the parameter when it exceeds the size of the normal bitfield.
   unsigned getParameterIndex(const ParmVarDecl *D) const;
 
-  /// \brief Get the storage for the constant value of a materialized temporary
+  /// Get the storage for the constant value of a materialized temporary
   /// of static storage duration.
   APValue *getMaterializedTemporaryValue(const MaterializeTemporaryExpr *E,
                                          bool MayCreate);
@@ -2703,50 +2703,50 @@
   //                    Statistics
   //===--------------------------------------------------------------------===//
 
-  /// \brief The number of implicitly-declared default constructors.
+  /// The number of implicitly-declared default constructors.
   static unsigned NumImplicitDefaultConstructors;
 
-  /// \brief The number of implicitly-declared default constructors for
+  /// The number of implicitly-declared default constructors for
   /// which declarations were built.
   static unsigned NumImplicitDefaultConstructorsDeclared;
 
-  /// \brief The number of implicitly-declared copy constructors.
+  /// The number of implicitly-declared copy constructors.
   static unsigned NumImplicitCopyConstructors;
 
-  /// \brief The number of implicitly-declared copy constructors for
+  /// The number of implicitly-declared copy constructors for
   /// which declarations were built.
   static unsigned NumImplicitCopyConstructorsDeclared;
 
-  /// \brief The number of implicitly-declared move constructors.
+  /// The number of implicitly-declared move constructors.
   static unsigned NumImplicitMoveConstructors;
 
-  /// \brief The number of implicitly-declared move constructors for
+  /// The number of implicitly-declared move constructors for
   /// which declarations were built.
   static unsigned NumImplicitMoveConstructorsDeclared;
 
-  /// \brief The number of implicitly-declared copy assignment operators.
+  /// The number of implicitly-declared copy assignment operators.
   static unsigned NumImplicitCopyAssignmentOperators;
 
-  /// \brief The number of implicitly-declared copy assignment operators for
+  /// The number of implicitly-declared copy assignment operators for
   /// which declarations were built.
   static unsigned NumImplicitCopyAssignmentOperatorsDeclared;
 
-  /// \brief The number of implicitly-declared move assignment operators.
+  /// The number of implicitly-declared move assignment operators.
   static unsigned NumImplicitMoveAssignmentOperators;
 
-  /// \brief The number of implicitly-declared move assignment operators for
+  /// The number of implicitly-declared move assignment operators for
   /// which declarations were built.
   static unsigned NumImplicitMoveAssignmentOperatorsDeclared;
 
-  /// \brief The number of implicitly-declared destructors.
+  /// The number of implicitly-declared destructors.
   static unsigned NumImplicitDestructors;
 
-  /// \brief The number of implicitly-declared destructors for which
+  /// The number of implicitly-declared destructors for which
   /// declarations were built.
   static unsigned NumImplicitDestructorsDeclared;
 
 public:
-  /// \brief Initialize built-in types.
+  /// Initialize built-in types.
   ///
   /// This routine may only be invoked once for a given ASTContext object.
   /// It is normally invoked after ASTContext construction.
@@ -2783,7 +2783,7 @@
                                          QualType T, std::string& S,
                                          bool Extended) const;
 
-  /// \brief Returns true if this is an inline-initialized static data member
+  /// Returns true if this is an inline-initialized static data member
   /// which is treated as a definition for MSVC compatibility.
   bool isMSStaticDataMemberInlineDefinition(const VarDecl *VD) const;
 
@@ -2801,7 +2801,7 @@
     Strong
   };
 
-  /// \brief Determine whether a definition of this inline variable should
+  /// Determine whether a definition of this inline variable should
   /// be treated as a weak or strong definition. For compatibility with
   /// C++14 and before, for a constexpr static data member, if there is an
   /// out-of-line declaration of the member, we may promote it from weak to
@@ -2817,7 +2817,7 @@
   getObjCLayout(const ObjCInterfaceDecl *D,
                 const ObjCImplementationDecl *Impl) const;
 
-  /// \brief A set of deallocations that should be performed when the
+  /// A set of deallocations that should be performed when the
   /// ASTContext is destroyed.
   // FIXME: We really should have a better mechanism in the ASTContext to
   // manage running destructors for types which do variable sized allocation
@@ -2868,13 +2868,13 @@
   llvm::StringMap<SectionInfo> SectionInfos;
 };
 
-/// \brief Utility function for constructing a nullary selector.
+/// Utility function for constructing a nullary selector.
 inline Selector GetNullarySelector(StringRef name, ASTContext &Ctx) {
   IdentifierInfo* II = &Ctx.Idents.get(name);
   return Ctx.Selectors.getSelector(0, &II);
 }
 
-/// \brief Utility function for constructing an unary selector.
+/// Utility function for constructing an unary selector.
 inline Selector GetUnarySelector(StringRef name, ASTContext &Ctx) {
   IdentifierInfo* II = &Ctx.Idents.get(name);
   return Ctx.Selectors.getSelector(1, &II);
@@ -2884,7 +2884,7 @@
 
 // operator new and delete aren't allowed inside namespaces.
 
-/// @brief Placement new for using the ASTContext's allocator.
+/// Placement new for using the ASTContext's allocator.
 ///
 /// This placement form of operator new uses the ASTContext's allocator for
 /// obtaining memory.
@@ -2917,7 +2917,7 @@
   return C.Allocate(Bytes, Alignment);
 }
 
-/// @brief Placement delete companion to the new above.
+/// Placement delete companion to the new above.
 ///
 /// This operator is just a companion to the new above. There is no way of
 /// invoking it directly; see the new operator for more details. This operator
@@ -2955,7 +2955,7 @@
   return C.Allocate(Bytes, Alignment);
 }
 
-/// @brief Placement delete[] companion to the new[] above.
+/// Placement delete[] companion to the new[] above.
 ///
 /// This operator is just a companion to the new[] above. There is no way of
 /// invoking it directly; see the new[] operator for more details. This operator
@@ -2965,7 +2965,7 @@
   C.Deallocate(Ptr);
 }
 
-/// \brief Create the representation of a LazyGenerationalUpdatePtr.
+/// Create the representation of a LazyGenerationalUpdatePtr.
 template <typename Owner, typename T,
           void (clang::ExternalASTSource::*Update)(Owner)>
 typename clang::LazyGenerationalUpdatePtr<Owner, T, Update>::ValueType
Index: cfe/trunk/include/clang/AST/ASTDiagnostic.h
===================================================================
--- cfe/trunk/include/clang/AST/ASTDiagnostic.h
+++ cfe/trunk/include/clang/AST/ASTDiagnostic.h
@@ -24,7 +24,7 @@
     };
   }  // end namespace diag
   
-  /// \brief DiagnosticsEngine argument formatting function for diagnostics that
+  /// DiagnosticsEngine argument formatting function for diagnostics that
   /// involve AST nodes.
   ///
   /// This function formats diagnostic arguments for various AST nodes, 
Index: cfe/trunk/include/clang/AST/ASTFwd.h
===================================================================
--- cfe/trunk/include/clang/AST/ASTFwd.h
+++ cfe/trunk/include/clang/AST/ASTFwd.h
@@ -8,7 +8,7 @@
 //===--------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Forward declaration of all AST node types.
+/// Forward declaration of all AST node types.
 ///
 //===-------------------------------------------------------------===//
 
Index: cfe/trunk/include/clang/AST/ASTImporter.h
===================================================================
--- cfe/trunk/include/clang/AST/ASTImporter.h
+++ cfe/trunk/include/clang/AST/ASTImporter.h
@@ -43,7 +43,7 @@
 class TypeSourceInfo;
 class Attr;
 
-  /// \brief Imports selected nodes from one AST context into another context,
+  /// Imports selected nodes from one AST context into another context,
   /// merging AST nodes where appropriate.
   class ASTImporter {
   public:
@@ -52,45 +52,45 @@
         llvm::DenseMap<const CXXBaseSpecifier *, CXXBaseSpecifier *>;
 
   private:
-    /// \brief The contexts we're importing to and from.
+    /// The contexts we're importing to and from.
     ASTContext &ToContext, &FromContext;
     
-    /// \brief The file managers we're importing to and from.
+    /// The file managers we're importing to and from.
     FileManager &ToFileManager, &FromFileManager;
 
-    /// \brief Whether to perform a minimal import.
+    /// Whether to perform a minimal import.
     bool Minimal;
 
-    /// \brief Whether the last diagnostic came from the "from" context.
+    /// Whether the last diagnostic came from the "from" context.
     bool LastDiagFromFrom = false;
     
-    /// \brief Mapping from the already-imported types in the "from" context
+    /// Mapping from the already-imported types in the "from" context
     /// to the corresponding types in the "to" context.
     llvm::DenseMap<const Type *, const Type *> ImportedTypes;
     
-    /// \brief Mapping from the already-imported declarations in the "from"
+    /// Mapping from the already-imported declarations in the "from"
     /// context to the corresponding declarations in the "to" context.
     llvm::DenseMap<Decl *, Decl *> ImportedDecls;
 
-    /// \brief Mapping from the already-imported statements in the "from"
+    /// Mapping from the already-imported statements in the "from"
     /// context to the corresponding statements in the "to" context.
     llvm::DenseMap<Stmt *, Stmt *> ImportedStmts;
 
-    /// \brief Mapping from the already-imported FileIDs in the "from" source
+    /// Mapping from the already-imported FileIDs in the "from" source
     /// manager to the corresponding FileIDs in the "to" source manager.
     llvm::DenseMap<FileID, FileID> ImportedFileIDs;
 
-    /// \brief Mapping from the already-imported CXXBasesSpecifier in
+    /// Mapping from the already-imported CXXBasesSpecifier in
     ///  the "from" source manager to the corresponding CXXBasesSpecifier
     ///  in the "to" source manager.
     ImportedCXXBaseSpecifierMap ImportedCXXBaseSpecifiers;
     
-    /// \brief Declaration (from, to) pairs that are known not to be equivalent
+    /// Declaration (from, to) pairs that are known not to be equivalent
     /// (which we have already complained about).
     NonEquivalentDeclSet NonEquivalentDecls;
     
   public:
-    /// \brief Create a new AST importer.
+    /// Create a new AST importer.
     ///
     /// \param ToContext The context we'll be importing into.
     ///
@@ -109,31 +109,31 @@
     
     virtual ~ASTImporter();
     
-    /// \brief Whether the importer will perform a minimal import, creating
+    /// Whether the importer will perform a minimal import, creating
     /// to-be-completed forward declarations when possible.
     bool isMinimalImport() const { return Minimal; }
     
-    /// \brief Import the given type from the "from" context into the "to"
+    /// Import the given type from the "from" context into the "to"
     /// context.
     ///
     /// \returns the equivalent type in the "to" context, or a NULL type if
     /// an error occurred.
     QualType Import(QualType FromT);
 
-    /// \brief Import the given type source information from the
+    /// Import the given type source information from the
     /// "from" context into the "to" context.
     ///
     /// \returns the equivalent type source information in the "to"
     /// context, or NULL if an error occurred.
     TypeSourceInfo *Import(TypeSourceInfo *FromTSI);
 
-    /// \brief Import the given attribute from the "from" context into the
+    /// Import the given attribute from the "from" context into the
     /// "to" context.
     ///
     /// \returns the equivalent attribute in the "to" context.
     Attr *Import(const Attr *FromAttr);
 
-    /// \brief Import the given declaration from the "from" context into the 
+    /// Import the given declaration from the "from" context into the 
     /// "to" context.
     ///
     /// \returns the equivalent declaration in the "to" context, or a NULL type 
@@ -143,110 +143,110 @@
       return Import(const_cast<Decl *>(FromD));
     }
 
-    /// \brief Return the copy of the given declaration in the "to" context if
+    /// Return the copy of the given declaration in the "to" context if
     /// it has already been imported from the "from" context.  Otherwise return
     /// NULL.
     Decl *GetAlreadyImportedOrNull(Decl *FromD);
 
-    /// \brief Import the given declaration context from the "from"
+    /// Import the given declaration context from the "from"
     /// AST context into the "to" AST context.
     ///
     /// \returns the equivalent declaration context in the "to"
     /// context, or a NULL type if an error occurred.
     DeclContext *ImportContext(DeclContext *FromDC);
     
-    /// \brief Import the given expression from the "from" context into the
+    /// Import the given expression from the "from" context into the
     /// "to" context.
     ///
     /// \returns the equivalent expression in the "to" context, or NULL if
     /// an error occurred.
     Expr *Import(Expr *FromE);
 
-    /// \brief Import the given statement from the "from" context into the
+    /// Import the given statement from the "from" context into the
     /// "to" context.
     ///
     /// \returns the equivalent statement in the "to" context, or NULL if
     /// an error occurred.
     Stmt *Import(Stmt *FromS);
 
-    /// \brief Import the given nested-name-specifier from the "from"
+    /// Import the given nested-name-specifier from the "from"
     /// context into the "to" context.
     ///
     /// \returns the equivalent nested-name-specifier in the "to"
     /// context, or NULL if an error occurred.
     NestedNameSpecifier *Import(NestedNameSpecifier *FromNNS);
 
-    /// \brief Import the given nested-name-specifier from the "from"
+    /// Import the given nested-name-specifier from the "from"
     /// context into the "to" context.
     ///
     /// \returns the equivalent nested-name-specifier in the "to"
     /// context.
     NestedNameSpecifierLoc Import(NestedNameSpecifierLoc FromNNS);
 
-    /// \brief Import the goven template name from the "from" context into the
+    /// Import the goven template name from the "from" context into the
     /// "to" context.
     TemplateName Import(TemplateName From);
     
-    /// \brief Import the given source location from the "from" context into
+    /// Import the given source location from the "from" context into
     /// the "to" context.
     ///
     /// \returns the equivalent source location in the "to" context, or an
     /// invalid source location if an error occurred.
     SourceLocation Import(SourceLocation FromLoc);
 
-    /// \brief Import the given source range from the "from" context into
+    /// Import the given source range from the "from" context into
     /// the "to" context.
     ///
     /// \returns the equivalent source range in the "to" context, or an
     /// invalid source location if an error occurred.
     SourceRange Import(SourceRange FromRange);
 
-    /// \brief Import the given declaration name from the "from"
+    /// Import the given declaration name from the "from"
     /// context into the "to" context.
     ///
     /// \returns the equivalent declaration name in the "to" context,
     /// or an empty declaration name if an error occurred.
     DeclarationName Import(DeclarationName FromName);
 
-    /// \brief Import the given identifier from the "from" context
+    /// Import the given identifier from the "from" context
     /// into the "to" context.
     ///
     /// \returns the equivalent identifier in the "to" context.
     IdentifierInfo *Import(const IdentifierInfo *FromId);
 
-    /// \brief Import the given Objective-C selector from the "from"
+    /// Import the given Objective-C selector from the "from"
     /// context into the "to" context.
     ///
     /// \returns the equivalent selector in the "to" context.
     Selector Import(Selector FromSel);
 
-    /// \brief Import the given file ID from the "from" context into the 
+    /// Import the given file ID from the "from" context into the 
     /// "to" context.
     ///
     /// \returns the equivalent file ID in the source manager of the "to"
     /// context.
     FileID Import(FileID);
 
-    /// \brief Import the given C++ constructor initializer from the "from"
+    /// Import the given C++ constructor initializer from the "from"
     /// context into the "to" context.
     ///
     /// \returns the equivalent initializer in the "to" context.
     CXXCtorInitializer *Import(CXXCtorInitializer *FromInit);
 
-    /// \brief Import the given CXXBaseSpecifier from the "from" context into
+    /// Import the given CXXBaseSpecifier from the "from" context into
     /// the "to" context.
     ///
     /// \returns the equivalent CXXBaseSpecifier in the source manager of the
     /// "to" context.
     CXXBaseSpecifier *Import(const CXXBaseSpecifier *FromSpec);
 
-    /// \brief Import the definition of the given declaration, including all of
+    /// Import the definition of the given declaration, including all of
     /// the declarations it contains.
     ///
     /// This routine is intended to be used 
     void ImportDefinition(Decl *From);
 
-    /// \brief Cope with a name conflict when importing a declaration into the
+    /// Cope with a name conflict when importing a declaration into the
     /// given context.
     ///
     /// This routine is invoked whenever there is a name conflict while 
@@ -278,41 +278,41 @@
                                                NamedDecl **Decls,
                                                unsigned NumDecls);
     
-    /// \brief Retrieve the context that AST nodes are being imported into.
+    /// Retrieve the context that AST nodes are being imported into.
     ASTContext &getToContext() const { return ToContext; }
     
-    /// \brief Retrieve the context that AST nodes are being imported from.
+    /// Retrieve the context that AST nodes are being imported from.
     ASTContext &getFromContext() const { return FromContext; }
     
-    /// \brief Retrieve the file manager that AST nodes are being imported into.
+    /// Retrieve the file manager that AST nodes are being imported into.
     FileManager &getToFileManager() const { return ToFileManager; }
 
-    /// \brief Retrieve the file manager that AST nodes are being imported from.
+    /// Retrieve the file manager that AST nodes are being imported from.
     FileManager &getFromFileManager() const { return FromFileManager; }
     
-    /// \brief Report a diagnostic in the "to" context.
+    /// Report a diagnostic in the "to" context.
     DiagnosticBuilder ToDiag(SourceLocation Loc, unsigned DiagID);
     
-    /// \brief Report a diagnostic in the "from" context.
+    /// Report a diagnostic in the "from" context.
     DiagnosticBuilder FromDiag(SourceLocation Loc, unsigned DiagID);
     
-    /// \brief Return the set of declarations that we know are not equivalent.
+    /// Return the set of declarations that we know are not equivalent.
     NonEquivalentDeclSet &getNonEquivalentDecls() { return NonEquivalentDecls; }
 
-    /// \brief Called for ObjCInterfaceDecl, ObjCProtocolDecl, and TagDecl.
+    /// Called for ObjCInterfaceDecl, ObjCProtocolDecl, and TagDecl.
     /// Mark the Decl as complete, filling it in as much as possible.
     ///
     /// \param D A declaration in the "to" context.
     virtual void CompleteDecl(Decl* D);
     
-    /// \brief Note that we have imported the "from" declaration by mapping it
+    /// Note that we have imported the "from" declaration by mapping it
     /// to the (potentially-newly-created) "to" declaration.
     ///
     /// Subclasses can override this function to observe all of the \c From ->
     /// \c To declaration mappings as they are imported.
     virtual Decl *Imported(Decl *From, Decl *To);
       
-    /// \brief Called by StructuralEquivalenceContext.  If a RecordDecl is
+    /// Called by StructuralEquivalenceContext.  If a RecordDecl is
     /// being compared to another RecordDecl as part of import, completing the
     /// other RecordDecl may trigger importation of the first RecordDecl. This
     /// happens especially for anonymous structs.  If the original of the second
@@ -320,7 +320,7 @@
     /// importation, eliminating this loop.
     virtual Decl *GetOriginalDecl(Decl *To) { return nullptr; }
     
-    /// \brief Determine whether the given types are structurally
+    /// Determine whether the given types are structurally
     /// equivalent.
     bool IsStructurallyEquivalent(QualType From, QualType To,
                                   bool Complain = true);
Index: cfe/trunk/include/clang/AST/ASTLambda.h
===================================================================
--- cfe/trunk/include/clang/AST/ASTLambda.h
+++ cfe/trunk/include/clang/AST/ASTLambda.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file provides some common utility functions for processing
+/// This file provides some common utility functions for processing
 /// Lambda related AST Constructs.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/include/clang/AST/ASTMutationListener.h
===================================================================
--- cfe/trunk/include/clang/AST/ASTMutationListener.h
+++ cfe/trunk/include/clang/AST/ASTMutationListener.h
@@ -41,86 +41,86 @@
   class VarTemplateDecl;
   class VarTemplateSpecializationDecl;
 
-/// \brief An abstract interface that should be implemented by listeners
+/// An abstract interface that should be implemented by listeners
 /// that want to be notified when an AST entity gets modified after its
 /// initial creation.
 class ASTMutationListener {
 public:
   virtual ~ASTMutationListener();
 
-  /// \brief A new TagDecl definition was completed.
+  /// A new TagDecl definition was completed.
   virtual void CompletedTagDefinition(const TagDecl *D) { }
 
-  /// \brief A new declaration with name has been added to a DeclContext.
+  /// A new declaration with name has been added to a DeclContext.
   virtual void AddedVisibleDecl(const DeclContext *DC, const Decl *D) {}
 
-  /// \brief An implicit member was added after the definition was completed.
+  /// An implicit member was added after the definition was completed.
   virtual void AddedCXXImplicitMember(const CXXRecordDecl *RD, const Decl *D) {}
 
-  /// \brief A template specialization (or partial one) was added to the
+  /// A template specialization (or partial one) was added to the
   /// template declaration.
   virtual void AddedCXXTemplateSpecialization(const ClassTemplateDecl *TD,
                                     const ClassTemplateSpecializationDecl *D) {}
 
-  /// \brief A template specialization (or partial one) was added to the
+  /// A template specialization (or partial one) was added to the
   /// template declaration.
   virtual void
   AddedCXXTemplateSpecialization(const VarTemplateDecl *TD,
                                  const VarTemplateSpecializationDecl *D) {}
 
-  /// \brief A template specialization (or partial one) was added to the
+  /// A template specialization (or partial one) was added to the
   /// template declaration.
   virtual void AddedCXXTemplateSpecialization(const FunctionTemplateDecl *TD,
                                               const FunctionDecl *D) {}
 
-  /// \brief A function's exception specification has been evaluated or
+  /// A function's exception specification has been evaluated or
   /// instantiated.
   virtual void ResolvedExceptionSpec(const FunctionDecl *FD) {}
 
-  /// \brief A function's return type has been deduced.
+  /// A function's return type has been deduced.
   virtual void DeducedReturnType(const FunctionDecl *FD, QualType ReturnType);
 
-  /// \brief A virtual destructor's operator delete has been resolved.
+  /// A virtual destructor's operator delete has been resolved.
   virtual void ResolvedOperatorDelete(const CXXDestructorDecl *DD,
                                       const FunctionDecl *Delete,
                                       Expr *ThisArg) {}
 
-  /// \brief An implicit member got a definition.
+  /// An implicit member got a definition.
   virtual void CompletedImplicitDefinition(const FunctionDecl *D) {}
 
-  /// \brief The instantiation of a templated function or variable was
+  /// The instantiation of a templated function or variable was
   /// requested. In particular, the point of instantiation and template
   /// specialization kind of \p D may have changed.
   virtual void InstantiationRequested(const ValueDecl *D) {}
 
-  /// \brief A templated variable's definition was implicitly instantiated.
+  /// A templated variable's definition was implicitly instantiated.
   virtual void VariableDefinitionInstantiated(const VarDecl *D) {}
 
-  /// \brief A function template's definition was instantiated.
+  /// A function template's definition was instantiated.
   virtual void FunctionDefinitionInstantiated(const FunctionDecl *D) {}
 
-  /// \brief A default argument was instantiated.
+  /// A default argument was instantiated.
   virtual void DefaultArgumentInstantiated(const ParmVarDecl *D) {}
 
-  /// \brief A default member initializer was instantiated.
+  /// A default member initializer was instantiated.
   virtual void DefaultMemberInitializerInstantiated(const FieldDecl *D) {}
 
-  /// \brief A new objc category class was added for an interface.
+  /// A new objc category class was added for an interface.
   virtual void AddedObjCCategoryToInterface(const ObjCCategoryDecl *CatD,
                                             const ObjCInterfaceDecl *IFD) {}
 
-  /// \brief A declaration is marked used which was not previously marked used.
+  /// A declaration is marked used which was not previously marked used.
   ///
   /// \param D the declaration marked used
   virtual void DeclarationMarkedUsed(const Decl *D) {}
 
-  /// \brief A declaration is marked as OpenMP threadprivate which was not
+  /// A declaration is marked as OpenMP threadprivate which was not
   /// previously marked as threadprivate.
   ///
   /// \param D the declaration marked OpenMP threadprivate.
   virtual void DeclarationMarkedOpenMPThreadPrivate(const Decl *D) {}
 
-  /// \brief A declaration is marked as OpenMP declaretarget which was not
+  /// A declaration is marked as OpenMP declaretarget which was not
   /// previously marked as declaretarget.
   ///
   /// \param D the declaration marked OpenMP declaretarget.
@@ -128,14 +128,14 @@
   virtual void DeclarationMarkedOpenMPDeclareTarget(const Decl *D,
                                                     const Attr *Attr) {}
 
-  /// \brief A definition has been made visible by being redefined locally.
+  /// A definition has been made visible by being redefined locally.
   ///
   /// \param D The definition that was previously not visible.
   /// \param M The containing module in which the definition was made visible,
   ///        if any.
   virtual void RedefinedHiddenDefinition(const NamedDecl *D, Module *M) {}
   
-  /// \brief An attribute was added to a RecordDecl
+  /// An attribute was added to a RecordDecl
   ///
   /// \param Attr The attribute that was added to the Record
   ///
Index: cfe/trunk/include/clang/AST/ASTTypeTraits.h
===================================================================
--- cfe/trunk/include/clang/AST/ASTTypeTraits.h
+++ cfe/trunk/include/clang/AST/ASTTypeTraits.h
@@ -38,62 +38,62 @@
 
 namespace ast_type_traits {
 
-/// \brief Kind identifier.
+/// Kind identifier.
 ///
 /// It can be constructed from any node kind and allows for runtime type
 /// hierarchy checks.
 /// Use getFromNodeKind<T>() to construct them.
 class ASTNodeKind {
 public:
-  /// \brief Empty identifier. It matches nothing.
+  /// Empty identifier. It matches nothing.
   ASTNodeKind() : KindId(NKI_None) {}
 
-  /// \brief Construct an identifier for T.
+  /// Construct an identifier for T.
   template <class T>
   static ASTNodeKind getFromNodeKind() {
     return ASTNodeKind(KindToKindId<T>::Id);
   }
 
   /// \{
-  /// \brief Construct an identifier for the dynamic type of the node
+  /// Construct an identifier for the dynamic type of the node
   static ASTNodeKind getFromNode(const Decl &D);
   static ASTNodeKind getFromNode(const Stmt &S);
   static ASTNodeKind getFromNode(const Type &T);
   /// \}
 
-  /// \brief Returns \c true if \c this and \c Other represent the same kind.
+  /// Returns \c true if \c this and \c Other represent the same kind.
   bool isSame(ASTNodeKind Other) const {
     return KindId != NKI_None && KindId == Other.KindId;
   }
 
-  /// \brief Returns \c true only for the default \c ASTNodeKind()
+  /// Returns \c true only for the default \c ASTNodeKind()
   bool isNone() const { return KindId == NKI_None; }
 
-  /// \brief Returns \c true if \c this is a base kind of (or same as) \c Other.
+  /// Returns \c true if \c this is a base kind of (or same as) \c Other.
   /// \param Distance If non-null, used to return the distance between \c this
   /// and \c Other in the class hierarchy.
   bool isBaseOf(ASTNodeKind Other, unsigned *Distance = nullptr) const;
 
-  /// \brief String representation of the kind.
+  /// String representation of the kind.
   StringRef asStringRef() const;
 
-  /// \brief Strict weak ordering for ASTNodeKind.
+  /// Strict weak ordering for ASTNodeKind.
   bool operator<(const ASTNodeKind &Other) const {
     return KindId < Other.KindId;
   }
 
-  /// \brief Return the most derived type between \p Kind1 and \p Kind2.
+  /// Return the most derived type between \p Kind1 and \p Kind2.
   ///
   /// Return ASTNodeKind() if they are not related.
   static ASTNodeKind getMostDerivedType(ASTNodeKind Kind1, ASTNodeKind Kind2);
 
-  /// \brief Return the most derived common ancestor between Kind1 and Kind2.
+  /// Return the most derived common ancestor between Kind1 and Kind2.
   ///
   /// Return ASTNodeKind() if they are not related.
   static ASTNodeKind getMostDerivedCommonAncestor(ASTNodeKind Kind1,
                                                   ASTNodeKind Kind2);
 
-  /// \brief Hooks for using ASTNodeKind as a key in a DenseMap.
+  /// Hooks for using ASTNodeKind as a key in a DenseMap.
   struct DenseMapInfo {
     // ASTNodeKind() is a good empty key because it is represented as a 0.
     static inline ASTNodeKind getEmptyKey() { return ASTNodeKind(); }
@@ -115,7 +115,7 @@
   }
 
 private:
-  /// \brief Kind ids.
+  /// Kind ids.
   ///
   /// Includes all possible base and derived kinds.
   enum NodeKindId {
@@ -140,16 +140,16 @@
     NKI_NumberOfKinds
   };
 
-  /// \brief Use getFromNodeKind<T>() to construct the kind.
+  /// Use getFromNodeKind<T>() to construct the kind.
   ASTNodeKind(NodeKindId KindId) : KindId(KindId) {}
 
-  /// \brief Returns \c true if \c Base is a base kind of (or same as) \c
+  /// Returns \c true if \c Base is a base kind of (or same as) \c
   ///   Derived.
   /// \param Distance If non-null, used to return the distance between \c Base
   /// and \c Derived in the class hierarchy.
   static bool isBaseOf(NodeKindId Base, NodeKindId Derived, unsigned *Distance);
 
-  /// \brief Helper meta-function to convert a kind T to its enum value.
+  /// Helper meta-function to convert a kind T to its enum value.
   ///
   /// This struct is specialized below for all known kinds.
   template <class T> struct KindToKindId {
@@ -158,11 +158,11 @@
   template <class T>
   struct KindToKindId<const T> : KindToKindId<T> {};
 
-  /// \brief Per kind info.
+  /// Per kind info.
   struct KindInfo {
-    /// \brief The id of the parent kind, or None if it has no parent.
+    /// The id of the parent kind, or None if it has no parent.
     NodeKindId ParentId;
-    /// \brief Name of the kind.
+    /// Name of the kind.
     const char *Name;
   };
   static const KindInfo AllKindInfo[NKI_NumberOfKinds];
@@ -197,7 +197,7 @@
   return OS;
 }
 
-/// \brief A dynamically typed AST node container.
+/// A dynamically typed AST node container.
 ///
 /// Stores an AST node in a type safe way. This allows writing code that
 /// works with different kinds of AST nodes, despite the fact that they don't
@@ -211,13 +211,13 @@
 /// the supported base types.
 class DynTypedNode {
 public:
-  /// \brief Creates a \c DynTypedNode from \c Node.
+  /// Creates a \c DynTypedNode from \c Node.
   template <typename T>
   static DynTypedNode create(const T &Node) {
     return BaseConverter<T>::create(Node);
   }
 
-  /// \brief Retrieve the stored node as type \c T.
+  /// Retrieve the stored node as type \c T.
   ///
   /// Returns NULL if the stored node does not have a type that is
   /// convertible to \c T.
@@ -234,7 +234,7 @@
     return BaseConverter<T>::get(NodeKind, Storage.buffer);
   }
 
-  /// \brief Retrieve the stored node as type \c T.
+  /// Retrieve the stored node as type \c T.
   ///
   /// Similar to \c get(), but asserts that the type is what we are expecting.
   template <typename T>
@@ -244,7 +244,7 @@
 
   ASTNodeKind getNodeKind() const { return NodeKind; }
 
-  /// \brief Returns a pointer that identifies the stored AST node.
+  /// Returns a pointer that identifies the stored AST node.
   ///
   /// Note that this is not supported by all AST nodes. For AST nodes
   /// that don't have a pointer-defined identity inside the AST, this
@@ -255,18 +255,18 @@
                : nullptr;
   }
 
-  /// \brief Prints the node to the given output stream.
+  /// Prints the node to the given output stream.
   void print(llvm::raw_ostream &OS, const PrintingPolicy &PP) const;
 
-  /// \brief Dumps the node to the given output stream.
+  /// Dumps the node to the given output stream.
   void dump(llvm::raw_ostream &OS, SourceManager &SM) const;
 
-  /// \brief For nodes which represent textual entities in the source code,
+  /// For nodes which represent textual entities in the source code,
   /// return their SourceRange.  For all other nodes, return SourceRange().
   SourceRange getSourceRange() const;
 
   /// @{
-  /// \brief Imposes an order on \c DynTypedNode.
+  /// Imposes an order on \c DynTypedNode.
   ///
   /// Supports comparison of nodes that support memoization.
   /// FIXME: Implement comparison for other node types (currently
@@ -326,7 +326,7 @@
   }
   /// @}
 
-  /// \brief Hooks for using DynTypedNode as a key in a DenseMap.
+  /// Hooks for using DynTypedNode as a key in a DenseMap.
   struct DenseMapInfo {
     static inline DynTypedNode getEmptyKey() {
       DynTypedNode Node;
@@ -368,10 +368,10 @@
   };
 
 private:
-  /// \brief Takes care of converting from and to \c T.
+  /// Takes care of converting from and to \c T.
   template <typename T, typename EnablerT = void> struct BaseConverter;
 
-  /// \brief Converter that uses dyn_cast<T> from a stored BaseT*.
+  /// Converter that uses dyn_cast<T> from a stored BaseT*.
   template <typename T, typename BaseT> struct DynCastPtrConverter {
     static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
       if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
@@ -391,7 +391,7 @@
     }
   };
 
-  /// \brief Converter that stores T* (by pointer).
+  /// Converter that stores T* (by pointer).
   template <typename T> struct PtrConverter {
     static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
       if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
@@ -411,7 +411,7 @@
     }
   };
 
-  /// \brief Converter that stores T (by value).
+  /// Converter that stores T (by value).
   template <typename T> struct ValueConverter {
     static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
       if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
@@ -432,7 +432,7 @@
 
   ASTNodeKind NodeKind;
 
-  /// \brief Stores the data of the node.
+  /// Stores the data of the node.
   ///
   /// Note that we can store \c Decls, \c Stmts, \c Types,
   /// \c NestedNameSpecifiers and \c CXXCtorInitializer by pointer as they are
Index: cfe/trunk/include/clang/AST/ASTUnresolvedSet.h
===================================================================
--- cfe/trunk/include/clang/AST/ASTUnresolvedSet.h
+++ cfe/trunk/include/clang/AST/ASTUnresolvedSet.h
@@ -26,7 +26,7 @@
 
 class NamedDecl;
 
-/// \brief An UnresolvedSet-like class which uses the ASTContext's allocator.
+/// An UnresolvedSet-like class which uses the ASTContext's allocator.
 class ASTUnresolvedSet {
   friend class LazyASTUnresolvedSet;
 
@@ -89,7 +89,7 @@
   const DeclAccessPair &operator[](unsigned I) const { return Decls[I]; }
 };
 
-/// \brief An UnresolvedSet-like class that might not have been loaded from the
+/// An UnresolvedSet-like class that might not have been loaded from the
 /// external AST source yet.
 class LazyASTUnresolvedSet {
   mutable ASTUnresolvedSet Impl;
Index: cfe/trunk/include/clang/AST/Attr.h
===================================================================
--- cfe/trunk/include/clang/AST/Attr.h
+++ cfe/trunk/include/clang/AST/Attr.h
@@ -96,7 +96,7 @@
 
   bool isInherited() const { return Inherited; }
 
-  /// \brief Returns true if the attribute has been implicitly created instead
+  /// Returns true if the attribute has been implicitly created instead
   /// of explicitly written by the user.
   bool isImplicit() const { return Implicit; }
   void setImplicit(bool I) { Implicit = I; }
Index: cfe/trunk/include/clang/AST/Availability.h
===================================================================
--- cfe/trunk/include/clang/AST/Availability.h
+++ cfe/trunk/include/clang/AST/Availability.h
@@ -20,7 +20,7 @@
 
 namespace clang {
 
-/// \brief One specifier in an @available expression.
+/// One specifier in an @available expression.
 ///
 /// \code
 ///   @available(macos 10.10, *)
Index: cfe/trunk/include/clang/AST/CXXInheritance.h
===================================================================
--- cfe/trunk/include/clang/AST/CXXInheritance.h
+++ cfe/trunk/include/clang/AST/CXXInheritance.h
@@ -35,7 +35,7 @@
 class ASTContext;
 class NamedDecl;
   
-/// \brief Represents an element in a path from a derived class to a
+/// Represents an element in a path from a derived class to a
 /// base class. 
 /// 
 /// Each step in the path references the link from a
@@ -43,15 +43,15 @@
 /// base "number" that identifies which base subobject of the
 /// original derived class we are referencing.
 struct CXXBasePathElement {
-  /// \brief The base specifier that states the link from a derived
+  /// The base specifier that states the link from a derived
   /// class to a base class, which will be followed by this base
   /// path element.
   const CXXBaseSpecifier *Base;
   
-  /// \brief The record decl of the class that the base is a base of.
+  /// The record decl of the class that the base is a base of.
   const CXXRecordDecl *Class;
   
-  /// \brief Identifies which base class subobject (of type
+  /// Identifies which base class subobject (of type
   /// \c Base->getType()) this base path element refers to. 
   ///
   /// This value is only valid if \c !Base->isVirtual(), because there
@@ -60,7 +60,7 @@
   int SubobjectNumber;
 };
 
-/// \brief Represents a path from a specific derived class
+/// Represents a path from a specific derived class
 /// (which is not represented as part of the path) to a particular
 /// (direct or indirect) base class subobject.
 ///
@@ -70,14 +70,14 @@
 /// subobject is being used.
 class CXXBasePath : public SmallVector<CXXBasePathElement, 4> {
 public:
-  /// \brief The access along this inheritance path.  This is only
+  /// The access along this inheritance path.  This is only
   /// calculated when recording paths.  AS_none is a special value
   /// used to indicate a path which permits no legal access.
   AccessSpecifier Access = AS_public;
 
   CXXBasePath() = default;
 
-  /// \brief The set of declarations found inside this base class
+  /// The set of declarations found inside this base class
   /// subobject.
   DeclContext::lookup_result Decls;
 
@@ -119,7 +119,7 @@
 class CXXBasePaths {
   friend class CXXRecordDecl;
 
-  /// \brief The type from which this search originated.
+  /// The type from which this search originated.
   CXXRecordDecl *Origin = nullptr;
   
   /// Paths - The actual set of paths that can be taken from the
@@ -160,7 +160,7 @@
   /// DetectedVirtual - The base class that is virtual.
   const RecordType *DetectedVirtual = nullptr;
   
-  /// \brief Array of the declarations that have been found. This
+  /// Array of the declarations that have been found. This
   /// array is constructed only if needed, e.g., to iterate over the
   /// results within LookupResult.
   std::unique_ptr<NamedDecl *[]> DeclsFound;
@@ -196,53 +196,53 @@
 
   decl_range found_decls();
   
-  /// \brief Determine whether the path from the most-derived type to the
+  /// Determine whether the path from the most-derived type to the
   /// given base type is ambiguous (i.e., it refers to multiple subobjects of
   /// the same base type).
   bool isAmbiguous(CanQualType BaseType);
   
-  /// \brief Whether we are finding multiple paths to detect ambiguities.
+  /// Whether we are finding multiple paths to detect ambiguities.
   bool isFindingAmbiguities() const { return FindAmbiguities; }
   
-  /// \brief Whether we are recording paths.
+  /// Whether we are recording paths.
   bool isRecordingPaths() const { return RecordPaths; }
   
-  /// \brief Specify whether we should be recording paths or not.
+  /// Specify whether we should be recording paths or not.
   void setRecordingPaths(bool RP) { RecordPaths = RP; }
   
-  /// \brief Whether we are detecting virtual bases.
+  /// Whether we are detecting virtual bases.
   bool isDetectingVirtual() const { return DetectVirtual; }
   
-  /// \brief The virtual base discovered on the path (if we are merely
+  /// The virtual base discovered on the path (if we are merely
   /// detecting virtuals).
   const RecordType* getDetectedVirtual() const {
     return DetectedVirtual;
   }
 
-  /// \brief Retrieve the type from which this base-paths search
+  /// Retrieve the type from which this base-paths search
   /// began
   CXXRecordDecl *getOrigin() const { return Origin; }
   void setOrigin(CXXRecordDecl *Rec) { Origin = Rec; }
   
-  /// \brief Clear the base-paths results.
+  /// Clear the base-paths results.
   void clear();
   
-  /// \brief Swap this data structure's contents with another CXXBasePaths 
+  /// Swap this data structure's contents with another CXXBasePaths 
   /// object.
   void swap(CXXBasePaths &Other);
 };
 
-/// \brief Uniquely identifies a virtual method within a class
+/// Uniquely identifies a virtual method within a class
 /// hierarchy by the method itself and a class subobject number.
 struct UniqueVirtualMethod {
-  /// \brief The overriding virtual method.
+  /// The overriding virtual method.
   CXXMethodDecl *Method = nullptr;
 
-  /// \brief The subobject in which the overriding virtual method
+  /// The subobject in which the overriding virtual method
   /// resides.
   unsigned Subobject = 0;
 
-  /// \brief The virtual base class subobject of which this overridden
+  /// The virtual base class subobject of which this overridden
   /// virtual method is a part. Note that this records the closest
   /// derived virtual base class subobject.
   const CXXRecordDecl *InVirtualSubobject = nullptr;
@@ -266,7 +266,7 @@
   }
 };
 
-/// \brief The set of methods that override a given virtual method in
+/// The set of methods that override a given virtual method in
 /// each subobject where it occurs.
 ///
 /// The first part of the pair is the subobject in which the
@@ -310,7 +310,7 @@
   void replaceAll(UniqueVirtualMethod Overriding);
 };
 
-/// \brief A mapping from each virtual member function to its set of
+/// A mapping from each virtual member function to its set of
 /// final overriders.
 ///
 /// Within a class hierarchy for a given derived class, each virtual
@@ -364,7 +364,7 @@
 class CXXFinalOverriderMap
   : public llvm::MapVector<const CXXMethodDecl *, OverridingMethods> {};
 
-/// \brief A set of all the primary bases for a class.
+/// A set of all the primary bases for a class.
 class CXXIndirectPrimaryBaseSet
   : public llvm::SmallSet<const CXXRecordDecl*, 32> {};
 
Index: cfe/trunk/include/clang/AST/CanonicalType.h
===================================================================
--- cfe/trunk/include/clang/AST/CanonicalType.h
+++ cfe/trunk/include/clang/AST/CanonicalType.h
@@ -44,7 +44,7 @@
 // Canonical, qualified type template
 //----------------------------------------------------------------------------//
 
-/// \brief Represents a canonical, potentially-qualified type.
+/// Represents a canonical, potentially-qualified type.
 ///
 /// The CanQual template is a lightweight smart pointer that provides access
 /// to the canonical representation of a type, where all typedefs and other
@@ -64,35 +64,35 @@
 /// a call to ASTContext::getCanonicalType().
 template<typename T = Type>
 class CanQual {
-  /// \brief The actual, canonical type.
+  /// The actual, canonical type.
   QualType Stored;
 
 public:
-  /// \brief Constructs a NULL canonical type.
+  /// Constructs a NULL canonical type.
   CanQual() = default;
 
-  /// \brief Converting constructor that permits implicit upcasting of
+  /// Converting constructor that permits implicit upcasting of
   /// canonical type pointers.
   template <typename U>
   CanQual(const CanQual<U> &Other,
           typename std::enable_if<std::is_base_of<T, U>::value, int>::type = 0);
 
-  /// \brief Retrieve the underlying type pointer, which refers to a
+  /// Retrieve the underlying type pointer, which refers to a
   /// canonical type.
   ///
   /// The underlying pointer must not be nullptr.
   const T *getTypePtr() const { return cast<T>(Stored.getTypePtr()); }
 
-  /// \brief Retrieve the underlying type pointer, which refers to a
+  /// Retrieve the underlying type pointer, which refers to a
   /// canonical type, or nullptr.
   const T *getTypePtrOrNull() const { 
     return cast_or_null<T>(Stored.getTypePtrOrNull()); 
   }
 
-  /// \brief Implicit conversion to a qualified type.
+  /// Implicit conversion to a qualified type.
   operator QualType() const { return Stored; }
 
-  /// \brief Implicit conversion to bool.
+  /// Implicit conversion to bool.
   explicit operator bool() const { return !isNull(); }
   
   bool isNull() const {
@@ -101,7 +101,7 @@
 
   SplitQualType split() const { return Stored.split(); }
 
-  /// \brief Retrieve a canonical type pointer with a different static type,
+  /// Retrieve a canonical type pointer with a different static type,
   /// upcasting or downcasting as needed.
   ///
   /// The getAs() function is typically used to try to downcast to a
@@ -122,17 +122,17 @@
 
   template<typename U> CanProxy<U> castAs() const;
 
-  /// \brief Overloaded arrow operator that produces a canonical type
+  /// Overloaded arrow operator that produces a canonical type
   /// proxy.
   CanProxy<T> operator->() const;
 
-  /// \brief Retrieve all qualifiers.
+  /// Retrieve all qualifiers.
   Qualifiers getQualifiers() const { return Stored.getLocalQualifiers(); }
 
-  /// \brief Retrieve the const/volatile/restrict qualifiers.
+  /// Retrieve the const/volatile/restrict qualifiers.
   unsigned getCVRQualifiers() const { return Stored.getLocalCVRQualifiers(); }
 
-  /// \brief Determines whether this type has any qualifiers
+  /// Determines whether this type has any qualifiers
   bool hasQualifiers() const { return Stored.hasLocalQualifiers(); }
 
   bool isConstQualified() const {
@@ -147,45 +147,45 @@
     return Stored.isLocalRestrictQualified();
   }
 
-  /// \brief Determines if this canonical type is furthermore
+  /// Determines if this canonical type is furthermore
   /// canonical as a parameter.  The parameter-canonicalization
   /// process decays arrays to pointers and drops top-level qualifiers.
   bool isCanonicalAsParam() const {
     return Stored.isCanonicalAsParam();
   }
 
-  /// \brief Retrieve the unqualified form of this type.
+  /// Retrieve the unqualified form of this type.
   CanQual<T> getUnqualifiedType() const;
 
-  /// \brief Retrieves a version of this type with const applied.
+  /// Retrieves a version of this type with const applied.
   /// Note that this does not always yield a canonical type.
   QualType withConst() const {
     return Stored.withConst();
   }
 
-  /// \brief Determines whether this canonical type is more qualified than
+  /// Determines whether this canonical type is more qualified than
   /// the @p Other canonical type.
   bool isMoreQualifiedThan(CanQual<T> Other) const {
     return Stored.isMoreQualifiedThan(Other.Stored);
   }
 
-  /// \brief Determines whether this canonical type is at least as qualified as
+  /// Determines whether this canonical type is at least as qualified as
   /// the @p Other canonical type.
   bool isAtLeastAsQualifiedAs(CanQual<T> Other) const {
     return Stored.isAtLeastAsQualifiedAs(Other.Stored);
   }
 
-  /// \brief If the canonical type is a reference type, returns the type that
+  /// If the canonical type is a reference type, returns the type that
   /// it refers to; otherwise, returns the type itself.
   CanQual<Type> getNonReferenceType() const;
 
-  /// \brief Retrieve the internal representation of this canonical type.
+  /// Retrieve the internal representation of this canonical type.
   void *getAsOpaquePtr() const { return Stored.getAsOpaquePtr(); }
 
-  /// \brief Construct a canonical type from its internal representation.
+  /// Construct a canonical type from its internal representation.
   static CanQual<T> getFromOpaquePtr(void *Ptr);
 
-  /// \brief Builds a canonical type from a QualType.
+  /// Builds a canonical type from a QualType.
   ///
   /// This routine is inherently unsafe, because it requires the user to
   /// ensure that the given type is a canonical type with the correct
@@ -209,7 +209,7 @@
   return x.getAsOpaquePtr() != y.getAsOpaquePtr();
 }
 
-/// \brief Represents a canonical, potentially-qualified type.
+/// Represents a canonical, potentially-qualified type.
 using CanQualType = CanQual<Type>;
 
 inline CanQualType Type::getCanonicalTypeUnqualified() const {
@@ -234,7 +234,7 @@
 #define LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(Type, Accessor)             \
 Type Accessor() const { return this->getTypePtr()->Accessor(); }
 
-/// \brief Base class of all canonical proxy types, which is responsible for
+/// Base class of all canonical proxy types, which is responsible for
 /// storing the underlying canonical type and providing basic conversions.
 template<typename T>
 class CanProxyBase {
@@ -242,10 +242,10 @@
   CanQual<T> Stored;
 
 public:
-  /// \brief Retrieve the pointer to the underlying Type
+  /// Retrieve the pointer to the underlying Type
   const T *getTypePtr() const { return Stored.getTypePtr(); }
 
-  /// \brief Implicit conversion to the underlying pointer.
+  /// Implicit conversion to the underlying pointer.
   ///
   /// Also provides the ability to use canonical type proxies in a Boolean
   // context,e.g.,
@@ -254,7 +254,7 @@
   /// @endcode
   operator const T*() const { return this->Stored.getTypePtrOrNull(); }
 
-  /// \brief Try to convert the given canonical type to a specific structural
+  /// Try to convert the given canonical type to a specific structural
   /// type.
   template<typename U> CanProxy<U> getAs() const {
     return this->Stored.template getAs<U>();
@@ -313,7 +313,7 @@
   LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isSpecifierType)
   LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(CXXRecordDecl*, getAsCXXRecordDecl)
 
-  /// \brief Retrieve the proxy-adaptor type.
+  /// Retrieve the proxy-adaptor type.
   ///
   /// This arrow operator is used when CanProxyAdaptor has been specialized
   /// for the given type T. In that case, we reference members of the
@@ -324,7 +324,7 @@
   }
 };
 
-/// \brief Replaceable canonical proxy adaptor class that provides the link
+/// Replaceable canonical proxy adaptor class that provides the link
 /// between a canonical type and the accessors of the type.
 ///
 /// The CanProxyAdaptor is a replaceable class template that is instantiated
@@ -337,7 +337,7 @@
 template<typename T>
 struct CanProxyAdaptor : CanProxyBase<T> {};
 
-/// \brief Canonical proxy type returned when retrieving the members of a
+/// Canonical proxy type returned when retrieving the members of a
 /// canonical type or as the result of the @c CanQual<T>::getAs member
 /// function.
 ///
@@ -347,13 +347,13 @@
 template<typename T>
 class CanProxy : public CanProxyAdaptor<T> {
 public:
-  /// \brief Build a NULL proxy.
+  /// Build a NULL proxy.
   CanProxy() = default;
 
-  /// \brief Build a proxy to the given canonical type.
+  /// Build a proxy to the given canonical type.
   CanProxy(CanQual<T> Stored) { this->Stored = Stored; }
 
-  /// \brief Implicit conversion to the stored canonical type.
+  /// Implicit conversion to the stored canonical type.
   operator CanQual<T>() const { return this->Stored; }
 };
 
@@ -396,7 +396,7 @@
 // Canonical proxy adaptors for canonical type nodes.
 //----------------------------------------------------------------------------//
 
-/// \brief Iterator adaptor that turns an iterator over canonical QualTypes
+/// Iterator adaptor that turns an iterator over canonical QualTypes
 /// into an iterator over CanQualTypes.
 template <typename InputIterator>
 struct CanTypeIterator
Index: cfe/trunk/include/clang/AST/CommentBriefParser.h
===================================================================
--- cfe/trunk/include/clang/AST/CommentBriefParser.h
+++ cfe/trunk/include/clang/AST/CommentBriefParser.h
@@ -24,7 +24,7 @@
 ///
 /// Due to a variety of comment styles, it considers the following as "a brief
 /// description", in order of priority:
-/// \li a \\brief or \\short command,
+/// \li a \or \\short command,
 /// \li the first paragraph,
 /// \li a \\result or \\return or \\returns paragraph.
 class BriefParser {
Index: cfe/trunk/include/clang/AST/CommentCommandTraits.h
===================================================================
--- cfe/trunk/include/clang/AST/CommentCommandTraits.h
+++ cfe/trunk/include/clang/AST/CommentCommandTraits.h
@@ -26,7 +26,7 @@
 namespace clang {
 namespace comments {
 
-/// \brief Information about a single command.
+/// Information about a single command.
 ///
 /// When reordering, adding or removing members please update the corresponding
 /// TableGen backend.
@@ -57,7 +57,7 @@
   unsigned IsBlockCommand : 1;
 
   /// True if this command is introducing a brief documentation
-  /// paragraph (\\brief or an alias).
+  /// paragraph (\or an alias).
   unsigned IsBriefCommand : 1;
 
   /// True if this command is \\returns or an alias.
@@ -77,29 +77,29 @@
   /// True if this command is \\deprecated or an alias.
   unsigned IsDeprecatedCommand : 1;
 
-  /// \brief True if this is a \\headerfile-like command.
+  /// True if this is a \\headerfile-like command.
   unsigned IsHeaderfileCommand : 1;
 
   /// True if we don't want to warn about this command being passed an empty
   /// paragraph.  Meaningful only for block commands.
   unsigned IsEmptyParagraphAllowed : 1;
 
-  /// \brief True if this command is a verbatim-like block command.
+  /// True if this command is a verbatim-like block command.
   ///
   /// A verbatim-like block command eats every character (except line starting
   /// decorations) until matching end command is seen or comment end is hit.
   unsigned IsVerbatimBlockCommand : 1;
 
-  /// \brief True if this command is an end command for a verbatim-like block.
+  /// True if this command is an end command for a verbatim-like block.
   unsigned IsVerbatimBlockEndCommand : 1;
 
-  /// \brief True if this command is a verbatim line command.
+  /// True if this command is a verbatim line command.
   ///
   /// A verbatim-like line command eats everything until a newline is seen or
   /// comment end is hit.
   unsigned IsVerbatimLineCommand : 1;
 
-  /// \brief True if this command contains a declaration for the entity being
+  /// True if this command contains a declaration for the entity being
   /// documented.
   ///
   /// For example:
@@ -108,17 +108,17 @@
   /// \endcode
   unsigned IsDeclarationCommand : 1;
   
-  /// \brief True if verbatim-like line command is a function declaration.
+  /// True if verbatim-like line command is a function declaration.
   unsigned IsFunctionDeclarationCommand : 1;
 
-  /// \brief True if block command is further describing a container API; such
+  /// True if block command is further describing a container API; such
   /// as \@coclass, \@classdesign, etc.
   unsigned IsRecordLikeDetailCommand : 1;
   
-  /// \brief True if block command is a container API; such as \@interface.
+  /// True if block command is a container API; such as \@interface.
   unsigned IsRecordLikeDeclarationCommand : 1;
   
-  /// \brief True if this command is unknown.  This \c CommandInfo object was
+  /// True if this command is unknown.  This \c CommandInfo object was
   /// created during parsing.
   unsigned IsUnknownCommand : 1;
 };
Index: cfe/trunk/include/clang/AST/CommentLexer.h
===================================================================
--- cfe/trunk/include/clang/AST/CommentLexer.h
+++ cfe/trunk/include/clang/AST/CommentLexer.h
@@ -52,7 +52,7 @@
 };
 } // end namespace tok
 
-/// \brief Comment token.
+/// Comment token.
 class Token {
   friend class Lexer;
   friend class TextTokenRetokenizer;
@@ -217,7 +217,7 @@
   void dump(const Lexer &L, const SourceManager &SM) const;
 };
 
-/// \brief Comment lexer.
+/// Comment lexer.
 class Lexer {
 private:
   Lexer(const Lexer &) = delete;
Index: cfe/trunk/include/clang/AST/CommentSema.h
===================================================================
--- cfe/trunk/include/clang/AST/CommentSema.h
+++ cfe/trunk/include/clang/AST/CommentSema.h
@@ -55,7 +55,7 @@
   /// Contains a valid value if \c DeclInfo->IsFilled is true.
   llvm::StringMap<TParamCommandComment *> TemplateParameterDocs;
 
-  /// AST node for the \\brief command and its aliases.
+  /// AST node for the \command and its aliases.
   const BlockCommandComment *BriefCommand;
 
   /// AST node for the \\headerfile command.
@@ -187,7 +187,7 @@
   void checkReturnsCommand(const BlockCommandComment *Command);
 
   /// Emit diagnostics about duplicate block commands that should be
-  /// used only once per comment, e.g., \\brief and \\returns.
+  /// used only once per comment, e.g., \and \\returns.
   void checkBlockCommandDuplicate(const BlockCommandComment *Command);
 
   void checkDeprecatedCommand(const BlockCommandComment *Comment);
Index: cfe/trunk/include/clang/AST/ComparisonCategories.h
===================================================================
--- cfe/trunk/include/clang/AST/ComparisonCategories.h
+++ cfe/trunk/include/clang/AST/ComparisonCategories.h
@@ -129,7 +129,7 @@
   /// True iff the comparison category is an equality comparison.
   bool isEquality() const { return !isOrdered(); }
 
-  /// \brief True iff the comparison category is a relational comparison.
+  /// True iff the comparison category is a relational comparison.
   bool isOrdered() const {
     using CCK = ComparisonCategoryType;
     return Kind == CCK::PartialOrdering || Kind == CCK::WeakOrdering ||
Index: cfe/trunk/include/clang/AST/DataCollection.h
===================================================================
--- cfe/trunk/include/clang/AST/DataCollection.h
+++ cfe/trunk/include/clang/AST/DataCollection.h
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 /// \file
-/// \brief This file declares helper methods for collecting data from AST nodes.
+/// This file declares helper methods for collecting data from AST nodes.
 ///
 /// To collect data from Stmt nodes, subclass ConstStmtVisitor and include
 /// StmtDataCollectors.inc after defining the macros that you need. This
Index: cfe/trunk/include/clang/AST/Decl.h
===================================================================
--- cfe/trunk/include/clang/AST/Decl.h
+++ cfe/trunk/include/clang/AST/Decl.h
@@ -1232,30 +1232,30 @@
 
   EvaluatedStmt *ensureEvaluatedStmt() const;
 
-  /// \brief Attempt to evaluate the value of the initializer attached to this
+  /// Attempt to evaluate the value of the initializer attached to this
   /// declaration, and produce notes explaining why it cannot be evaluated or is
   /// not a constant expression. Returns a pointer to the value if evaluation
   /// succeeded, 0 otherwise.
   APValue *evaluateValue() const;
   APValue *evaluateValue(SmallVectorImpl<PartialDiagnosticAt> &Notes) const;
 
-  /// \brief Return the already-evaluated value of this variable's
+  /// Return the already-evaluated value of this variable's
   /// initializer, or NULL if the value is not yet known. Returns pointer
   /// to untyped APValue if the value could not be evaluated.
   APValue *getEvaluatedValue() const;
 
-  /// \brief Determines whether it is already known whether the
+  /// Determines whether it is already known whether the
   /// initializer is an integral constant expression or not.
   bool isInitKnownICE() const;
 
-  /// \brief Determines whether the initializer is an integral constant
+  /// Determines whether the initializer is an integral constant
   /// expression, or in C++11, whether the initializer is a constant
   /// expression.
   ///
   /// \pre isInitKnownICE()
   bool isInitICE() const;
 
-  /// \brief Determine whether the value of the initializer attached to this
+  /// Determine whether the value of the initializer attached to this
   /// declaration is an integral constant expression.
   bool checkInitIsICE() const;
 
@@ -1263,7 +1263,7 @@
     VarDeclBits.InitStyle = Style;
   }
 
-  /// \brief The style of initialization for this declaration.
+  /// The style of initialization for this declaration.
   ///
   /// C-style initialization is "int x = 1;". Call-style initialization is
   /// a C++98 direct-initializer, e.g. "int x(1);". The Init expression will be
@@ -1277,18 +1277,18 @@
     return static_cast<InitializationStyle>(VarDeclBits.InitStyle);
   }
 
-  /// \brief Whether the initializer is a direct-initializer (list or call).
+  /// Whether the initializer is a direct-initializer (list or call).
   bool isDirectInit() const {
     return getInitStyle() != CInit;
   }
 
-  /// \brief If this definition should pretend to be a declaration.
+  /// If this definition should pretend to be a declaration.
   bool isThisDeclarationADemotedDefinition() const {
     return isa<ParmVarDecl>(this) ? false :
       NonParmVarDeclBits.IsThisDeclarationADemotedDefinition;
   }
 
-  /// \brief This is a definition which should be demoted to a declaration.
+  /// This is a definition which should be demoted to a declaration.
   ///
   /// In some cases (mostly module merging) we can end up with two visible
   /// definitions one of which needs to be demoted to a declaration to keep
@@ -1299,7 +1299,7 @@
     NonParmVarDeclBits.IsThisDeclarationADemotedDefinition = 1;
   }
 
-  /// \brief Determine whether this variable is the exception variable in a
+  /// Determine whether this variable is the exception variable in a
   /// C++ catch statememt or an Objective-C \@catch statement.
   bool isExceptionVariable() const {
     return isa<ParmVarDecl>(this) ? false : NonParmVarDeclBits.ExceptionVar;
@@ -1309,7 +1309,7 @@
     NonParmVarDeclBits.ExceptionVar = EV;
   }
 
-  /// \brief Determine whether this local variable can be used with the named
+  /// Determine whether this local variable can be used with the named
   /// return value optimization (NRVO).
   ///
   /// The named return value optimization (NRVO) works by marking certain
@@ -1327,7 +1327,7 @@
     NonParmVarDeclBits.NRVOVariable = NRVO;
   }
 
-  /// \brief Determine whether this variable is the for-range-declaration in
+  /// Determine whether this variable is the for-range-declaration in
   /// a C++0x for-range statement.
   bool isCXXForRangeDecl() const {
     return isa<ParmVarDecl>(this) ? false : NonParmVarDeclBits.CXXForRangeDecl;
@@ -1337,7 +1337,7 @@
     NonParmVarDeclBits.CXXForRangeDecl = FRD;
   }
 
-  /// \brief Determine whether this variable is a for-loop declaration for a
+  /// Determine whether this variable is a for-loop declaration for a
   /// for-in statement in Objective-C.
   bool isObjCForDecl() const {
     return NonParmVarDeclBits.ObjCForDecl;
@@ -1347,7 +1347,7 @@
     NonParmVarDeclBits.ObjCForDecl = FRD;
   }
 
-  /// \brief Determine whether this variable is an ARC pseudo-__strong
+  /// Determine whether this variable is an ARC pseudo-__strong
   /// variable.  A pseudo-__strong variable has a __strong-qualified
   /// type but does not actually retain the object written into it.
   /// Generally such variables are also 'const' for safety.
@@ -1407,41 +1407,41 @@
     NonParmVarDeclBits.PreviousDeclInSameBlockScope = Same;
   }
 
-  /// \brief Retrieve the variable declaration from which this variable could
+  /// Retrieve the variable declaration from which this variable could
   /// be instantiated, if it is an instantiation (rather than a non-template).
   VarDecl *getTemplateInstantiationPattern() const;
 
-  /// \brief If this variable is an instantiated static data member of a
+  /// If this variable is an instantiated static data member of a
   /// class template specialization, returns the templated static data member
   /// from which it was instantiated.
   VarDecl *getInstantiatedFromStaticDataMember() const;
 
-  /// \brief If this variable is an instantiation of a variable template or a
+  /// If this variable is an instantiation of a variable template or a
   /// static data member of a class template, determine what kind of
   /// template specialization or instantiation this is.
   TemplateSpecializationKind getTemplateSpecializationKind() const;
 
-  /// \brief If this variable is an instantiation of a variable template or a
+  /// If this variable is an instantiation of a variable template or a
   /// static data member of a class template, determine its point of
   /// instantiation.
   SourceLocation getPointOfInstantiation() const;
 
-  /// \brief If this variable is an instantiation of a static data member of a
+  /// If this variable is an instantiation of a static data member of a
   /// class template specialization, retrieves the member specialization
   /// information.
   MemberSpecializationInfo *getMemberSpecializationInfo() const;
 
-  /// \brief For a static data member that was instantiated from a static
+  /// For a static data member that was instantiated from a static
   /// data member of a class template, set the template specialiation kind.
   void setTemplateSpecializationKind(TemplateSpecializationKind TSK,
                         SourceLocation PointOfInstantiation = SourceLocation());
 
-  /// \brief Specify that this variable is an instantiation of the
+  /// Specify that this variable is an instantiation of the
   /// static data member VD.
   void setInstantiationOfStaticDataMember(VarDecl *VD,
                                           TemplateSpecializationKind TSK);
 
-  /// \brief Retrieves the variable template that is described by this
+  /// Retrieves the variable template that is described by this
   /// variable declaration.
   ///
   /// Every variable template is represented as a VarTemplateDecl and a
@@ -1613,7 +1613,7 @@
 
   void setDefaultArg(Expr *defarg);
 
-  /// \brief Retrieve the source range that covers the entire default
+  /// Retrieve the source range that covers the entire default
   /// argument.
   SourceRange getDefaultArgRange() const;
   void setUninstantiatedDefaultArg(Expr *arg);
@@ -1661,7 +1661,7 @@
 
   QualType getOriginalType() const;
 
-  /// \brief Determine whether this parameter is actually a function
+  /// Determine whether this parameter is actually a function
   /// parameter pack.
   bool isParameterPack() const;
 
@@ -1709,7 +1709,7 @@
 class FunctionDecl : public DeclaratorDecl, public DeclContext,
                      public Redeclarable<FunctionDecl> {
 public:
-  /// \brief The kind of templated function a FunctionDecl can be.
+  /// The kind of templated function a FunctionDecl can be.
   enum TemplatedKind {
     TK_NonTemplate,
     TK_FunctionTemplate,
@@ -1757,10 +1757,10 @@
   unsigned IsConstexpr : 1;
   unsigned InstantiationIsPending : 1;
 
-  /// \brief Indicates if the function uses __try.
+  /// Indicates if the function uses __try.
   unsigned UsesSEHTry : 1;
 
-  /// \brief Indicates if the function was a definition but its body was
+  /// Indicates if the function was a definition but its body was
   /// skipped.
   unsigned HasSkippedBody : 1;
 
@@ -1786,7 +1786,7 @@
   unsigned HasODRHash : 1;
   unsigned ODRHash;
 
-  /// \brief End part of this FunctionDecl's source range.
+  /// End part of this FunctionDecl's source range.
   ///
   /// We could compute the full range in getSourceRange(). However, when we're
   /// dealing with a function definition deserialized from a PCH/AST file,
@@ -1795,7 +1795,7 @@
   /// EndRangeLoc.
   SourceLocation EndRangeLoc;
 
-  /// \brief The template or declaration that this declaration
+  /// The template or declaration that this declaration
   /// describes or was instantiated from, respectively.
   ///
   /// For non-templates, this value will be NULL. For function
@@ -1817,7 +1817,7 @@
   /// the DeclaratorDecl base class.
   DeclarationNameLoc DNLoc;
 
-  /// \brief Specify that this function declaration is actually a function
+  /// Specify that this function declaration is actually a function
   /// template specialization.
   ///
   /// \param C the ASTContext.
@@ -1846,7 +1846,7 @@
                           const TemplateArgumentListInfo *TemplateArgsAsWritten,
                                          SourceLocation PointOfInstantiation);
 
-  /// \brief Specify that this record is an instantiation of the
+  /// Specify that this record is an instantiation of the
   /// member function FD.
   void setInstantiationOfMemberFunction(ASTContext &C, FunctionDecl *FD,
                                         TemplateSpecializationKind TSK);
@@ -1980,7 +1980,7 @@
     return isDefined(Definition);
   }
 
-  /// \brief Get the definition for this declaration.
+  /// Get the definition for this declaration.
   FunctionDecl *getDefinition() {
     const FunctionDecl *Definition;
     if (isDefined(Definition))
@@ -2064,7 +2064,7 @@
   bool hasImplicitReturnZero() const { return HasImplicitReturnZero; }
   void setHasImplicitReturnZero(bool IRZ) { HasImplicitReturnZero = IRZ; }
 
-  /// \brief Whether this function has a prototype, either because one
+  /// Whether this function has a prototype, either because one
   /// was explicitly written or because it was "inherited" by merging
   /// a declaration without a prototype with a declaration that has a
   /// prototype.
@@ -2074,7 +2074,7 @@
 
   bool hasWrittenPrototype() const { return HasWrittenPrototype; }
 
-  /// \brief Whether this function inherited its prototype from a
+  /// Whether this function inherited its prototype from a
   /// previous declaration.
   bool hasInheritedPrototype() const { return HasInheritedPrototype; }
   void setHasInheritedPrototype(bool P = true) { HasInheritedPrototype = P; }
@@ -2083,7 +2083,7 @@
   bool isConstexpr() const { return IsConstexpr; }
   void setConstexpr(bool IC) { IsConstexpr = IC; }
 
-  /// \brief Whether the instantiation of this function is pending.
+  /// Whether the instantiation of this function is pending.
   /// This bit is set when the decision to instantiate this function is made
   /// and unset if and when the function body is created. That leaves out
   /// cases where instantiation did not happen because the template definition
@@ -2092,11 +2092,11 @@
   bool instantiationIsPending() const { return InstantiationIsPending; }
   void setInstantiationIsPending(bool IC) { InstantiationIsPending = IC; }
 
-  /// \brief Indicates the function uses __try.
+  /// Indicates the function uses __try.
   bool usesSEHTry() const { return UsesSEHTry; }
   void setUsesSEHTry(bool UST) { UsesSEHTry = UST; }
 
-  /// \brief Whether this function has been deleted.
+  /// Whether this function has been deleted.
   ///
   /// A function that is "deleted" (via the C++0x "= delete" syntax)
   /// acts like a normal function, except that it cannot actually be
@@ -2119,15 +2119,15 @@
   bool isDeletedAsWritten() const { return IsDeleted && !IsDefaulted; }
   void setDeletedAsWritten(bool D = true) { IsDeleted = D; }
 
-  /// \brief Determines whether this function is "main", which is the
+  /// Determines whether this function is "main", which is the
   /// entry point into an executable program.
   bool isMain() const;
 
-  /// \brief Determines whether this function is a MSVCRT user defined entry
+  /// Determines whether this function is a MSVCRT user defined entry
   /// point.
   bool isMSVCRTEntryPoint() const;
 
-  /// \brief Determines whether this operator new or delete is one
+  /// Determines whether this operator new or delete is one
   /// of the reserved global placement operators:
   ///    void *operator new(size_t, void *);
   ///    void *operator new[](size_t, void *);
@@ -2142,7 +2142,7 @@
   /// This function must be an allocation or deallocation function.
   bool isReservedGlobalPlacementOperator() const;
 
-  /// \brief Determines whether this function is one of the replaceable
+  /// Determines whether this function is one of the replaceable
   /// global allocation functions:
   ///    void *operator new(size_t);
   ///    void *operator new(size_t, const std::nothrow_t &) noexcept;
@@ -2162,32 +2162,32 @@
   /// true through IsAligned.
   bool isReplaceableGlobalAllocationFunction(bool *IsAligned = nullptr) const;
 
-  /// \brief Determine whether this is a destroying operator delete.
+  /// Determine whether this is a destroying operator delete.
   bool isDestroyingOperatorDelete() const;
 
   /// Compute the language linkage.
   LanguageLinkage getLanguageLinkage() const;
 
-  /// \brief Determines whether this function is a function with
+  /// Determines whether this function is a function with
   /// external, C linkage.
   bool isExternC() const;
 
-  /// \brief Determines whether this function's context is, or is nested within,
+  /// Determines whether this function's context is, or is nested within,
   /// a C++ extern "C" linkage spec.
   bool isInExternCContext() const;
 
-  /// \brief Determines whether this function's context is, or is nested within,
+  /// Determines whether this function's context is, or is nested within,
   /// a C++ extern "C++" linkage spec.
   bool isInExternCXXContext() const;
 
-  /// \brief Determines whether this is a global function.
+  /// Determines whether this is a global function.
   bool isGlobal() const;
 
-  /// \brief Determines whether this function is known to be 'noreturn', through
+  /// Determines whether this function is known to be 'noreturn', through
   /// an attribute on its declaration or its type.
   bool isNoReturn() const;
 
-  /// \brief True if the function was a definition but its body was skipped.
+  /// True if the function was a definition but its body was skipped.
   bool hasSkippedBody() const { return HasSkippedBody; }
   void setHasSkippedBody(bool Skipped = true) { HasSkippedBody = Skipped; }
 
@@ -2259,34 +2259,34 @@
     return getType()->getAs<FunctionType>()->getReturnType();
   }
 
-  /// \brief Attempt to compute an informative source range covering the
+  /// Attempt to compute an informative source range covering the
   /// function return type. This may omit qualifiers and other information with
   /// limited representation in the AST.
   SourceRange getReturnTypeSourceRange() const;
 
-  /// \brief Attempt to compute an informative source range covering the
+  /// Attempt to compute an informative source range covering the
   /// function exception specification, if any.
   SourceRange getExceptionSpecSourceRange() const;
 
-  /// \brief Determine the type of an expression that calls this function.
+  /// Determine the type of an expression that calls this function.
   QualType getCallResultType() const {
     assert(getType()->getAs<FunctionType>() && "Expected a FunctionType!");
     return getType()->getAs<FunctionType>()->getCallResultType(getASTContext());
   }
 
-  /// \brief Returns the WarnUnusedResultAttr that is either declared on this
+  /// Returns the WarnUnusedResultAttr that is either declared on this
   /// function, or its return type declaration.
   const Attr *getUnusedResultAttr() const;
 
-  /// \brief Returns true if this function or its return type has the
+  /// Returns true if this function or its return type has the
   /// warn_unused_result attribute.
   bool hasUnusedResultAttr() const { return getUnusedResultAttr() != nullptr; }
 
-  /// \brief Returns the storage class as written in the source. For the
+  /// Returns the storage class as written in the source. For the
   /// computed linkage of symbol, see getLinkage.
   StorageClass getStorageClass() const { return StorageClass(SClass); }
 
-  /// \brief Determine whether the "inline" keyword was specified for this
+  /// Determine whether the "inline" keyword was specified for this
   /// function.
   bool isInlineSpecified() const { return IsInlineSpecified; }
 
@@ -2301,7 +2301,7 @@
     IsInline = true;
   }
 
-  /// \brief Determine whether this function should be inlined, because it is
+  /// Determine whether this function should be inlined, because it is
   /// either marked "inline" or "constexpr" or is a member function of a class
   /// that was defined in the class body.
   bool isInlined() const { return IsInline; }
@@ -2322,7 +2322,7 @@
 
   const IdentifierInfo *getLiteralIdentifier() const;
 
-  /// \brief If this function is an instantiation of a member function
+  /// If this function is an instantiation of a member function
   /// of a class template specialization, retrieves the function from
   /// which it was instantiated.
   ///
@@ -2345,22 +2345,22 @@
   /// declaration returned by getInstantiatedFromMemberFunction().
   FunctionDecl *getInstantiatedFromMemberFunction() const;
 
-  /// \brief What kind of templated function this is.
+  /// What kind of templated function this is.
   TemplatedKind getTemplatedKind() const;
 
-  /// \brief If this function is an instantiation of a member function of a
+  /// If this function is an instantiation of a member function of a
   /// class template specialization, retrieves the member specialization
   /// information.
   MemberSpecializationInfo *getMemberSpecializationInfo() const;
 
-  /// \brief Specify that this record is an instantiation of the
+  /// Specify that this record is an instantiation of the
   /// member function FD.
   void setInstantiationOfMemberFunction(FunctionDecl *FD,
                                         TemplateSpecializationKind TSK) {
     setInstantiationOfMemberFunction(getASTContext(), FD, TSK);
   }
 
-  /// \brief Retrieves the function template that is described by this
+  /// Retrieves the function template that is described by this
   /// function declaration.
   ///
   /// Every function template is represented as a FunctionTemplateDecl
@@ -2376,50 +2376,50 @@
 
   void setDescribedFunctionTemplate(FunctionTemplateDecl *Template);
 
-  /// \brief Determine whether this function is a function template
+  /// Determine whether this function is a function template
   /// specialization.
   bool isFunctionTemplateSpecialization() const {
     return getPrimaryTemplate() != nullptr;
   }
 
-  /// \brief Retrieve the class scope template pattern that this function
+  /// Retrieve the class scope template pattern that this function
   ///  template specialization is instantiated from.
   FunctionDecl *getClassScopeSpecializationPattern() const;
 
-  /// \brief If this function is actually a function template specialization,
+  /// If this function is actually a function template specialization,
   /// retrieve information about this function template specialization.
   /// Otherwise, returns NULL.
   FunctionTemplateSpecializationInfo *getTemplateSpecializationInfo() const;
 
-  /// \brief Determines whether this function is a function template
+  /// Determines whether this function is a function template
   /// specialization or a member of a class template specialization that can
   /// be implicitly instantiated.
   bool isImplicitlyInstantiable() const;
 
-  /// \brief Determines if the given function was instantiated from a
+  /// Determines if the given function was instantiated from a
   /// function template.
   bool isTemplateInstantiation() const;
 
-  /// \brief Retrieve the function declaration from which this function could
+  /// Retrieve the function declaration from which this function could
   /// be instantiated, if it is an instantiation (rather than a non-template
   /// or a specialization, for example).
   FunctionDecl *getTemplateInstantiationPattern() const;
 
-  /// \brief Retrieve the primary template that this function template
+  /// Retrieve the primary template that this function template
   /// specialization either specializes or was instantiated from.
   ///
   /// If this function declaration is not a function template specialization,
   /// returns NULL.
   FunctionTemplateDecl *getPrimaryTemplate() const;
 
-  /// \brief Retrieve the template arguments used to produce this function
+  /// Retrieve the template arguments used to produce this function
   /// template specialization from the primary template.
   ///
   /// If this function declaration is not a function template specialization,
   /// returns NULL.
   const TemplateArgumentList *getTemplateSpecializationArgs() const;
 
-  /// \brief Retrieve the template argument list as written in the sources,
+  /// Retrieve the template argument list as written in the sources,
   /// if any.
   ///
   /// If this function declaration is not a function template specialization
@@ -2429,7 +2429,7 @@
   const ASTTemplateArgumentListInfo*
   getTemplateSpecializationArgsAsWritten() const;
 
-  /// \brief Specify that this function declaration is actually a function
+  /// Specify that this function declaration is actually a function
   /// template specialization.
   ///
   /// \param Template the function template that this function template
@@ -2459,7 +2459,7 @@
                                       PointOfInstantiation);
   }
 
-  /// \brief Specifies that this function declaration is actually a
+  /// Specifies that this function declaration is actually a
   /// dependent function template specialization.
   void setDependentTemplateSpecialization(ASTContext &Context,
                              const UnresolvedSetImpl &Templates,
@@ -2468,16 +2468,16 @@
   DependentFunctionTemplateSpecializationInfo *
   getDependentSpecializationInfo() const;
 
-  /// \brief Determine what kind of template instantiation this function
+  /// Determine what kind of template instantiation this function
   /// represents.
   TemplateSpecializationKind getTemplateSpecializationKind() const;
 
-  /// \brief Determine what kind of template instantiation this function
+  /// Determine what kind of template instantiation this function
   /// represents.
   void setTemplateSpecializationKind(TemplateSpecializationKind TSK,
                         SourceLocation PointOfInstantiation = SourceLocation());
 
-  /// \brief Retrieve the (first) point of instantiation of a function template
+  /// Retrieve the (first) point of instantiation of a function template
   /// specialization or a member of a class template specialization.
   ///
   /// \returns the first point of instantiation, if this function was
@@ -2485,17 +2485,17 @@
   /// location.
   SourceLocation getPointOfInstantiation() const;
 
-  /// \brief Determine whether this is or was instantiated from an out-of-line
+  /// Determine whether this is or was instantiated from an out-of-line
   /// definition of a member function.
   bool isOutOfLine() const override;
 
-  /// \brief Identify a memory copying or setting function.
+  /// Identify a memory copying or setting function.
   /// If the given function is a memory copy or setting function, returns
   /// the corresponding Builtin ID. If the function is not a memory function,
   /// returns 0.
   unsigned getMemoryFunctionKind() const;
 
-  /// \brief Returns ODRHash of the function.  This value is calculated and
+  /// Returns ODRHash of the function.  This value is calculated and
   /// stored on first call, then the stored value returned on the other calls.
   unsigned getODRHash();
 
@@ -2548,7 +2548,7 @@
     Expr *BitWidth;
   };
 
-  /// \brief Storage for either the bit-width, the in-class initializer, or
+  /// Storage for either the bit-width, the in-class initializer, or
   /// both (via InitAndBitWidth), or the captured variable length array bound.
   ///
   /// If the storage kind is ISK_InClassCopyInit or
@@ -2679,20 +2679,20 @@
     InitStorage.setPointerAndInt(getBitWidth(), ISK_NoInit);
   }
 
-  /// \brief Determine whether this member captures the variable length array
+  /// Determine whether this member captures the variable length array
   /// type.
   bool hasCapturedVLAType() const {
     return InitStorage.getInt() == ISK_CapturedVLAType;
   }
 
-  /// \brief Get the captured variable length array type.
+  /// Get the captured variable length array type.
   const VariableArrayType *getCapturedVLAType() const {
     return hasCapturedVLAType() ? static_cast<const VariableArrayType *>(
                                       InitStorage.getPointer())
                                 : nullptr;
   }
 
-  /// \brief Set the captured variable length array type for this field.
+  /// Set the captured variable length array type for this field.
   void setCapturedVLAType(const VariableArrayType *VLAType);
 
   /// Returns the parent of this field declaration, which
@@ -3062,7 +3062,7 @@
   // to be used for the (uncommon) case of out-of-line declarations.
   using ExtInfo = QualifierInfo;
 
-  /// \brief If the (out-of-line) tag declaration name
+  /// If the (out-of-line) tag declaration name
   /// is qualified, it points to the qualifier info (nns and range);
   /// otherwise, if the tag declaration is anonymous and it is part of
   /// a typedef or alias, it points to the TypedefNameDecl (used for mangling);
@@ -3106,7 +3106,7 @@
     return getMostRecentDecl();
   }
 
-  /// @brief Completes the definition of this tag declaration.
+  /// Completes the definition of this tag declaration.
   ///
   /// This is a helper function for derived classes.
   void completeDefinition();
@@ -3153,7 +3153,7 @@
     return IsCompleteDefinition;
   }
 
-  /// \brief Return true if this complete decl is
+  /// Return true if this complete decl is
   /// required to be complete for some existing use.
   bool isCompleteDefinitionRequired() const {
     return IsCompleteDefinitionRequired;
@@ -3176,7 +3176,7 @@
     IsFreeStanding = isFreeStanding;
   }
 
-  /// \brief Whether this declaration declares a type that is
+  /// Whether this declaration declares a type that is
   /// dependent, i.e., a type that somehow depends on template
   /// parameters.
   bool isDependentType() const { return isDependentContext(); }
@@ -3246,14 +3246,14 @@
 
   void setTypedefNameForAnonDecl(TypedefNameDecl *TDD);
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the name of this
+  /// Retrieve the nested-name-specifier that qualifies the name of this
   /// declaration, if it was present in the source.
   NestedNameSpecifier *getQualifier() const {
     return hasExtInfo() ? getExtInfo()->QualifierLoc.getNestedNameSpecifier()
                         : nullptr;
   }
 
-  /// \brief Retrieve the nested-name-specifier (with source-location
+  /// Retrieve the nested-name-specifier (with source-location
   /// information) that qualifies the name of this declaration, if it was
   /// present in the source.
   NestedNameSpecifierLoc getQualifierLoc() const {
@@ -3314,7 +3314,7 @@
   /// in C++) are of the enum type instead.
   QualType PromotionType;
 
-  /// \brief If this enumeration is an instantiation of a member enumeration
+  /// If this enumeration is an instantiation of a member enumeration
   /// of a class template specialization, this is the member specialization
   /// information.
   MemberSpecializationInfo *SpecializationInfo = nullptr;
@@ -3422,23 +3422,23 @@
     return IntegerType.get<TypeSourceInfo*>()->getType().getUnqualifiedType();
   }
 
-  /// \brief Set the underlying integer type.
+  /// Set the underlying integer type.
   void setIntegerType(QualType T) { IntegerType = T.getTypePtrOrNull(); }
 
-  /// \brief Set the underlying integer type source info.
+  /// Set the underlying integer type source info.
   void setIntegerTypeSourceInfo(TypeSourceInfo *TInfo) { IntegerType = TInfo; }
 
-  /// \brief Return the type source info for the underlying integer type,
+  /// Return the type source info for the underlying integer type,
   /// if no type source info exists, return 0.
   TypeSourceInfo *getIntegerTypeSourceInfo() const {
     return IntegerType.dyn_cast<TypeSourceInfo*>();
   }
 
-  /// \brief Retrieve the source range that covers the underlying type if
+  /// Retrieve the source range that covers the underlying type if
   /// specified.
   SourceRange getIntegerTypeRange() const LLVM_READONLY;
 
-  /// \brief Returns the width in bits required to store all the
+  /// Returns the width in bits required to store all the
   /// non-negative enumerators of this enum.
   unsigned getNumPositiveBits() const {
     return NumPositiveBits;
@@ -3448,7 +3448,7 @@
     assert(NumPositiveBits == Num && "can't store this bitcount");
   }
 
-  /// \brief Returns the width in bits required to store all the
+  /// Returns the width in bits required to store all the
   /// negative enumerators of this enum.  These widths include
   /// the rightmost leading 1;  that is:
   ///
@@ -3464,23 +3464,23 @@
     NumNegativeBits = Num;
   }
 
-  /// \brief Returns true if this is a C++11 scoped enumeration.
+  /// Returns true if this is a C++11 scoped enumeration.
   bool isScoped() const {
     return IsScoped;
   }
 
-  /// \brief Returns true if this is a C++11 scoped enumeration.
+  /// Returns true if this is a C++11 scoped enumeration.
   bool isScopedUsingClassTag() const {
     return IsScopedUsingClassTag;
   }
 
-  /// \brief Returns true if this is an Objective-C, C++11, or
+  /// Returns true if this is an Objective-C, C++11, or
   /// Microsoft-style enumeration with a fixed underlying type.
   bool isFixed() const {
     return IsFixed;
   }
 
-  /// \brief Returns true if this can be considered a complete type.
+  /// Returns true if this can be considered a complete type.
   bool isComplete() const {
     // IntegerType is set for fixed type enums and non-fixed but implicitly
     // int-sized Microsoft enums.
@@ -3499,33 +3499,33 @@
   /// enum_extensibility(open).
   bool isClosedNonFlag() const;
 
-  /// \brief Retrieve the enum definition from which this enumeration could
+  /// Retrieve the enum definition from which this enumeration could
   /// be instantiated, if it is an instantiation (rather than a non-template).
   EnumDecl *getTemplateInstantiationPattern() const;
 
-  /// \brief Returns the enumeration (declared within the template)
+  /// Returns the enumeration (declared within the template)
   /// from which this enumeration type was instantiated, or NULL if
   /// this enumeration was not instantiated from any template.
   EnumDecl *getInstantiatedFromMemberEnum() const;
 
-  /// \brief If this enumeration is a member of a specialization of a
+  /// If this enumeration is a member of a specialization of a
   /// templated class, determine what kind of template specialization
   /// or instantiation this is.
   TemplateSpecializationKind getTemplateSpecializationKind() const;
 
-  /// \brief For an enumeration member that was instantiated from a member
+  /// For an enumeration member that was instantiated from a member
   /// enumeration of a templated class, set the template specialiation kind.
   void setTemplateSpecializationKind(TemplateSpecializationKind TSK,
                         SourceLocation PointOfInstantiation = SourceLocation());
 
-  /// \brief If this enumeration is an instantiation of a member enumeration of
+  /// If this enumeration is an instantiation of a member enumeration of
   /// a class template specialization, retrieves the member specialization
   /// information.
   MemberSpecializationInfo *getMemberSpecializationInfo() const {
     return SpecializationInfo;
   }
 
-  /// \brief Specify that this enumeration is an instantiation of the
+  /// Specify that this enumeration is an instantiation of the
   /// member enumeration ED.
   void setInstantiationOfMemberEnum(EnumDecl *ED,
                                     TemplateSpecializationKind TSK) {
@@ -3713,7 +3713,7 @@
     ParamDestroyedInCallee = V;
   }
 
-  /// \brief Determines whether this declaration represents the
+  /// Determines whether this declaration represents the
   /// injected class name.
   ///
   /// The injected class name in C++ is the name of the class that
@@ -3728,15 +3728,15 @@
   /// \endcode
   bool isInjectedClassName() const;
 
-  /// \brief Determine whether this record is a class describing a lambda
+  /// Determine whether this record is a class describing a lambda
   /// function object.
   bool isLambda() const;
 
-  /// \brief Determine whether this record is a record for captured variables in
+  /// Determine whether this record is a record for captured variables in
   /// CapturedStmt construct.
   bool isCapturedRecord() const;
 
-  /// \brief Mark the record as a record for captured variables in CapturedStmt
+  /// Mark the record as a record for captured variables in CapturedStmt
   /// construct.
   void setCapturedRecord();
 
@@ -3778,12 +3778,12 @@
     return K >= firstRecord && K <= lastRecord;
   }
 
-  /// \brief Get whether or not this is an ms_struct which can
+  /// Get whether or not this is an ms_struct which can
   /// be turned on with an attribute, pragma, or -mms-bitfields
   /// commandline option.
   bool isMsStruct(const ASTContext &C) const;
 
-  /// \brief Whether we are allowed to insert extra padding between fields.
+  /// Whether we are allowed to insert extra padding between fields.
   /// These padding are added to help AddressSanitizer detect
   /// intra-object-overflow bugs.
   bool mayInsertExtraPadding(bool EmitRemark = false) const;
@@ -3793,7 +3793,7 @@
   const FieldDecl *findFirstNamedDataMember() const;  
 
 private:
-  /// \brief Deserialize just the fields.
+  /// Deserialize just the fields.
   void LoadFieldsFromExternalStorage() const;
 };
 
@@ -4019,13 +4019,13 @@
   }
 
 private:
-  /// \brief The number of parameters to the outlined function.
+  /// The number of parameters to the outlined function.
   unsigned NumParams;
 
-  /// \brief The position of context parameter in list of parameters.
+  /// The position of context parameter in list of parameters.
   unsigned ContextParam;
 
-  /// \brief The body of the outlined function.
+  /// The body of the outlined function.
   llvm::PointerIntPair<Stmt *, 1, bool> BodyAndNothrow;
 
   explicit CapturedDecl(DeclContext *DC, unsigned NumParams);
@@ -4073,7 +4073,7 @@
     return {getParams(), getNumParams()};
   }
 
-  /// \brief Retrieve the parameter containing captured variables.
+  /// Retrieve the parameter containing captured variables.
   ImplicitParamDecl *getContextParam() const {
     assert(ContextParam < NumParams);
     return getParam(ContextParam);
@@ -4088,9 +4088,9 @@
   using param_iterator = ImplicitParamDecl *const *;
   using param_range = llvm::iterator_range<param_iterator>;
 
-  /// \brief Retrieve an iterator pointing to the first parameter decl.
+  /// Retrieve an iterator pointing to the first parameter decl.
   param_iterator param_begin() const { return getParams(); }
-  /// \brief Retrieve an iterator one past the last parameter decl.
+  /// Retrieve an iterator one past the last parameter decl.
   param_iterator param_end() const { return getParams() + NumParams; }
 
   // Implement isa/cast/dyncast/etc.
@@ -4104,7 +4104,7 @@
   }
 };
 
-/// \brief Describes a module import declaration, which makes the contents
+/// Describes a module import declaration, which makes the contents
 /// of the named module visible in the current translation unit.
 ///
 /// An import declaration imports the named module (or submodule). For example:
@@ -4121,7 +4121,7 @@
   friend class ASTReader;
   friend TrailingObjects;
 
-  /// \brief The imported module, along with a bit that indicates whether
+  /// The imported module, along with a bit that indicates whether
   /// we have source-location information for each identifier in the module
   /// name. 
   ///
@@ -4129,7 +4129,7 @@
   /// end of the import declaration.
   llvm::PointerIntPair<Module *, 1, bool> ImportedAndComplete;
   
-  /// \brief The next import in the list of imports local to the translation
+  /// The next import in the list of imports local to the translation
   /// unit being parsed (not loaded from an AST file).
   ImportDecl *NextLocalImport = nullptr;
   
@@ -4142,25 +4142,25 @@
   ImportDecl(EmptyShell Empty) : Decl(Import, Empty) {}
   
 public:
-  /// \brief Create a new module import declaration.
+  /// Create a new module import declaration.
   static ImportDecl *Create(ASTContext &C, DeclContext *DC, 
                             SourceLocation StartLoc, Module *Imported,
                             ArrayRef<SourceLocation> IdentifierLocs);
   
-  /// \brief Create a new module import declaration for an implicitly-generated
+  /// Create a new module import declaration for an implicitly-generated
   /// import.
   static ImportDecl *CreateImplicit(ASTContext &C, DeclContext *DC, 
                                     SourceLocation StartLoc, Module *Imported, 
                                     SourceLocation EndLoc);
   
-  /// \brief Create a new, deserialized module import declaration.
+  /// Create a new, deserialized module import declaration.
   static ImportDecl *CreateDeserialized(ASTContext &C, unsigned ID, 
                                         unsigned NumLocations);
   
-  /// \brief Retrieve the module that was imported by the import declaration.
+  /// Retrieve the module that was imported by the import declaration.
   Module *getImportedModule() const { return ImportedAndComplete.getPointer(); }
   
-  /// \brief Retrieves the locations of each of the identifiers that make up
+  /// Retrieves the locations of each of the identifiers that make up
   /// the complete module name in the import declaration.
   ///
   /// This will return an empty array if the locations of the individual
@@ -4173,7 +4173,7 @@
   static bool classofKind(Kind K) { return K == Import; }
 };
 
-/// \brief Represents a C++ Modules TS module export declaration.
+/// Represents a C++ Modules TS module export declaration.
 ///
 /// For example:
 /// \code
@@ -4185,7 +4185,7 @@
 private:
   friend class ASTDeclReader;
 
-  /// \brief The source location for the right brace (if valid).
+  /// The source location for the right brace (if valid).
   SourceLocation RBraceLoc;
 
   ExportDecl(DeclContext *DC, SourceLocation ExportLoc)
Index: cfe/trunk/include/clang/AST/DeclBase.h
===================================================================
--- cfe/trunk/include/clang/AST/DeclBase.h
+++ cfe/trunk/include/clang/AST/DeclBase.h
@@ -67,7 +67,7 @@
 class TranslationUnitDecl;
 class UsingDirectiveDecl;
 
-/// \brief Captures the result of checking the availability of a
+/// Captures the result of checking the availability of a
 /// declaration.
 enum AvailabilityResult {
   AR_Available = 0,
@@ -85,7 +85,7 @@
 /// asserted in DeclBase.cpp.
 class LLVM_ALIGNAS(/*alignof(uint64_t)*/ 8) Decl {
 public:
-  /// \brief Lists the kind of concrete classes of Decl.
+  /// Lists the kind of concrete classes of Decl.
   enum Kind {
 #define DECL(DERIVED, BASE) DERIVED,
 #define ABSTRACT_DECL(DECL)
@@ -96,7 +96,7 @@
 #include "clang/AST/DeclNodes.inc"
   };
 
-  /// \brief A placeholder type used to construct an empty shell of a
+  /// A placeholder type used to construct an empty shell of a
   /// decl-derived type that will be filled in later (e.g., by some
   /// deserialization method).
   struct EmptyShell {};
@@ -231,7 +231,7 @@
   };
 
 protected:
-  /// \brief The next declaration within the same lexical
+  /// The next declaration within the same lexical
   /// DeclContext. These pointers form the linked list that is
   /// traversed via DeclContext's decls_begin()/decls_end().
   ///
@@ -288,22 +288,22 @@
   /// the implementation rather than explicitly written by the user.
   unsigned Implicit : 1;
 
-  /// \brief Whether this declaration was "used", meaning that a definition is
+  /// Whether this declaration was "used", meaning that a definition is
   /// required.
   unsigned Used : 1;
 
-  /// \brief Whether this declaration was "referenced".
+  /// Whether this declaration was "referenced".
   /// The difference with 'Used' is whether the reference appears in a
   /// evaluated context or not, e.g. functions used in uninstantiated templates
   /// are regarded as "referenced" but not "used".
   unsigned Referenced : 1;
 
-  /// \brief Whether this declaration is a top-level declaration (function,
+  /// Whether this declaration is a top-level declaration (function,
   /// global variable, etc.) that is lexically inside an objc container
   /// definition.
   unsigned TopLevelDeclInObjCContainer : 1;
   
-  /// \brief Whether statistic collection is enabled.
+  /// Whether statistic collection is enabled.
   static bool StatisticsEnabled;
 
 protected:
@@ -319,17 +319,17 @@
   // NOTE: VC++ treats enums as signed, avoid using the AccessSpecifier enum
   unsigned Access : 2;
 
-  /// \brief Whether this declaration was loaded from an AST file.
+  /// Whether this declaration was loaded from an AST file.
   unsigned FromASTFile : 1;
 
   /// IdentifierNamespace - This specifies what IDNS_* namespace this lives in.
   unsigned IdentifierNamespace : 13;
 
-  /// \brief If 0, we have not computed the linkage of this declaration.
+  /// If 0, we have not computed the linkage of this declaration.
   /// Otherwise, it is the linkage + 1.
   mutable unsigned CacheValidAndLinkage : 3;
 
-  /// \brief Allocate memory for a deserialized declaration.
+  /// Allocate memory for a deserialized declaration.
   ///
   /// This routine must be used to allocate memory for any declaration that is
   /// deserialized from a module file.
@@ -341,7 +341,7 @@
   void *operator new(std::size_t Size, const ASTContext &Ctx, unsigned ID,
                      std::size_t Extra = 0);
 
-  /// \brief Allocate memory for a non-deserialized declaration.
+  /// Allocate memory for a non-deserialized declaration.
   void *operator new(std::size_t Size, const ASTContext &Ctx,
                      DeclContext *Parent, std::size_t Extra = 0);
 
@@ -385,7 +385,7 @@
 
   virtual ~Decl();
 
-  /// \brief Update a potentially out-of-date declaration.
+  /// Update a potentially out-of-date declaration.
   void updateOutOfDate(IdentifierInfo &II) const;
 
   Linkage getCachedLinkage() const {
@@ -401,7 +401,7 @@
   }
 
 public:
-  /// \brief Source range that this declaration covers.
+  /// Source range that this declaration covers.
   virtual SourceRange getSourceRange() const LLVM_READONLY {
     return SourceRange(getLocation(), getLocation());
   }
@@ -463,7 +463,7 @@
     return AccessSpecifier(Access);
   }
 
-  /// \brief Retrieve the access specifier for this declaration, even though
+  /// Retrieve the access specifier for this declaration, even though
   /// it may not yet have been properly set.
   AccessSpecifier getAccessUnsafe() const {
     return AccessSpecifier(Access);
@@ -552,7 +552,7 @@
   bool isImplicit() const { return Implicit; }
   void setImplicit(bool I = true) { Implicit = I; }
 
-  /// \brief Whether *any* (re-)declaration of the entity was used, meaning that
+  /// Whether *any* (re-)declaration of the entity was used, meaning that
   /// a definition is required.
   ///
   /// \param CheckUsedAttr When true, also consider the "used" attribute
@@ -560,28 +560,28 @@
   /// whether the function is used.
   bool isUsed(bool CheckUsedAttr = true) const;
 
-  /// \brief Set whether the declaration is used, in the sense of odr-use.
+  /// Set whether the declaration is used, in the sense of odr-use.
   ///
   /// This should only be used immediately after creating a declaration.
   /// It intentionally doesn't notify any listeners.
   void setIsUsed() { getCanonicalDecl()->Used = true; }
 
-  /// \brief Mark the declaration used, in the sense of odr-use.
+  /// Mark the declaration used, in the sense of odr-use.
   ///
   /// This notifies any mutation listeners in addition to setting a bit
   /// indicating the declaration is used.
   void markUsed(ASTContext &C);
 
-  /// \brief Whether any declaration of this entity was referenced.
+  /// Whether any declaration of this entity was referenced.
   bool isReferenced() const;
 
-  /// \brief Whether this declaration was referenced. This should not be relied
+  /// Whether this declaration was referenced. This should not be relied
   /// upon for anything other than debugging.
   bool isThisDeclarationReferenced() const { return Referenced; }
 
   void setReferenced(bool R = true) { Referenced = R; }
 
-  /// \brief Whether this declaration is a top-level declaration (function,
+  /// Whether this declaration is a top-level declaration (function,
   /// global variable, etc.) that is lexically inside an objc container
   /// definition.
   bool isTopLevelDeclInObjCContainer() const {
@@ -592,17 +592,17 @@
     TopLevelDeclInObjCContainer = V;
   }
 
-  /// \brief Looks on this and related declarations for an applicable
+  /// Looks on this and related declarations for an applicable
   /// external source symbol attribute.
   ExternalSourceSymbolAttr *getExternalSourceSymbolAttr() const;
 
-  /// \brief Whether this declaration was marked as being private to the
+  /// Whether this declaration was marked as being private to the
   /// module in which it was defined.
   bool isModulePrivate() const {
     return getModuleOwnershipKind() == ModuleOwnershipKind::ModulePrivate;
   }
 
-  /// \brief Whether this declaration is exported (by virtue of being lexically
+  /// Whether this declaration is exported (by virtue of being lexically
   /// within an ExportDecl or by being a NamespaceDecl).
   bool isExported() const;
 
@@ -614,7 +614,7 @@
   const Attr *getDefiningAttr() const;
 
 protected:
-  /// \brief Specify that this declaration was marked as being private
+  /// Specify that this declaration was marked as being private
   /// to the module in which it was defined.
   void setModulePrivate() {
     // The module-private specifier has no effect on unowned declarations.
@@ -624,14 +624,14 @@
     setModuleOwnershipKind(ModuleOwnershipKind::ModulePrivate);
   }
 
-  /// \brief Set the owning module ID.
+  /// Set the owning module ID.
   void setOwningModuleID(unsigned ID) {
     assert(isFromASTFile() && "Only works on a deserialized declaration");
     *((unsigned*)this - 2) = ID;
   }
   
 public:
-  /// \brief Determine the availability of the given declaration.
+  /// Determine the availability of the given declaration.
   ///
   /// This routine will determine the most restrictive availability of
   /// the given declaration (e.g., preferring 'unavailable' to
@@ -653,7 +653,7 @@
                   VersionTuple EnclosingVersion = VersionTuple(),
                   StringRef *RealizedPlatform = nullptr) const;
 
-  /// \brief Retrieve the version of the target platform in which this
+  /// Retrieve the version of the target platform in which this
   /// declaration was introduced.
   ///
   /// \returns An empty version tuple if this declaration has no 'introduced'
@@ -661,7 +661,7 @@
   /// attribute otherwise.
   VersionTuple getVersionIntroduced() const;
 
-  /// \brief Determine whether this declaration is marked 'deprecated'.
+  /// Determine whether this declaration is marked 'deprecated'.
   ///
   /// \param Message If non-NULL and the declaration is deprecated,
   /// this will be set to the message describing why the declaration
@@ -670,7 +670,7 @@
     return getAvailability(Message) == AR_Deprecated;
   }
 
-  /// \brief Determine whether this declaration is marked 'unavailable'.
+  /// Determine whether this declaration is marked 'unavailable'.
   ///
   /// \param Message If non-NULL and the declaration is unavailable,
   /// this will be set to the message describing why the declaration
@@ -679,7 +679,7 @@
     return getAvailability(Message) == AR_Unavailable;
   }
 
-  /// \brief Determine whether this is a weak-imported symbol.
+  /// Determine whether this is a weak-imported symbol.
   ///
   /// Weak-imported symbols are typically marked with the
   /// 'weak_import' attribute, but may also be marked with an
@@ -687,7 +687,7 @@
   /// the introduction of this feature.
   bool isWeakImported() const;
 
-  /// \brief Determines whether this symbol can be weak-imported,
+  /// Determines whether this symbol can be weak-imported,
   /// e.g., whether it would be well-formed to add the weak_import
   /// attribute.
   ///
@@ -695,11 +695,11 @@
   /// declaration cannot be weak-imported because it has a definition.
   bool canBeWeakImported(bool &IsDefinition) const;
 
-  /// \brief Determine whether this declaration came from an AST file (such as
+  /// Determine whether this declaration came from an AST file (such as
   /// a precompiled header or module) rather than having been parsed.
   bool isFromASTFile() const { return FromASTFile; }
 
-  /// \brief Retrieve the global declaration ID associated with this
+  /// Retrieve the global declaration ID associated with this
   /// declaration, which specifies where this Decl was loaded from.
   unsigned getGlobalID() const {
     if (isFromASTFile())
@@ -707,7 +707,7 @@
     return 0;
   }
 
-  /// \brief Retrieve the global ID of the module that owns this particular
+  /// Retrieve the global ID of the module that owns this particular
   /// declaration.
   unsigned getOwningModuleID() const {
     if (isFromASTFile())
@@ -722,7 +722,7 @@
   bool hasLocalOwningModuleStorage() const;
 
 public:
-  /// \brief Get the imported owning module, if this decl is from an imported
+  /// Get the imported owning module, if this decl is from an imported
   /// (non-local) module.
   Module *getImportedOwningModule() const {
     if (!isFromASTFile() || !hasOwningModule())
@@ -731,7 +731,7 @@
     return getOwningModuleSlow();
   }
 
-  /// \brief Get the local owning module, if known. Returns nullptr if owner is
+  /// Get the local owning module, if known. Returns nullptr if owner is
   /// not yet known or declaration is not from a module.
   Module *getLocalOwningModule() const {
     if (isFromASTFile() || !hasOwningModule())
@@ -765,7 +765,7 @@
   /// all declarations in a global module fragment are unowned.
   Module *getOwningModuleForLinkage(bool IgnoreLinkage = false) const;
 
-  /// \brief Determine whether this declaration might be hidden from name
+  /// Determine whether this declaration might be hidden from name
   /// lookup. Note that the declaration might be visible even if this returns
   /// \c false, if the owning module is visible within the query context.
   // FIXME: Rename this to make it clearer what it does.
@@ -780,12 +780,12 @@
       setModuleOwnershipKind(ModuleOwnershipKind::Visible);
   }
 
-  /// \brief Get the kind of module ownership for this declaration.
+  /// Get the kind of module ownership for this declaration.
   ModuleOwnershipKind getModuleOwnershipKind() const {
     return NextInContextAndBits.getInt();
   }
 
-  /// \brief Set whether this declaration is hidden from name lookup.
+  /// Set whether this declaration is hidden from name lookup.
   void setModuleOwnershipKind(ModuleOwnershipKind MOK) {
     assert(!(getModuleOwnershipKind() == ModuleOwnershipKind::Unowned &&
              MOK != ModuleOwnershipKind::Unowned && !isFromASTFile() &&
@@ -854,7 +854,7 @@
     return getParentFunctionOrMethod() == nullptr;
   }
 
-  /// \brief Returns true if this declaration lexically is inside a function.
+  /// Returns true if this declaration lexically is inside a function.
   /// It recognizes non-defining declarations as well as members of local
   /// classes:
   /// \code
@@ -863,7 +863,7 @@
   /// \endcode
   bool isLexicallyWithinFunctionOrMethod() const;
 
-  /// \brief If this decl is defined inside a function/method/block it returns
+  /// If this decl is defined inside a function/method/block it returns
   /// the corresponding DeclContext, otherwise it returns null.
   const DeclContext *getParentFunctionOrMethod() const;
   DeclContext *getParentFunctionOrMethod() {
@@ -871,32 +871,32 @@
                     const_cast<const Decl*>(this)->getParentFunctionOrMethod());
   }
 
-  /// \brief Retrieves the "canonical" declaration of the given declaration.
+  /// Retrieves the "canonical" declaration of the given declaration.
   virtual Decl *getCanonicalDecl() { return this; }
   const Decl *getCanonicalDecl() const {
     return const_cast<Decl*>(this)->getCanonicalDecl();
   }
 
-  /// \brief Whether this particular Decl is a canonical one.
+  /// Whether this particular Decl is a canonical one.
   bool isCanonicalDecl() const { return getCanonicalDecl() == this; }
   
 protected:
-  /// \brief Returns the next redeclaration or itself if this is the only decl.
+  /// Returns the next redeclaration or itself if this is the only decl.
   ///
   /// Decl subclasses that can be redeclared should override this method so that
   /// Decl::redecl_iterator can iterate over them.
   virtual Decl *getNextRedeclarationImpl() { return this; }
 
-  /// \brief Implementation of getPreviousDecl(), to be overridden by any
+  /// Implementation of getPreviousDecl(), to be overridden by any
   /// subclass that has a redeclaration chain.
   virtual Decl *getPreviousDeclImpl() { return nullptr; }
 
-  /// \brief Implementation of getMostRecentDecl(), to be overridden by any
+  /// Implementation of getMostRecentDecl(), to be overridden by any
   /// subclass that has a redeclaration chain.
   virtual Decl *getMostRecentDeclImpl() { return this; }
 
 public:
-  /// \brief Iterates through all the redeclarations of the same decl.
+  /// Iterates through all the redeclarations of the same decl.
   class redecl_iterator {
     /// Current - The current declaration.
     Decl *Current = nullptr;
@@ -941,7 +941,7 @@
 
   using redecl_range = llvm::iterator_range<redecl_iterator>;
 
-  /// \brief Returns an iterator range for all the redeclarations of the same
+  /// Returns an iterator range for all the redeclarations of the same
   /// decl. It will iterate at least once (when this decl is the only one).
   redecl_range redecls() const {
     return redecl_range(redecls_begin(), redecls_end());
@@ -953,26 +953,26 @@
 
   redecl_iterator redecls_end() const { return redecl_iterator(); }
 
-  /// \brief Retrieve the previous declaration that declares the same entity
+  /// Retrieve the previous declaration that declares the same entity
   /// as this declaration, or NULL if there is no previous declaration.
   Decl *getPreviousDecl() { return getPreviousDeclImpl(); }
   
-  /// \brief Retrieve the most recent declaration that declares the same entity
+  /// Retrieve the most recent declaration that declares the same entity
   /// as this declaration, or NULL if there is no previous declaration.
   const Decl *getPreviousDecl() const { 
     return const_cast<Decl *>(this)->getPreviousDeclImpl();
   }
 
-  /// \brief True if this is the first declaration in its redeclaration chain.
+  /// True if this is the first declaration in its redeclaration chain.
   bool isFirstDecl() const {
     return getPreviousDecl() == nullptr;
   }
 
-  /// \brief Retrieve the most recent declaration that declares the same entity
+  /// Retrieve the most recent declaration that declares the same entity
   /// as this declaration (which may be this declaration).
   Decl *getMostRecentDecl() { return getMostRecentDeclImpl(); }
 
-  /// \brief Retrieve the most recent declaration that declares the same entity
+  /// Retrieve the most recent declaration that declares the same entity
   /// as this declaration (which may be this declaration).
   const Decl *getMostRecentDecl() const { 
     return const_cast<Decl *>(this)->getMostRecentDeclImpl();
@@ -983,7 +983,7 @@
   ///  top-level Stmt* of that body.  Otherwise this method returns null.
   virtual Stmt* getBody() const { return nullptr; }
 
-  /// \brief Returns true if this \c Decl represents a declaration for a body of
+  /// Returns true if this \c Decl represents a declaration for a body of
   /// code, such as a function or method definition.
   /// Note that \c hasBody can also return true if any redeclaration of this
   /// \c Decl represents a declaration for a body of code.
@@ -1006,24 +1006,24 @@
   /// template parameter pack.
   bool isTemplateParameterPack() const;
 
-  /// \brief Whether this declaration is a parameter pack.
+  /// Whether this declaration is a parameter pack.
   bool isParameterPack() const;
 
-  /// \brief returns true if this declaration is a template
+  /// returns true if this declaration is a template
   bool isTemplateDecl() const;
 
-  /// \brief Whether this declaration is a function or function template.
+  /// Whether this declaration is a function or function template.
   bool isFunctionOrFunctionTemplate() const {
     return (DeclKind >= Decl::firstFunction &&
             DeclKind <= Decl::lastFunction) ||
            DeclKind == FunctionTemplate;
   }
 
-  /// \brief If this is a declaration that describes some template, this
+  /// If this is a declaration that describes some template, this
   /// method returns that template declaration.
   TemplateDecl *getDescribedTemplate() const;
 
-  /// \brief Returns the function itself, or the templated function if this is a
+  /// Returns the function itself, or the templated function if this is a
   /// function template.
   FunctionDecl *getAsFunction() LLVM_READONLY;
 
@@ -1031,7 +1031,7 @@
     return const_cast<Decl *>(this)->getAsFunction();
   }
 
-  /// \brief Changes the namespace of this declaration to reflect that it's
+  /// Changes the namespace of this declaration to reflect that it's
   /// a function-local extern declaration.
   ///
   /// These declarations appear in the lexical context of the extern
@@ -1052,14 +1052,14 @@
       IdentifierNamespace |= IDNS_Ordinary;
   }
 
-  /// \brief Determine whether this is a block-scope declaration with linkage.
+  /// Determine whether this is a block-scope declaration with linkage.
   /// This will either be a local variable declaration declared 'extern', or a
   /// local function declaration.
   bool isLocalExternDecl() {
     return IdentifierNamespace & IDNS_LocalExtern;
   }
 
-  /// \brief Changes the namespace of this declaration to reflect that it's
+  /// Changes the namespace of this declaration to reflect that it's
   /// the object of a friend declaration.
   ///
   /// These declarations appear in the lexical context of the friending
@@ -1101,7 +1101,7 @@
     FOK_Undeclared ///< A friend of a previously-undeclared entity.
   };
 
-  /// \brief Determines whether this declaration is the object of a
+  /// Determines whether this declaration is the object of a
   /// friend declaration and, if so, what kind.
   ///
   /// There is currently no direct way to find the associated FriendDecl.
@@ -1141,7 +1141,7 @@
 
   void dump(raw_ostream &Out, bool Deserialize = false) const;
 
-  /// \brief Looks through the Decl's underlying type to extract a FunctionType
+  /// Looks through the Decl's underlying type to extract a FunctionType
   /// when possible. Will return null if the type underlying the Decl does not
   /// have a FunctionType.
   const FunctionType *getFunctionType(bool BlocksToo = true) const;
@@ -1155,7 +1155,7 @@
   ASTMutationListener *getASTMutationListener() const;
 };
 
-/// \brief Determine whether two declarations declare the same entity.
+/// Determine whether two declarations declare the same entity.
 inline bool declaresSameEntity(const Decl *D1, const Decl *D2) {
   if (!D1 || !D2)
     return false;
@@ -1182,7 +1182,7 @@
   void print(raw_ostream &OS) const override;
 };
 
-/// \brief The results of name lookup within a DeclContext. This is either a
+/// The results of name lookup within a DeclContext. This is either a
 /// single result (with no stable storage) or a collection of results (with
 /// stable storage provided by the lookup table).
 class DeclContextLookupResult {
@@ -1263,36 +1263,36 @@
   /// DeclKind - This indicates which class this is.
   unsigned DeclKind : 8;
 
-  /// \brief Whether this declaration context also has some external
+  /// Whether this declaration context also has some external
   /// storage that contains additional declarations that are lexically
   /// part of this context.
   mutable bool ExternalLexicalStorage : 1;
 
-  /// \brief Whether this declaration context also has some external
+  /// Whether this declaration context also has some external
   /// storage that contains additional declarations that are visible
   /// in this context.
   mutable bool ExternalVisibleStorage : 1;
 
-  /// \brief Whether this declaration context has had external visible
+  /// Whether this declaration context has had external visible
   /// storage added since the last lookup. In this case, \c LookupPtr's
   /// invariant may not hold and needs to be fixed before we perform
   /// another lookup.
   mutable bool NeedToReconcileExternalVisibleStorage : 1;
 
-  /// \brief If \c true, this context may have local lexical declarations
+  /// If \c true, this context may have local lexical declarations
   /// that are missing from the lookup table.
   mutable bool HasLazyLocalLexicalLookups : 1;
 
-  /// \brief If \c true, the external source may have lexical declarations
+  /// If \c true, the external source may have lexical declarations
   /// that are missing from the lookup table.
   mutable bool HasLazyExternalLexicalLookups : 1;
 
-  /// \brief If \c true, lookups should only return identifier from
+  /// If \c true, lookups should only return identifier from
   /// DeclContext scope (for example TranslationUnit). Used in
   /// LookupQualifiedName()
   mutable bool UseQualifiedLookup : 1;
 
-  /// \brief Pointer to the data structure used to lookup declarations
+  /// Pointer to the data structure used to lookup declarations
   /// within this context (or a DependentStoredDeclsMap if this is a
   /// dependent context). We maintain the invariant that, if the map
   /// contains an entry for a DeclarationName (and we haven't lazily
@@ -1315,7 +1315,7 @@
   /// another pointer.
   mutable Decl *LastDecl = nullptr;
 
-  /// \brief Build up a chain of declarations.
+  /// Build up a chain of declarations.
   ///
   /// \returns the first/last pair of declarations.
   static std::pair<Decl *, Decl *>
@@ -1398,7 +1398,7 @@
     }
   }
 
-  /// \brief Test whether the context supports looking up names.
+  /// Test whether the context supports looking up names.
   bool isLookupContext() const {
     return !isFunctionOrMethod() && DeclKind != Decl::LinkageSpec &&
            DeclKind != Decl::Export;
@@ -1424,7 +1424,7 @@
 
   bool isInlineNamespace() const;
 
-  /// \brief Determines whether this context is dependent on a
+  /// Determines whether this context is dependent on a
   /// template parameter.
   bool isDependentContext() const;
 
@@ -1445,28 +1445,28 @@
   /// C++0x scoped enums), and C++ linkage specifications.
   bool isTransparentContext() const;
 
-  /// \brief Determines whether this context or some of its ancestors is a
+  /// Determines whether this context or some of its ancestors is a
   /// linkage specification context that specifies C linkage.
   bool isExternCContext() const;
 
-  /// \brief Retrieve the nearest enclosing C linkage specification context.
+  /// Retrieve the nearest enclosing C linkage specification context.
   const LinkageSpecDecl *getExternCContext() const;
 
-  /// \brief Determines whether this context or some of its ancestors is a
+  /// Determines whether this context or some of its ancestors is a
   /// linkage specification context that specifies C++ linkage.
   bool isExternCXXContext() const;
 
-  /// \brief Determine whether this declaration context is equivalent
+  /// Determine whether this declaration context is equivalent
   /// to the declaration context DC.
   bool Equals(const DeclContext *DC) const {
     return DC && this->getPrimaryContext() == DC->getPrimaryContext();
   }
 
-  /// \brief Determine whether this declaration context encloses the
+  /// Determine whether this declaration context encloses the
   /// declaration context DC.
   bool Encloses(const DeclContext *DC) const;
 
-  /// \brief Find the nearest non-closure ancestor of this context,
+  /// Find the nearest non-closure ancestor of this context,
   /// i.e. the innermost semantic parent of this context which is not
   /// a closure.  A context may be its own non-closure ancestor.
   Decl *getNonClosureAncestor();
@@ -1493,19 +1493,19 @@
     return const_cast<DeclContext *>(this)->getRedeclContext();
   }
 
-  /// \brief Retrieve the nearest enclosing namespace context.
+  /// Retrieve the nearest enclosing namespace context.
   DeclContext *getEnclosingNamespaceContext();
   const DeclContext *getEnclosingNamespaceContext() const {
     return const_cast<DeclContext *>(this)->getEnclosingNamespaceContext();
   }
 
-  /// \brief Retrieve the outermost lexically enclosing record context.
+  /// Retrieve the outermost lexically enclosing record context.
   RecordDecl *getOuterLexicalRecordContext();
   const RecordDecl *getOuterLexicalRecordContext() const {
     return const_cast<DeclContext *>(this)->getOuterLexicalRecordContext();
   }
 
-  /// \brief Test if this context is part of the enclosing namespace set of
+  /// Test if this context is part of the enclosing namespace set of
   /// the context NS, as defined in C++0x [namespace.def]p9. If either context
   /// isn't a namespace, this is equivalent to Equals().
   ///
@@ -1513,7 +1513,7 @@
   /// inline, its enclosing namespace, recursively.
   bool InEnclosingNamespaceSetOf(const DeclContext *NS) const;
 
-  /// \brief Collects all of the declaration contexts that are semantically
+  /// Collects all of the declaration contexts that are semantically
   /// connected to this declaration context.
   ///
   /// For declaration contexts that have multiple semantically connected but
@@ -1669,7 +1669,7 @@
     }
   };
 
-  /// \brief Iterates over a filtered subrange of declarations stored
+  /// Iterates over a filtered subrange of declarations stored
   /// in a DeclContext.
   ///
   /// This iterator visits only those declarations that are of type
@@ -1745,7 +1745,7 @@
     }
   };
 
-  /// @brief Add the declaration D into this context.
+  /// Add the declaration D into this context.
   ///
   /// This routine should be invoked when the declaration D has first
   /// been declared, to place D into the context where it was
@@ -1759,7 +1759,7 @@
   /// semantic context via makeDeclVisibleInContext.
   void addDecl(Decl *D);
 
-  /// @brief Add the declaration D into this context, but suppress
+  /// Add the declaration D into this context, but suppress
   /// searches for external declarations with the same name.
   ///
   /// Although analogous in function to addDecl, this removes an
@@ -1769,7 +1769,7 @@
   /// See the ASTImporter for use cases.
   void addDeclInternal(Decl *D);
 
-  /// @brief Add the declaration D to this context without modifying
+  /// Add the declaration D to this context without modifying
   /// any lookup tables.
   ///
   /// This is useful for some operations in dependent contexts where
@@ -1777,10 +1777,10 @@
   /// only happens with friends.
   void addHiddenDecl(Decl *D);
 
-  /// @brief Removes a declaration from this context.
+  /// Removes a declaration from this context.
   void removeDecl(Decl *D);
     
-  /// @brief Checks whether a declaration is in this context.
+  /// Checks whether a declaration is in this context.
   bool containsDecl(Decl *D) const;
 
   using lookup_result = DeclContextLookupResult;
@@ -1793,12 +1793,12 @@
   /// routine will not look into parent contexts.
   lookup_result lookup(DeclarationName Name) const;
 
-  /// \brief Find the declarations with the given name that are visible
+  /// Find the declarations with the given name that are visible
   /// within this context; don't attempt to retrieve anything from an
   /// external source.
   lookup_result noload_lookup(DeclarationName Name);
 
-  /// \brief A simplistic name lookup mechanism that performs name lookup
+  /// A simplistic name lookup mechanism that performs name lookup
   /// into this declaration context without consulting the external source.
   ///
   /// This function should almost never be used, because it subverts the
@@ -1810,7 +1810,7 @@
   void localUncachedLookup(DeclarationName Name,
                            SmallVectorImpl<NamedDecl *> &Results);
 
-  /// @brief Makes a declaration visible within this context.
+  /// Makes a declaration visible within this context.
   ///
   /// This routine makes the declaration D visible to name lookup
   /// within this context and, if this is a transparent context,
@@ -1837,11 +1837,11 @@
   // If PreserveInternalState, avoids building lookup data structures too.
   lookups_range noload_lookups(bool PreserveInternalState) const;
 
-  /// \brief Iterators over all possible lookups within this context.
+  /// Iterators over all possible lookups within this context.
   all_lookups_iterator lookups_begin() const;
   all_lookups_iterator lookups_end() const;
 
-  /// \brief Iterators over all possible lookups within this context that are
+  /// Iterators over all possible lookups within this context that are
   /// currently loaded; don't attempt to retrieve anything from an external
   /// source.
   all_lookups_iterator noload_lookups_begin() const;
@@ -1873,7 +1873,7 @@
 
   // Low-level accessors
 
-  /// \brief Mark that there are external lexical declarations that we need
+  /// Mark that there are external lexical declarations that we need
   /// to include in our lookup table (and that are not available as external
   /// visible lookups). These extra lookup results will be found by walking
   /// the lexical declarations of this context. This should be used only if
@@ -1885,28 +1885,28 @@
     HasLazyExternalLexicalLookups = true;
   }
 
-  /// \brief Retrieve the internal representation of the lookup structure.
+  /// Retrieve the internal representation of the lookup structure.
   /// This may omit some names if we are lazily building the structure.
   StoredDeclsMap *getLookupPtr() const { return LookupPtr; }
 
-  /// \brief Ensure the lookup structure is fully-built and return it.
+  /// Ensure the lookup structure is fully-built and return it.
   StoredDeclsMap *buildLookup();
 
-  /// \brief Whether this DeclContext has external storage containing
+  /// Whether this DeclContext has external storage containing
   /// additional declarations that are lexically in this context.
   bool hasExternalLexicalStorage() const { return ExternalLexicalStorage; }
 
-  /// \brief State whether this DeclContext has external storage for
+  /// State whether this DeclContext has external storage for
   /// declarations lexically in this context.
   void setHasExternalLexicalStorage(bool ES = true) {
     ExternalLexicalStorage = ES;
   }
 
-  /// \brief Whether this DeclContext has external storage containing
+  /// Whether this DeclContext has external storage containing
   /// additional declarations that are visible in this context.
   bool hasExternalVisibleStorage() const { return ExternalVisibleStorage; }
 
-  /// \brief State whether this DeclContext has external storage for
+  /// State whether this DeclContext has external storage for
   /// declarations visible in this context.
   void setHasExternalVisibleStorage(bool ES = true) {
     ExternalVisibleStorage = ES;
@@ -1914,7 +1914,7 @@
       NeedToReconcileExternalVisibleStorage = true;
   }
 
-  /// \brief Determine whether the given declaration is stored in the list of
+  /// Determine whether the given declaration is stored in the list of
   /// declarations lexically within this context.
   bool isDeclInLexicalTraversal(const Decl *D) const {
     return D && (D->NextInContextAndBits.getPointer() || D == FirstDecl || 
@@ -1945,7 +1945,7 @@
   void reconcileExternalVisibleStorage() const;
   bool LoadLexicalDeclsFromExternalStorage() const;
 
-  /// @brief Makes a declaration visible within this context, but
+  /// Makes a declaration visible within this context, but
   /// suppresses searches for external declarations with the same
   /// name.
   ///
Index: cfe/trunk/include/clang/AST/DeclCXX.h
===================================================================
--- cfe/trunk/include/clang/AST/DeclCXX.h
+++ cfe/trunk/include/clang/AST/DeclCXX.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the C++ Decl subclasses, other than those for templates
+/// Defines the C++ Decl subclasses, other than those for templates
 /// (found in DeclTemplate.h) and friends (in DeclFriend.h).
 //
 //===----------------------------------------------------------------------===//
@@ -73,7 +73,7 @@
 class TemplateParameterList;
 class UsingDecl;
 
-/// \brief Represents any kind of function declaration, whether it is a
+/// Represents any kind of function declaration, whether it is a
 /// concrete function or a function template.
 class AnyFunctionDecl {
   NamedDecl *Function;
@@ -84,11 +84,11 @@
   AnyFunctionDecl(FunctionDecl *FD) : Function(FD) {}
   AnyFunctionDecl(FunctionTemplateDecl *FTD);
 
-  /// \brief Implicily converts any function or function template into a
+  /// Implicily converts any function or function template into a
   /// named declaration.
   operator NamedDecl *() const { return Function; }
 
-  /// \brief Retrieve the underlying function or function template.
+  /// Retrieve the underlying function or function template.
   NamedDecl *get() const { return Function; }
 
   static AnyFunctionDecl getFromNamedDecl(NamedDecl *ND) {
@@ -119,7 +119,7 @@
 
 namespace clang {
 
-/// \brief Represents an access specifier followed by colon ':'.
+/// Represents an access specifier followed by colon ':'.
 ///
 /// An objects of this class represents sugar for the syntactic occurrence
 /// of an access specifier followed by a colon in the list of member
@@ -130,7 +130,7 @@
 /// Also note that this class has nothing to do with so-called
 /// "access declarations" (C++98 11.3 [class.access.dcl]).
 class AccessSpecDecl : public Decl {
-  /// \brief The location of the ':'.
+  /// The location of the ':'.
   SourceLocation ColonLoc;
 
   AccessSpecDecl(AccessSpecifier AS, DeclContext *DC,
@@ -144,16 +144,16 @@
   virtual void anchor();
 
 public:
-  /// \brief The location of the access specifier.
+  /// The location of the access specifier.
   SourceLocation getAccessSpecifierLoc() const { return getLocation(); }
 
-  /// \brief Sets the location of the access specifier.
+  /// Sets the location of the access specifier.
   void setAccessSpecifierLoc(SourceLocation ASLoc) { setLocation(ASLoc); }
 
-  /// \brief The location of the colon following the access specifier.
+  /// The location of the colon following the access specifier.
   SourceLocation getColonLoc() const { return ColonLoc; }
 
-  /// \brief Sets the location of the colon.
+  /// Sets the location of the colon.
   void setColonLoc(SourceLocation CLoc) { ColonLoc = CLoc; }
 
   SourceRange getSourceRange() const override LLVM_READONLY {
@@ -173,7 +173,7 @@
   static bool classofKind(Kind K) { return K == AccessSpec; }
 };
 
-/// \brief Represents a base class of a C++ class.
+/// Represents a base class of a C++ class.
 ///
 /// Each CXXBaseSpecifier represents a single, direct base class (or
 /// struct) of a C++ class (or struct). It specifies the type of that
@@ -190,35 +190,35 @@
 /// In this code, C will have two CXXBaseSpecifiers, one for "public
 /// virtual A" and the other for "protected B".
 class CXXBaseSpecifier {
-  /// \brief The source code range that covers the full base
+  /// The source code range that covers the full base
   /// specifier, including the "virtual" (if present) and access
   /// specifier (if present).
   SourceRange Range;
 
-  /// \brief The source location of the ellipsis, if this is a pack
+  /// The source location of the ellipsis, if this is a pack
   /// expansion.
   SourceLocation EllipsisLoc;
 
-  /// \brief Whether this is a virtual base class or not.
+  /// Whether this is a virtual base class or not.
   unsigned Virtual : 1;
 
-  /// \brief Whether this is the base of a class (true) or of a struct (false).
+  /// Whether this is the base of a class (true) or of a struct (false).
   ///
   /// This determines the mapping from the access specifier as written in the
   /// source code to the access specifier used for semantic analysis.
   unsigned BaseOfClass : 1;
 
-  /// \brief Access specifier as written in the source code (may be AS_none).
+  /// Access specifier as written in the source code (may be AS_none).
   ///
   /// The actual type of data stored here is an AccessSpecifier, but we use
   /// "unsigned" here to work around a VC++ bug.
   unsigned Access : 2;
 
-  /// \brief Whether the class contains a using declaration
+  /// Whether the class contains a using declaration
   /// to inherit the named class's constructors.
   unsigned InheritConstructors : 1;
 
-  /// \brief The type of the base class.
+  /// The type of the base class.
   ///
   /// This will be a class or struct (or a typedef of such). The source code
   /// range does not include the \c virtual or the access specifier.
@@ -231,40 +231,40 @@
     : Range(R), EllipsisLoc(EllipsisLoc), Virtual(V), BaseOfClass(BC),
       Access(A), InheritConstructors(false), BaseTypeInfo(TInfo) {}
 
-  /// \brief Retrieves the source range that contains the entire base specifier.
+  /// Retrieves the source range that contains the entire base specifier.
   SourceRange getSourceRange() const LLVM_READONLY { return Range; }
   SourceLocation getLocStart() const LLVM_READONLY { return Range.getBegin(); }
   SourceLocation getLocEnd() const LLVM_READONLY { return Range.getEnd(); }
 
-  /// \brief Get the location at which the base class type was written.
+  /// Get the location at which the base class type was written.
   SourceLocation getBaseTypeLoc() const LLVM_READONLY {
     return BaseTypeInfo->getTypeLoc().getLocStart();
   }
 
-  /// \brief Determines whether the base class is a virtual base class (or not).
+  /// Determines whether the base class is a virtual base class (or not).
   bool isVirtual() const { return Virtual; }
 
-  /// \brief Determine whether this base class is a base of a class declared
+  /// Determine whether this base class is a base of a class declared
   /// with the 'class' keyword (vs. one declared with the 'struct' keyword).
   bool isBaseOfClass() const { return BaseOfClass; }
 
-  /// \brief Determine whether this base specifier is a pack expansion.
+  /// Determine whether this base specifier is a pack expansion.
   bool isPackExpansion() const { return EllipsisLoc.isValid(); }
 
-  /// \brief Determine whether this base class's constructors get inherited.
+  /// Determine whether this base class's constructors get inherited.
   bool getInheritConstructors() const { return InheritConstructors; }
 
-  /// \brief Set that this base class's constructors should be inherited.
+  /// Set that this base class's constructors should be inherited.
   void setInheritConstructors(bool Inherit = true) {
     InheritConstructors = Inherit;
   }
 
-  /// \brief For a pack expansion, determine the location of the ellipsis.
+  /// For a pack expansion, determine the location of the ellipsis.
   SourceLocation getEllipsisLoc() const {
     return EllipsisLoc;
   }
 
-  /// \brief Returns the access specifier for this base specifier. 
+  /// Returns the access specifier for this base specifier. 
   ///
   /// This is the actual base specifier as used for semantic analysis, so
   /// the result can never be AS_none. To retrieve the access specifier as
@@ -276,7 +276,7 @@
       return (AccessSpecifier)Access;
   }
 
-  /// \brief Retrieves the access specifier as written in the source code
+  /// Retrieves the access specifier as written in the source code
   /// (which may mean that no access specifier was explicitly written).
   ///
   /// Use getAccessSpecifier() to retrieve the access specifier for use in
@@ -285,18 +285,18 @@
     return (AccessSpecifier)Access;
   }
 
-  /// \brief Retrieves the type of the base class.
+  /// Retrieves the type of the base class.
   ///
   /// This type will always be an unqualified class type.
   QualType getType() const {
     return BaseTypeInfo->getType().getUnqualifiedType();
   }
 
-  /// \brief Retrieves the type and source location of the base class.
+  /// Retrieves the type and source location of the base class.
   TypeSourceInfo *getTypeSourceInfo() const { return BaseTypeInfo; }
 };
 
-/// \brief Represents a C++ struct/union/class.
+/// Represents a C++ struct/union/class.
 class CXXRecordDecl : public RecordDecl {
   friend class ASTDeclReader;
   friend class ASTDeclWriter;
@@ -322,16 +322,16 @@
   };
 
   struct DefinitionData {
-    /// \brief True if this class has any user-declared constructors.
+    /// True if this class has any user-declared constructors.
     unsigned UserDeclaredConstructor : 1;
 
-    /// \brief The user-declared special members which this class has.
+    /// The user-declared special members which this class has.
     unsigned UserDeclaredSpecialMembers : 6;
 
-    /// \brief True when this class is an aggregate.
+    /// True when this class is an aggregate.
     unsigned Aggregate : 1;
 
-    /// \brief True when this class is a POD-type.
+    /// True when this class is a POD-type.
     unsigned PlainOldData : 1;
 
     /// true when this class is empty for traits purposes,
@@ -340,19 +340,19 @@
     /// class. Doesn't take union-ness into account.
     unsigned Empty : 1;
 
-    /// \brief True when this class is polymorphic, i.e., has at
+    /// True when this class is polymorphic, i.e., has at
     /// least one virtual member or derives from a polymorphic class.
     unsigned Polymorphic : 1;
 
-    /// \brief True when this class is abstract, i.e., has at least
+    /// True when this class is abstract, i.e., has at least
     /// one pure virtual function, (that can come from a base class).
     unsigned Abstract : 1;
 
-    /// \brief True when this class is standard-layout, per the applicable
+    /// True when this class is standard-layout, per the applicable
     /// language rules (including DRs).
     unsigned IsStandardLayout : 1;
 
-    /// \brief True when this class was standard-layout under the C++11
+    /// True when this class was standard-layout under the C++11
     /// definition.
     ///
     /// C++11 [class]p7.  A standard-layout class is a class that:
@@ -369,61 +369,61 @@
     ///   member.
     unsigned IsCXX11StandardLayout : 1;
 
-    /// \brief True when any base class has any declared non-static data
+    /// True when any base class has any declared non-static data
     /// members or bit-fields.
     /// This is a helper bit of state used to implement IsStandardLayout more
     /// efficiently.
     unsigned HasBasesWithFields : 1;
 
-    /// \brief True when any base class has any declared non-static data
+    /// True when any base class has any declared non-static data
     /// members.
     /// This is a helper bit of state used to implement IsCXX11StandardLayout
     /// more efficiently.
     unsigned HasBasesWithNonStaticDataMembers : 1;
 
-    /// \brief True when there are private non-static data members.
+    /// True when there are private non-static data members.
     unsigned HasPrivateFields : 1;
 
-    /// \brief True when there are protected non-static data members.
+    /// True when there are protected non-static data members.
     unsigned HasProtectedFields : 1;
 
-    /// \brief True when there are private non-static data members.
+    /// True when there are private non-static data members.
     unsigned HasPublicFields : 1;
 
-    /// \brief True if this class (or any subobject) has mutable fields.
+    /// True if this class (or any subobject) has mutable fields.
     unsigned HasMutableFields : 1;
 
-    /// \brief True if this class (or any nested anonymous struct or union)
+    /// True if this class (or any nested anonymous struct or union)
     /// has variant members.
     unsigned HasVariantMembers : 1;
 
-    /// \brief True if there no non-field members declared by the user.
+    /// True if there no non-field members declared by the user.
     unsigned HasOnlyCMembers : 1;
 
-    /// \brief True if any field has an in-class initializer, including those
+    /// True if any field has an in-class initializer, including those
     /// within anonymous unions or structs.
     unsigned HasInClassInitializer : 1;
 
-    /// \brief True if any field is of reference type, and does not have an
+    /// True if any field is of reference type, and does not have an
     /// in-class initializer.
     ///
     /// In this case, value-initialization of this class is illegal in C++98
     /// even if the class has a trivial default constructor.
     unsigned HasUninitializedReferenceMember : 1;
 
-    /// \brief True if any non-mutable field whose type doesn't have a user-
+    /// True if any non-mutable field whose type doesn't have a user-
     /// provided default ctor also doesn't have an in-class initializer.
     unsigned HasUninitializedFields : 1;
 
-    /// \brief True if there are any member using-declarations that inherit
+    /// True if there are any member using-declarations that inherit
     /// constructors from a base class.
     unsigned HasInheritedConstructor : 1;
 
-    /// \brief True if there are any member using-declarations named
+    /// True if there are any member using-declarations named
     /// 'operator='.
     unsigned HasInheritedAssignment : 1;
 
-    /// \brief These flags are \c true if a defaulted corresponding special
+    /// These flags are \c true if a defaulted corresponding special
     /// member can't be fully analyzed without performing overload resolution.
     /// @{
     unsigned NeedOverloadResolutionForCopyConstructor : 1;
@@ -432,7 +432,7 @@
     unsigned NeedOverloadResolutionForDestructor : 1;
     /// @}
 
-    /// \brief These flags are \c true if an implicit defaulted corresponding
+    /// These flags are \c true if an implicit defaulted corresponding
     /// special member would be defined as deleted.
     /// @{
     unsigned DefaultedCopyConstructorIsDeleted : 1;
@@ -441,7 +441,7 @@
     unsigned DefaultedDestructorIsDeleted : 1;
     /// @}
 
-    /// \brief The trivial special members which this class has, per
+    /// The trivial special members which this class has, per
     /// C++11 [class.ctor]p5, C++11 [class.copy]p12, C++11 [class.copy]p25,
     /// C++11 [class.dtor]p5, or would have if the member were not suppressed.
     ///
@@ -454,7 +454,7 @@
     /// SMF_MoveConstructor, and SMF_Destructor are meaningful here.
     unsigned HasTrivialSpecialMembersForCall : 6;
 
-    /// \brief The declared special members of this class which are known to be
+    /// The declared special members of this class which are known to be
     /// non-trivial.
     ///
     /// This excludes any user-declared but not user-provided special members
@@ -468,102 +468,102 @@
     /// SMF_MoveConstructor, and SMF_Destructor are meaningful here.
     unsigned DeclaredNonTrivialSpecialMembersForCall : 6;
 
-    /// \brief True when this class has a destructor with no semantic effect.
+    /// True when this class has a destructor with no semantic effect.
     unsigned HasIrrelevantDestructor : 1;
 
-    /// \brief True when this class has at least one user-declared constexpr
+    /// True when this class has at least one user-declared constexpr
     /// constructor which is neither the copy nor move constructor.
     unsigned HasConstexprNonCopyMoveConstructor : 1;
 
-    /// \brief True if this class has a (possibly implicit) defaulted default
+    /// True if this class has a (possibly implicit) defaulted default
     /// constructor.
     unsigned HasDefaultedDefaultConstructor : 1;
 
-    /// \brief True if a defaulted default constructor for this class would
+    /// True if a defaulted default constructor for this class would
     /// be constexpr.
     unsigned DefaultedDefaultConstructorIsConstexpr : 1;
 
-    /// \brief True if this class has a constexpr default constructor.
+    /// True if this class has a constexpr default constructor.
     ///
     /// This is true for either a user-declared constexpr default constructor
     /// or an implicitly declared constexpr default constructor.
     unsigned HasConstexprDefaultConstructor : 1;
 
-    /// \brief True when this class contains at least one non-static data
+    /// True when this class contains at least one non-static data
     /// member or base class of non-literal or volatile type.
     unsigned HasNonLiteralTypeFieldsOrBases : 1;
 
-    /// \brief True when visible conversion functions are already computed
+    /// True when visible conversion functions are already computed
     /// and are available.
     unsigned ComputedVisibleConversions : 1;
 
-    /// \brief Whether we have a C++11 user-provided default constructor (not
+    /// Whether we have a C++11 user-provided default constructor (not
     /// explicitly deleted or defaulted).
     unsigned UserProvidedDefaultConstructor : 1;
 
-    /// \brief The special members which have been declared for this class,
+    /// The special members which have been declared for this class,
     /// either by the user or implicitly.
     unsigned DeclaredSpecialMembers : 6;
 
-    /// \brief Whether an implicit copy constructor could have a const-qualified
+    /// Whether an implicit copy constructor could have a const-qualified
     /// parameter, for initializing virtual bases and for other subobjects.
     unsigned ImplicitCopyConstructorCanHaveConstParamForVBase : 1;
     unsigned ImplicitCopyConstructorCanHaveConstParamForNonVBase : 1;
 
-    /// \brief Whether an implicit copy assignment operator would have a
+    /// Whether an implicit copy assignment operator would have a
     /// const-qualified parameter.
     unsigned ImplicitCopyAssignmentHasConstParam : 1;
 
-    /// \brief Whether any declared copy constructor has a const-qualified
+    /// Whether any declared copy constructor has a const-qualified
     /// parameter.
     unsigned HasDeclaredCopyConstructorWithConstParam : 1;
 
-    /// \brief Whether any declared copy assignment operator has either a
+    /// Whether any declared copy assignment operator has either a
     /// const-qualified reference parameter or a non-reference parameter.
     unsigned HasDeclaredCopyAssignmentWithConstParam : 1;
 
-    /// \brief Whether this class describes a C++ lambda.
+    /// Whether this class describes a C++ lambda.
     unsigned IsLambda : 1;
 
-    /// \brief Whether we are currently parsing base specifiers.
+    /// Whether we are currently parsing base specifiers.
     unsigned IsParsingBaseSpecifiers : 1;
 
     unsigned HasODRHash : 1;
 
-    /// \brief A hash of parts of the class to help in ODR checking.
+    /// A hash of parts of the class to help in ODR checking.
     unsigned ODRHash = 0;
 
-    /// \brief The number of base class specifiers in Bases.
+    /// The number of base class specifiers in Bases.
     unsigned NumBases = 0;
 
-    /// \brief The number of virtual base class specifiers in VBases.
+    /// The number of virtual base class specifiers in VBases.
     unsigned NumVBases = 0;
 
-    /// \brief Base classes of this class.
+    /// Base classes of this class.
     ///
     /// FIXME: This is wasted space for a union.
     LazyCXXBaseSpecifiersPtr Bases;
 
-    /// \brief direct and indirect virtual base classes of this class.
+    /// direct and indirect virtual base classes of this class.
     LazyCXXBaseSpecifiersPtr VBases;
 
-    /// \brief The conversion functions of this C++ class (but not its
+    /// The conversion functions of this C++ class (but not its
     /// inherited conversion functions).
     ///
     /// Each of the entries in this overload set is a CXXConversionDecl.
     LazyASTUnresolvedSet Conversions;
 
-    /// \brief The conversion functions of this C++ class and all those
+    /// The conversion functions of this C++ class and all those
     /// inherited conversion functions that are visible in this class.
     ///
     /// Each of the entries in this overload set is a CXXConversionDecl or a
     /// FunctionTemplateDecl.
     LazyASTUnresolvedSet VisibleConversions;
 
-    /// \brief The declaration which defines this record.
+    /// The declaration which defines this record.
     CXXRecordDecl *Definition;
 
-    /// \brief The first friend declaration in this class, or null if there
+    /// The first friend declaration in this class, or null if there
     /// aren't any. 
     ///
     /// This is actually currently stored in reverse order.
@@ -571,14 +571,14 @@
 
     DefinitionData(CXXRecordDecl *D);
 
-    /// \brief Retrieve the set of direct base classes.
+    /// Retrieve the set of direct base classes.
     CXXBaseSpecifier *getBases() const {
       if (!Bases.isOffset())
         return Bases.get(nullptr);
       return getBasesSlowCase();
     }
 
-    /// \brief Retrieve the set of virtual base classes.
+    /// Retrieve the set of virtual base classes.
     CXXBaseSpecifier *getVBases() const {
       if (!VBases.isOffset())
         return VBases.get(nullptr);
@@ -600,11 +600,11 @@
 
   struct DefinitionData *DefinitionData;
 
-  /// \brief Describes a C++ closure type (generated by a lambda expression).
+  /// Describes a C++ closure type (generated by a lambda expression).
   struct LambdaDefinitionData : public DefinitionData {
     using Capture = LambdaCapture;
 
-    /// \brief Whether this lambda is known to be dependent, even if its
+    /// Whether this lambda is known to be dependent, even if its
     /// context isn't dependent.
     /// 
     /// A lambda with a non-dependent context can be dependent if it occurs
@@ -614,33 +614,33 @@
     /// artifact of having to parse the default arguments before. 
     unsigned Dependent : 1;
     
-    /// \brief Whether this lambda is a generic lambda.
+    /// Whether this lambda is a generic lambda.
     unsigned IsGenericLambda : 1;
 
-    /// \brief The Default Capture.
+    /// The Default Capture.
     unsigned CaptureDefault : 2;
 
-    /// \brief The number of captures in this lambda is limited 2^NumCaptures.
+    /// The number of captures in this lambda is limited 2^NumCaptures.
     unsigned NumCaptures : 15;
 
-    /// \brief The number of explicit captures in this lambda.
+    /// The number of explicit captures in this lambda.
     unsigned NumExplicitCaptures : 13;
 
-    /// \brief The number used to indicate this lambda expression for name 
+    /// The number used to indicate this lambda expression for name 
     /// mangling in the Itanium C++ ABI.
     unsigned ManglingNumber = 0;
     
-    /// \brief The declaration that provides context for this lambda, if the
+    /// The declaration that provides context for this lambda, if the
     /// actual DeclContext does not suffice. This is used for lambdas that
     /// occur within default arguments of function parameters within the class
     /// or within a data member initializer.
     LazyDeclPtr ContextDecl;
     
-    /// \brief The list of captures, both explicit and implicit, for this 
+    /// The list of captures, both explicit and implicit, for this 
     /// lambda.
     Capture *Captures = nullptr;
 
-    /// \brief The type of the call method.
+    /// The type of the call method.
     TypeSourceInfo *MethodTyInfo;
 
     LambdaDefinitionData(CXXRecordDecl *D, TypeSourceInfo *Info, 
@@ -678,7 +678,7 @@
     return static_cast<LambdaDefinitionData&>(*DD);
   }
 
-  /// \brief The template or declaration that this declaration
+  /// The template or declaration that this declaration
   /// describes or was instantiated from, respectively.
   ///
   /// For non-templates, this value will be null. For record
@@ -690,11 +690,11 @@
   llvm::PointerUnion<ClassTemplateDecl *, MemberSpecializationInfo *>
       TemplateOrInstantiation;
 
-  /// \brief Called from setBases and addedMember to notify the class that a
+  /// Called from setBases and addedMember to notify the class that a
   /// direct or virtual base class or a member of class type has been added.
   void addedClassSubobject(CXXRecordDecl *Base);
 
-  /// \brief Notify the class that member has been added.
+  /// Notify the class that member has been added.
   ///
   /// This routine helps maintain information about the class based on which
   /// members have been added. It will be invoked by DeclContext::addDecl()
@@ -703,7 +703,7 @@
 
   void markedVirtualFunctionPure();
 
-  /// \brief Get the head of our list of friend declarations, possibly
+  /// Get the head of our list of friend declarations, possibly
   /// deserializing the friends from an external AST source.
   FriendDecl *getFirstFriend() const;
 
@@ -719,10 +719,10 @@
                 IdentifierInfo *Id, CXXRecordDecl *PrevDecl);
 
 public:
-  /// \brief Iterator that traverses the base classes of a class.
+  /// Iterator that traverses the base classes of a class.
   using base_class_iterator = CXXBaseSpecifier *;
 
-  /// \brief Iterator that traverses the base classes of a class.
+  /// Iterator that traverses the base classes of a class.
   using base_class_const_iterator = const CXXBaseSpecifier *;
 
   CXXRecordDecl *getCanonicalDecl() override {
@@ -783,10 +783,10 @@
 
   unsigned getODRHash() const;
 
-  /// \brief Sets the base classes of this struct or class.
+  /// Sets the base classes of this struct or class.
   void setBases(CXXBaseSpecifier const * const *Bases, unsigned NumBases);
 
-  /// \brief Retrieves the number of base classes of this class.
+  /// Retrieves the number of base classes of this class.
   unsigned getNumBases() const { return data().NumBases; }
 
   using base_class_range = llvm::iterator_range<base_class_iterator>;
@@ -807,7 +807,7 @@
     return bases_begin() + data().NumBases;
   }
 
-  /// \brief Retrieves the number of virtual base classes of this class.
+  /// Retrieves the number of virtual base classes of this class.
   unsigned getNumVBases() const { return data().NumVBases; }
 
   base_class_range vbases() {
@@ -824,7 +824,7 @@
     return vbases_begin() + data().NumVBases;
   }
 
-  /// \brief Determine whether this class has any dependent base classes which
+  /// Determine whether this class has any dependent base classes which
   /// are not the current instantiation.
   bool hasAnyDependentBases() const;
 
@@ -839,13 +839,13 @@
     return method_range(method_begin(), method_end());
   }
 
-  /// \brief Method begin iterator.  Iterates in the order the methods
+  /// Method begin iterator.  Iterates in the order the methods
   /// were declared.
   method_iterator method_begin() const {
     return method_iterator(decls_begin());
   }
 
-  /// \brief Method past-the-end iterator.
+  /// Method past-the-end iterator.
   method_iterator method_end() const {
     return method_iterator(decls_end());
   }
@@ -880,7 +880,7 @@
     return data().FirstFriend.isValid();
   }
 
-  /// \brief \c true if a defaulted copy constructor for this class would be
+  /// \c true if a defaulted copy constructor for this class would be
   /// deleted.
   bool defaultedCopyConstructorIsDeleted() const {
     assert((!needsOverloadResolutionForCopyConstructor() ||
@@ -889,7 +889,7 @@
     return data().DefaultedCopyConstructorIsDeleted;
   }
 
-  /// \brief \c true if a defaulted move constructor for this class would be
+  /// \c true if a defaulted move constructor for this class would be
   /// deleted.
   bool defaultedMoveConstructorIsDeleted() const {
     assert((!needsOverloadResolutionForMoveConstructor() ||
@@ -898,7 +898,7 @@
     return data().DefaultedMoveConstructorIsDeleted;
   }
 
-  /// \brief \c true if a defaulted destructor for this class would be deleted.
+  /// \c true if a defaulted destructor for this class would be deleted.
   bool defaultedDestructorIsDeleted() const {
     assert((!needsOverloadResolutionForDestructor() ||
             (data().DeclaredSpecialMembers & SMF_Destructor)) &&
@@ -906,41 +906,41 @@
     return data().DefaultedDestructorIsDeleted;
   }
 
-  /// \brief \c true if we know for sure that this class has a single,
+  /// \c true if we know for sure that this class has a single,
   /// accessible, unambiguous copy constructor that is not deleted.
   bool hasSimpleCopyConstructor() const {
     return !hasUserDeclaredCopyConstructor() &&
            !data().DefaultedCopyConstructorIsDeleted;
   }
 
-  /// \brief \c true if we know for sure that this class has a single,
+  /// \c true if we know for sure that this class has a single,
   /// accessible, unambiguous move constructor that is not deleted.
   bool hasSimpleMoveConstructor() const {
     return !hasUserDeclaredMoveConstructor() && hasMoveConstructor() &&
            !data().DefaultedMoveConstructorIsDeleted;
   }
 
-  /// \brief \c true if we know for sure that this class has a single,
+  /// \c true if we know for sure that this class has a single,
   /// accessible, unambiguous move assignment operator that is not deleted.
   bool hasSimpleMoveAssignment() const {
     return !hasUserDeclaredMoveAssignment() && hasMoveAssignment() &&
            !data().DefaultedMoveAssignmentIsDeleted;
   }
 
-  /// \brief \c true if we know for sure that this class has an accessible
+  /// \c true if we know for sure that this class has an accessible
   /// destructor that is not deleted.
   bool hasSimpleDestructor() const {
     return !hasUserDeclaredDestructor() &&
            !data().DefaultedDestructorIsDeleted;
   }
 
-  /// \brief Determine whether this class has any default constructors.
+  /// Determine whether this class has any default constructors.
   bool hasDefaultConstructor() const {
     return (data().DeclaredSpecialMembers & SMF_DefaultConstructor) ||
            needsImplicitDefaultConstructor();
   }
 
-  /// \brief Determine if we need to declare a default constructor for
+  /// Determine if we need to declare a default constructor for
   /// this class.
   ///
   /// This value is used for lazy creation of default constructors.
@@ -953,33 +953,33 @@
            !isLambda();
   }
 
-  /// \brief Determine whether this class has any user-declared constructors.
+  /// Determine whether this class has any user-declared constructors.
   ///
   /// When true, a default constructor will not be implicitly declared.
   bool hasUserDeclaredConstructor() const {
     return data().UserDeclaredConstructor;
   }
 
-  /// \brief Whether this class has a user-provided default constructor
+  /// Whether this class has a user-provided default constructor
   /// per C++11.
   bool hasUserProvidedDefaultConstructor() const {
     return data().UserProvidedDefaultConstructor;
   }
 
-  /// \brief Determine whether this class has a user-declared copy constructor.
+  /// Determine whether this class has a user-declared copy constructor.
   ///
   /// When false, a copy constructor will be implicitly declared.
   bool hasUserDeclaredCopyConstructor() const {
     return data().UserDeclaredSpecialMembers & SMF_CopyConstructor;
   }
 
-  /// \brief Determine whether this class needs an implicit copy
+  /// Determine whether this class needs an implicit copy
   /// constructor to be lazily declared.
   bool needsImplicitCopyConstructor() const {
     return !(data().DeclaredSpecialMembers & SMF_CopyConstructor);
   }
 
-  /// \brief Determine whether we need to eagerly declare a defaulted copy
+  /// Determine whether we need to eagerly declare a defaulted copy
   /// constructor for this class.
   bool needsOverloadResolutionForCopyConstructor() const {
     // C++17 [class.copy.ctor]p6:
@@ -994,7 +994,7 @@
     return data().NeedOverloadResolutionForCopyConstructor;
   }
 
-  /// \brief Determine whether an implicit copy constructor for this type
+  /// Determine whether an implicit copy constructor for this type
   /// would have a parameter with a const-qualified reference type.
   bool implicitCopyConstructorHasConstParam() const {
     return data().ImplicitCopyConstructorCanHaveConstParamForNonVBase &&
@@ -1002,7 +1002,7 @@
             data().ImplicitCopyConstructorCanHaveConstParamForVBase);
   }
 
-  /// \brief Determine whether this class has a copy constructor with
+  /// Determine whether this class has a copy constructor with
   /// a parameter type which is a reference to a const-qualified type.
   bool hasCopyConstructorWithConstParam() const {
     return data().HasDeclaredCopyConstructorWithConstParam ||
@@ -1010,7 +1010,7 @@
             implicitCopyConstructorHasConstParam());
   }
 
-  /// \brief Whether this class has a user-declared move constructor or
+  /// Whether this class has a user-declared move constructor or
   /// assignment operator.
   ///
   /// When false, a move constructor and assignment operator may be
@@ -1020,19 +1020,19 @@
              (SMF_MoveConstructor | SMF_MoveAssignment);
   }
 
-  /// \brief Determine whether this class has had a move constructor
+  /// Determine whether this class has had a move constructor
   /// declared by the user.
   bool hasUserDeclaredMoveConstructor() const {
     return data().UserDeclaredSpecialMembers & SMF_MoveConstructor;
   }
 
-  /// \brief Determine whether this class has a move constructor.
+  /// Determine whether this class has a move constructor.
   bool hasMoveConstructor() const {
     return (data().DeclaredSpecialMembers & SMF_MoveConstructor) ||
            needsImplicitMoveConstructor();
   }
 
-  /// \brief Set that we attempted to declare an implicit copy
+  /// Set that we attempted to declare an implicit copy
   /// constructor, but overload resolution failed so we deleted it.
   void setImplicitCopyConstructorIsDeleted() {
     assert((data().DefaultedCopyConstructorIsDeleted ||
@@ -1041,7 +1041,7 @@
     data().DefaultedCopyConstructorIsDeleted = true;
   }
 
-  /// \brief Set that we attempted to declare an implicit move
+  /// Set that we attempted to declare an implicit move
   /// constructor, but overload resolution failed so we deleted it.
   void setImplicitMoveConstructorIsDeleted() {
     assert((data().DefaultedMoveConstructorIsDeleted ||
@@ -1050,7 +1050,7 @@
     data().DefaultedMoveConstructorIsDeleted = true;
   }
 
-  /// \brief Set that we attempted to declare an implicit destructor,
+  /// Set that we attempted to declare an implicit destructor,
   /// but overload resolution failed so we deleted it.
   void setImplicitDestructorIsDeleted() {
     assert((data().DefaultedDestructorIsDeleted ||
@@ -1059,7 +1059,7 @@
     data().DefaultedDestructorIsDeleted = true;
   }
 
-  /// \brief Determine whether this class should get an implicit move
+  /// Determine whether this class should get an implicit move
   /// constructor or if any existing special member function inhibits this.
   bool needsImplicitMoveConstructor() const {
     return !(data().DeclaredSpecialMembers & SMF_MoveConstructor) &&
@@ -1069,13 +1069,13 @@
            !hasUserDeclaredDestructor();
   }
 
-  /// \brief Determine whether we need to eagerly declare a defaulted move
+  /// Determine whether we need to eagerly declare a defaulted move
   /// constructor for this class.
   bool needsOverloadResolutionForMoveConstructor() const {
     return data().NeedOverloadResolutionForMoveConstructor;
   }
 
-  /// \brief Determine whether this class has a user-declared copy assignment
+  /// Determine whether this class has a user-declared copy assignment
   /// operator.
   ///
   /// When false, a copy assignment operator will be implicitly declared.
@@ -1083,25 +1083,25 @@
     return data().UserDeclaredSpecialMembers & SMF_CopyAssignment;
   }
 
-  /// \brief Determine whether this class needs an implicit copy
+  /// Determine whether this class needs an implicit copy
   /// assignment operator to be lazily declared.
   bool needsImplicitCopyAssignment() const {
     return !(data().DeclaredSpecialMembers & SMF_CopyAssignment);
   }
 
-  /// \brief Determine whether we need to eagerly declare a defaulted copy
+  /// Determine whether we need to eagerly declare a defaulted copy
   /// assignment operator for this class.
   bool needsOverloadResolutionForCopyAssignment() const {
     return data().HasMutableFields;
   }
 
-  /// \brief Determine whether an implicit copy assignment operator for this
+  /// Determine whether an implicit copy assignment operator for this
   /// type would have a parameter with a const-qualified reference type.
   bool implicitCopyAssignmentHasConstParam() const {
     return data().ImplicitCopyAssignmentHasConstParam;
   }
 
-  /// \brief Determine whether this class has a copy assignment operator with
+  /// Determine whether this class has a copy assignment operator with
   /// a parameter type which is a reference to a const-qualified type or is not
   /// a reference.
   bool hasCopyAssignmentWithConstParam() const {
@@ -1110,19 +1110,19 @@
             implicitCopyAssignmentHasConstParam());
   }
 
-  /// \brief Determine whether this class has had a move assignment
+  /// Determine whether this class has had a move assignment
   /// declared by the user.
   bool hasUserDeclaredMoveAssignment() const {
     return data().UserDeclaredSpecialMembers & SMF_MoveAssignment;
   }
 
-  /// \brief Determine whether this class has a move assignment operator.
+  /// Determine whether this class has a move assignment operator.
   bool hasMoveAssignment() const {
     return (data().DeclaredSpecialMembers & SMF_MoveAssignment) ||
            needsImplicitMoveAssignment();
   }
 
-  /// \brief Set that we attempted to declare an implicit move assignment
+  /// Set that we attempted to declare an implicit move assignment
   /// operator, but overload resolution failed so we deleted it.
   void setImplicitMoveAssignmentIsDeleted() {
     assert((data().DefaultedMoveAssignmentIsDeleted ||
@@ -1131,7 +1131,7 @@
     data().DefaultedMoveAssignmentIsDeleted = true;
   }
 
-  /// \brief Determine whether this class should get an implicit move
+  /// Determine whether this class should get an implicit move
   /// assignment operator or if any existing special member function inhibits
   /// this.
   bool needsImplicitMoveAssignment() const {
@@ -1146,53 +1146,53 @@
            !isLambda();
   }
 
-  /// \brief Determine whether we need to eagerly declare a move assignment
+  /// Determine whether we need to eagerly declare a move assignment
   /// operator for this class.
   bool needsOverloadResolutionForMoveAssignment() const {
     return data().NeedOverloadResolutionForMoveAssignment;
   }
 
-  /// \brief Determine whether this class has a user-declared destructor.
+  /// Determine whether this class has a user-declared destructor.
   ///
   /// When false, a destructor will be implicitly declared.
   bool hasUserDeclaredDestructor() const {
     return data().UserDeclaredSpecialMembers & SMF_Destructor;
   }
 
-  /// \brief Determine whether this class needs an implicit destructor to
+  /// Determine whether this class needs an implicit destructor to
   /// be lazily declared.
   bool needsImplicitDestructor() const {
     return !(data().DeclaredSpecialMembers & SMF_Destructor);
   }
 
-  /// \brief Determine whether we need to eagerly declare a destructor for this
+  /// Determine whether we need to eagerly declare a destructor for this
   /// class.
   bool needsOverloadResolutionForDestructor() const {
     return data().NeedOverloadResolutionForDestructor;
   }
 
-  /// \brief Determine whether this class describes a lambda function object.
+  /// Determine whether this class describes a lambda function object.
   bool isLambda() const {
     // An update record can't turn a non-lambda into a lambda.
     auto *DD = DefinitionData;
     return DD && DD->IsLambda;
   }
 
-  /// \brief Determine whether this class describes a generic 
+  /// Determine whether this class describes a generic 
   /// lambda function object (i.e. function call operator is
   /// a template). 
   bool isGenericLambda() const; 
 
-  /// \brief Retrieve the lambda call operator of the closure type
+  /// Retrieve the lambda call operator of the closure type
   /// if this is a closure type.
   CXXMethodDecl *getLambdaCallOperator() const; 
 
-  /// \brief Retrieve the lambda static invoker, the address of which
+  /// Retrieve the lambda static invoker, the address of which
   /// is returned by the conversion operator, and the body of which
   /// is forwarded to the lambda call operator. 
   CXXMethodDecl *getLambdaStaticInvoker() const; 
 
-  /// \brief Retrieve the generic lambda's template parameter list.
+  /// Retrieve the generic lambda's template parameter list.
   /// Returns null if the class does not represent a lambda or a generic 
   /// lambda.
   TemplateParameterList *getGenericLambdaTemplateParameterList() const;
@@ -1202,7 +1202,7 @@
     return static_cast<LambdaCaptureDefault>(getLambdaData().CaptureDefault);
   }
 
-  /// \brief For a closure type, retrieve the mapping from captured
+  /// For a closure type, retrieve the mapping from captured
   /// variables and \c this to the non-static data members that store the
   /// values or references of the captures.
   ///
@@ -1248,7 +1248,7 @@
   /// this class must currently be in the process of being defined.
   void removeConversion(const NamedDecl *Old);
 
-  /// \brief Get all conversion functions visible in current class,
+  /// Get all conversion functions visible in current class,
   /// including conversion function templates.
   llvm::iterator_range<conversion_iterator> getVisibleConversionFunctions();
 
@@ -1258,12 +1258,12 @@
   /// functions (C++ [dcl.init.aggr]p1).
   bool isAggregate() const { return data().Aggregate; }
 
-  /// \brief Whether this class has any in-class initializers
+  /// Whether this class has any in-class initializers
   /// for non-static data members (including those in anonymous unions or
   /// structs).
   bool hasInClassInitializer() const { return data().HasInClassInitializer; }
 
-  /// \brief Whether this class or any of its subobjects has any members of
+  /// Whether this class or any of its subobjects has any members of
   /// reference type which would make value-initialization ill-formed.
   ///
   /// Per C++03 [dcl.init]p5:
@@ -1276,7 +1276,7 @@
            data().HasUninitializedReferenceMember;
   }
 
-  /// \brief Whether this class is a POD-type (C++ [class]p4)
+  /// Whether this class is a POD-type (C++ [class]p4)
   ///
   /// For purposes of this function a class is POD if it is an aggregate
   /// that has no non-static non-POD data members, no reference data
@@ -1286,11 +1286,11 @@
   /// Note that this is the C++ TR1 definition of POD.
   bool isPOD() const { return data().PlainOldData; }
 
-  /// \brief True if this class is C-like, without C++-specific features, e.g.
+  /// True if this class is C-like, without C++-specific features, e.g.
   /// it contains only public fields, no bases, tag kind is not 'class', etc.
   bool isCLike() const;
 
-  /// \brief Determine whether this is an empty class in the sense of
+  /// Determine whether this is an empty class in the sense of
   /// (C++11 [meta.unary.prop]).
   ///
   /// The CXXRecordDecl is a class type, but not a union type,
@@ -1301,7 +1301,7 @@
   /// \note This does NOT include a check for union-ness.
   bool isEmpty() const { return data().Empty; }
 
-  /// \brief Determine whether this class has direct non-static data members.
+  /// Determine whether this class has direct non-static data members.
   bool hasDirectFields() const {
     auto &D = data();
     return D.HasPublicFields || D.HasProtectedFields || D.HasPrivateFields;
@@ -1311,36 +1311,36 @@
   /// which means that the class contains or inherits a virtual function.
   bool isPolymorphic() const { return data().Polymorphic; }
 
-  /// \brief Determine whether this class has a pure virtual function.
+  /// Determine whether this class has a pure virtual function.
   ///
   /// The class is is abstract per (C++ [class.abstract]p2) if it declares
   /// a pure virtual function or inherits a pure virtual function that is
   /// not overridden.
   bool isAbstract() const { return data().Abstract; }
 
-  /// \brief Determine whether this class is standard-layout per 
+  /// Determine whether this class is standard-layout per 
   /// C++ [class]p7.
   bool isStandardLayout() const { return data().IsStandardLayout; }
 
-  /// \brief Determine whether this class was standard-layout per 
+  /// Determine whether this class was standard-layout per 
   /// C++11 [class]p7, specifically using the C++11 rules without any DRs.
   bool isCXX11StandardLayout() const { return data().IsCXX11StandardLayout; }
 
-  /// \brief Determine whether this class, or any of its class subobjects,
+  /// Determine whether this class, or any of its class subobjects,
   /// contains a mutable field.
   bool hasMutableFields() const { return data().HasMutableFields; }
 
-  /// \brief Determine whether this class has any variant members.
+  /// Determine whether this class has any variant members.
   bool hasVariantMembers() const { return data().HasVariantMembers; }
 
-  /// \brief Determine whether this class has a trivial default constructor
+  /// Determine whether this class has a trivial default constructor
   /// (C++11 [class.ctor]p5).
   bool hasTrivialDefaultConstructor() const {
     return hasDefaultConstructor() &&
            (data().HasTrivialSpecialMembers & SMF_DefaultConstructor);
   }
 
-  /// \brief Determine whether this class has a non-trivial default constructor
+  /// Determine whether this class has a non-trivial default constructor
   /// (C++11 [class.ctor]p5).
   bool hasNonTrivialDefaultConstructor() const {
     return (data().DeclaredNonTrivialSpecialMembers & SMF_DefaultConstructor) ||
@@ -1348,7 +1348,7 @@
             !(data().HasTrivialSpecialMembers & SMF_DefaultConstructor));
   }
 
-  /// \brief Determine whether this class has at least one constexpr constructor
+  /// Determine whether this class has at least one constexpr constructor
   /// other than the copy or move constructors.
   bool hasConstexprNonCopyMoveConstructor() const {
     return data().HasConstexprNonCopyMoveConstructor ||
@@ -1356,21 +1356,21 @@
             defaultedDefaultConstructorIsConstexpr());
   }
 
-  /// \brief Determine whether a defaulted default constructor for this class
+  /// Determine whether a defaulted default constructor for this class
   /// would be constexpr.
   bool defaultedDefaultConstructorIsConstexpr() const {
     return data().DefaultedDefaultConstructorIsConstexpr &&
            (!isUnion() || hasInClassInitializer() || !hasVariantMembers());
   }
 
-  /// \brief Determine whether this class has a constexpr default constructor.
+  /// Determine whether this class has a constexpr default constructor.
   bool hasConstexprDefaultConstructor() const {
     return data().HasConstexprDefaultConstructor ||
            (needsImplicitDefaultConstructor() &&
             defaultedDefaultConstructorIsConstexpr());
   }
 
-  /// \brief Determine whether this class has a trivial copy constructor
+  /// Determine whether this class has a trivial copy constructor
   /// (C++ [class.copy]p6, C++11 [class.copy]p12)
   bool hasTrivialCopyConstructor() const {
     return data().HasTrivialSpecialMembers & SMF_CopyConstructor;
@@ -1380,7 +1380,7 @@
     return data().HasTrivialSpecialMembersForCall & SMF_CopyConstructor;
   }
 
-  /// \brief Determine whether this class has a non-trivial copy constructor
+  /// Determine whether this class has a non-trivial copy constructor
   /// (C++ [class.copy]p6, C++11 [class.copy]p12)
   bool hasNonTrivialCopyConstructor() const {
     return data().DeclaredNonTrivialSpecialMembers & SMF_CopyConstructor ||
@@ -1393,7 +1393,7 @@
            !hasTrivialCopyConstructorForCall();
   }
 
-  /// \brief Determine whether this class has a trivial move constructor
+  /// Determine whether this class has a trivial move constructor
   /// (C++11 [class.copy]p12)
   bool hasTrivialMoveConstructor() const {
     return hasMoveConstructor() &&
@@ -1405,7 +1405,7 @@
            (data().HasTrivialSpecialMembersForCall & SMF_MoveConstructor);
   }
 
-  /// \brief Determine whether this class has a non-trivial move constructor
+  /// Determine whether this class has a non-trivial move constructor
   /// (C++11 [class.copy]p12)
   bool hasNonTrivialMoveConstructor() const {
     return (data().DeclaredNonTrivialSpecialMembers & SMF_MoveConstructor) ||
@@ -1420,27 +1420,27 @@
             !(data().HasTrivialSpecialMembersForCall & SMF_MoveConstructor));
   }
 
-  /// \brief Determine whether this class has a trivial copy assignment operator
+  /// Determine whether this class has a trivial copy assignment operator
   /// (C++ [class.copy]p11, C++11 [class.copy]p25)
   bool hasTrivialCopyAssignment() const {
     return data().HasTrivialSpecialMembers & SMF_CopyAssignment;
   }
 
-  /// \brief Determine whether this class has a non-trivial copy assignment
+  /// Determine whether this class has a non-trivial copy assignment
   /// operator (C++ [class.copy]p11, C++11 [class.copy]p25)
   bool hasNonTrivialCopyAssignment() const {
     return data().DeclaredNonTrivialSpecialMembers & SMF_CopyAssignment ||
            !hasTrivialCopyAssignment();
   }
 
-  /// \brief Determine whether this class has a trivial move assignment operator
+  /// Determine whether this class has a trivial move assignment operator
   /// (C++11 [class.copy]p25)
   bool hasTrivialMoveAssignment() const {
     return hasMoveAssignment() &&
            (data().HasTrivialSpecialMembers & SMF_MoveAssignment);
   }
 
-  /// \brief Determine whether this class has a non-trivial move assignment
+  /// Determine whether this class has a non-trivial move assignment
   /// operator (C++11 [class.copy]p25)
   bool hasNonTrivialMoveAssignment() const {
     return (data().DeclaredNonTrivialSpecialMembers & SMF_MoveAssignment) ||
@@ -1448,7 +1448,7 @@
             !(data().HasTrivialSpecialMembers & SMF_MoveAssignment));
   }
 
-  /// \brief Determine whether this class has a trivial destructor
+  /// Determine whether this class has a trivial destructor
   /// (C++ [class.dtor]p3)
   bool hasTrivialDestructor() const {
     return data().HasTrivialSpecialMembers & SMF_Destructor;
@@ -1458,7 +1458,7 @@
     return data().HasTrivialSpecialMembersForCall & SMF_Destructor;
   }
 
-  /// \brief Determine whether this class has a non-trivial destructor
+  /// Determine whether this class has a non-trivial destructor
   /// (C++ [class.dtor]p3)
   bool hasNonTrivialDestructor() const {
     return !(data().HasTrivialSpecialMembers & SMF_Destructor);
@@ -1473,7 +1473,7 @@
         (SMF_CopyConstructor | SMF_MoveConstructor | SMF_Destructor);
   }
 
-  /// \brief Determine whether declaring a const variable with this type is ok
+  /// Determine whether declaring a const variable with this type is ok
   /// per core issue 253.
   bool allowConstDefaultInit() const {
     return !data().HasUninitializedFields ||
@@ -1481,7 +1481,7 @@
              needsImplicitDefaultConstructor());
   }
 
-  /// \brief Determine whether this class has a destructor which has no
+  /// Determine whether this class has a destructor which has no
   /// semantic effect.
   ///
   /// Any such destructor will be trivial, public, defaulted and not deleted,
@@ -1490,29 +1490,29 @@
     return data().HasIrrelevantDestructor;
   }
 
-  /// \brief Determine whether this class has a non-literal or/ volatile type
+  /// Determine whether this class has a non-literal or/ volatile type
   /// non-static data member or base class.
   bool hasNonLiteralTypeFieldsOrBases() const {
     return data().HasNonLiteralTypeFieldsOrBases;
   }
 
-  /// \brief Determine whether this class has a using-declaration that names
+  /// Determine whether this class has a using-declaration that names
   /// a user-declared base class constructor.
   bool hasInheritedConstructor() const {
     return data().HasInheritedConstructor;
   }
 
-  /// \brief Determine whether this class has a using-declaration that names
+  /// Determine whether this class has a using-declaration that names
   /// a base class assignment operator.
   bool hasInheritedAssignment() const {
     return data().HasInheritedAssignment;
   }
 
-  /// \brief Determine whether this class is considered trivially copyable per
+  /// Determine whether this class is considered trivially copyable per
   /// (C++11 [class]p6).
   bool isTriviallyCopyable() const;
 
-  /// \brief Determine whether this class is considered trivial.
+  /// Determine whether this class is considered trivial.
   ///
   /// C++11 [class]p6:
   ///    "A trivial class is a class that has a trivial default constructor and
@@ -1521,7 +1521,7 @@
     return isTriviallyCopyable() && hasTrivialDefaultConstructor();
   }
 
-  /// \brief Determine whether this class is a literal type.
+  /// Determine whether this class is a literal type.
   ///
   /// C++11 [basic.types]p10:
   ///   A class type that has all the following properties:
@@ -1547,7 +1547,7 @@
             hasTrivialDefaultConstructor());
   }
 
-  /// \brief If this record is an instantiation of a member class,
+  /// If this record is an instantiation of a member class,
   /// retrieves the member class from which it was instantiated.
   ///
   /// This routine will return non-null for (non-templated) member
@@ -1568,17 +1568,17 @@
   /// declaration returned by getInstantiatedFromMemberClass().
   CXXRecordDecl *getInstantiatedFromMemberClass() const;
 
-  /// \brief If this class is an instantiation of a member class of a
+  /// If this class is an instantiation of a member class of a
   /// class template specialization, retrieves the member specialization
   /// information.
   MemberSpecializationInfo *getMemberSpecializationInfo() const;
 
-  /// \brief Specify that this record is an instantiation of the
+  /// Specify that this record is an instantiation of the
   /// member class \p RD.
   void setInstantiationOfMemberClass(CXXRecordDecl *RD,
                                      TemplateSpecializationKind TSK);
 
-  /// \brief Retrieves the class template that is described by this
+  /// Retrieves the class template that is described by this
   /// class declaration.
   ///
   /// Every class template is represented as a ClassTemplateDecl and a
@@ -1593,15 +1593,15 @@
 
   void setDescribedClassTemplate(ClassTemplateDecl *Template);
 
-  /// \brief Determine whether this particular class is a specialization or
+  /// Determine whether this particular class is a specialization or
   /// instantiation of a class template or member class of a class template,
   /// and how it was instantiated or specialized.
   TemplateSpecializationKind getTemplateSpecializationKind() const;
 
-  /// \brief Set the kind of specialization or template instantiation this is.
+  /// Set the kind of specialization or template instantiation this is.
   void setTemplateSpecializationKind(TemplateSpecializationKind TSK);
 
-  /// \brief Retrieve the record declaration from which this record could be
+  /// Retrieve the record declaration from which this record could be
   /// instantiated. Returns null if this class is not a template instantiation.
   const CXXRecordDecl *getTemplateInstantiationPattern() const;
 
@@ -1610,14 +1610,14 @@
                                            ->getTemplateInstantiationPattern());
   }
 
-  /// \brief Returns the destructor decl for this class.
+  /// Returns the destructor decl for this class.
   CXXDestructorDecl *getDestructor() const;
 
-  /// \brief Returns true if the class destructor, or any implicitly invoked
+  /// Returns true if the class destructor, or any implicitly invoked
   /// destructors are marked noreturn.
   bool isAnyDestructorNoReturn() const;
 
-  /// \brief If the class is a local class [class.local], returns
+  /// If the class is a local class [class.local], returns
   /// the enclosing function declaration.
   const FunctionDecl *isLocalClass() const {
     if (const auto *RD = dyn_cast<CXXRecordDecl>(getDeclContext()))
@@ -1631,11 +1631,11 @@
         const_cast<const CXXRecordDecl*>(this)->isLocalClass());
   }
 
-  /// \brief Determine whether this dependent class is a current instantiation,
+  /// Determine whether this dependent class is a current instantiation,
   /// when viewed from within the given context.
   bool isCurrentInstantiation(const DeclContext *CurContext) const;
 
-  /// \brief Determine whether this class is derived from the class \p Base.
+  /// Determine whether this class is derived from the class \p Base.
   ///
   /// This routine only determines whether this class is derived from \p Base,
   /// but does not account for factors that may make a Derived -> Base class
@@ -1647,7 +1647,7 @@
   /// \returns true if this class is derived from Base, false otherwise.
   bool isDerivedFrom(const CXXRecordDecl *Base) const;
 
-  /// \brief Determine whether this class is derived from the type \p Base.
+  /// Determine whether this class is derived from the type \p Base.
   ///
   /// This routine only determines whether this class is derived from \p Base,
   /// but does not account for factors that may make a Derived -> Base class
@@ -1665,7 +1665,7 @@
   /// tangling input and output in \p Paths
   bool isDerivedFrom(const CXXRecordDecl *Base, CXXBasePaths &Paths) const;
 
-  /// \brief Determine whether this class is virtually derived from
+  /// Determine whether this class is virtually derived from
   /// the class \p Base.
   ///
   /// This routine only determines whether this class is virtually
@@ -1680,11 +1680,11 @@
   /// false otherwise.
   bool isVirtuallyDerivedFrom(const CXXRecordDecl *Base) const;
 
-  /// \brief Determine whether this class is provably not derived from
+  /// Determine whether this class is provably not derived from
   /// the type \p Base.
   bool isProvablyNotDerivedFrom(const CXXRecordDecl *Base) const;
 
-  /// \brief Function type used by forallBases() as a callback.
+  /// Function type used by forallBases() as a callback.
   ///
   /// \param BaseDefinition the definition of the base class
   ///
@@ -1692,7 +1692,7 @@
   using ForallBasesCallback =
       llvm::function_ref<bool(const CXXRecordDecl *BaseDefinition)>;
 
-  /// \brief Determines if the given callback holds for all the direct
+  /// Determines if the given callback holds for all the direct
   /// or indirect base classes of this type.
   ///
   /// The class itself does not count as a base class.  This routine
@@ -1708,7 +1708,7 @@
   bool forallBases(ForallBasesCallback BaseMatches,
                    bool AllowShortCircuit = true) const;
 
-  /// \brief Function type used by lookupInBases() to determine whether a
+  /// Function type used by lookupInBases() to determine whether a
   /// specific base class subobject matches the lookup criteria.
   ///
   /// \param Specifier the base-class specifier that describes the inheritance
@@ -1722,7 +1722,7 @@
       llvm::function_ref<bool(const CXXBaseSpecifier *Specifier,
                               CXXBasePath &Path)>;
 
-  /// \brief Look for entities within the base classes of this C++ class,
+  /// Look for entities within the base classes of this C++ class,
   /// transitively searching all base class subobjects.
   ///
   /// This routine uses the callback function \p BaseMatches to find base
@@ -1746,7 +1746,7 @@
   bool lookupInBases(BaseMatchesCallback BaseMatches, CXXBasePaths &Paths,
                      bool LookupInDependent = false) const;
 
-  /// \brief Base-class lookup callback that determines whether the given
+  /// Base-class lookup callback that determines whether the given
   /// base class specifier refers to a specific class declaration.
   ///
   /// This callback can be used with \c lookupInBases() to determine whether
@@ -1756,7 +1756,7 @@
   static bool FindBaseClass(const CXXBaseSpecifier *Specifier,
                             CXXBasePath &Path, const CXXRecordDecl *BaseRecord);
 
-  /// \brief Base-class lookup callback that determines whether the
+  /// Base-class lookup callback that determines whether the
   /// given base class specifier refers to a specific class
   /// declaration and describes virtual derivation.
   ///
@@ -1769,7 +1769,7 @@
                                    CXXBasePath &Path,
                                    const CXXRecordDecl *BaseRecord);
 
-  /// \brief Base-class lookup callback that determines whether there exists
+  /// Base-class lookup callback that determines whether there exists
   /// a tag with the given name.
   ///
   /// This callback can be used with \c lookupInBases() to find tag members
@@ -1777,7 +1777,7 @@
   static bool FindTagMember(const CXXBaseSpecifier *Specifier,
                             CXXBasePath &Path, DeclarationName Name);
 
-  /// \brief Base-class lookup callback that determines whether there exists
+  /// Base-class lookup callback that determines whether there exists
   /// a member with the given name.
   ///
   /// This callback can be used with \c lookupInBases() to find members
@@ -1785,7 +1785,7 @@
   static bool FindOrdinaryMember(const CXXBaseSpecifier *Specifier,
                                  CXXBasePath &Path, DeclarationName Name);
 
-  /// \brief Base-class lookup callback that determines whether there exists
+  /// Base-class lookup callback that determines whether there exists
   /// a member with the given name.
   ///
   /// This callback can be used with \c lookupInBases() to find members
@@ -1795,7 +1795,7 @@
   FindOrdinaryMemberInDependentClasses(const CXXBaseSpecifier *Specifier,
                                        CXXBasePath &Path, DeclarationName Name);
 
-  /// \brief Base-class lookup callback that determines whether there exists
+  /// Base-class lookup callback that determines whether there exists
   /// an OpenMP declare reduction member with the given name.
   ///
   /// This callback can be used with \c lookupInBases() to find members
@@ -1803,7 +1803,7 @@
   static bool FindOMPReductionMember(const CXXBaseSpecifier *Specifier,
                                      CXXBasePath &Path, DeclarationName Name);
 
-  /// \brief Base-class lookup callback that determines whether there exists
+  /// Base-class lookup callback that determines whether there exists
   /// a member with the given name that can be used in a nested-name-specifier.
   ///
   /// This callback can be used with \c lookupInBases() to find members of
@@ -1813,12 +1813,12 @@
                                             CXXBasePath &Path,
                                             DeclarationName Name);
 
-  /// \brief Retrieve the final overriders for each virtual member
+  /// Retrieve the final overriders for each virtual member
   /// function in the class hierarchy where this class is the
   /// most-derived class in the class hierarchy.
   void getFinalOverriders(CXXFinalOverriderMap &FinaOverriders) const;
 
-  /// \brief Get the indirect primary bases for this class.
+  /// Get the indirect primary bases for this class.
   void getIndirectPrimaryBases(CXXIndirectPrimaryBaseSet& Bases) const;
 
   /// Performs an imprecise lookup of a dependent name in this class.
@@ -1834,7 +1834,7 @@
   /// GraphViz.
   void viewInheritance(ASTContext& Context) const;
 
-  /// \brief Calculates the access of a decl that is reached
+  /// Calculates the access of a decl that is reached
   /// along a path.
   static AccessSpecifier MergeAccess(AccessSpecifier PathAccess,
                                      AccessSpecifier DeclAccess) {
@@ -1843,16 +1843,16 @@
     return (PathAccess > DeclAccess ? PathAccess : DeclAccess);
   }
 
-  /// \brief Indicates that the declaration of a defaulted or deleted special
+  /// Indicates that the declaration of a defaulted or deleted special
   /// member function is now complete.
   void finishedDefaultedOrDeletedMember(CXXMethodDecl *MD);
 
   void setTrivialForCallFlags(CXXMethodDecl *MD);
 
-  /// \brief Indicates that the definition of this class is now complete.
+  /// Indicates that the definition of this class is now complete.
   void completeDefinition() override;
 
-  /// \brief Indicates that the definition of this class is now complete,
+  /// Indicates that the definition of this class is now complete,
   /// and provides a final overrider map to help determine
   ///
   /// \param FinalOverriders The final overrider map for this class, which can
@@ -1861,7 +1861,7 @@
   /// definition.
   void completeDefinition(CXXFinalOverriderMap *FinalOverriders);
 
-  /// \brief Determine whether this class may end up being abstract, even though
+  /// Determine whether this class may end up being abstract, even though
   /// it is not yet known to be abstract.
   ///
   /// \returns true if this class is not known to be abstract but has any
@@ -1870,7 +1870,7 @@
   /// actually abstract.
   bool mayBeAbstract() const;
 
-  /// \brief If this is the closure type of a lambda expression, retrieve the
+  /// If this is the closure type of a lambda expression, retrieve the
   /// number to be used for name mangling in the Itanium C++ ABI.
   ///
   /// Zero indicates that this closure type has internal linkage, so the 
@@ -1881,7 +1881,7 @@
     return getLambdaData().ManglingNumber;
   }
   
-  /// \brief Retrieve the declaration that provides additional context for a 
+  /// Retrieve the declaration that provides additional context for a 
   /// lambda, when the normal declaration context is not specific enough.
   ///
   /// Certain contexts (default arguments of in-class function parameters and 
@@ -1892,17 +1892,17 @@
   /// the declaration context suffices.
   Decl *getLambdaContextDecl() const;
   
-  /// \brief Set the mangling number and context declaration for a lambda
+  /// Set the mangling number and context declaration for a lambda
   /// class.
   void setLambdaMangling(unsigned ManglingNumber, Decl *ContextDecl) {
     getLambdaData().ManglingNumber = ManglingNumber;
     getLambdaData().ContextDecl = ContextDecl;
   }
 
-  /// \brief Returns the inheritance model used for this record.
+  /// Returns the inheritance model used for this record.
   MSInheritanceAttr::Spelling getMSInheritanceModel() const;
 
-  /// \brief Calculate what the inheritance model would be for this class.
+  /// Calculate what the inheritance model would be for this class.
   MSInheritanceAttr::Spelling calculateInheritanceModel() const;
 
   /// In the Microsoft C++ ABI, use zero for the field offset of a null data
@@ -1917,11 +1917,11 @@
            (hasDefinition() && isPolymorphic());
   }
 
-  /// \brief Controls when vtordisps will be emitted if this record is used as a
+  /// Controls when vtordisps will be emitted if this record is used as a
   /// virtual base.
   MSVtorDispAttr::Mode getMSVtorDispMode() const;
 
-  /// \brief Determine whether this lambda expression was known to be dependent
+  /// Determine whether this lambda expression was known to be dependent
   /// at the time it was created, even if its context does not appear to be
   /// dependent.
   ///
@@ -1940,7 +1940,7 @@
     return getLambdaData().MethodTyInfo;
   }
 
-  // \brief Determine whether this type is an Interface Like type for
+  // Determine whether this type is an Interface Like type for
   // __interface inheritance purposes.
   bool isInterfaceLike() const;
 
@@ -1950,7 +1950,7 @@
   }
 };
 
-/// \brief Represents a C++ deduction guide declaration.
+/// Represents a C++ deduction guide declaration.
 ///
 /// \code
 /// template<typename T> struct A { A(); A(T); };
@@ -2009,7 +2009,7 @@
   static bool classofKind(Kind K) { return K == CXXDeductionGuide; }
 };
 
-/// \brief Represents a static or instance method of a struct/union/class.
+/// Represents a static or instance method of a struct/union/class.
 ///
 /// In the terminology of the C++ Standard, these are the (static and
 /// non-static) member functions, whether virtual or not.
@@ -2082,16 +2082,16 @@
         Base, IsAppleKext);
   }
 
-  /// \brief Determine whether this is a usual deallocation function
+  /// Determine whether this is a usual deallocation function
   /// (C++ [basic.stc.dynamic.deallocation]p2), which is an overloaded
   /// delete or delete[] operator with a particular signature.
   bool isUsualDeallocationFunction() const;
 
-  /// \brief Determine whether this is a copy-assignment operator, regardless
+  /// Determine whether this is a copy-assignment operator, regardless
   /// of whether it was declared implicitly or explicitly.
   bool isCopyAssignmentOperator() const;
 
-  /// \brief Determine whether this is a move assignment operator.
+  /// Determine whether this is a move assignment operator.
   bool isMoveAssignmentOperator() const;
 
   CXXMethodDecl *getCanonicalDecl() override {
@@ -2144,7 +2144,7 @@
              cast<CXXRecordDecl>(FunctionDecl::getParent()));
   }
 
-  /// \brief Returns the type of the \c this pointer.
+  /// Returns the type of the \c this pointer.
   ///
   /// Should only be called for instance (i.e., non-static) methods. Note
   /// that for the call operator of a lambda closure type, this returns the
@@ -2156,7 +2156,7 @@
     return getType()->getAs<FunctionProtoType>()->getTypeQuals();
   }
 
-  /// \brief Retrieve the ref-qualifier associated with this method.
+  /// Retrieve the ref-qualifier associated with this method.
   ///
   /// In the following example, \c f() has an lvalue ref-qualifier, \c g()
   /// has an rvalue ref-qualifier, and \c h() has no ref-qualifier.
@@ -2173,7 +2173,7 @@
 
   bool hasInlineBody() const;
 
-  /// \brief Determine whether this is a lambda closure type's static member
+  /// Determine whether this is a lambda closure type's static member
   /// function that is used for the result of the lambda's conversion to
   /// function pointer (for a lambda with no captures).
   ///
@@ -2182,7 +2182,7 @@
   /// or clone the function call operator.
   bool isLambdaStaticInvoker() const;
 
-  /// \brief Find the method in \p RD that corresponds to this one.
+  /// Find the method in \p RD that corresponds to this one.
   ///
   /// Find if \p RD or one of the classes it inherits from override this method.
   /// If so, return it. \p RD is assumed to be a subclass of the class defining
@@ -2205,7 +2205,7 @@
   }
 };
 
-/// \brief Represents a C++ base or member initializer.
+/// Represents a C++ base or member initializer.
 ///
 /// This is part of a constructor initializer that
 /// initializes one non-static member variable or one base class. For
@@ -2221,13 +2221,13 @@
 /// };
 /// \endcode
 class CXXCtorInitializer final {
-  /// \brief Either the base class name/delegating constructor type (stored as
+  /// Either the base class name/delegating constructor type (stored as
   /// a TypeSourceInfo*), an normal field (FieldDecl), or an anonymous field
   /// (IndirectFieldDecl*) being initialized.
   llvm::PointerUnion3<TypeSourceInfo *, FieldDecl *, IndirectFieldDecl *>
     Initializee;
 
-  /// \brief The source location for the field name or, for a base initializer
+  /// The source location for the field name or, for a base initializer
   /// pack expansion, the location of the ellipsis.
   ///
   /// In the case of a delegating
@@ -2235,25 +2235,25 @@
   /// Initializee points to the CXXConstructorDecl (to allow loop detection).
   SourceLocation MemberOrEllipsisLocation;
 
-  /// \brief The argument used to initialize the base or member, which may
+  /// The argument used to initialize the base or member, which may
   /// end up constructing an object (when multiple arguments are involved).
   Stmt *Init;
 
-  /// \brief Location of the left paren of the ctor-initializer.
+  /// Location of the left paren of the ctor-initializer.
   SourceLocation LParenLoc;
 
-  /// \brief Location of the right paren of the ctor-initializer.
+  /// Location of the right paren of the ctor-initializer.
   SourceLocation RParenLoc;
 
-  /// \brief If the initializee is a type, whether that type makes this
+  /// If the initializee is a type, whether that type makes this
   /// a delegating initialization.
   unsigned IsDelegating : 1;
 
-  /// \brief If the initializer is a base initializer, this keeps track
+  /// If the initializer is a base initializer, this keeps track
   /// of whether the base is virtual or not.
   unsigned IsVirtual : 1;
 
-  /// \brief Whether or not the initializer is explicitly written
+  /// Whether or not the initializer is explicitly written
   /// in the sources.
   unsigned IsWritten : 1;
 
@@ -2262,35 +2262,35 @@
   unsigned SourceOrder : 13;
 
 public:
-  /// \brief Creates a new base-class initializer.
+  /// Creates a new base-class initializer.
   explicit
   CXXCtorInitializer(ASTContext &Context, TypeSourceInfo *TInfo, bool IsVirtual,
                      SourceLocation L, Expr *Init, SourceLocation R,
                      SourceLocation EllipsisLoc);
 
-  /// \brief Creates a new member initializer.
+  /// Creates a new member initializer.
   explicit
   CXXCtorInitializer(ASTContext &Context, FieldDecl *Member,
                      SourceLocation MemberLoc, SourceLocation L, Expr *Init,
                      SourceLocation R);
 
-  /// \brief Creates a new anonymous field initializer.
+  /// Creates a new anonymous field initializer.
   explicit
   CXXCtorInitializer(ASTContext &Context, IndirectFieldDecl *Member,
                      SourceLocation MemberLoc, SourceLocation L, Expr *Init,
                      SourceLocation R);
 
-  /// \brief Creates a new delegating initializer.
+  /// Creates a new delegating initializer.
   explicit
   CXXCtorInitializer(ASTContext &Context, TypeSourceInfo *TInfo,
                      SourceLocation L, Expr *Init, SourceLocation R);
 
-  /// \brief Determine whether this initializer is initializing a base class.
+  /// Determine whether this initializer is initializing a base class.
   bool isBaseInitializer() const {
     return Initializee.is<TypeSourceInfo*>() && !IsDelegating;
   }
 
-  /// \brief Determine whether this initializer is initializing a non-static
+  /// Determine whether this initializer is initializing a non-static
   /// data member.
   bool isMemberInitializer() const { return Initializee.is<FieldDecl*>(); }
 
@@ -2302,7 +2302,7 @@
     return Initializee.is<IndirectFieldDecl*>();
   }
 
-  /// \brief Determine whether this initializer is an implicit initializer
+  /// Determine whether this initializer is an implicit initializer
   /// generated for a field with an initializer defined on the member
   /// declaration.
   ///
@@ -2312,18 +2312,18 @@
     return Init->getStmtClass() == Stmt::CXXDefaultInitExprClass;
   }
 
-  /// \brief Determine whether this initializer is creating a delegating
+  /// Determine whether this initializer is creating a delegating
   /// constructor.
   bool isDelegatingInitializer() const {
     return Initializee.is<TypeSourceInfo*>() && IsDelegating;
   }
 
-  /// \brief Determine whether this initializer is a pack expansion.
+  /// Determine whether this initializer is a pack expansion.
   bool isPackExpansion() const {
     return isBaseInitializer() && MemberOrEllipsisLocation.isValid();
   }
 
-  // \brief For a pack expansion, returns the location of the ellipsis.
+  // For a pack expansion, returns the location of the ellipsis.
   SourceLocation getEllipsisLoc() const {
     assert(isPackExpansion() && "Initializer is not a pack expansion");
     return MemberOrEllipsisLocation;
@@ -2345,13 +2345,13 @@
     return IsVirtual;
   }
 
-  /// \brief Returns the declarator information for a base class or delegating
+  /// Returns the declarator information for a base class or delegating
   /// initializer.
   TypeSourceInfo *getTypeSourceInfo() const {
     return Initializee.dyn_cast<TypeSourceInfo *>();
   }
 
-  /// \brief If this is a member initializer, returns the declaration of the
+  /// If this is a member initializer, returns the declaration of the
   /// non-static data member being initialized. Otherwise, returns null.
   FieldDecl *getMember() const {
     if (isMemberInitializer())
@@ -2377,23 +2377,23 @@
     return MemberOrEllipsisLocation;
   }
 
-  /// \brief Determine the source location of the initializer.
+  /// Determine the source location of the initializer.
   SourceLocation getSourceLocation() const;
 
-  /// \brief Determine the source range covering the entire initializer.
+  /// Determine the source range covering the entire initializer.
   SourceRange getSourceRange() const LLVM_READONLY;
 
-  /// \brief Determine whether this initializer is explicitly written
+  /// Determine whether this initializer is explicitly written
   /// in the source code.
   bool isWritten() const { return IsWritten; }
 
-  /// \brief Return the source position of the initializer, counting from 0.
+  /// Return the source position of the initializer, counting from 0.
   /// If the initializer was implicit, -1 is returned.
   int getSourceOrder() const {
     return IsWritten ? static_cast<int>(SourceOrder) : -1;
   }
 
-  /// \brief Set the source order of this initializer.
+  /// Set the source order of this initializer.
   ///
   /// This can only be called once for each initializer; it cannot be called
   /// on an initializer having a positive number of (implicit) array indices.
@@ -2414,7 +2414,7 @@
   SourceLocation getLParenLoc() const { return LParenLoc; }
   SourceLocation getRParenLoc() const { return RParenLoc; }
 
-  /// \brief Get the initializer.
+  /// Get the initializer.
   Expr *getInit() const { return static_cast<Expr *>(Init); }
 };
 
@@ -2435,7 +2435,7 @@
   CXXConstructorDecl *getConstructor() const { return BaseCtor; }
 };
 
-/// \brief Represents a C++ constructor within a class.
+/// Represents a C++ constructor within a class.
 ///
 /// For example:
 ///
@@ -2450,12 +2450,12 @@
       private llvm::TrailingObjects<CXXConstructorDecl, InheritedConstructor> {
   /// \name Support for base and member initializers.
   /// \{
-  /// \brief The arguments used to initialize the base or member.
+  /// The arguments used to initialize the base or member.
   LazyCXXCtorInitializersPtr CtorInitializers;
   unsigned NumCtorInitializers : 31;
   /// \}
 
-  /// \brief Whether this constructor declaration is an implicitly-declared
+  /// Whether this constructor declaration is an implicitly-declared
   /// inheriting constructor.
   unsigned IsInheritingConstructor : 1;
 
@@ -2490,10 +2490,10 @@
          bool isConstexpr,
          InheritedConstructor Inherited = InheritedConstructor());
 
-  /// \brief Iterates through the member/base initializer list.
+  /// Iterates through the member/base initializer list.
   using init_iterator = CXXCtorInitializer **;
 
-  /// \brief Iterates through the member/base initializer list.
+  /// Iterates through the member/base initializer list.
   using init_const_iterator = CXXCtorInitializer *const *;
 
   using init_range = llvm::iterator_range<init_iterator>;
@@ -2504,21 +2504,21 @@
     return init_const_range(init_begin(), init_end());
   }
 
-  /// \brief Retrieve an iterator to the first initializer.
+  /// Retrieve an iterator to the first initializer.
   init_iterator init_begin() {
     const auto *ConstThis = this;
     return const_cast<init_iterator>(ConstThis->init_begin());
   }
 
-  /// \brief Retrieve an iterator to the first initializer.
+  /// Retrieve an iterator to the first initializer.
   init_const_iterator init_begin() const;
 
-  /// \brief Retrieve an iterator past the last initializer.
+  /// Retrieve an iterator past the last initializer.
   init_iterator       init_end()       {
     return init_begin() + NumCtorInitializers;
   }
 
-  /// \brief Retrieve an iterator past the last initializer.
+  /// Retrieve an iterator past the last initializer.
   init_const_iterator init_end() const {
     return init_begin() + NumCtorInitializers;
   }
@@ -2541,7 +2541,7 @@
     return init_const_reverse_iterator(init_begin());
   }
 
-  /// \brief Determine the number of arguments used to initialize the member
+  /// Determine the number of arguments used to initialize the member
   /// or base.
   unsigned getNumCtorInitializers() const {
       return NumCtorInitializers;
@@ -2563,13 +2563,13 @@
     return getCanonicalDecl()->isExplicitSpecified();
   }
 
-  /// \brief Determine whether this constructor is a delegating constructor.
+  /// Determine whether this constructor is a delegating constructor.
   bool isDelegatingConstructor() const {
     return (getNumCtorInitializers() == 1) &&
            init_begin()[0]->isDelegatingInitializer();
   }
 
-  /// \brief When this constructor delegates to another, retrieve the target.
+  /// When this constructor delegates to another, retrieve the target.
   CXXConstructorDecl *getTargetConstructor() const;
 
   /// Whether this constructor is a default
@@ -2577,7 +2577,7 @@
   /// default-initialize a class of this type.
   bool isDefaultConstructor() const;
 
-  /// \brief Whether this constructor is a copy constructor (C++ [class.copy]p2,
+  /// Whether this constructor is a copy constructor (C++ [class.copy]p2,
   /// which can be used to copy the class.
   ///
   /// \p TypeQuals will be set to the qualifiers on the
@@ -2600,27 +2600,27 @@
     return isCopyConstructor(TypeQuals);
   }
 
-  /// \brief Determine whether this constructor is a move constructor
+  /// Determine whether this constructor is a move constructor
   /// (C++11 [class.copy]p3), which can be used to move values of the class.
   ///
   /// \param TypeQuals If this constructor is a move constructor, will be set
   /// to the type qualifiers on the referent of the first parameter's type.
   bool isMoveConstructor(unsigned &TypeQuals) const;
 
-  /// \brief Determine whether this constructor is a move constructor
+  /// Determine whether this constructor is a move constructor
   /// (C++11 [class.copy]p3), which can be used to move values of the class.
   bool isMoveConstructor() const {
     unsigned TypeQuals = 0;
     return isMoveConstructor(TypeQuals);
   }
 
-  /// \brief Determine whether this is a copy or move constructor.
+  /// Determine whether this is a copy or move constructor.
   ///
   /// \param TypeQuals Will be set to the type qualifiers on the reference
   /// parameter, if in fact this is a copy or move constructor.
   bool isCopyOrMoveConstructor(unsigned &TypeQuals) const;
 
-  /// \brief Determine whether this a copy or move constructor.
+  /// Determine whether this a copy or move constructor.
   bool isCopyOrMoveConstructor() const {
     unsigned Quals;
     return isCopyOrMoveConstructor(Quals);
@@ -2631,16 +2631,16 @@
   /// used for user-defined conversions.
   bool isConvertingConstructor(bool AllowExplicit) const;
 
-  /// \brief Determine whether this is a member template specialization that
+  /// Determine whether this is a member template specialization that
   /// would copy the object to itself. Such constructors are never used to copy
   /// an object.
   bool isSpecializationCopyingObject() const;
 
-  /// \brief Determine whether this is an implicit constructor synthesized to
+  /// Determine whether this is an implicit constructor synthesized to
   /// model a call to a constructor inherited from a base class.
   bool isInheritingConstructor() const { return IsInheritingConstructor; }
 
-  /// \brief Get the constructor that this inheriting constructor is based on.
+  /// Get the constructor that this inheriting constructor is based on.
   InheritedConstructor getInheritedConstructor() const {
     return IsInheritingConstructor ? *getTrailingObjects<InheritedConstructor>()
                                    : InheritedConstructor();
@@ -2658,7 +2658,7 @@
   static bool classofKind(Kind K) { return K == CXXConstructor; }
 };
 
-/// \brief Represents a C++ destructor within a class.
+/// Represents a C++ destructor within a class.
 ///
 /// For example:
 ///
@@ -2720,7 +2720,7 @@
   static bool classofKind(Kind K) { return K == CXXDestructor; }
 };
 
-/// \brief Represents a C++ conversion function within a class.
+/// Represents a C++ conversion function within a class.
 ///
 /// For example:
 ///
@@ -2764,12 +2764,12 @@
     return getCanonicalDecl()->isExplicitSpecified();
   }
 
-  /// \brief Returns the type that this conversion function is converting to.
+  /// Returns the type that this conversion function is converting to.
   QualType getConversionType() const {
     return getType()->getAs<FunctionType>()->getReturnType();
   }
 
-  /// \brief Determine whether this conversion function is a conversion from
+  /// Determine whether this conversion function is a conversion from
   /// a lambda closure type to a block pointer.
   bool isLambdaToBlockPointerConversion() const;
   
@@ -2785,7 +2785,7 @@
   static bool classofKind(Kind K) { return K == CXXConversion; }
 };
 
-/// \brief Represents a linkage specification. 
+/// Represents a linkage specification. 
 ///
 /// For example:
 /// \code
@@ -2795,7 +2795,7 @@
   virtual void anchor();
 
 public:
-  /// \brief Represents the language in a linkage specification.
+  /// Represents the language in a linkage specification.
   ///
   /// The values are part of the serialization ABI for
   /// ASTs and cannot be changed without altering that ABI.  To help
@@ -2807,20 +2807,20 @@
   };
 
 private:
-  /// \brief The language for this linkage specification.
+  /// The language for this linkage specification.
   unsigned Language : 3;
 
-  /// \brief True if this linkage spec has braces.
+  /// True if this linkage spec has braces.
   ///
   /// This is needed so that hasBraces() returns the correct result while the
   /// linkage spec body is being parsed.  Once RBraceLoc has been set this is
   /// not used, so it doesn't need to be serialized.
   unsigned HasBraces : 1;
 
-  /// \brief The source location for the extern keyword.
+  /// The source location for the extern keyword.
   SourceLocation ExternLoc;
 
-  /// \brief The source location for the right brace (if valid).
+  /// The source location for the right brace (if valid).
   SourceLocation RBraceLoc;
 
   LinkageSpecDecl(DeclContext *DC, SourceLocation ExternLoc,
@@ -2836,13 +2836,13 @@
                                  bool HasBraces);
   static LinkageSpecDecl *CreateDeserialized(ASTContext &C, unsigned ID);
   
-  /// \brief Return the language specified by this linkage specification.
+  /// Return the language specified by this linkage specification.
   LanguageIDs getLanguage() const { return LanguageIDs(Language); }
 
-  /// \brief Set the language specified by this linkage specification.
+  /// Set the language specified by this linkage specification.
   void setLanguage(LanguageIDs L) { Language = L; }
 
-  /// \brief Determines whether this linkage specification had braces in
+  /// Determines whether this linkage specification had braces in
   /// its syntactic form.
   bool hasBraces() const {
     assert(!RBraceLoc.isValid() || HasBraces);
@@ -2881,7 +2881,7 @@
   }
 };
 
-/// \brief Represents C++ using-directive.
+/// Represents C++ using-directive.
 ///
 /// For example:
 /// \code
@@ -2892,16 +2892,16 @@
 /// artificial names for all using-directives in order to store
 /// them in DeclContext effectively.
 class UsingDirectiveDecl : public NamedDecl {
-  /// \brief The location of the \c using keyword.
+  /// The location of the \c using keyword.
   SourceLocation UsingLoc;
 
-  /// \brief The location of the \c namespace keyword.
+  /// The location of the \c namespace keyword.
   SourceLocation NamespaceLoc;
 
-  /// \brief The nested-name-specifier that precedes the namespace.
+  /// The nested-name-specifier that precedes the namespace.
   NestedNameSpecifierLoc QualifierLoc;
 
-  /// \brief The namespace nominated by this using-directive.
+  /// The namespace nominated by this using-directive.
   NamedDecl *NominatedNamespace;
 
   /// Enclosing context containing both using-directive and nominated
@@ -2918,7 +2918,7 @@
         NamespaceLoc(NamespcLoc), QualifierLoc(QualifierLoc),
         NominatedNamespace(Nominated), CommonAncestor(CommonAncestor) {}
 
-  /// \brief Returns special DeclarationName used by using-directives.
+  /// Returns special DeclarationName used by using-directives.
   ///
   /// This is only used by DeclContext for storing UsingDirectiveDecls in
   /// its lookup structure.
@@ -2934,11 +2934,11 @@
   // Friend for getUsingDirectiveName.
   friend class DeclContext;
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the
+  /// Retrieve the nested-name-specifier that qualifies the
   /// name of the namespace, with source-location information.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the
+  /// Retrieve the nested-name-specifier that qualifies the
   /// name of the namespace.
   NestedNameSpecifier *getQualifier() const {
     return QualifierLoc.getNestedNameSpecifier();
@@ -2949,26 +2949,26 @@
     return NominatedNamespace;
   }
 
-  /// \brief Returns the namespace nominated by this using-directive.
+  /// Returns the namespace nominated by this using-directive.
   NamespaceDecl *getNominatedNamespace();
 
   const NamespaceDecl *getNominatedNamespace() const {
     return const_cast<UsingDirectiveDecl*>(this)->getNominatedNamespace();
   }
 
-  /// \brief Returns the common ancestor context of this using-directive and
+  /// Returns the common ancestor context of this using-directive and
   /// its nominated namespace.
   DeclContext *getCommonAncestor() { return CommonAncestor; }
   const DeclContext *getCommonAncestor() const { return CommonAncestor; }
 
-  /// \brief Return the location of the \c using keyword.
+  /// Return the location of the \c using keyword.
   SourceLocation getUsingLoc() const { return UsingLoc; }
 
   // FIXME: Could omit 'Key' in name.
-  /// \brief Returns the location of the \c namespace keyword.
+  /// Returns the location of the \c namespace keyword.
   SourceLocation getNamespaceKeyLocation() const { return NamespaceLoc; }
 
-  /// \brief Returns the location of this using declaration's identifier.
+  /// Returns the location of this using declaration's identifier.
   SourceLocation getIdentLocation() const { return getLocation(); }
 
   static UsingDirectiveDecl *Create(ASTContext &C, DeclContext *DC,
@@ -2988,7 +2988,7 @@
   static bool classofKind(Kind K) { return K == UsingDirective; }
 };
 
-/// \brief Represents a C++ namespace alias.
+/// Represents a C++ namespace alias.
 ///
 /// For example:
 ///
@@ -2999,18 +2999,18 @@
                            public Redeclarable<NamespaceAliasDecl> {
   friend class ASTDeclReader;
 
-  /// \brief The location of the \c namespace keyword.
+  /// The location of the \c namespace keyword.
   SourceLocation NamespaceLoc;
 
-  /// \brief The location of the namespace's identifier.
+  /// The location of the namespace's identifier.
   ///
   /// This is accessed by TargetNameLoc.
   SourceLocation IdentLoc;
 
-  /// \brief The nested-name-specifier that precedes the namespace.
+  /// The nested-name-specifier that precedes the namespace.
   NestedNameSpecifierLoc QualifierLoc;
 
-  /// \brief The Decl that this alias points to, either a NamespaceDecl or
+  /// The Decl that this alias points to, either a NamespaceDecl or
   /// a NamespaceAliasDecl.
   NamedDecl *Namespace;
 
@@ -3057,17 +3057,17 @@
     return getFirstDecl();
   }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the
+  /// Retrieve the nested-name-specifier that qualifies the
   /// name of the namespace, with source-location information.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the
+  /// Retrieve the nested-name-specifier that qualifies the
   /// name of the namespace.
   NestedNameSpecifier *getQualifier() const {
     return QualifierLoc.getNestedNameSpecifier();
   }
 
-  /// \brief Retrieve the namespace declaration aliased by this directive.
+  /// Retrieve the namespace declaration aliased by this directive.
   NamespaceDecl *getNamespace() {
     if (auto *AD = dyn_cast<NamespaceAliasDecl>(Namespace))
       return AD->getNamespace();
@@ -3089,7 +3089,7 @@
   /// Returns the location of the identifier in the named namespace.
   SourceLocation getTargetNameLoc() const { return IdentLoc; }
 
-  /// \brief Retrieve the namespace that this alias refers to, which
+  /// Retrieve the namespace that this alias refers to, which
   /// may either be a NamespaceDecl or a NamespaceAliasDecl.
   NamedDecl *getAliasedNamespace() const { return Namespace; }
 
@@ -3101,7 +3101,7 @@
   static bool classofKind(Kind K) { return K == NamespaceAlias; }
 };
 
-/// \brief Represents a shadow declaration introduced into a scope by a
+/// Represents a shadow declaration introduced into a scope by a
 /// (resolved) using declaration.
 ///
 /// For example,
@@ -3120,7 +3120,7 @@
   /// The referenced declaration.
   NamedDecl *Underlying = nullptr;
 
-  /// \brief The using declaration which introduced this decl or the next using
+  /// The using declaration which introduced this decl or the next using
   /// shadow declaration contained in the aforementioned using declaration.
   NamedDecl *UsingOrNextShadow = nullptr;
 
@@ -3174,11 +3174,11 @@
     return getFirstDecl();
   }
 
-  /// \brief Gets the underlying declaration which has been brought into the
+  /// Gets the underlying declaration which has been brought into the
   /// local scope.
   NamedDecl *getTargetDecl() const { return Underlying; }
 
-  /// \brief Sets the underlying declaration which has been brought into the
+  /// Sets the underlying declaration which has been brought into the
   /// local scope.
   void setTargetDecl(NamedDecl *ND) {
     assert(ND && "Target decl is null!");
@@ -3190,10 +3190,10 @@
         ~(IDNS_OrdinaryFriend | IDNS_TagFriend | IDNS_LocalExtern);
   }
 
-  /// \brief Gets the using declaration to which this declaration is tied.
+  /// Gets the using declaration to which this declaration is tied.
   UsingDecl *getUsingDecl() const;
 
-  /// \brief The next using shadow declaration contained in the shadow decl
+  /// The next using shadow declaration contained in the shadow decl
   /// chain of the using declaration which introduced this decl.
   UsingShadowDecl *getNextUsingShadowDecl() const {
     return dyn_cast_or_null<UsingShadowDecl>(UsingOrNextShadow);
@@ -3205,7 +3205,7 @@
   }
 };
 
-/// \brief Represents a shadow constructor declaration introduced into a
+/// Represents a shadow constructor declaration introduced into a
 /// class by a C++11 using-declaration that names a constructor.
 ///
 /// For example:
@@ -3216,18 +3216,18 @@
 /// };
 /// \endcode
 class ConstructorUsingShadowDecl final : public UsingShadowDecl {
-  /// \brief If this constructor using declaration inherted the constructor
+  /// If this constructor using declaration inherted the constructor
   /// from an indirect base class, this is the ConstructorUsingShadowDecl
   /// in the named direct base class from which the declaration was inherited.
   ConstructorUsingShadowDecl *NominatedBaseClassShadowDecl = nullptr;
 
-  /// \brief If this constructor using declaration inherted the constructor
+  /// If this constructor using declaration inherted the constructor
   /// from an indirect base class, this is the ConstructorUsingShadowDecl
   /// that will be used to construct the unique direct or virtual base class
   /// that receives the constructor arguments.
   ConstructorUsingShadowDecl *ConstructedBaseClassShadowDecl = nullptr;
 
-  /// \brief \c true if the constructor ultimately named by this using shadow
+  /// \c true if the constructor ultimately named by this using shadow
   /// declaration is within a virtual base class subobject of the class that
   /// contains this declaration.
   unsigned IsVirtual : 1;
@@ -3279,24 +3279,24 @@
   }
   //@}
 
-  /// \brief Get the inheriting constructor declaration for the direct base
+  /// Get the inheriting constructor declaration for the direct base
   /// class from which this using shadow declaration was inherited, if there is
   /// one. This can be different for each redeclaration of the same shadow decl.
   ConstructorUsingShadowDecl *getNominatedBaseClassShadowDecl() const {
     return NominatedBaseClassShadowDecl;
   }
 
-  /// \brief Get the inheriting constructor declaration for the base class
+  /// Get the inheriting constructor declaration for the base class
   /// for which we don't have an explicit initializer, if there is one.
   ConstructorUsingShadowDecl *getConstructedBaseClassShadowDecl() const {
     return ConstructedBaseClassShadowDecl;
   }
 
-  /// \brief Get the base class that was named in the using declaration. This
+  /// Get the base class that was named in the using declaration. This
   /// can be different for each redeclaration of this same shadow decl.
   CXXRecordDecl *getNominatedBaseClass() const;
 
-  /// \brief Get the base class whose constructor or constructor shadow
+  /// Get the base class whose constructor or constructor shadow
   /// declaration is passed the constructor arguments.
   CXXRecordDecl *getConstructedBaseClass() const {
     return cast<CXXRecordDecl>((ConstructedBaseClassShadowDecl
@@ -3305,13 +3305,13 @@
                                    ->getDeclContext());
   }
 
-  /// \brief Returns \c true if the constructed base class is a virtual base
+  /// Returns \c true if the constructed base class is a virtual base
   /// class subobject of this declaration's class.
   bool constructsVirtualBase() const {
     return IsVirtual;
   }
 
-  /// \brief Get the constructor or constructor template in the derived class
+  /// Get the constructor or constructor template in the derived class
   /// correspnding to this using shadow declaration, if it has been implicitly
   /// declared already.
   CXXConstructorDecl *getConstructor() const;
@@ -3321,24 +3321,24 @@
   static bool classofKind(Kind K) { return K == ConstructorUsingShadow; }
 };
 
-/// \brief Represents a C++ using-declaration.
+/// Represents a C++ using-declaration.
 ///
 /// For example:
 /// \code
 ///    using someNameSpace::someIdentifier;
 /// \endcode
 class UsingDecl : public NamedDecl, public Mergeable<UsingDecl> {
-  /// \brief The source location of the 'using' keyword itself.
+  /// The source location of the 'using' keyword itself.
   SourceLocation UsingLocation;
 
-  /// \brief The nested-name-specifier that precedes the name.
+  /// The nested-name-specifier that precedes the name.
   NestedNameSpecifierLoc QualifierLoc;
 
-  /// \brief Provides source/type location info for the declaration name
+  /// Provides source/type location info for the declaration name
   /// embedded in the ValueDecl base class.
   DeclarationNameLoc DNLoc;
 
-  /// \brief The first shadow declaration of the shadow decl chain associated
+  /// The first shadow declaration of the shadow decl chain associated
   /// with this using declaration.
   ///
   /// The bool member of the pair store whether this decl has the \c typename
@@ -3359,17 +3359,17 @@
   friend class ASTDeclReader;
   friend class ASTDeclWriter;
 
-  /// \brief Return the source location of the 'using' keyword.
+  /// Return the source location of the 'using' keyword.
   SourceLocation getUsingLoc() const { return UsingLocation; }
 
-  /// \brief Set the source location of the 'using' keyword.
+  /// Set the source location of the 'using' keyword.
   void setUsingLoc(SourceLocation L) { UsingLocation = L; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the name,
+  /// Retrieve the nested-name-specifier that qualifies the name,
   /// with source-location information.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the name.
+  /// Retrieve the nested-name-specifier that qualifies the name.
   NestedNameSpecifier *getQualifier() const {
     return QualifierLoc.getNestedNameSpecifier();
   }
@@ -3378,19 +3378,19 @@
     return DeclarationNameInfo(getDeclName(), getLocation(), DNLoc);
   }
 
-  /// \brief Return true if it is a C++03 access declaration (no 'using').
+  /// Return true if it is a C++03 access declaration (no 'using').
   bool isAccessDeclaration() const { return UsingLocation.isInvalid(); }
 
-  /// \brief Return true if the using declaration has 'typename'.
+  /// Return true if the using declaration has 'typename'.
   bool hasTypename() const { return FirstUsingShadow.getInt(); }
 
-  /// \brief Sets whether the using declaration has 'typename'.
+  /// Sets whether the using declaration has 'typename'.
   void setTypename(bool TN) { FirstUsingShadow.setInt(TN); }
 
-  /// \brief Iterates through the using shadow declarations associated with
+  /// Iterates through the using shadow declarations associated with
   /// this using declaration.
   class shadow_iterator {
-    /// \brief The current using shadow declaration.
+    /// The current using shadow declaration.
     UsingShadowDecl *Current = nullptr;
 
   public:
@@ -3437,7 +3437,7 @@
 
   shadow_iterator shadow_end() const { return shadow_iterator(); }
 
-  /// \brief Return the number of shadowed declarations associated with this
+  /// Return the number of shadowed declarations associated with this
   /// using declaration.
   unsigned shadow_size() const {
     return std::distance(shadow_begin(), shadow_end());
@@ -3535,7 +3535,7 @@
   static bool classofKind(Kind K) { return K == UsingPack; }
 };
 
-/// \brief Represents a dependent using declaration which was not marked with
+/// Represents a dependent using declaration which was not marked with
 /// \c typename.
 ///
 /// Unlike non-dependent using declarations, these *only* bring through
@@ -3548,16 +3548,16 @@
 /// \endcode
 class UnresolvedUsingValueDecl : public ValueDecl,
                                  public Mergeable<UnresolvedUsingValueDecl> {
-  /// \brief The source location of the 'using' keyword
+  /// The source location of the 'using' keyword
   SourceLocation UsingLocation;
 
-  /// \brief If this is a pack expansion, the location of the '...'.
+  /// If this is a pack expansion, the location of the '...'.
   SourceLocation EllipsisLoc;
 
-  /// \brief The nested-name-specifier that precedes the name.
+  /// The nested-name-specifier that precedes the name.
   NestedNameSpecifierLoc QualifierLoc;
 
-  /// \brief Provides source/type location info for the declaration name
+  /// Provides source/type location info for the declaration name
   /// embedded in the ValueDecl base class.
   DeclarationNameLoc DNLoc;
 
@@ -3577,20 +3577,20 @@
   friend class ASTDeclReader;
   friend class ASTDeclWriter;
 
-  /// \brief Returns the source location of the 'using' keyword.
+  /// Returns the source location of the 'using' keyword.
   SourceLocation getUsingLoc() const { return UsingLocation; }
 
-  /// \brief Set the source location of the 'using' keyword.
+  /// Set the source location of the 'using' keyword.
   void setUsingLoc(SourceLocation L) { UsingLocation = L; }
 
-  /// \brief Return true if it is a C++03 access declaration (no 'using').
+  /// Return true if it is a C++03 access declaration (no 'using').
   bool isAccessDeclaration() const { return UsingLocation.isInvalid(); }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the name,
+  /// Retrieve the nested-name-specifier that qualifies the name,
   /// with source-location information.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the name.
+  /// Retrieve the nested-name-specifier that qualifies the name.
   NestedNameSpecifier *getQualifier() const {
     return QualifierLoc.getNestedNameSpecifier();
   }
@@ -3599,12 +3599,12 @@
     return DeclarationNameInfo(getDeclName(), getLocation(), DNLoc);
   }
 
-  /// \brief Determine whether this is a pack expansion.
+  /// Determine whether this is a pack expansion.
   bool isPackExpansion() const {
     return EllipsisLoc.isValid();
   }
 
-  /// \brief Get the location of the ellipsis if this is a pack expansion.
+  /// Get the location of the ellipsis if this is a pack expansion.
   SourceLocation getEllipsisLoc() const {
     return EllipsisLoc;
   }
@@ -3631,7 +3631,7 @@
   static bool classofKind(Kind K) { return K == UnresolvedUsingValue; }
 };
 
-/// \brief Represents a dependent using declaration which was marked with
+/// Represents a dependent using declaration which was marked with
 /// \c typename.
 ///
 /// \code
@@ -3647,13 +3647,13 @@
       public Mergeable<UnresolvedUsingTypenameDecl> {
   friend class ASTDeclReader;
 
-  /// \brief The source location of the 'typename' keyword
+  /// The source location of the 'typename' keyword
   SourceLocation TypenameLocation;
 
-  /// \brief If this is a pack expansion, the location of the '...'.
+  /// If this is a pack expansion, the location of the '...'.
   SourceLocation EllipsisLoc;
 
-  /// \brief The nested-name-specifier that precedes the name.
+  /// The nested-name-specifier that precedes the name.
   NestedNameSpecifierLoc QualifierLoc;
 
   UnresolvedUsingTypenameDecl(DeclContext *DC, SourceLocation UsingLoc,
@@ -3670,17 +3670,17 @@
   void anchor() override;
 
 public:
-  /// \brief Returns the source location of the 'using' keyword.
+  /// Returns the source location of the 'using' keyword.
   SourceLocation getUsingLoc() const { return getLocStart(); }
 
-  /// \brief Returns the source location of the 'typename' keyword.
+  /// Returns the source location of the 'typename' keyword.
   SourceLocation getTypenameLoc() const { return TypenameLocation; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the name,
+  /// Retrieve the nested-name-specifier that qualifies the name,
   /// with source-location information.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the name.
+  /// Retrieve the nested-name-specifier that qualifies the name.
   NestedNameSpecifier *getQualifier() const {
     return QualifierLoc.getNestedNameSpecifier();
   }
@@ -3689,12 +3689,12 @@
     return DeclarationNameInfo(getDeclName(), getLocation());
   }
 
-  /// \brief Determine whether this is a pack expansion.
+  /// Determine whether this is a pack expansion.
   bool isPackExpansion() const {
     return EllipsisLoc.isValid();
   }
 
-  /// \brief Get the location of the ellipsis if this is a pack expansion.
+  /// Get the location of the ellipsis if this is a pack expansion.
   SourceLocation getEllipsisLoc() const {
     return EllipsisLoc;
   }
@@ -3720,7 +3720,7 @@
   static bool classofKind(Kind K) { return K == UnresolvedUsingTypename; }
 };
 
-/// \brief Represents a C++11 static_assert declaration.
+/// Represents a C++11 static_assert declaration.
 class StaticAssertDecl : public Decl {
   llvm::PointerIntPair<Expr *, 1, bool> AssertExprAndFailed;
   StringLiteral *Message;
Index: cfe/trunk/include/clang/AST/DeclContextInternals.h
===================================================================
--- cfe/trunk/include/clang/AST/DeclContextInternals.h
+++ cfe/trunk/include/clang/AST/DeclContextInternals.h
@@ -30,17 +30,17 @@
 
 class DependentDiagnostic;
 
-/// \brief An array of decls optimized for the common case of only containing
+/// An array of decls optimized for the common case of only containing
 /// one entry.
 struct StoredDeclsList {
-  /// \brief When in vector form, this is what the Data pointer points to.
+  /// When in vector form, this is what the Data pointer points to.
   using DeclsTy = SmallVector<NamedDecl *, 4>;
 
-  /// \brief A collection of declarations, with a flag to indicate if we have
+  /// A collection of declarations, with a flag to indicate if we have
   /// further external declarations.
   using DeclsAndHasExternalTy = llvm::PointerIntPair<DeclsTy *, 1, bool>;
 
-  /// \brief The stored data, which will be either a pointer to a NamedDecl,
+  /// The stored data, which will be either a pointer to a NamedDecl,
   /// or a pointer to a vector with a flag to indicate if there are further
   /// external declarations.
   llvm::PointerUnion<NamedDecl *, DeclsAndHasExternalTy> Data;
@@ -122,7 +122,7 @@
              == Vec.end() && "list still contains decl");
   }
 
-  /// \brief Remove any declarations which were imported from an external
+  /// Remove any declarations which were imported from an external
   /// AST source.
   void removeExternalDecls() {
     if (isNull()) {
Index: cfe/trunk/include/clang/AST/DeclObjC.h
===================================================================
--- cfe/trunk/include/clang/AST/DeclObjC.h
+++ cfe/trunk/include/clang/AST/DeclObjC.h
@@ -97,7 +97,7 @@
   }
 };
 
-/// \brief A list of Objective-C protocols, along with the source
+/// A list of Objective-C protocols, along with the source
 /// locations at which they were referenced.
 class ObjCProtocolList : public ObjCList<ObjCProtocolDecl> {
   SourceLocation *Locations = nullptr;
@@ -156,10 +156,10 @@
   // Method has a definition.
   unsigned IsDefined : 1;
 
-  /// \brief Method redeclaration in the same interface.
+  /// Method redeclaration in the same interface.
   unsigned IsRedeclaration : 1;
 
-  /// \brief Is redeclared in the same interface.
+  /// Is redeclared in the same interface.
   mutable unsigned HasRedeclaration : 1;
 
   // NOTE: VC++ treats enums as signed, avoid using ImplementationControl enum
@@ -170,14 +170,14 @@
   /// in, inout, etc.
   unsigned objcDeclQualifier : 7;
 
-  /// \brief Indicates whether this method has a related result type.
+  /// Indicates whether this method has a related result type.
   unsigned RelatedResultType : 1;
 
-  /// \brief Whether the locations of the selector identifiers are in a
+  /// Whether the locations of the selector identifiers are in a
   /// "standard" position, a enum SelectorLocationsKind.
   unsigned SelLocsKind : 2;
 
-  /// \brief Whether this method overrides any other in the class hierarchy.
+  /// Whether this method overrides any other in the class hierarchy.
   ///
   /// A method is said to override any method in the class's
   /// base classes, its protocols, or its categories' protocols, that has
@@ -186,7 +186,7 @@
   /// method in the interface or its categories.
   unsigned IsOverriding : 1;
 
-  /// \brief Indicates if the method was a definition but its body was skipped.
+  /// Indicates if the method was a definition but its body was skipped.
   unsigned HasSkippedBody : 1;
 
   // Return type of this method.
@@ -195,7 +195,7 @@
   // Type source information for the return type.
   TypeSourceInfo *ReturnTInfo;
 
-  /// \brief Array of ParmVarDecls for the formal parameters of this method
+  /// Array of ParmVarDecls for the formal parameters of this method
   /// and optionally followed by selector locations.
   void *ParamsAndSelLocs = nullptr;
   unsigned NumParams = 0;
@@ -241,7 +241,7 @@
     return getSelLocsKind() != SelLoc_NonStandard;
   }
 
-  /// \brief Get a pointer to the stored selector identifiers locations array.
+  /// Get a pointer to the stored selector identifiers locations array.
   /// No locations will be stored if HasStandardSelLocs is true.
   SourceLocation *getStoredSelLocs() {
     return reinterpret_cast<SourceLocation*>(getParams() + NumParams);
@@ -250,7 +250,7 @@
     return reinterpret_cast<const SourceLocation*>(getParams() + NumParams);
   }
 
-  /// \brief Get a pointer to the stored selector identifiers locations array.
+  /// Get a pointer to the stored selector identifiers locations array.
   /// No locations will be stored if HasStandardSelLocs is true.
   ParmVarDecl **getParams() {
     return reinterpret_cast<ParmVarDecl **>(ParamsAndSelLocs);
@@ -259,7 +259,7 @@
     return reinterpret_cast<const ParmVarDecl *const *>(ParamsAndSelLocs);
   }
 
-  /// \brief Get the number of stored selector identifiers locations.
+  /// Get the number of stored selector identifiers locations.
   /// No locations will be stored if HasStandardSelLocs is true.
   unsigned getNumStoredSelLocs() const {
     if (hasStandardSelLocs())
@@ -271,7 +271,7 @@
                            ArrayRef<ParmVarDecl*> Params,
                            ArrayRef<SourceLocation> SelLocs);
 
-  /// \brief A definition will return its interface declaration.
+  /// A definition will return its interface declaration.
   /// An interface declaration will return its definition.
   /// Otherwise it will return itself.
   ObjCMethodDecl *getNextRedeclarationImpl() override;
@@ -301,18 +301,18 @@
   }
   void setObjCDeclQualifier(ObjCDeclQualifier QV) { objcDeclQualifier = QV; }
 
-  /// \brief Determine whether this method has a result type that is related
+  /// Determine whether this method has a result type that is related
   /// to the message receiver's type.
   bool hasRelatedResultType() const { return RelatedResultType; }
 
-  /// \brief Note whether this method has a related result type.
+  /// Note whether this method has a related result type.
   void SetRelatedResultType(bool RRT = true) { RelatedResultType = RRT; }
 
-  /// \brief True if this is a method redeclaration in the same interface.
+  /// True if this is a method redeclaration in the same interface.
   bool isRedeclaration() const { return IsRedeclaration; }
   void setAsRedeclaration(const ObjCMethodDecl *PrevMethod);
 
-  /// \brief Returns the location where the declarator ends. It will be
+  /// Returns the location where the declarator ends. It will be
   /// the location of ';' for a method declaration and the location of '{'
   /// for a method definition.
   SourceLocation getDeclaratorEndLoc() const { return DeclEndLoc; }
@@ -362,7 +362,7 @@
   void setReturnType(QualType T) { MethodDeclType = T; }
   SourceRange getReturnTypeSourceRange() const;
 
-  /// \brief Determine the type of an expression that sends a message to this
+  /// Determine the type of an expression that sends a message to this
   /// function. This replaces the type parameters with the types they would
   /// get if the receiver was parameterless (e.g. it may replace the type
   /// parameter with 'id').
@@ -407,7 +407,7 @@
                               NumParams);
   }
 
-  /// \brief Sets the method's parameters and selector source locations.
+  /// Sets the method's parameters and selector source locations.
   /// If the method is implicit (not coming from source) \p SelLocs is
   /// ignored.
   void setMethodParams(ASTContext &C,
@@ -462,7 +462,7 @@
   bool isDefined() const { return IsDefined; }
   void setDefined(bool isDefined) { IsDefined = isDefined; }
 
-  /// \brief Whether this method overrides any other in the class hierarchy.
+  /// Whether this method overrides any other in the class hierarchy.
   ///
   /// A method is said to override any method in the class's
   /// base classes, its protocols, or its categories' protocols, that has
@@ -472,7 +472,7 @@
   bool isOverriding() const { return IsOverriding; }
   void setOverriding(bool isOverriding) { IsOverriding = isOverriding; }
 
-  /// \brief Return overridden methods for the given \p Method.
+  /// Return overridden methods for the given \p Method.
   ///
   /// An ObjC method is considered to override any method in the class's
   /// base classes (and base's categories), its protocols, or its categories'
@@ -483,11 +483,11 @@
   void getOverriddenMethods(
                      SmallVectorImpl<const ObjCMethodDecl *> &Overridden) const;
 
-  /// \brief True if the method was a definition but its body was skipped.
+  /// True if the method was a definition but its body was skipped.
   bool hasSkippedBody() const { return HasSkippedBody; }
   void setHasSkippedBody(bool Skipped = true) { HasSkippedBody = Skipped; }
 
-  /// \brief Returns the property associated with this method's selector.
+  /// Returns the property associated with this method's selector.
   ///
   /// Note that even if this particular method is not marked as a property
   /// accessor, it is still possible for it to match a property declared in a
@@ -520,10 +520,10 @@
   bool isDesignatedInitializerForTheInterface(
       const ObjCMethodDecl **InitMethod = nullptr) const;
 
-  /// \brief Determine whether this method has a body.
+  /// Determine whether this method has a body.
   bool hasBody() const override { return Body.isValid(); }
 
-  /// \brief Retrieve the body of this method, if it has one.
+  /// Retrieve the body of this method, if it has one.
   Stmt *getBody() const override;
 
   void setLazyBody(uint64_t Offset) { Body = Offset; }
@@ -531,7 +531,7 @@
   CompoundStmt *getCompoundBody() { return (CompoundStmt*)getBody(); }
   void setBody(Stmt *B) { Body = B; }
 
-  /// \brief Returns whether this specific method is a definition.
+  /// Returns whether this specific method is a definition.
   bool isThisDeclarationADefinition() const { return hasBody(); }
 
   // Implement isa/cast/dyncast/etc.
@@ -737,7 +737,7 @@
   OBJC_PR_query_class
 };
 
-/// \brief Represents one property declaration in an Objective-C interface.
+/// Represents one property declaration in an Objective-C interface.
 ///
 /// For example:
 /// \code{.mm}
@@ -770,7 +770,7 @@
   };
 
   enum {
-    /// \brief Number of bits fitting all the property attributes.
+    /// Number of bits fitting all the property attributes.
     NumPropertyAttrsBits = 15
   };
 
@@ -1163,7 +1163,7 @@
   }
 };
 
-/// \brief Represents an ObjC class declaration.
+/// Represents an ObjC class declaration.
 ///
 /// For example:
 ///
@@ -1197,7 +1197,7 @@
   mutable const Type *TypeForDecl = nullptr;
   
   struct DefinitionData {
-    /// \brief The definition of this class, for quick access from any 
+    /// The definition of this class, for quick access from any 
     /// declaration.
     ObjCInterfaceDecl *Definition = nullptr;
     
@@ -1210,7 +1210,7 @@
     /// Protocols reference in both the \@interface and class extensions.
     ObjCList<ObjCProtocolDecl> AllReferencedProtocols;
 
-    /// \brief List of categories and class extensions defined for this class.
+    /// List of categories and class extensions defined for this class.
     ///
     /// Categories are stored as a linked list in the AST, since the categories
     /// and class extensions come long after the initial interface declaration,
@@ -1221,11 +1221,11 @@
     /// extensions and implementation. This list is built lazily.
     ObjCIvarDecl *IvarList = nullptr;
 
-    /// \brief Indicates that the contents of this Objective-C class will be
+    /// Indicates that the contents of this Objective-C class will be
     /// completed by the external AST source when required.
     mutable unsigned ExternallyCompleted : 1;
 
-    /// \brief Indicates that the ivar cache does not yet include ivars
+    /// Indicates that the ivar cache does not yet include ivars
     /// declared in the implementation.
     mutable unsigned IvarListMissingImplementation : 1;
 
@@ -1248,7 +1248,7 @@
     /// One of the \c InheritedDesignatedInitializersState enumeratos.
     mutable unsigned InheritedDesignatedInitializers : 2;
     
-    /// \brief The location of the last location in this declaration, before
+    /// The location of the last location in this declaration, before
     /// the properties/methods. For example, this will be the '>', '}', or 
     /// identifier, 
     SourceLocation EndLoc; 
@@ -1262,7 +1262,7 @@
   /// The type parameters associated with this class, if any.
   ObjCTypeParamList *TypeParamList = nullptr;
 
-  /// \brief Contains a pointer to the data associated with this class,
+  /// Contains a pointer to the data associated with this class,
   /// which will be NULL if this class has not yet been defined.
   ///
   /// The bit indicates when we don't need to check for out-of-date
@@ -1283,7 +1283,7 @@
     return *Data.getPointer();
   }
 
-  /// \brief Allocate the definition data for this class.
+  /// Allocate the definition data for this class.
   void allocateDefinitionData();
   
   using redeclarable_base = Redeclarable<ObjCInterfaceDecl>;
@@ -1338,7 +1338,7 @@
     return SourceRange(getAtStartLoc(), getLocation());
   }
 
-  /// \brief Indicate that this Objective-C class is complete, but that
+  /// Indicate that this Objective-C class is complete, but that
   /// the external AST source will be responsible for filling in its contents
   /// when a complete class is required.
   void setExternallyCompleted();
@@ -1544,13 +1544,13 @@
   isDesignatedInitializer(Selector Sel,
                           const ObjCMethodDecl **InitMethod = nullptr) const;
 
-  /// \brief Determine whether this particular declaration of this class is
+  /// Determine whether this particular declaration of this class is
   /// actually also a definition.
   bool isThisDeclarationADefinition() const { 
     return getDefinition() == this;
   }
                           
-  /// \brief Determine whether this class has been defined.
+  /// Determine whether this class has been defined.
   bool hasDefinition() const {
     // If the name of this class is out-of-date, bring it up-to-date, which
     // might bring in a definition.
@@ -1562,21 +1562,21 @@
     return Data.getPointer();
   }
                         
-  /// \brief Retrieve the definition of this class, or NULL if this class 
+  /// Retrieve the definition of this class, or NULL if this class 
   /// has been forward-declared (with \@class) but not yet defined (with 
   /// \@interface).
   ObjCInterfaceDecl *getDefinition() {
     return hasDefinition()? Data.getPointer()->Definition : nullptr;
   }
 
-  /// \brief Retrieve the definition of this class, or NULL if this class 
+  /// Retrieve the definition of this class, or NULL if this class 
   /// has been forward-declared (with \@class) but not yet defined (with 
   /// \@interface).
   const ObjCInterfaceDecl *getDefinition() const {
     return hasDefinition()? Data.getPointer()->Definition : nullptr;
   }
 
-  /// \brief Starts the definition of this Objective-C class, taking it from
+  /// Starts the definition of this Objective-C class, taking it from
   /// a forward declaration (\@class) to a definition (\@interface).
   void startDefinition();
   
@@ -1608,7 +1608,7 @@
     data().SuperClassTInfo = superClass;
   }
 
-  /// \brief Iterator that walks over the list of categories, filtering out
+  /// Iterator that walks over the list of categories, filtering out
   /// those that do not meet specific criteria.
   ///
   /// This class template is used for the various permutations of category
@@ -1655,13 +1655,13 @@
   };
 
 private:
-  /// \brief Test whether the given category is visible.
+  /// Test whether the given category is visible.
   ///
   /// Used in the \c visible_categories_iterator.
   static bool isVisibleCategory(ObjCCategoryDecl *Cat);
                         
 public:
-  /// \brief Iterator that walks over the list of categories and extensions
+  /// Iterator that walks over the list of categories and extensions
   /// that are visible, i.e., not hidden in a non-imported submodule.
   using visible_categories_iterator =
       filtered_category_iterator<isVisibleCategory>;
@@ -1674,30 +1674,30 @@
                                     visible_categories_end());
   }
 
-  /// \brief Retrieve an iterator to the beginning of the visible-categories
+  /// Retrieve an iterator to the beginning of the visible-categories
   /// list.
   visible_categories_iterator visible_categories_begin() const {
     return visible_categories_iterator(getCategoryListRaw());
   }
 
-  /// \brief Retrieve an iterator to the end of the visible-categories list.
+  /// Retrieve an iterator to the end of the visible-categories list.
   visible_categories_iterator visible_categories_end() const {
     return visible_categories_iterator();
   }
 
-  /// \brief Determine whether the visible-categories list is empty.
+  /// Determine whether the visible-categories list is empty.
   bool visible_categories_empty() const {
     return visible_categories_begin() == visible_categories_end();
   }
 
 private:
-  /// \brief Test whether the given category... is a category.
+  /// Test whether the given category... is a category.
   ///
   /// Used in the \c known_categories_iterator.
   static bool isKnownCategory(ObjCCategoryDecl *) { return true; }
 
 public:
-  /// \brief Iterator that walks over all of the known categories and
+  /// Iterator that walks over all of the known categories and
   /// extensions, including those that are hidden.
   using known_categories_iterator = filtered_category_iterator<isKnownCategory>;
   using known_categories_range =
@@ -1708,30 +1708,30 @@
                                   known_categories_end());
   }
 
-  /// \brief Retrieve an iterator to the beginning of the known-categories
+  /// Retrieve an iterator to the beginning of the known-categories
   /// list.
   known_categories_iterator known_categories_begin() const {
     return known_categories_iterator(getCategoryListRaw());
   }
 
-  /// \brief Retrieve an iterator to the end of the known-categories list.
+  /// Retrieve an iterator to the end of the known-categories list.
   known_categories_iterator known_categories_end() const {
     return known_categories_iterator();
   }
 
-  /// \brief Determine whether the known-categories list is empty.
+  /// Determine whether the known-categories list is empty.
   bool known_categories_empty() const {
     return known_categories_begin() == known_categories_end();
   }
 
 private:
-  /// \brief Test whether the given category is a visible extension.
+  /// Test whether the given category is a visible extension.
   ///
   /// Used in the \c visible_extensions_iterator.
   static bool isVisibleExtension(ObjCCategoryDecl *Cat);
 
 public:
-  /// \brief Iterator that walks over all of the visible extensions, skipping
+  /// Iterator that walks over all of the visible extensions, skipping
   /// any that are known but hidden.
   using visible_extensions_iterator =
       filtered_category_iterator<isVisibleExtension>;
@@ -1744,24 +1744,24 @@
                                     visible_extensions_end());
   }
 
-  /// \brief Retrieve an iterator to the beginning of the visible-extensions
+  /// Retrieve an iterator to the beginning of the visible-extensions
   /// list.
   visible_extensions_iterator visible_extensions_begin() const {
     return visible_extensions_iterator(getCategoryListRaw());
   }
 
-  /// \brief Retrieve an iterator to the end of the visible-extensions list.
+  /// Retrieve an iterator to the end of the visible-extensions list.
   visible_extensions_iterator visible_extensions_end() const {
     return visible_extensions_iterator();
   }
 
-  /// \brief Determine whether the visible-extensions list is empty.
+  /// Determine whether the visible-extensions list is empty.
   bool visible_extensions_empty() const {
     return visible_extensions_begin() == visible_extensions_end();
   }
 
 private:
-  /// \brief Test whether the given category is an extension.
+  /// Test whether the given category is an extension.
   ///
   /// Used in the \c known_extensions_iterator.
   static bool isKnownExtension(ObjCCategoryDecl *Cat);
@@ -1771,7 +1771,7 @@
   friend class ASTDeclWriter;
   friend class ASTReader;
 
-  /// \brief Iterator that walks over all of the known extensions.
+  /// Iterator that walks over all of the known extensions.
   using known_extensions_iterator =
       filtered_category_iterator<isKnownExtension>;
   using known_extensions_range =
@@ -1782,23 +1782,23 @@
                                   known_extensions_end());
   }
 
-  /// \brief Retrieve an iterator to the beginning of the known-extensions
+  /// Retrieve an iterator to the beginning of the known-extensions
   /// list.
   known_extensions_iterator known_extensions_begin() const {
     return known_extensions_iterator(getCategoryListRaw());
   }
   
-  /// \brief Retrieve an iterator to the end of the known-extensions list.
+  /// Retrieve an iterator to the end of the known-extensions list.
   known_extensions_iterator known_extensions_end() const {
     return known_extensions_iterator();
   }
 
-  /// \brief Determine whether the known-extensions list is empty.
+  /// Determine whether the known-extensions list is empty.
   bool known_extensions_empty() const {
     return known_extensions_begin() == known_extensions_end();
   }
 
-  /// \brief Retrieve the raw pointer to the start of the category/extension
+  /// Retrieve the raw pointer to the start of the category/extension
   /// list.
   ObjCCategoryDecl* getCategoryListRaw() const {
     // FIXME: Should make sure no callers ever do this.
@@ -1811,7 +1811,7 @@
     return data().CategoryList;
   }
 
-  /// \brief Set the raw pointer to the start of the category/extension
+  /// Set the raw pointer to the start of the category/extension
   /// list.
   void setCategoryListRaw(ObjCCategoryDecl *category) {
     data().CategoryList = category;
@@ -1874,7 +1874,7 @@
 
   ObjCInterfaceDecl *lookupInheritedClass(const IdentifierInfo *ICName);
 
-  /// \brief Lookup a method in the classes implementation hierarchy.
+  /// Lookup a method in the classes implementation hierarchy.
   ObjCMethodDecl *lookupPrivateMethod(const Selector &Sel,
                                       bool Instance=true) const;
 
@@ -1882,7 +1882,7 @@
     return lookupPrivateMethod(Sel, false);
   }
 
-  /// \brief Lookup a setter or getter in the class hierarchy,
+  /// Lookup a setter or getter in the class hierarchy,
   /// including in all categories except for category passed
   /// as argument.
   ObjCMethodDecl *lookupPropertyAccessor(const Selector Sel,
@@ -1988,7 +1988,7 @@
 
   static ObjCIvarDecl *CreateDeserialized(ASTContext &C, unsigned ID);
   
-  /// \brief Return the class interface that this ivar is logically contained
+  /// Return the class interface that this ivar is logically contained
   /// in; this is either the interface where the ivar was declared, or the
   /// interface the ivar is conceptually a part of in the case of synthesized
   /// ivars.
@@ -2027,7 +2027,7 @@
   unsigned Synthesized : 1;
 };
 
-/// \brief Represents a field declaration created by an \@defs(...).
+/// Represents a field declaration created by an \@defs(...).
 class ObjCAtDefsFieldDecl : public FieldDecl {
   ObjCAtDefsFieldDecl(DeclContext *DC, SourceLocation StartLoc,
                       SourceLocation IdLoc, IdentifierInfo *Id,
@@ -2051,7 +2051,7 @@
   static bool classofKind(Kind K) { return K == ObjCAtDefsField; }
 };
 
-/// \brief Represents an Objective-C protocol declaration.
+/// Represents an Objective-C protocol declaration.
 ///
 /// Objective-C protocols declare a pure abstract type (i.e., no instance
 /// variables are permitted).  Protocols originally drew inspiration from
@@ -2083,14 +2083,14 @@
 class ObjCProtocolDecl : public ObjCContainerDecl,
                          public Redeclarable<ObjCProtocolDecl> {
   struct DefinitionData {
-    // \brief The declaration that defines this protocol.
+    // The declaration that defines this protocol.
     ObjCProtocolDecl *Definition;
 
-    /// \brief Referenced protocols
+    /// Referenced protocols
     ObjCProtocolList ReferencedProtocols;    
   };
 
-  /// \brief Contains a pointer to the data associated with this class,
+  /// Contains a pointer to the data associated with this class,
   /// which will be NULL if this class has not yet been defined.
   ///
   /// The bit indicates when we don't need to check for out-of-date
@@ -2213,7 +2213,7 @@
     return lookupMethod(Sel, false/*isInstance*/);
   }
 
-  /// \brief Determine whether this protocol has a definition.
+  /// Determine whether this protocol has a definition.
   bool hasDefinition() const {
     // If the name of this protocol is out-of-date, bring it up-to-date, which
     // might bring in a definition.
@@ -2225,23 +2225,23 @@
     return Data.getPointer();
   }
 
-  /// \brief Retrieve the definition of this protocol, if any.
+  /// Retrieve the definition of this protocol, if any.
   ObjCProtocolDecl *getDefinition() {
     return hasDefinition()? Data.getPointer()->Definition : nullptr;
   }
 
-  /// \brief Retrieve the definition of this protocol, if any.
+  /// Retrieve the definition of this protocol, if any.
   const ObjCProtocolDecl *getDefinition() const {
     return hasDefinition()? Data.getPointer()->Definition : nullptr;
   }
 
-  /// \brief Determine whether this particular declaration is also the 
+  /// Determine whether this particular declaration is also the 
   /// definition.
   bool isThisDeclarationADefinition() const {
     return getDefinition() == this;
   }
   
-  /// \brief Starts the definition of this Objective-C protocol.
+  /// Starts the definition of this Objective-C protocol.
   void startDefinition();
 
   /// Produce a name to be used for protocol's metadata. It comes either via
@@ -2310,7 +2310,7 @@
   /// FIXME: this should not be a singly-linked list.  Move storage elsewhere.
   ObjCCategoryDecl *NextClassCategory = nullptr;
 
-  /// \brief The location of the category name in this declaration.
+  /// The location of the category name in this declaration.
   SourceLocation CategoryNameLoc;
 
   /// class extension may have private ivars.
@@ -2400,7 +2400,7 @@
 
   ObjCCategoryDecl *getNextClassCategory() const { return NextClassCategory; }
 
-  /// \brief Retrieve the pointer to the next stored category (or extension),
+  /// Retrieve the pointer to the next stored category (or extension),
   /// which may be hidden.
   ObjCCategoryDecl *getNextClassCategoryRaw() const {
     return NextClassCategory;
@@ -2578,7 +2578,7 @@
   SourceLocation IvarRBraceLoc;
   
   /// Support for ivar initialization.
-  /// \brief The arguments used to initialize the ivars
+  /// The arguments used to initialize the ivars
   LazyCXXCtorInitializersPtr IvarInitializers;
   unsigned NumIvarInitializers = 0;
 
@@ -2694,7 +2694,7 @@
     return getIdentifier()->getName();
   }
 
-  /// @brief Get the name of the class associated with this interface.
+  /// Get the name of the class associated with this interface.
   //
   // FIXME: Move to StringRef API.
   std::string getNameAsString() const {
@@ -2785,7 +2785,7 @@
 private:
   SourceLocation AtLoc;   // location of \@synthesize or \@dynamic
 
-  /// \brief For \@synthesize, the location of the ivar, if it was written in
+  /// For \@synthesize, the location of the ivar, if it was written in
   /// the source code.
   ///
   /// \code
@@ -2854,7 +2854,7 @@
     this->IvarLoc = IvarLoc;
   }
 
-  /// \brief For \@synthesize, returns true if an ivar name was explicitly
+  /// For \@synthesize, returns true if an ivar name was explicitly
   /// specified.
   ///
   /// \code
Index: cfe/trunk/include/clang/AST/DeclOpenMP.h
===================================================================
--- cfe/trunk/include/clang/AST/DeclOpenMP.h
+++ cfe/trunk/include/clang/AST/DeclOpenMP.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file defines OpenMP nodes for declarative directives.
+/// This file defines OpenMP nodes for declarative directives.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -24,7 +24,7 @@
 
 namespace clang {
 
-/// \brief This represents '#pragma omp threadprivate ...' directive.
+/// This represents '#pragma omp threadprivate ...' directive.
 /// For example, in the following, both 'a' and 'A::b' are threadprivate:
 ///
 /// \code
@@ -89,7 +89,7 @@
   static bool classofKind(Kind K) { return K == OMPThreadPrivate; }
 };
 
-/// \brief This represents '#pragma omp declare reduction ...' directive.
+/// This represents '#pragma omp declare reduction ...' directive.
 /// For example, in the following, declared reduction 'foo' for types 'int' and
 /// 'float':
 ///
@@ -109,14 +109,14 @@
 
 private:
   friend class ASTDeclReader;
-  /// \brief Combiner for declare reduction construct.
+  /// Combiner for declare reduction construct.
   Expr *Combiner;
-  /// \brief Initializer for declare reduction construct.
+  /// Initializer for declare reduction construct.
   Expr *Initializer;
   /// Kind of initializer - function call or omp_priv<init_expr> initializtion.
   InitKind InitializerKind = CallInit;
 
-  /// \brief Reference to the previous declare reduction construct in the same
+  /// Reference to the previous declare reduction construct in the same
   /// scope with the same name. Required for proper templates instantiation if
   /// the declare reduction construct is declared inside compound statement.
   LazyDeclPtr PrevDeclInScope;
@@ -135,33 +135,33 @@
   }
 
 public:
-  /// \brief Create declare reduction node.
+  /// Create declare reduction node.
   static OMPDeclareReductionDecl *
   Create(ASTContext &C, DeclContext *DC, SourceLocation L, DeclarationName Name,
          QualType T, OMPDeclareReductionDecl *PrevDeclInScope);
-  /// \brief Create deserialized declare reduction node.
+  /// Create deserialized declare reduction node.
   static OMPDeclareReductionDecl *CreateDeserialized(ASTContext &C,
                                                      unsigned ID);
 
-  /// \brief Get combiner expression of the declare reduction construct.
+  /// Get combiner expression of the declare reduction construct.
   Expr *getCombiner() { return Combiner; }
   const Expr *getCombiner() const { return Combiner; }
-  /// \brief Set combiner expression for the declare reduction construct.
+  /// Set combiner expression for the declare reduction construct.
   void setCombiner(Expr *E) { Combiner = E; }
 
-  /// \brief Get initializer expression (if specified) of the declare reduction
+  /// Get initializer expression (if specified) of the declare reduction
   /// construct.
   Expr *getInitializer() { return Initializer; }
   const Expr *getInitializer() const { return Initializer; }
   /// Get initializer kind.
   InitKind getInitializerKind() const { return InitializerKind; }
-  /// \brief Set initializer expression for the declare reduction construct.
+  /// Set initializer expression for the declare reduction construct.
   void setInitializer(Expr *E, InitKind IK) {
     Initializer = E;
     InitializerKind = IK;
   }
 
-  /// \brief Get reference to previous declare reduction construct in the same
+  /// Get reference to previous declare reduction construct in the same
   /// scope with the same name.
   OMPDeclareReductionDecl *getPrevDeclInScope();
   const OMPDeclareReductionDecl *getPrevDeclInScope() const;
Index: cfe/trunk/include/clang/AST/DeclTemplate.h
===================================================================
--- cfe/trunk/include/clang/AST/DeclTemplate.h
+++ cfe/trunk/include/clang/AST/DeclTemplate.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the C++ template declaration subclasses.
+/// Defines the C++ template declaration subclasses.
 //
 //===----------------------------------------------------------------------===//
 
@@ -56,14 +56,14 @@
 class VarTemplateDecl;
 class VarTemplatePartialSpecializationDecl;
 
-/// \brief Stores a template parameter of any kind.
+/// Stores a template parameter of any kind.
 using TemplateParameter =
     llvm::PointerUnion3<TemplateTypeParmDecl *, NonTypeTemplateParmDecl *,
                         TemplateTemplateParmDecl *>;
 
 NamedDecl *getAsNamedDecl(TemplateParameter P);
 
-/// \brief Stores a list of template parameters for a TemplateDecl and its
+/// Stores a list of template parameters for a TemplateDecl and its
 /// derived classes.
 class TemplateParameterList final
     : private llvm::TrailingObjects<TemplateParameterList, NamedDecl *,
@@ -110,10 +110,10 @@
                                        SourceLocation RAngleLoc,
                                        Expr *RequiresClause);
 
-  /// \brief Iterates through the template parameters in this list.
+  /// Iterates through the template parameters in this list.
   using iterator = NamedDecl **;
 
-  /// \brief Iterates through the template parameters in this list.
+  /// Iterates through the template parameters in this list.
   using const_iterator = NamedDecl * const *;
 
   iterator begin() { return getTrailingObjects<NamedDecl *>(); }
@@ -139,32 +139,32 @@
     return begin()[Idx];
   }
 
-  /// \brief Returns the minimum number of arguments needed to form a
+  /// Returns the minimum number of arguments needed to form a
   /// template specialization.
   ///
   /// This may be fewer than the number of template parameters, if some of
   /// the parameters have default arguments or if there is a parameter pack.
   unsigned getMinRequiredArguments() const;
 
-  /// \brief Get the depth of this template parameter list in the set of
+  /// Get the depth of this template parameter list in the set of
   /// template parameter lists.
   ///
   /// The first template parameter list in a declaration will have depth 0,
   /// the second template parameter list will have depth 1, etc.
   unsigned getDepth() const;
 
-  /// \brief Determine whether this template parameter list contains an
+  /// Determine whether this template parameter list contains an
   /// unexpanded parameter pack.
   bool containsUnexpandedParameterPack() const {
     return ContainsUnexpandedParameterPack;
   }
 
-  /// \brief The constraint-expression of the associated requires-clause.
+  /// The constraint-expression of the associated requires-clause.
   Expr *getRequiresClause() {
     return HasRequiresClause ? *getTrailingObjects<Expr *>() : nullptr;
   }
 
-  /// \brief The constraint-expression of the associated requires-clause.
+  /// The constraint-expression of the associated requires-clause.
   const Expr *getRequiresClause() const {
     return HasRequiresClause ? *getTrailingObjects<Expr *>() : nullptr;
   }
@@ -182,7 +182,7 @@
   using FixedSizeStorageOwner = TrailingObjects::FixedSizeStorageOwner;
 };
 
-/// \brief Stores a list of template parameters and the associated
+/// Stores a list of template parameters and the associated
 /// requires-clause (if any) for a TemplateDecl and its derived classes.
 /// Suitable for creating on the stack.
 template <size_t N, bool HasRequiresClause>
@@ -206,13 +206,13 @@
                  TemplateLoc, LAngleLoc, Params, RAngleLoc, RequiresClause))) {}
 };
 
-/// \brief A template argument list.
+/// A template argument list.
 class TemplateArgumentList final
     : private llvm::TrailingObjects<TemplateArgumentList, TemplateArgument> {
-  /// \brief The template argument list.
+  /// The template argument list.
   const TemplateArgument *Arguments;
 
-  /// \brief The number of template arguments in this template
+  /// The number of template arguments in this template
   /// argument list.
   unsigned NumArguments;
 
@@ -226,23 +226,23 @@
   TemplateArgumentList(const TemplateArgumentList &) = delete;
   TemplateArgumentList &operator=(const TemplateArgumentList &) = delete;
 
-  /// \brief Type used to indicate that the template argument list itself is a
+  /// Type used to indicate that the template argument list itself is a
   /// stack object. It does not own its template arguments.
   enum OnStackType { OnStack };
 
-  /// \brief Create a new template argument list that copies the given set of
+  /// Create a new template argument list that copies the given set of
   /// template arguments.
   static TemplateArgumentList *CreateCopy(ASTContext &Context,
                                           ArrayRef<TemplateArgument> Args);
 
-  /// \brief Construct a new, temporary template argument list on the stack.
+  /// Construct a new, temporary template argument list on the stack.
   ///
   /// The template argument list does not own the template arguments
   /// provided.
   explicit TemplateArgumentList(OnStackType, ArrayRef<TemplateArgument> Args)
       : Arguments(Args.data()), NumArguments(Args.size()) {}
 
-  /// \brief Produces a shallow copy of the given template argument list.
+  /// Produces a shallow copy of the given template argument list.
   ///
   /// This operation assumes that the input argument list outlives it.
   /// This takes the list as a pointer to avoid looking like a copy
@@ -251,25 +251,25 @@
   explicit TemplateArgumentList(const TemplateArgumentList *Other)
       : Arguments(Other->data()), NumArguments(Other->size()) {}
 
-  /// \brief Retrieve the template argument at a given index.
+  /// Retrieve the template argument at a given index.
   const TemplateArgument &get(unsigned Idx) const {
     assert(Idx < NumArguments && "Invalid template argument index");
     return data()[Idx];
   }
 
-  /// \brief Retrieve the template argument at a given index.
+  /// Retrieve the template argument at a given index.
   const TemplateArgument &operator[](unsigned Idx) const { return get(Idx); }
 
-  /// \brief Produce this as an array ref.
+  /// Produce this as an array ref.
   ArrayRef<TemplateArgument> asArray() const {
     return llvm::makeArrayRef(data(), size());
   }
 
-  /// \brief Retrieve the number of template arguments in this
+  /// Retrieve the number of template arguments in this
   /// template argument list.
   unsigned size() const { return NumArguments; }
 
-  /// \brief Retrieve a pointer to the template argument list.
+  /// Retrieve a pointer to the template argument list.
   const TemplateArgument *data() const { return Arguments; }
 };
 
@@ -365,7 +365,7 @@
 // Kinds of Templates
 //===----------------------------------------------------------------------===//
 
-/// \brief Stores the template parameter list and associated constraints for
+/// Stores the template parameter list and associated constraints for
 /// \c TemplateDecl objects that track associated constraints.
 class ConstrainedTemplateDeclInfo {
   friend TemplateDecl;
@@ -391,7 +391,7 @@
 };
 
 
-/// \brief The base class of all kinds of template declarations (e.g.,
+/// The base class of all kinds of template declarations (e.g.,
 /// class, function, etc.).
 ///
 /// The TemplateDecl class stores the list of template parameters and a
@@ -467,7 +467,7 @@
 protected:
   NamedDecl *TemplatedDecl;
 
-  /// \brief The template parameter list and optional requires-clause
+  /// The template parameter list and optional requires-clause
   /// associated with this declaration; alternatively, a
   /// \c ConstrainedTemplateDeclInfo if the associated constraints of the
   /// template are being tracked by this particular declaration.
@@ -492,7 +492,7 @@
   }
 
 public:
-  /// \brief Initialize the underlying templated declaration and
+  /// Initialize the underlying templated declaration and
   /// template parameters.
   void init(NamedDecl *templatedDecl, TemplateParameterList* templateParams) {
     assert(!TemplatedDecl && "TemplatedDecl already set!");
@@ -502,7 +502,7 @@
   }
 };
 
-/// \brief Provides information about a function template specialization,
+/// Provides information about a function template specialization,
 /// which is a FunctionDecl that has been explicitly specialization or
 /// instantiated from a function template.
 class FunctionTemplateSpecializationInfo : public llvm::FoldingSetNode {
@@ -525,31 +525,31 @@
          const TemplateArgumentListInfo *TemplateArgsAsWritten,
          SourceLocation POI);
 
-  /// \brief The function template specialization that this structure
+  /// The function template specialization that this structure
   /// describes.
   FunctionDecl *Function;
 
-  /// \brief The function template from which this function template
+  /// The function template from which this function template
   /// specialization was generated.
   ///
   /// The two bits contain the top 4 values of TemplateSpecializationKind.
   llvm::PointerIntPair<FunctionTemplateDecl *, 2> Template;
 
-  /// \brief The template arguments used to produce the function template
+  /// The template arguments used to produce the function template
   /// specialization from the function template.
   const TemplateArgumentList *TemplateArguments;
 
-  /// \brief The template arguments as written in the sources, if provided.
+  /// The template arguments as written in the sources, if provided.
   const ASTTemplateArgumentListInfo *TemplateArgumentsAsWritten;
 
-  /// \brief The point at which this function template specialization was
+  /// The point at which this function template specialization was
   /// first instantiated.
   SourceLocation PointOfInstantiation;
 
-  /// \brief Retrieve the template from which this function was specialized.
+  /// Retrieve the template from which this function was specialized.
   FunctionTemplateDecl *getTemplate() const { return Template.getPointer(); }
 
-  /// \brief Determine what kind of template specialization this is.
+  /// Determine what kind of template specialization this is.
   TemplateSpecializationKind getTemplateSpecializationKind() const {
     return (TemplateSpecializationKind)(Template.getInt() + 1);
   }
@@ -558,7 +558,7 @@
     return getTemplateSpecializationKind() == TSK_ExplicitSpecialization;
   }
 
-  /// \brief True if this declaration is an explicit specialization,
+  /// True if this declaration is an explicit specialization,
   /// explicit instantiation declaration, or explicit instantiation
   /// definition.
   bool isExplicitInstantiationOrSpecialization() const {
@@ -566,14 +566,14 @@
         getTemplateSpecializationKind());
   }
 
-  /// \brief Set the template specialization kind.
+  /// Set the template specialization kind.
   void setTemplateSpecializationKind(TemplateSpecializationKind TSK) {
     assert(TSK != TSK_Undeclared &&
          "Cannot encode TSK_Undeclared for a function template specialization");
     Template.setInt(TSK - 1);
   }
 
-  /// \brief Retrieve the first point of instantiation of this function
+  /// Retrieve the first point of instantiation of this function
   /// template specialization.
   ///
   /// The point of instantiation may be an invalid source location if this
@@ -582,7 +582,7 @@
     return PointOfInstantiation;
   }
 
-  /// \brief Set the (first) point of instantiation of this function template
+  /// Set the (first) point of instantiation of this function template
   /// specialization.
   void setPointOfInstantiation(SourceLocation POI) {
     PointOfInstantiation = POI;
@@ -602,7 +602,7 @@
   }
 };
 
-/// \brief Provides information a specialization of a member of a class
+/// Provides information a specialization of a member of a class
 /// template, which may be a member function, static data member,
 /// member class or member enumeration.
 class MemberSpecializationInfo {
@@ -622,11 +622,11 @@
            "Cannot encode undeclared template specializations for members");
   }
 
-  /// \brief Retrieve the member declaration from which this member was
+  /// Retrieve the member declaration from which this member was
   /// instantiated.
   NamedDecl *getInstantiatedFrom() const { return MemberAndTSK.getPointer(); }
 
-  /// \brief Determine what kind of template specialization this is.
+  /// Determine what kind of template specialization this is.
   TemplateSpecializationKind getTemplateSpecializationKind() const {
     return (TemplateSpecializationKind)(MemberAndTSK.getInt() + 1);
   }
@@ -635,27 +635,27 @@
     return getTemplateSpecializationKind() == TSK_ExplicitSpecialization;
   }
 
-  /// \brief Set the template specialization kind.
+  /// Set the template specialization kind.
   void setTemplateSpecializationKind(TemplateSpecializationKind TSK) {
     assert(TSK != TSK_Undeclared &&
            "Cannot encode undeclared template specializations for members");
     MemberAndTSK.setInt(TSK - 1);
   }
 
-  /// \brief Retrieve the first point of instantiation of this member.
+  /// Retrieve the first point of instantiation of this member.
   /// If the point of instantiation is an invalid location, then this member
   /// has not yet been instantiated.
   SourceLocation getPointOfInstantiation() const {
     return PointOfInstantiation;
   }
 
-  /// \brief Set the first point of instantiation.
+  /// Set the first point of instantiation.
   void setPointOfInstantiation(SourceLocation POI) {
     PointOfInstantiation = POI;
   }
 };
 
-/// \brief Provides information about a dependent function-template
+/// Provides information about a dependent function-template
 /// specialization declaration.
 ///
 /// Since explicit function template specialization and instantiation
@@ -700,25 +700,25 @@
   Create(ASTContext &Context, const UnresolvedSetImpl &Templates,
          const TemplateArgumentListInfo &TemplateArgs);
 
-  /// \brief Returns the number of function templates that this might
+  /// Returns the number of function templates that this might
   /// be a specialization of.
   unsigned getNumTemplates() const { return NumTemplates; }
 
-  /// \brief Returns the i'th template candidate.
+  /// Returns the i'th template candidate.
   FunctionTemplateDecl *getTemplate(unsigned I) const {
     assert(I < getNumTemplates() && "template index out of range");
     return getTrailingObjects<FunctionTemplateDecl *>()[I];
   }
 
-  /// \brief Returns the explicit template arguments that were given.
+  /// Returns the explicit template arguments that were given.
   const TemplateArgumentLoc *getTemplateArgs() const {
     return getTrailingObjects<TemplateArgumentLoc>();
   }
 
-  /// \brief Returns the number of explicit template arguments that were given.
+  /// Returns the number of explicit template arguments that were given.
   unsigned getNumTemplateArgs() const { return NumArgs; }
 
-  /// \brief Returns the nth template argument.
+  /// Returns the nth template argument.
   const TemplateArgumentLoc &getTemplateArg(unsigned I) const {
     assert(I < getNumTemplateArgs() && "template arg index out of range");
     return getTemplateArgs()[I];
@@ -804,7 +804,7 @@
   struct CommonBase {
     CommonBase() : InstantiatedFromMember(nullptr, false) {}
 
-    /// \brief The template from which this was most
+    /// The template from which this was most
     /// directly instantiated (or null).
     ///
     /// The boolean value indicates whether this template
@@ -812,7 +812,7 @@
     llvm::PointerIntPair<RedeclarableTemplateDecl*, 1, bool>
       InstantiatedFromMember;
 
-    /// \brief If non-null, points to an array of specializations (including
+    /// If non-null, points to an array of specializations (including
     /// partial specializations) known only by their external declaration IDs.
     ///
     /// The first value in the array is the number of specializations/partial
@@ -820,11 +820,11 @@
     uint32_t *LazySpecializations = nullptr;
   };
 
-  /// \brief Pointer to the common data shared by all declarations of this
+  /// Pointer to the common data shared by all declarations of this
   /// template.
   mutable CommonBase *Common = nullptr;
   
-  /// \brief Retrieves the "common" pointer shared by all (re-)declarations of
+  /// Retrieves the "common" pointer shared by all (re-)declarations of
   /// the same template. Calling this routine may implicitly allocate memory
   /// for the common pointer.
   CommonBase *getCommonPtr() const;
@@ -850,7 +850,7 @@
   friend class ASTReader;
   template <class decl_type> friend class RedeclarableTemplate;
 
-  /// \brief Retrieves the canonical declaration of this template.
+  /// Retrieves the canonical declaration of this template.
   RedeclarableTemplateDecl *getCanonicalDecl() override {
     return getFirstDecl();
   }
@@ -858,7 +858,7 @@
     return getFirstDecl();
   }
 
-  /// \brief Determines whether this template was a specialization of a
+  /// Determines whether this template was a specialization of a
   /// member template.
   ///
   /// In the following example, the function template \c X<int>::f and the
@@ -880,14 +880,14 @@
     return getCommonPtr()->InstantiatedFromMember.getInt();
   }
 
-  /// \brief Note that this member template is a specialization.
+  /// Note that this member template is a specialization.
   void setMemberSpecialization() {
     assert(getCommonPtr()->InstantiatedFromMember.getPointer() &&
            "Only member templates can be member template specializations");
     getCommonPtr()->InstantiatedFromMember.setInt(true);
   }
 
-  /// \brief Retrieve the member template from which this template was
+  /// Retrieve the member template from which this template was
   /// instantiated, or nullptr if this template was not instantiated from a 
   /// member template.
   ///
@@ -969,14 +969,14 @@
 protected:
   friend class FunctionDecl;
 
-  /// \brief Data that is common to all of the declarations of a given
+  /// Data that is common to all of the declarations of a given
   /// function template.
   struct Common : CommonBase {
-    /// \brief The function template specializations for this function
+    /// The function template specializations for this function
     /// template, including explicit specializations and instantiations.
     llvm::FoldingSetVector<FunctionTemplateSpecializationInfo> Specializations;
 
-    /// \brief The set of "injected" template arguments used within this
+    /// The set of "injected" template arguments used within this
     /// function template.
     ///
     /// This pointer refers to the template arguments (there are as
@@ -1000,12 +1000,12 @@
     return static_cast<Common *>(RedeclarableTemplateDecl::getCommonPtr());
   }
 
-  /// \brief Retrieve the set of function template specializations of this
+  /// Retrieve the set of function template specializations of this
   /// function template.
   llvm::FoldingSetVector<FunctionTemplateSpecializationInfo> &
   getSpecializations() const;
 
-  /// \brief Add a specialization of this function template.
+  /// Add a specialization of this function template.
   ///
   /// \param InsertPos Insert position in the FoldingSetVector, must have been
   ///        retrieved by an earlier call to findSpecialization().
@@ -1016,7 +1016,7 @@
   friend class ASTDeclReader;
   friend class ASTDeclWriter;
 
-  /// \brief Load any lazily-loaded specializations from the external source.
+  /// Load any lazily-loaded specializations from the external source.
   void LoadLazySpecializations() const;
 
   /// Get the underlying function declaration of the template.
@@ -1030,7 +1030,7 @@
     return getTemplatedDecl()->isThisDeclarationADefinition();
   }
 
-  /// \brief Return the specialization with the provided arguments if it exists,
+  /// Return the specialization with the provided arguments if it exists,
   /// otherwise return the insertion point.
   FunctionDecl *findSpecialization(ArrayRef<TemplateArgument> Args,
                                    void *&InsertPos);
@@ -1044,7 +1044,7 @@
              RedeclarableTemplateDecl::getCanonicalDecl());
   }
 
-  /// \brief Retrieve the previous declaration of this function template, or
+  /// Retrieve the previous declaration of this function template, or
   /// nullptr if no such declaration exists.
   FunctionTemplateDecl *getPreviousDecl() {
     return cast_or_null<FunctionTemplateDecl>(
@@ -1084,7 +1084,7 @@
     return makeSpecIterator(getSpecializations(), true);
   }
 
-  /// \brief Retrieve the "injected" template arguments that correspond to the
+  /// Retrieve the "injected" template arguments that correspond to the
   /// template parameters of this function template.
   ///
   /// Although the C++ standard has no notion of the "injected" template
@@ -1093,14 +1093,14 @@
   /// template.
   ArrayRef<TemplateArgument> getInjectedTemplateArgs();
 
-  /// \brief Create a function template node.
+  /// Create a function template node.
   static FunctionTemplateDecl *Create(ASTContext &C, DeclContext *DC,
                                       SourceLocation L,
                                       DeclarationName Name,
                                       TemplateParameterList *Params,
                                       NamedDecl *Decl);
 
-  /// \brief Create an empty function template node.
+  /// Create an empty function template node.
   static FunctionTemplateDecl *CreateDeserialized(ASTContext &C, unsigned ID);
 
   // Implement isa/cast/dyncast support
@@ -1112,7 +1112,7 @@
 // Kinds of Template Parameters
 //===----------------------------------------------------------------------===//
 
-/// \brief Defines the position of a template parameter within a template
+/// Defines the position of a template parameter within a template
 /// parameter list.
 ///
 /// Because template parameter can be listed
@@ -1145,7 +1145,7 @@
   unsigned getIndex() const { return Position; }
 };
 
-/// \brief Declaration of a template type parameter.
+/// Declaration of a template type parameter.
 ///
 /// For example, "T" in
 /// \code
@@ -1155,13 +1155,13 @@
   /// Sema creates these on the stack during auto type deduction.
   friend class Sema;
 
-  /// \brief Whether this template type parameter was declaration with
+  /// Whether this template type parameter was declaration with
   /// the 'typename' keyword.
   ///
   /// If false, it was declared with the 'class' keyword.
   bool Typename : 1;
 
-  /// \brief The default template argument, if any.
+  /// The default template argument, if any.
   using DefArgStorage =
       DefaultArgStorage<TemplateTypeParmDecl, TypeSourceInfo *>;
   DefArgStorage DefaultArgument;
@@ -1181,7 +1181,7 @@
   static TemplateTypeParmDecl *CreateDeserialized(const ASTContext &C, 
                                                   unsigned ID);
 
-  /// \brief Whether this template type parameter was declared with
+  /// Whether this template type parameter was declared with
   /// the 'typename' keyword.
   ///
   /// If not, it was declared with the 'class' keyword.
@@ -1189,57 +1189,57 @@
 
   const DefArgStorage &getDefaultArgStorage() const { return DefaultArgument; }
 
-  /// \brief Determine whether this template parameter has a default
+  /// Determine whether this template parameter has a default
   /// argument.
   bool hasDefaultArgument() const { return DefaultArgument.isSet(); }
 
-  /// \brief Retrieve the default argument, if any.
+  /// Retrieve the default argument, if any.
   QualType getDefaultArgument() const {
     return DefaultArgument.get()->getType();
   }
 
-  /// \brief Retrieves the default argument's source information, if any.
+  /// Retrieves the default argument's source information, if any.
   TypeSourceInfo *getDefaultArgumentInfo() const {
     return DefaultArgument.get();
   }
 
-  /// \brief Retrieves the location of the default argument declaration.
+  /// Retrieves the location of the default argument declaration.
   SourceLocation getDefaultArgumentLoc() const;
 
-  /// \brief Determines whether the default argument was inherited
+  /// Determines whether the default argument was inherited
   /// from a previous declaration of this template.
   bool defaultArgumentWasInherited() const {
     return DefaultArgument.isInherited();
   }
 
-  /// \brief Set the default argument for this template parameter.
+  /// Set the default argument for this template parameter.
   void setDefaultArgument(TypeSourceInfo *DefArg) {
     DefaultArgument.set(DefArg);
   }
 
-  /// \brief Set that this default argument was inherited from another
+  /// Set that this default argument was inherited from another
   /// parameter.
   void setInheritedDefaultArgument(const ASTContext &C,
                                    TemplateTypeParmDecl *Prev) {
     DefaultArgument.setInherited(C, Prev);
   }
 
-  /// \brief Removes the default argument of this template parameter.
+  /// Removes the default argument of this template parameter.
   void removeDefaultArgument() {
     DefaultArgument.clear();
   }
 
-  /// \brief Set whether this template type parameter was declared with
+  /// Set whether this template type parameter was declared with
   /// the 'typename' or 'class' keyword.
   void setDeclaredWithTypename(bool withTypename) { Typename = withTypename; }
 
-  /// \brief Retrieve the depth of the template parameter.
+  /// Retrieve the depth of the template parameter.
   unsigned getDepth() const;
 
-  /// \brief Retrieve the index of the template parameter.
+  /// Retrieve the index of the template parameter.
   unsigned getIndex() const;
 
-  /// \brief Returns whether this is a parameter pack.
+  /// Returns whether this is a parameter pack.
   bool isParameterPack() const;
 
   SourceRange getSourceRange() const override LLVM_READONLY;
@@ -1262,7 +1262,7 @@
   friend class ASTDeclReader;
   friend TrailingObjects;
 
-  /// \brief The default template argument, if any, and whether or not
+  /// The default template argument, if any, and whether or not
   /// it was inherited.
   using DefArgStorage = DefaultArgStorage<NonTypeTemplateParmDecl, Expr *>;
   DefArgStorage DefaultArgument;
@@ -1270,15 +1270,15 @@
   // FIXME: Collapse this into TemplateParamPosition; or, just move depth/index
   // down here to save memory.
 
-  /// \brief Whether this non-type template parameter is a parameter pack.
+  /// Whether this non-type template parameter is a parameter pack.
   bool ParameterPack;
 
-  /// \brief Whether this non-type template parameter is an "expanded"
+  /// Whether this non-type template parameter is an "expanded"
   /// parameter pack, meaning that its type is a pack expansion and we
   /// already know the set of types that expansion expands to.
   bool ExpandedParameterPack = false;
 
-  /// \brief The number of types in an expanded parameter pack.
+  /// The number of types in an expanded parameter pack.
   unsigned NumExpandedTypes = 0;
 
   size_t numTrailingObjects(
@@ -1328,23 +1328,23 @@
 
   const DefArgStorage &getDefaultArgStorage() const { return DefaultArgument; }
 
-  /// \brief Determine whether this template parameter has a default
+  /// Determine whether this template parameter has a default
   /// argument.
   bool hasDefaultArgument() const { return DefaultArgument.isSet(); }
 
-  /// \brief Retrieve the default argument, if any.
+  /// Retrieve the default argument, if any.
   Expr *getDefaultArgument() const { return DefaultArgument.get(); }
 
-  /// \brief Retrieve the location of the default argument, if any.
+  /// Retrieve the location of the default argument, if any.
   SourceLocation getDefaultArgumentLoc() const;
 
-  /// \brief Determines whether the default argument was inherited
+  /// Determines whether the default argument was inherited
   /// from a previous declaration of this template.
   bool defaultArgumentWasInherited() const {
     return DefaultArgument.isInherited();
   }
 
-  /// \brief Set the default argument for this template parameter, and
+  /// Set the default argument for this template parameter, and
   /// whether that default argument was inherited from another
   /// declaration.
   void setDefaultArgument(Expr *DefArg) { DefaultArgument.set(DefArg); }
@@ -1353,10 +1353,10 @@
     DefaultArgument.setInherited(C, Parm);
   }
 
-  /// \brief Removes the default argument of this template parameter.
+  /// Removes the default argument of this template parameter.
   void removeDefaultArgument() { DefaultArgument.clear(); }
 
-  /// \brief Whether this parameter is a non-type template parameter pack.
+  /// Whether this parameter is a non-type template parameter pack.
   ///
   /// If the parameter is a parameter pack, the type may be a
   /// \c PackExpansionType. In the following example, the \c Dims parameter
@@ -1367,7 +1367,7 @@
   /// \endcode
   bool isParameterPack() const { return ParameterPack; }
 
-  /// \brief Whether this parameter pack is a pack expansion.
+  /// Whether this parameter pack is a pack expansion.
   ///
   /// A non-type template parameter pack is a pack expansion if its type
   /// contains an unexpanded parameter pack. In this case, we will have
@@ -1376,7 +1376,7 @@
     return ParameterPack && getType()->getAs<PackExpansionType>();
   }
 
-  /// \brief Whether this parameter is a non-type template parameter pack
+  /// Whether this parameter is a non-type template parameter pack
   /// that has a known list of different types at different positions.
   ///
   /// A parameter pack is an expanded parameter pack when the original
@@ -1402,14 +1402,14 @@
   /// return the expansion types.
   bool isExpandedParameterPack() const { return ExpandedParameterPack; }
 
-  /// \brief Retrieves the number of expansion types in an expanded parameter
+  /// Retrieves the number of expansion types in an expanded parameter
   /// pack.
   unsigned getNumExpansionTypes() const {
     assert(ExpandedParameterPack && "Not an expansion parameter pack");
     return NumExpandedTypes;
   }
 
-  /// \brief Retrieve a particular expansion type within an expanded parameter
+  /// Retrieve a particular expansion type within an expanded parameter
   /// pack.
   QualType getExpansionType(unsigned I) const {
     assert(I < NumExpandedTypes && "Out-of-range expansion type index");
@@ -1418,7 +1418,7 @@
     return TypesAndInfos[I].first;
   }
 
-  /// \brief Retrieve a particular expansion type source info within an
+  /// Retrieve a particular expansion type source info within an
   /// expanded parameter pack.
   TypeSourceInfo *getExpansionTypeSourceInfo(unsigned I) const {
     assert(I < NumExpandedTypes && "Out-of-range expansion type index");
@@ -1444,20 +1444,20 @@
       protected TemplateParmPosition,
       private llvm::TrailingObjects<TemplateTemplateParmDecl,
                                     TemplateParameterList *> {
-  /// \brief The default template argument, if any.
+  /// The default template argument, if any.
   using DefArgStorage =
       DefaultArgStorage<TemplateTemplateParmDecl, TemplateArgumentLoc *>;
   DefArgStorage DefaultArgument;
 
-  /// \brief Whether this parameter is a parameter pack.
+  /// Whether this parameter is a parameter pack.
   bool ParameterPack;
 
-  /// \brief Whether this template template parameter is an "expanded"
+  /// Whether this template template parameter is an "expanded"
   /// parameter pack, meaning that it is a pack expansion and we
   /// already know the set of template parameters that expansion expands to.
   bool ExpandedParameterPack = false;
 
-  /// \brief The number of parameters in an expanded parameter pack.
+  /// The number of parameters in an expanded parameter pack.
   unsigned NumExpandedParams = 0;
 
   TemplateTemplateParmDecl(DeclContext *DC, SourceLocation L,
@@ -1502,7 +1502,7 @@
   using TemplateParmPosition::setPosition;
   using TemplateParmPosition::getIndex;
 
-  /// \brief Whether this template template parameter is a template
+  /// Whether this template template parameter is a template
   /// parameter pack.
   ///
   /// \code
@@ -1510,7 +1510,7 @@
   /// \endcode
   bool isParameterPack() const { return ParameterPack; }
 
-  /// \brief Whether this parameter pack is a pack expansion.
+  /// Whether this parameter pack is a pack expansion.
   ///
   /// A template template parameter pack is a pack expansion if its template
   /// parameter list contains an unexpanded parameter pack.
@@ -1519,7 +1519,7 @@
            getTemplateParameters()->containsUnexpandedParameterPack();
   }
 
-  /// \brief Whether this parameter is a template template parameter pack that
+  /// Whether this parameter is a template template parameter pack that
   /// has a known list of different template parameter lists at different
   /// positions.
   ///
@@ -1539,14 +1539,14 @@
   /// parameter pack.
   bool isExpandedParameterPack() const { return ExpandedParameterPack; }
 
-  /// \brief Retrieves the number of expansion template parameters in
+  /// Retrieves the number of expansion template parameters in
   /// an expanded parameter pack.
   unsigned getNumExpansionTemplateParameters() const {
     assert(ExpandedParameterPack && "Not an expansion parameter pack");
     return NumExpandedParams;
   }
 
-  /// \brief Retrieve a particular expansion type within an expanded parameter
+  /// Retrieve a particular expansion type within an expanded parameter
   /// pack.
   TemplateParameterList *getExpansionTemplateParameters(unsigned I) const {
     assert(I < NumExpandedParams && "Out-of-range expansion type index");
@@ -1555,26 +1555,26 @@
 
   const DefArgStorage &getDefaultArgStorage() const { return DefaultArgument; }
 
-  /// \brief Determine whether this template parameter has a default
+  /// Determine whether this template parameter has a default
   /// argument.
   bool hasDefaultArgument() const { return DefaultArgument.isSet(); }
 
-  /// \brief Retrieve the default argument, if any.
+  /// Retrieve the default argument, if any.
   const TemplateArgumentLoc &getDefaultArgument() const {
     static const TemplateArgumentLoc None;
     return DefaultArgument.isSet() ? *DefaultArgument.get() : None;
   }
 
-  /// \brief Retrieve the location of the default argument, if any.
+  /// Retrieve the location of the default argument, if any.
   SourceLocation getDefaultArgumentLoc() const;
 
-  /// \brief Determines whether the default argument was inherited
+  /// Determines whether the default argument was inherited
   /// from a previous declaration of this template.
   bool defaultArgumentWasInherited() const {
     return DefaultArgument.isInherited();
   }
 
-  /// \brief Set the default argument for this template parameter, and
+  /// Set the default argument for this template parameter, and
   /// whether that default argument was inherited from another
   /// declaration.
   void setDefaultArgument(const ASTContext &C,
@@ -1584,7 +1584,7 @@
     DefaultArgument.setInherited(C, Prev);
   }
 
-  /// \brief Removes the default argument of this template parameter.
+  /// Removes the default argument of this template parameter.
   void removeDefaultArgument() { DefaultArgument.clear(); }
 
   SourceRange getSourceRange() const override LLVM_READONLY {
@@ -1599,7 +1599,7 @@
   static bool classofKind(Kind K) { return K == TemplateTemplateParm; }
 };
 
-/// \brief Represents the builtin template declaration which is used to
+/// Represents the builtin template declaration which is used to
 /// implement __make_integer_seq and other builtin templates.  It serves
 /// no real purpose beyond existing as a place to hold template parameters.
 class BuiltinTemplateDecl : public TemplateDecl {
@@ -1628,7 +1628,7 @@
   BuiltinTemplateKind getBuiltinTemplateKind() const { return BTK; }
 };
 
-/// \brief Represents a class template specialization, which refers to
+/// Represents a class template specialization, which refers to
 /// a class template with a given set of template arguments.
 ///
 /// Class template specializations represent both explicit
@@ -1643,48 +1643,48 @@
 /// \endcode
 class ClassTemplateSpecializationDecl
   : public CXXRecordDecl, public llvm::FoldingSetNode {
-  /// \brief Structure that stores information about a class template
+  /// Structure that stores information about a class template
   /// specialization that was instantiated from a class template partial
   /// specialization.
   struct SpecializedPartialSpecialization {
-    /// \brief The class template partial specialization from which this
+    /// The class template partial specialization from which this
     /// class template specialization was instantiated.
     ClassTemplatePartialSpecializationDecl *PartialSpecialization;
 
-    /// \brief The template argument list deduced for the class template
+    /// The template argument list deduced for the class template
     /// partial specialization itself.
     const TemplateArgumentList *TemplateArgs;
   };
 
-  /// \brief The template that this specialization specializes
+  /// The template that this specialization specializes
   llvm::PointerUnion<ClassTemplateDecl *, SpecializedPartialSpecialization *>
     SpecializedTemplate;
 
-  /// \brief Further info for explicit template specialization/instantiation.
+  /// Further info for explicit template specialization/instantiation.
   struct ExplicitSpecializationInfo {
-    /// \brief The type-as-written.
+    /// The type-as-written.
     TypeSourceInfo *TypeAsWritten = nullptr;
 
-    /// \brief The location of the extern keyword.
+    /// The location of the extern keyword.
     SourceLocation ExternLoc;
 
-    /// \brief The location of the template keyword.
+    /// The location of the template keyword.
     SourceLocation TemplateKeywordLoc;
 
     ExplicitSpecializationInfo() = default;
   };
 
-  /// \brief Further info for explicit template specialization/instantiation.
+  /// Further info for explicit template specialization/instantiation.
   /// Does not apply to implicit specializations.
   ExplicitSpecializationInfo *ExplicitInfo = nullptr;
 
-  /// \brief The template arguments used to describe this specialization.
+  /// The template arguments used to describe this specialization.
   const TemplateArgumentList *TemplateArgs;
 
-  /// \brief The point where this template was instantiated (if any)
+  /// The point where this template was instantiated (if any)
   SourceLocation PointOfInstantiation;
 
-  /// \brief The kind of specialization this declaration refers to.
+  /// The kind of specialization this declaration refers to.
   /// Really a value of type TemplateSpecializationKind.
   unsigned SpecializationKind : 3;
 
@@ -1730,16 +1730,16 @@
     return cast<ClassTemplateSpecializationDecl>(Recent);
   }
 
-  /// \brief Retrieve the template that this specialization specializes.
+  /// Retrieve the template that this specialization specializes.
   ClassTemplateDecl *getSpecializedTemplate() const;
 
-  /// \brief Retrieve the template arguments of the class template
+  /// Retrieve the template arguments of the class template
   /// specialization.
   const TemplateArgumentList &getTemplateArgs() const {
     return *TemplateArgs;
   }
 
-  /// \brief Determine the kind of specialization that this
+  /// Determine the kind of specialization that this
   /// declaration represents.
   TemplateSpecializationKind getSpecializationKind() const {
     return static_cast<TemplateSpecializationKind>(SpecializationKind);
@@ -1749,7 +1749,7 @@
     return getSpecializationKind() == TSK_ExplicitSpecialization;
   }
 
-  /// \brief True if this declaration is an explicit specialization,
+  /// True if this declaration is an explicit specialization,
   /// explicit instantiation declaration, or explicit instantiation
   /// definition.
   bool isExplicitInstantiationOrSpecialization() const {
@@ -1761,7 +1761,7 @@
     SpecializationKind = TSK;
   }
 
-  /// \brief Get the point of instantiation (if any), or null if none.
+  /// Get the point of instantiation (if any), or null if none.
   SourceLocation getPointOfInstantiation() const {
     return PointOfInstantiation;
   }
@@ -1771,7 +1771,7 @@
     PointOfInstantiation = Loc;
   }
 
-  /// \brief If this class template specialization is an instantiation of
+  /// If this class template specialization is an instantiation of
   /// a template (rather than an explicit specialization), return the
   /// class template or class template partial specialization from which it
   /// was instantiated.
@@ -1785,7 +1785,7 @@
     return getSpecializedTemplateOrPartial();
   }
 
-  /// \brief Retrieve the class template or class template partial
+  /// Retrieve the class template or class template partial
   /// specialization which was specialized by this.
   llvm::PointerUnion<ClassTemplateDecl *,
                      ClassTemplatePartialSpecializationDecl *>
@@ -1797,7 +1797,7 @@
     return SpecializedTemplate.get<ClassTemplateDecl*>();
   }
 
-  /// \brief Retrieve the set of template arguments that should be used
+  /// Retrieve the set of template arguments that should be used
   /// to instantiate members of the class template or class template partial
   /// specialization from which this class template specialization was
   /// instantiated.
@@ -1816,7 +1816,7 @@
     return getTemplateArgs();
   }
 
-  /// \brief Note that this class template specialization is actually an
+  /// Note that this class template specialization is actually an
   /// instantiation of the given class template partial specialization whose
   /// template arguments have been deduced.
   void setInstantiationOf(ClassTemplatePartialSpecializationDecl *PartialSpec,
@@ -1829,7 +1829,7 @@
     SpecializedTemplate = PS;
   }
 
-  /// \brief Note that this class template specialization is an instantiation
+  /// Note that this class template specialization is an instantiation
   /// of the given class template.
   void setInstantiationOf(ClassTemplateDecl *TemplDecl) {
     assert(!SpecializedTemplate.is<SpecializedPartialSpecialization*>() &&
@@ -1837,7 +1837,7 @@
     SpecializedTemplate = TemplDecl;
   }
 
-  /// \brief Sets the type of this specialization as it was written by
+  /// Sets the type of this specialization as it was written by
   /// the user. This will be a class template specialization type.
   void setTypeAsWritten(TypeSourceInfo *T) {
     if (!ExplicitInfo)
@@ -1845,32 +1845,32 @@
     ExplicitInfo->TypeAsWritten = T;
   }
 
-  /// \brief Gets the type of this specialization as it was written by
+  /// Gets the type of this specialization as it was written by
   /// the user, if it was so written.
   TypeSourceInfo *getTypeAsWritten() const {
     return ExplicitInfo ? ExplicitInfo->TypeAsWritten : nullptr;
   }
 
-  /// \brief Gets the location of the extern keyword, if present.
+  /// Gets the location of the extern keyword, if present.
   SourceLocation getExternLoc() const {
     return ExplicitInfo ? ExplicitInfo->ExternLoc : SourceLocation();
   }
 
-  /// \brief Sets the location of the extern keyword.
+  /// Sets the location of the extern keyword.
   void setExternLoc(SourceLocation Loc) {
     if (!ExplicitInfo)
       ExplicitInfo = new (getASTContext()) ExplicitSpecializationInfo;
     ExplicitInfo->ExternLoc = Loc;
   }
 
-  /// \brief Sets the location of the template keyword.
+  /// Sets the location of the template keyword.
   void setTemplateKeywordLoc(SourceLocation Loc) {
     if (!ExplicitInfo)
       ExplicitInfo = new (getASTContext()) ExplicitSpecializationInfo;
     ExplicitInfo->TemplateKeywordLoc = Loc;
   }
 
-  /// \brief Gets the location of the template keyword, if present.
+  /// Gets the location of the template keyword, if present.
   SourceLocation getTemplateKeywordLoc() const {
     return ExplicitInfo ? ExplicitInfo->TemplateKeywordLoc : SourceLocation();
   }
@@ -1899,14 +1899,14 @@
 
 class ClassTemplatePartialSpecializationDecl
   : public ClassTemplateSpecializationDecl {
-  /// \brief The list of template parameters
+  /// The list of template parameters
   TemplateParameterList* TemplateParams = nullptr;
 
-  /// \brief The source info for the template arguments as written.
+  /// The source info for the template arguments as written.
   /// FIXME: redundant with TypeAsWritten?
   const ASTTemplateArgumentListInfo *ArgsAsWritten = nullptr;
 
-  /// \brief The class template partial specialization from which this
+  /// The class template partial specialization from which this
   /// class template partial specialization was instantiated.
   ///
   /// The boolean value will be true to indicate that this class template
@@ -1963,7 +1963,7 @@
     return ArgsAsWritten;
   }
 
-  /// \brief Retrieve the member class template partial specialization from
+  /// Retrieve the member class template partial specialization from
   /// which this particular class template partial specialization was
   /// instantiated.
   ///
@@ -1999,7 +1999,7 @@
     First->InstantiatedFromMember.setPointer(PartialSpec);
   }
 
-  /// \brief Determines whether this class template partial specialization
+  /// Determines whether this class template partial specialization
   /// template was a specialization of a member partial specialization.
   ///
   /// In the following example, the member template partial specialization
@@ -2021,7 +2021,7 @@
     return First->InstantiatedFromMember.getInt();
   }
 
-  /// \brief Note that this member template is a specialization.
+  /// Note that this member template is a specialization.
   void setMemberSpecialization() {
     auto *First = cast<ClassTemplatePartialSpecializationDecl>(getFirstDecl());
     assert(First->InstantiatedFromMember.getPointer() &&
@@ -2050,29 +2050,29 @@
 /// Declaration of a class template.
 class ClassTemplateDecl : public RedeclarableTemplateDecl {
 protected:
-  /// \brief Data that is common to all of the declarations of a given
+  /// Data that is common to all of the declarations of a given
   /// class template.
   struct Common : CommonBase {
-    /// \brief The class template specializations for this class
+    /// The class template specializations for this class
     /// template, including explicit specializations and instantiations.
     llvm::FoldingSetVector<ClassTemplateSpecializationDecl> Specializations;
 
-    /// \brief The class template partial specializations for this class
+    /// The class template partial specializations for this class
     /// template.
     llvm::FoldingSetVector<ClassTemplatePartialSpecializationDecl>
       PartialSpecializations;
 
-    /// \brief The injected-class-name type for this class template.
+    /// The injected-class-name type for this class template.
     QualType InjectedClassNameType;
 
     Common() = default;
   };
 
-  /// \brief Retrieve the set of specializations of this class template.
+  /// Retrieve the set of specializations of this class template.
   llvm::FoldingSetVector<ClassTemplateSpecializationDecl> &
   getSpecializations() const;
 
-  /// \brief Retrieve the set of partial specializations of this class
+  /// Retrieve the set of partial specializations of this class
   /// template.
   llvm::FoldingSetVector<ClassTemplatePartialSpecializationDecl> &
   getPartialSpecializations();
@@ -2098,22 +2098,22 @@
   friend class ASTDeclReader;
   friend class ASTDeclWriter;
 
-  /// \brief Load any lazily-loaded specializations from the external source.
+  /// Load any lazily-loaded specializations from the external source.
   void LoadLazySpecializations() const;
 
-  /// \brief Get the underlying class declarations of the template.
+  /// Get the underlying class declarations of the template.
   CXXRecordDecl *getTemplatedDecl() const {
     return static_cast<CXXRecordDecl *>(TemplatedDecl);
   }
 
-  /// \brief Returns whether this template declaration defines the primary
+  /// Returns whether this template declaration defines the primary
   /// class pattern.
   bool isThisDeclarationADefinition() const {
     return getTemplatedDecl()->isThisDeclarationADefinition();
   }
 
   // FIXME: remove default argument for AssociatedConstraints
-  /// \brief Create a class template node.
+  /// Create a class template node.
   static ClassTemplateDecl *Create(ASTContext &C, DeclContext *DC,
                                    SourceLocation L,
                                    DeclarationName Name,
@@ -2121,15 +2121,15 @@
                                    NamedDecl *Decl,
                                    Expr *AssociatedConstraints = nullptr);
 
-  /// \brief Create an empty class template node.
+  /// Create an empty class template node.
   static ClassTemplateDecl *CreateDeserialized(ASTContext &C, unsigned ID);
 
-  /// \brief Return the specialization with the provided arguments if it exists,
+  /// Return the specialization with the provided arguments if it exists,
   /// otherwise return the insertion point.
   ClassTemplateSpecializationDecl *
   findSpecialization(ArrayRef<TemplateArgument> Args, void *&InsertPos);
 
-  /// \brief Insert the specified specialization knowing that it is not already
+  /// Insert the specified specialization knowing that it is not already
   /// in. InsertPos must be obtained from findSpecialization.
   void AddSpecialization(ClassTemplateSpecializationDecl *D, void *InsertPos);
 
@@ -2142,7 +2142,7 @@
              RedeclarableTemplateDecl::getCanonicalDecl());
   }
 
-  /// \brief Retrieve the previous declaration of this class template, or
+  /// Retrieve the previous declaration of this class template, or
   /// nullptr if no such declaration exists.
   ClassTemplateDecl *getPreviousDecl() {
     return cast_or_null<ClassTemplateDecl>(
@@ -2167,21 +2167,21 @@
              RedeclarableTemplateDecl::getInstantiatedFromMemberTemplate());
   }
 
-  /// \brief Return the partial specialization with the provided arguments if it
+  /// Return the partial specialization with the provided arguments if it
   /// exists, otherwise return the insertion point.
   ClassTemplatePartialSpecializationDecl *
   findPartialSpecialization(ArrayRef<TemplateArgument> Args, void *&InsertPos);
 
-  /// \brief Insert the specified partial specialization knowing that it is not
+  /// Insert the specified partial specialization knowing that it is not
   /// already in. InsertPos must be obtained from findPartialSpecialization.
   void AddPartialSpecialization(ClassTemplatePartialSpecializationDecl *D,
                                 void *InsertPos);
 
-  /// \brief Retrieve the partial specializations as an ordered list.
+  /// Retrieve the partial specializations as an ordered list.
   void getPartialSpecializations(
           SmallVectorImpl<ClassTemplatePartialSpecializationDecl *> &PS);
 
-  /// \brief Find a class template partial specialization with the given
+  /// Find a class template partial specialization with the given
   /// type T.
   ///
   /// \param T a dependent type that names a specialization of this class
@@ -2191,7 +2191,7 @@
   /// the type \p T, or nullptr if no such partial specialization exists.
   ClassTemplatePartialSpecializationDecl *findPartialSpecialization(QualType T);
 
-  /// \brief Find a class template partial specialization which was instantiated
+  /// Find a class template partial specialization which was instantiated
   /// from the given member partial specialization.
   ///
   /// \param D a member class template partial specialization.
@@ -2203,7 +2203,7 @@
   findPartialSpecInstantiatedFromMember(
                                      ClassTemplatePartialSpecializationDecl *D);
 
-  /// \brief Retrieve the template specialization type of the
+  /// Retrieve the template specialization type of the
   /// injected-class-name for this class template.
   ///
   /// The injected-class-name for a class template \c X is \c
@@ -2239,7 +2239,7 @@
   static bool classofKind(Kind K) { return K == ClassTemplate; }
 };
 
-/// \brief Declaration of a friend template.
+/// Declaration of a friend template.
 ///
 /// For example:
 /// \code
@@ -2303,7 +2303,7 @@
     return Friend.dyn_cast<NamedDecl*>();
   }
 
-  /// \brief Retrieves the location of the 'friend' keyword.
+  /// Retrieves the location of the 'friend' keyword.
   SourceLocation getFriendLoc() const {
     return FriendLoc;
   }
@@ -2322,7 +2322,7 @@
   static bool classofKind(Kind K) { return K == Decl::FriendTemplate; }
 };
 
-/// \brief Declaration of an alias template.
+/// Declaration of an alias template.
 ///
 /// For example:
 /// \code
@@ -2363,7 +2363,7 @@
              RedeclarableTemplateDecl::getCanonicalDecl());
   }
 
-  /// \brief Retrieve the previous declaration of this function template, or
+  /// Retrieve the previous declaration of this function template, or
   /// nullptr if no such declaration exists.
   TypeAliasTemplateDecl *getPreviousDecl() {
     return cast_or_null<TypeAliasTemplateDecl>(
@@ -2380,14 +2380,14 @@
              RedeclarableTemplateDecl::getInstantiatedFromMemberTemplate());
   }
 
-  /// \brief Create a function template node.
+  /// Create a function template node.
   static TypeAliasTemplateDecl *Create(ASTContext &C, DeclContext *DC,
                                        SourceLocation L,
                                        DeclarationName Name,
                                        TemplateParameterList *Params,
                                        NamedDecl *Decl);
 
-  /// \brief Create an empty alias template node.
+  /// Create an empty alias template node.
   static TypeAliasTemplateDecl *CreateDeserialized(ASTContext &C, unsigned ID);
 
   // Implement isa/cast/dyncast support
@@ -2395,7 +2395,7 @@
   static bool classofKind(Kind K) { return K == TypeAliasTemplate; }
 };
 
-/// \brief Declaration of a function specialization at template class scope.
+/// Declaration of a function specialization at template class scope.
 ///
 /// This is a non-standard extension needed to support MSVC.
 ///
@@ -2461,7 +2461,7 @@
 inline AnyFunctionDecl::AnyFunctionDecl(FunctionTemplateDecl *FTD)
     : Function(FTD) {}
 
-/// \brief Represents a variable template specialization, which refers to
+/// Represents a variable template specialization, which refers to
 /// a variable template with a given set of template arguments.
 ///
 /// Variable template specializations represent both explicit
@@ -2477,53 +2477,53 @@
 class VarTemplateSpecializationDecl : public VarDecl,
                                       public llvm::FoldingSetNode {
 
-  /// \brief Structure that stores information about a variable template
+  /// Structure that stores information about a variable template
   /// specialization that was instantiated from a variable template partial
   /// specialization.
   struct SpecializedPartialSpecialization {
-    /// \brief The variable template partial specialization from which this
+    /// The variable template partial specialization from which this
     /// variable template specialization was instantiated.
     VarTemplatePartialSpecializationDecl *PartialSpecialization;
 
-    /// \brief The template argument list deduced for the variable template
+    /// The template argument list deduced for the variable template
     /// partial specialization itself.
     const TemplateArgumentList *TemplateArgs;
   };
 
-  /// \brief The template that this specialization specializes.
+  /// The template that this specialization specializes.
   llvm::PointerUnion<VarTemplateDecl *, SpecializedPartialSpecialization *>
   SpecializedTemplate;
 
-  /// \brief Further info for explicit template specialization/instantiation.
+  /// Further info for explicit template specialization/instantiation.
   struct ExplicitSpecializationInfo {
-    /// \brief The type-as-written.
+    /// The type-as-written.
     TypeSourceInfo *TypeAsWritten = nullptr;
 
-    /// \brief The location of the extern keyword.
+    /// The location of the extern keyword.
     SourceLocation ExternLoc;
 
-    /// \brief The location of the template keyword.
+    /// The location of the template keyword.
     SourceLocation TemplateKeywordLoc;
 
     ExplicitSpecializationInfo() = default;
   };
 
-  /// \brief Further info for explicit template specialization/instantiation.
+  /// Further info for explicit template specialization/instantiation.
   /// Does not apply to implicit specializations.
   ExplicitSpecializationInfo *ExplicitInfo = nullptr;
 
-  /// \brief The template arguments used to describe this specialization.
+  /// The template arguments used to describe this specialization.
   const TemplateArgumentList *TemplateArgs;
   TemplateArgumentListInfo TemplateArgsInfo;
 
-  /// \brief The point where this template was instantiated (if any).
+  /// The point where this template was instantiated (if any).
   SourceLocation PointOfInstantiation;
 
-  /// \brief The kind of specialization this declaration refers to.
+  /// The kind of specialization this declaration refers to.
   /// Really a value of type TemplateSpecializationKind.
   unsigned SpecializationKind : 3;
 
-  /// \brief Whether this declaration is a complete definition of the
+  /// Whether this declaration is a complete definition of the
   /// variable template specialization. We can't otherwise tell apart
   /// an instantiated declaration from an instantiated definition with
   /// no initializer.
@@ -2560,10 +2560,10 @@
     return cast<VarTemplateSpecializationDecl>(Recent);
   }
 
-  /// \brief Retrieve the template that this specialization specializes.
+  /// Retrieve the template that this specialization specializes.
   VarTemplateDecl *getSpecializedTemplate() const;
 
-  /// \brief Retrieve the template arguments of the variable template
+  /// Retrieve the template arguments of the variable template
   /// specialization.
   const TemplateArgumentList &getTemplateArgs() const { return *TemplateArgs; }
 
@@ -2574,7 +2574,7 @@
     return TemplateArgsInfo;
   }
 
-  /// \brief Determine the kind of specialization that this
+  /// Determine the kind of specialization that this
   /// declaration represents.
   TemplateSpecializationKind getSpecializationKind() const {
     return static_cast<TemplateSpecializationKind>(SpecializationKind);
@@ -2584,7 +2584,7 @@
     return getSpecializationKind() == TSK_ExplicitSpecialization;
   }
 
-  /// \brief True if this declaration is an explicit specialization,
+  /// True if this declaration is an explicit specialization,
   /// explicit instantiation declaration, or explicit instantiation
   /// definition.
   bool isExplicitInstantiationOrSpecialization() const {
@@ -2596,7 +2596,7 @@
     SpecializationKind = TSK;
   }
 
-  /// \brief Get the point of instantiation (if any), or null if none.
+  /// Get the point of instantiation (if any), or null if none.
   SourceLocation getPointOfInstantiation() const {
     return PointOfInstantiation;
   }
@@ -2608,7 +2608,7 @@
 
   void setCompleteDefinition() { IsCompleteDefinition = true; }
 
-  /// \brief If this variable template specialization is an instantiation of
+  /// If this variable template specialization is an instantiation of
   /// a template (rather than an explicit specialization), return the
   /// variable template or variable template partial specialization from which
   /// it was instantiated.
@@ -2621,7 +2621,7 @@
     return getSpecializedTemplateOrPartial();
   }
 
-  /// \brief Retrieve the variable template or variable template partial
+  /// Retrieve the variable template or variable template partial
   /// specialization which was specialized by this.
   llvm::PointerUnion<VarTemplateDecl *, VarTemplatePartialSpecializationDecl *>
   getSpecializedTemplateOrPartial() const {
@@ -2632,7 +2632,7 @@
     return SpecializedTemplate.get<VarTemplateDecl *>();
   }
 
-  /// \brief Retrieve the set of template arguments that should be used
+  /// Retrieve the set of template arguments that should be used
   /// to instantiate the initializer of the variable template or variable
   /// template partial specialization from which this variable template
   /// specialization was instantiated.
@@ -2651,7 +2651,7 @@
     return getTemplateArgs();
   }
 
-  /// \brief Note that this variable template specialization is actually an
+  /// Note that this variable template specialization is actually an
   /// instantiation of the given variable template partial specialization whose
   /// template arguments have been deduced.
   void setInstantiationOf(VarTemplatePartialSpecializationDecl *PartialSpec,
@@ -2664,7 +2664,7 @@
     SpecializedTemplate = PS;
   }
 
-  /// \brief Note that this variable template specialization is an instantiation
+  /// Note that this variable template specialization is an instantiation
   /// of the given variable template.
   void setInstantiationOf(VarTemplateDecl *TemplDecl) {
     assert(!SpecializedTemplate.is<SpecializedPartialSpecialization *>() &&
@@ -2672,7 +2672,7 @@
     SpecializedTemplate = TemplDecl;
   }
 
-  /// \brief Sets the type of this specialization as it was written by
+  /// Sets the type of this specialization as it was written by
   /// the user.
   void setTypeAsWritten(TypeSourceInfo *T) {
     if (!ExplicitInfo)
@@ -2680,32 +2680,32 @@
     ExplicitInfo->TypeAsWritten = T;
   }
 
-  /// \brief Gets the type of this specialization as it was written by
+  /// Gets the type of this specialization as it was written by
   /// the user, if it was so written.
   TypeSourceInfo *getTypeAsWritten() const {
     return ExplicitInfo ? ExplicitInfo->TypeAsWritten : nullptr;
   }
 
-  /// \brief Gets the location of the extern keyword, if present.
+  /// Gets the location of the extern keyword, if present.
   SourceLocation getExternLoc() const {
     return ExplicitInfo ? ExplicitInfo->ExternLoc : SourceLocation();
   }
 
-  /// \brief Sets the location of the extern keyword.
+  /// Sets the location of the extern keyword.
   void setExternLoc(SourceLocation Loc) {
     if (!ExplicitInfo)
       ExplicitInfo = new (getASTContext()) ExplicitSpecializationInfo;
     ExplicitInfo->ExternLoc = Loc;
   }
 
-  /// \brief Sets the location of the template keyword.
+  /// Sets the location of the template keyword.
   void setTemplateKeywordLoc(SourceLocation Loc) {
     if (!ExplicitInfo)
       ExplicitInfo = new (getASTContext()) ExplicitSpecializationInfo;
     ExplicitInfo->TemplateKeywordLoc = Loc;
   }
 
-  /// \brief Gets the location of the template keyword, if present.
+  /// Gets the location of the template keyword, if present.
   SourceLocation getTemplateKeywordLoc() const {
     return ExplicitInfo ? ExplicitInfo->TemplateKeywordLoc : SourceLocation();
   }
@@ -2732,14 +2732,14 @@
 
 class VarTemplatePartialSpecializationDecl
     : public VarTemplateSpecializationDecl {
-  /// \brief The list of template parameters
+  /// The list of template parameters
   TemplateParameterList *TemplateParams = nullptr;
 
-  /// \brief The source info for the template arguments as written.
+  /// The source info for the template arguments as written.
   /// FIXME: redundant with TypeAsWritten?
   const ASTTemplateArgumentListInfo *ArgsAsWritten = nullptr;
 
-  /// \brief The variable template partial specialization from which this
+  /// The variable template partial specialization from which this
   /// variable template partial specialization was instantiated.
   ///
   /// The boolean value will be true to indicate that this variable template
@@ -2791,7 +2791,7 @@
     return ArgsAsWritten;
   }
 
-  /// \brief Retrieve the member variable template partial specialization from
+  /// Retrieve the member variable template partial specialization from
   /// which this particular variable template partial specialization was
   /// instantiated.
   ///
@@ -2823,7 +2823,7 @@
     First->InstantiatedFromMember.setPointer(PartialSpec);
   }
 
-  /// \brief Determines whether this variable template partial specialization
+  /// Determines whether this variable template partial specialization
   /// was a specialization of a member partial specialization.
   ///
   /// In the following example, the member template partial specialization
@@ -2845,7 +2845,7 @@
     return First->InstantiatedFromMember.getInt();
   }
 
-  /// \brief Note that this member template is a specialization.
+  /// Note that this member template is a specialization.
   void setMemberSpecialization() {
     auto *First = cast<VarTemplatePartialSpecializationDecl>(getFirstDecl());
     assert(First->InstantiatedFromMember.getPointer() &&
@@ -2863,14 +2863,14 @@
 /// Declaration of a variable template.
 class VarTemplateDecl : public RedeclarableTemplateDecl {
 protected:
-  /// \brief Data that is common to all of the declarations of a given
+  /// Data that is common to all of the declarations of a given
   /// variable template.
   struct Common : CommonBase {
-    /// \brief The variable template specializations for this variable
+    /// The variable template specializations for this variable
     /// template, including explicit specializations and instantiations.
     llvm::FoldingSetVector<VarTemplateSpecializationDecl> Specializations;
 
-    /// \brief The variable template partial specializations for this variable
+    /// The variable template partial specializations for this variable
     /// template.
     llvm::FoldingSetVector<VarTemplatePartialSpecializationDecl>
     PartialSpecializations;
@@ -2878,11 +2878,11 @@
     Common() = default;
   };
 
-  /// \brief Retrieve the set of specializations of this variable template.
+  /// Retrieve the set of specializations of this variable template.
   llvm::FoldingSetVector<VarTemplateSpecializationDecl> &
   getSpecializations() const;
 
-  /// \brief Retrieve the set of partial specializations of this class
+  /// Retrieve the set of partial specializations of this class
   /// template.
   llvm::FoldingSetVector<VarTemplatePartialSpecializationDecl> &
   getPartialSpecializations();
@@ -2902,15 +2902,15 @@
   friend class ASTDeclReader;
   friend class ASTDeclWriter;
 
-  /// \brief Load any lazily-loaded specializations from the external source.
+  /// Load any lazily-loaded specializations from the external source.
   void LoadLazySpecializations() const;
 
-  /// \brief Get the underlying variable declarations of the template.
+  /// Get the underlying variable declarations of the template.
   VarDecl *getTemplatedDecl() const {
     return static_cast<VarDecl *>(TemplatedDecl);
   }
 
-  /// \brief Returns whether this template declaration defines the primary
+  /// Returns whether this template declaration defines the primary
   /// variable pattern.
   bool isThisDeclarationADefinition() const {
     return getTemplatedDecl()->isThisDeclarationADefinition();
@@ -2918,21 +2918,21 @@
 
   VarTemplateDecl *getDefinition();
 
-  /// \brief Create a variable template node.
+  /// Create a variable template node.
   static VarTemplateDecl *Create(ASTContext &C, DeclContext *DC,
                                  SourceLocation L, DeclarationName Name,
                                  TemplateParameterList *Params,
                                  VarDecl *Decl);
 
-  /// \brief Create an empty variable template node.
+  /// Create an empty variable template node.
   static VarTemplateDecl *CreateDeserialized(ASTContext &C, unsigned ID);
 
-  /// \brief Return the specialization with the provided arguments if it exists,
+  /// Return the specialization with the provided arguments if it exists,
   /// otherwise return the insertion point.
   VarTemplateSpecializationDecl *
   findSpecialization(ArrayRef<TemplateArgument> Args, void *&InsertPos);
 
-  /// \brief Insert the specified specialization knowing that it is not already
+  /// Insert the specified specialization knowing that it is not already
   /// in. InsertPos must be obtained from findSpecialization.
   void AddSpecialization(VarTemplateSpecializationDecl *D, void *InsertPos);
 
@@ -2943,7 +2943,7 @@
     return cast<VarTemplateDecl>(RedeclarableTemplateDecl::getCanonicalDecl());
   }
 
-  /// \brief Retrieve the previous declaration of this variable template, or
+  /// Retrieve the previous declaration of this variable template, or
   /// nullptr if no such declaration exists.
   VarTemplateDecl *getPreviousDecl() {
     return cast_or_null<VarTemplateDecl>(
@@ -2968,21 +2968,21 @@
         RedeclarableTemplateDecl::getInstantiatedFromMemberTemplate());
   }
 
-  /// \brief Return the partial specialization with the provided arguments if it
+  /// Return the partial specialization with the provided arguments if it
   /// exists, otherwise return the insertion point.
   VarTemplatePartialSpecializationDecl *
   findPartialSpecialization(ArrayRef<TemplateArgument> Args, void *&InsertPos);
 
-  /// \brief Insert the specified partial specialization knowing that it is not
+  /// Insert the specified partial specialization knowing that it is not
   /// already in. InsertPos must be obtained from findPartialSpecialization.
   void AddPartialSpecialization(VarTemplatePartialSpecializationDecl *D,
                                 void *InsertPos);
 
-  /// \brief Retrieve the partial specializations as an ordered list.
+  /// Retrieve the partial specializations as an ordered list.
   void getPartialSpecializations(
       SmallVectorImpl<VarTemplatePartialSpecializationDecl *> &PS);
 
-  /// \brief Find a variable template partial specialization which was
+  /// Find a variable template partial specialization which was
   /// instantiated
   /// from the given member partial specialization.
   ///
Index: cfe/trunk/include/clang/AST/DeclVisitor.h
===================================================================
--- cfe/trunk/include/clang/AST/DeclVisitor.h
+++ cfe/trunk/include/clang/AST/DeclVisitor.h
@@ -30,7 +30,7 @@
 template <typename T> struct make_ptr { using type = T *; };
 template <typename T> struct make_const_ptr { using type = const T *; };
 
-/// \brief A simple visitor class that helps create declaration visitors.
+/// A simple visitor class that helps create declaration visitors.
 template<template <typename> class Ptr, typename ImplClass, typename RetTy=void>
 class Base {
 public:
@@ -62,7 +62,7 @@
 
 } // namespace declvisitor
 
-/// \brief A simple visitor class that helps create declaration visitors.
+/// A simple visitor class that helps create declaration visitors.
 ///
 /// This class does not preserve constness of Decl pointers (see also
 /// ConstDeclVisitor).
@@ -70,7 +70,7 @@
 class DeclVisitor
  : public declvisitor::Base<declvisitor::make_ptr, ImplClass, RetTy> {};
 
-/// \brief A simple visitor class that helps create declaration visitors.
+/// A simple visitor class that helps create declaration visitors.
 ///
 /// This class preserves constness of Decl pointers (see also DeclVisitor).
 template<typename ImplClass, typename RetTy = void>
Index: cfe/trunk/include/clang/AST/DeclarationName.h
===================================================================
--- cfe/trunk/include/clang/AST/DeclarationName.h
+++ cfe/trunk/include/clang/AST/DeclarationName.h
@@ -194,7 +194,7 @@
            (reinterpret_cast<IdentifierInfo *>(Ptr & ~PtrMask));
   }
 
-  /// \brief Evaluates true when this declaration name is empty.
+  /// Evaluates true when this declaration name is empty.
   bool isEmpty() const {
     return !*this;
   }
@@ -211,7 +211,7 @@
   /// getNameKind - Determine what kind of name this is.
   NameKind getNameKind() const;
 
-  /// \brief Determines whether the name itself is dependent, e.g., because it 
+  /// Determines whether the name itself is dependent, e.g., because it 
   /// involves a C++ type that is itself dependent.
   ///
   /// Note that this does not capture all of the notions of "dependent name",
@@ -541,10 +541,10 @@
     LocInfo.CXXLiteralOperatorName.OpNameLoc = Loc.getRawEncoding();
   }
 
-  /// \brief Determine whether this name involves a template parameter.
+  /// Determine whether this name involves a template parameter.
   bool isInstantiationDependent() const;
   
-  /// \brief Determine whether this name contains an unexpanded
+  /// Determine whether this name contains an unexpanded
   /// parameter pack.
   bool containsUnexpandedParameterPack() const;
 
Index: cfe/trunk/include/clang/AST/EvaluatedExprVisitor.h
===================================================================
--- cfe/trunk/include/clang/AST/EvaluatedExprVisitor.h
+++ cfe/trunk/include/clang/AST/EvaluatedExprVisitor.h
@@ -24,7 +24,7 @@
   
 class ASTContext;
   
-/// \brief Given a potentially-evaluated expression, this visitor visits all
+/// Given a potentially-evaluated expression, this visitor visits all
 /// of its potentially-evaluated subexpressions, recursively.
 template<template <typename> class Ptr, typename ImplClass>
 class EvaluatedExprVisitorBase : public StmtVisitorBase<Ptr, ImplClass, void> {
@@ -95,7 +95,7 @@
         this->Visit(*I);
   }
 
-  /// \brief The basis case walks all of the children of the statement or
+  /// The basis case walks all of the children of the statement or
   /// expression, assuming they are all potentially evaluated.
   void VisitStmt(PTR(Stmt) S) {
     for (auto *SubStmt : S->children())
Index: cfe/trunk/include/clang/AST/Expr.h
===================================================================
--- cfe/trunk/include/clang/AST/Expr.h
+++ cfe/trunk/include/clang/AST/Expr.h
@@ -52,10 +52,10 @@
   class TargetInfo;
   class ValueDecl;
 
-/// \brief A simple array of base specifiers.
+/// A simple array of base specifiers.
 typedef SmallVector<CXXBaseSpecifier*, 4> CXXCastPath;
 
-/// \brief An adjustment to be made to the temporary created when emitting a
+/// An adjustment to be made to the temporary created when emitting a
 /// reference binding, which accesses a particular subobject of that temporary.
 struct SubobjectAdjustment {
   enum {
@@ -121,7 +121,7 @@
     setType(T);
   }
 
-  /// \brief Construct an empty expression.
+  /// Construct an empty expression.
   explicit Expr(StmtClass SC, EmptyShell) : Stmt(SC) { }
 
 public:
@@ -148,7 +148,7 @@
   /// @endcode
   bool isValueDependent() const { return ExprBits.ValueDependent; }
 
-  /// \brief Set whether this expression is value-dependent or not.
+  /// Set whether this expression is value-dependent or not.
   void setValueDependent(bool VD) {
     ExprBits.ValueDependent = VD;
   }
@@ -166,12 +166,12 @@
   /// @endcode
   bool isTypeDependent() const { return ExprBits.TypeDependent; }
 
-  /// \brief Set whether this expression is type-dependent or not.
+  /// Set whether this expression is type-dependent or not.
   void setTypeDependent(bool TD) {
     ExprBits.TypeDependent = TD;
   }
 
-  /// \brief Whether this expression is instantiation-dependent, meaning that
+  /// Whether this expression is instantiation-dependent, meaning that
   /// it depends in some way on a template parameter, even if neither its type
   /// nor (constant) value can change due to the template instantiation.
   ///
@@ -192,12 +192,12 @@
     return ExprBits.InstantiationDependent;
   }
 
-  /// \brief Set whether this expression is instantiation-dependent or not.
+  /// Set whether this expression is instantiation-dependent or not.
   void setInstantiationDependent(bool ID) {
     ExprBits.InstantiationDependent = ID;
   }
 
-  /// \brief Whether this expression contains an unexpanded parameter
+  /// Whether this expression contains an unexpanded parameter
   /// pack (for C++11 variadic templates).
   ///
   /// Given the following function template:
@@ -215,7 +215,7 @@
     return ExprBits.ContainsUnexpandedParameterPack;
   }
 
-  /// \brief Set the bit that describes whether this expression
+  /// Set the bit that describes whether this expression
   /// contains an unexpanded parameter pack.
   void setContainsUnexpandedParameterPack(bool PP = true) {
     ExprBits.ContainsUnexpandedParameterPack = PP;
@@ -297,11 +297,11 @@
   isModifiableLvalueResult
   isModifiableLvalue(ASTContext &Ctx, SourceLocation *Loc = nullptr) const;
 
-  /// \brief The return type of classify(). Represents the C++11 expression
+  /// The return type of classify(). Represents the C++11 expression
   ///        taxonomy.
   class Classification {
   public:
-    /// \brief The various classification results. Most of these mean prvalue.
+    /// The various classification results. Most of these mean prvalue.
     enum Kinds {
       CL_LValue,
       CL_XValue,
@@ -316,7 +316,7 @@
       CL_ObjCMessageRValue, // ObjC message is an rvalue
       CL_PRValue // A prvalue for any other reason, of any other type
     };
-    /// \brief The results of modification testing.
+    /// The results of modification testing.
     enum ModifiableType {
       CM_Untested, // testModifiable was false.
       CM_Modifiable,
@@ -356,13 +356,13 @@
     bool isRValue() const { return Kind >= CL_XValue; }
     bool isModifiable() const { return getModifiable() == CM_Modifiable; }
 
-    /// \brief Create a simple, modifiably lvalue
+    /// Create a simple, modifiably lvalue
     static Classification makeSimpleLValue() {
       return Classification(CL_LValue, CM_Modifiable);
     }
 
   };
-  /// \brief Classify - Classify this expression according to the C++11
+  /// Classify - Classify this expression according to the C++11
   ///        expression taxonomy.
   ///
   /// C++11 defines ([basic.lval]) a new taxonomy of expressions to replace the
@@ -378,7 +378,7 @@
     return ClassifyImpl(Ctx, nullptr);
   }
 
-  /// \brief ClassifyModifiable - Classify this expression according to the
+  /// ClassifyModifiable - Classify this expression according to the
   ///        C++11 expression taxonomy, and see if it is valid on the left side
   ///        of an assignment.
   ///
@@ -429,14 +429,14 @@
 
 public:
 
-  /// \brief Returns true if this expression is a gl-value that
+  /// Returns true if this expression is a gl-value that
   /// potentially refers to a bit-field.
   ///
   /// In C++, whether a gl-value refers to a bitfield is essentially
   /// an aspect of the value-kind type system.
   bool refersToBitField() const { return getObjectKind() == OK_BitField; }
 
-  /// \brief If this expression refers to a bit-field, retrieve the
+  /// If this expression refers to a bit-field, retrieve the
   /// declaration of that bit-field.
   ///
   /// Note that this returns a non-null pointer in subtly different
@@ -454,26 +454,26 @@
     return const_cast<Expr*>(this)->getReferencedDeclOfCallee();
   }
 
-  /// \brief If this expression is an l-value for an Objective C
+  /// If this expression is an l-value for an Objective C
   /// property, find the underlying property reference expression.
   const ObjCPropertyRefExpr *getObjCProperty() const;
 
-  /// \brief Check if this expression is the ObjC 'self' implicit parameter.
+  /// Check if this expression is the ObjC 'self' implicit parameter.
   bool isObjCSelfExpr() const;
 
-  /// \brief Returns whether this expression refers to a vector element.
+  /// Returns whether this expression refers to a vector element.
   bool refersToVectorElement() const;
 
-  /// \brief Returns whether this expression refers to a global register
+  /// Returns whether this expression refers to a global register
   /// variable.
   bool refersToGlobalRegisterVar() const;
 
-  /// \brief Returns whether this expression has a placeholder type.
+  /// Returns whether this expression has a placeholder type.
   bool hasPlaceholderType() const {
     return getType()->isPlaceholderType();
   }
 
-  /// \brief Returns whether this expression has a specific placeholder type.
+  /// Returns whether this expression has a specific placeholder type.
   bool hasPlaceholderType(BuiltinType::Kind K) const {
     assert(BuiltinType::isPlaceholderTypeKind(K));
     if (const BuiltinType *BT = dyn_cast<BuiltinType>(getType()))
@@ -539,11 +539,11 @@
 
   /// EvalStatus is a struct with detailed info about an evaluation in progress.
   struct EvalStatus {
-    /// \brief Whether the evaluated expression has side effects.
+    /// Whether the evaluated expression has side effects.
     /// For example, (f() && 0) can be folded, but it still has side effects.
     bool HasSideEffects;
 
-    /// \brief Whether the evaluation hit undefined behavior.
+    /// Whether the evaluation hit undefined behavior.
     /// For example, 1.0 / 0.0 can be folded to Inf, but has undefined behavior.
     /// Likewise, INT_MAX + 1 can be folded to INT_MIN, but has UB.
     bool HasUndefinedBehavior;
@@ -625,7 +625,7 @@
   bool HasSideEffects(const ASTContext &Ctx,
                       bool IncludePossibleEffects = true) const;
 
-  /// \brief Determine whether this expression involves a call to any function
+  /// Determine whether this expression involves a call to any function
   /// that is not trivial.
   bool hasNonTrivialCall(const ASTContext &Ctx) const;
 
@@ -658,7 +658,7 @@
                                 ArrayRef<const Expr*> Args,
                                 const Expr *This = nullptr) const;
 
-  /// \brief If the current Expr is a pointer, this will try to statically
+  /// If the current Expr is a pointer, this will try to statically
   /// determine the number of bytes available where the pointer is pointing.
   /// Returns true if all of the above holds and we were able to figure out the
   /// size, false otherwise.
@@ -668,40 +668,40 @@
   bool tryEvaluateObjectSize(uint64_t &Result, ASTContext &Ctx,
                              unsigned Type) const;
 
-  /// \brief Enumeration used to describe the kind of Null pointer constant
+  /// Enumeration used to describe the kind of Null pointer constant
   /// returned from \c isNullPointerConstant().
   enum NullPointerConstantKind {
-    /// \brief Expression is not a Null pointer constant.
+    /// Expression is not a Null pointer constant.
     NPCK_NotNull = 0,
 
-    /// \brief Expression is a Null pointer constant built from a zero integer
+    /// Expression is a Null pointer constant built from a zero integer
     /// expression that is not a simple, possibly parenthesized, zero literal.
     /// C++ Core Issue 903 will classify these expressions as "not pointers"
     /// once it is adopted.
     /// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#903
     NPCK_ZeroExpression,
 
-    /// \brief Expression is a Null pointer constant built from a literal zero.
+    /// Expression is a Null pointer constant built from a literal zero.
     NPCK_ZeroLiteral,
 
-    /// \brief Expression is a C++11 nullptr.
+    /// Expression is a C++11 nullptr.
     NPCK_CXX11_nullptr,
 
-    /// \brief Expression is a GNU-style __null constant.
+    /// Expression is a GNU-style __null constant.
     NPCK_GNUNull
   };
 
-  /// \brief Enumeration used to describe how \c isNullPointerConstant()
+  /// Enumeration used to describe how \c isNullPointerConstant()
   /// should cope with value-dependent expressions.
   enum NullPointerConstantValueDependence {
-    /// \brief Specifies that the expression should never be value-dependent.
+    /// Specifies that the expression should never be value-dependent.
     NPC_NeverValueDependent = 0,
 
-    /// \brief Specifies that a value-dependent expression of integral or
+    /// Specifies that a value-dependent expression of integral or
     /// dependent type should be considered a null pointer constant.
     NPC_ValueDependentIsNull,
 
-    /// \brief Specifies that a value-dependent expression should be considered
+    /// Specifies that a value-dependent expression should be considered
     /// to never be a null pointer constant.
     NPC_ValueDependentIsNotNull
   };
@@ -717,10 +717,10 @@
   /// write barrier.
   bool isOBJCGCCandidate(ASTContext &Ctx) const;
 
-  /// \brief Returns true if this expression is a bound member function.
+  /// Returns true if this expression is a bound member function.
   bool isBoundMemberFunction(ASTContext &Ctx) const;
 
-  /// \brief Given an expression of bound-member type, find the type
+  /// Given an expression of bound-member type, find the type
   /// of the member.  Returns null if this is an *overloaded* bound
   /// member expression.
   static QualType findBoundMemberType(const Expr *expr);
@@ -788,7 +788,7 @@
     return const_cast<Expr*>(this)->ignoreParenBaseCasts();
   }
 
-  /// \brief Determine whether this expression is a default function argument.
+  /// Determine whether this expression is a default function argument.
   ///
   /// Default arguments are implicitly generated in the abstract syntax tree
   /// by semantic analysis for function calls, object constructions, etc. in
@@ -797,11 +797,11 @@
   /// the expression is a default argument.
   bool isDefaultArgument() const;
 
-  /// \brief Determine whether the result of this expression is a
+  /// Determine whether the result of this expression is a
   /// temporary object of the given class type.
   bool isTemporaryObject(ASTContext &Ctx, const CXXRecordDecl *TempTy) const;
 
-  /// \brief Whether this expression is an implicit reference to 'this' in C++.
+  /// Whether this expression is an implicit reference to 'this' in C++.
   bool isImplicitCXXThis() const;
 
   const Expr *IgnoreImpCasts() const LLVM_READONLY {
@@ -824,7 +824,7 @@
 
   static bool hasAnyTypeDependentArguments(ArrayRef<Expr *> Exprs);
 
-  /// \brief For an expression of class type or pointer to class type,
+  /// For an expression of class type or pointer to class type,
   /// return the most derived class decl the expression is known to refer to.
   ///
   /// If this expression is a cast, this method looks through it to find the
@@ -833,7 +833,7 @@
   /// behavior if the object isn't dynamically of the derived type.
   const CXXRecordDecl *getBestDynamicClassType() const;
 
-  /// \brief Get the inner expression that determines the best dynamic class.
+  /// Get the inner expression that determines the best dynamic class.
   /// If this is a prvalue, we guarantee that it is of the most-derived type
   /// for the object itself.
   const Expr *getBestDynamicClassTypeExpr() const;
@@ -894,7 +894,7 @@
   explicit OpaqueValueExpr(EmptyShell Empty)
     : Expr(OpaqueValueExprClass, Empty) { }
 
-  /// \brief Retrieve the location of this expression.
+  /// Retrieve the location of this expression.
   SourceLocation getLocation() const { return Loc; }
 
   SourceLocation getLocStart() const LLVM_READONLY {
@@ -939,7 +939,7 @@
   }
 };
 
-/// \brief A reference to a declared variable, function, enum, etc.
+/// A reference to a declared variable, function, enum, etc.
 /// [C99 6.5.1p2]
 ///
 /// This encodes all the information about how a declaration is referenced
@@ -967,13 +967,13 @@
       private llvm::TrailingObjects<DeclRefExpr, NestedNameSpecifierLoc,
                                     NamedDecl *, ASTTemplateKWAndArgsInfo,
                                     TemplateArgumentLoc> {
-  /// \brief The declaration that we are referencing.
+  /// The declaration that we are referencing.
   ValueDecl *D;
 
-  /// \brief The location of the declaration name itself.
+  /// The location of the declaration name itself.
   SourceLocation Loc;
 
-  /// \brief Provides source/type location info for the declaration name
+  /// Provides source/type location info for the declaration name
   /// embedded in D.
   DeclarationNameLoc DNLoc;
 
@@ -989,7 +989,7 @@
     return hasTemplateKWAndArgsInfo() ? 1 : 0;
   }
 
-  /// \brief Test whether there is a distinct FoundDecl attached to the end of
+  /// Test whether there is a distinct FoundDecl attached to the end of
   /// this DRE.
   bool hasFoundDecl() const { return DeclRefExprBits.HasFoundDecl; }
 
@@ -1002,11 +1002,11 @@
               const TemplateArgumentListInfo *TemplateArgs,
               QualType T, ExprValueKind VK);
 
-  /// \brief Construct an empty declaration reference expression.
+  /// Construct an empty declaration reference expression.
   explicit DeclRefExpr(EmptyShell Empty)
     : Expr(DeclRefExprClass, Empty) { }
 
-  /// \brief Computes the type- and value-dependence flags for this
+  /// Computes the type- and value-dependence flags for this
   /// declaration reference expression.
   void computeDependence(const ASTContext &C);
 
@@ -1040,7 +1040,7 @@
          NamedDecl *FoundD = nullptr,
          const TemplateArgumentListInfo *TemplateArgs = nullptr);
 
-  /// \brief Construct an empty declaration reference expression.
+  /// Construct an empty declaration reference expression.
   static DeclRefExpr *CreateEmpty(const ASTContext &Context,
                                   bool HasQualifier,
                                   bool HasFoundDecl,
@@ -1060,11 +1060,11 @@
   SourceLocation getLocStart() const LLVM_READONLY;
   SourceLocation getLocEnd() const LLVM_READONLY;
 
-  /// \brief Determine whether this declaration reference was preceded by a
+  /// Determine whether this declaration reference was preceded by a
   /// C++ nested-name-specifier, e.g., \c N::foo.
   bool hasQualifier() const { return DeclRefExprBits.HasQualifier; }
 
-  /// \brief If the name was qualified, retrieves the nested-name-specifier
+  /// If the name was qualified, retrieves the nested-name-specifier
   /// that precedes the name, with source-location information.
   NestedNameSpecifierLoc getQualifierLoc() const {
     if (!hasQualifier())
@@ -1072,13 +1072,13 @@
     return *getTrailingObjects<NestedNameSpecifierLoc>();
   }
 
-  /// \brief If the name was qualified, retrieves the nested-name-specifier
+  /// If the name was qualified, retrieves the nested-name-specifier
   /// that precedes the name. Otherwise, returns NULL.
   NestedNameSpecifier *getQualifier() const {
     return getQualifierLoc().getNestedNameSpecifier();
   }
 
-  /// \brief Get the NamedDecl through which this reference occurred.
+  /// Get the NamedDecl through which this reference occurred.
   ///
   /// This Decl may be different from the ValueDecl actually referred to in the
   /// presence of using declarations, etc. It always returns non-NULL, and may
@@ -1088,7 +1088,7 @@
     return hasFoundDecl() ? *getTrailingObjects<NamedDecl *>() : D;
   }
 
-  /// \brief Get the NamedDecl through which this reference occurred.
+  /// Get the NamedDecl through which this reference occurred.
   /// See non-const variant.
   const NamedDecl *getFoundDecl() const {
     return hasFoundDecl() ? *getTrailingObjects<NamedDecl *>() : D;
@@ -1098,36 +1098,36 @@
     return DeclRefExprBits.HasTemplateKWAndArgsInfo;
   }
 
-  /// \brief Retrieve the location of the template keyword preceding
+  /// Retrieve the location of the template keyword preceding
   /// this name, if any.
   SourceLocation getTemplateKeywordLoc() const {
     if (!hasTemplateKWAndArgsInfo()) return SourceLocation();
     return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->TemplateKWLoc;
   }
 
-  /// \brief Retrieve the location of the left angle bracket starting the
+  /// Retrieve the location of the left angle bracket starting the
   /// explicit template argument list following the name, if any.
   SourceLocation getLAngleLoc() const {
     if (!hasTemplateKWAndArgsInfo()) return SourceLocation();
     return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->LAngleLoc;
   }
 
-  /// \brief Retrieve the location of the right angle bracket ending the
+  /// Retrieve the location of the right angle bracket ending the
   /// explicit template argument list following the name, if any.
   SourceLocation getRAngleLoc() const {
     if (!hasTemplateKWAndArgsInfo()) return SourceLocation();
     return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->RAngleLoc;
   }
 
-  /// \brief Determines whether the name in this declaration reference
+  /// Determines whether the name in this declaration reference
   /// was preceded by the template keyword.
   bool hasTemplateKeyword() const { return getTemplateKeywordLoc().isValid(); }
 
-  /// \brief Determines whether this declaration reference was followed by an
+  /// Determines whether this declaration reference was followed by an
   /// explicit template argument list.
   bool hasExplicitTemplateArgs() const { return getLAngleLoc().isValid(); }
 
-  /// \brief Copies the template arguments (if present) into the given
+  /// Copies the template arguments (if present) into the given
   /// structure.
   void copyTemplateArgumentsInto(TemplateArgumentListInfo &List) const {
     if (hasExplicitTemplateArgs())
@@ -1135,7 +1135,7 @@
           getTrailingObjects<TemplateArgumentLoc>(), List);
   }
 
-  /// \brief Retrieve the template arguments provided as part of this
+  /// Retrieve the template arguments provided as part of this
   /// template-id.
   const TemplateArgumentLoc *getTemplateArgs() const {
     if (!hasExplicitTemplateArgs())
@@ -1144,7 +1144,7 @@
     return getTrailingObjects<TemplateArgumentLoc>();
   }
 
-  /// \brief Retrieve the number of template arguments provided as part of this
+  /// Retrieve the number of template arguments provided as part of this
   /// template-id.
   unsigned getNumTemplateArgs() const {
     if (!hasExplicitTemplateArgs())
@@ -1157,19 +1157,19 @@
     return {getTemplateArgs(), getNumTemplateArgs()};
   }
 
-  /// \brief Returns true if this expression refers to a function that
+  /// Returns true if this expression refers to a function that
   /// was resolved from an overloaded set having size greater than 1.
   bool hadMultipleCandidates() const {
     return DeclRefExprBits.HadMultipleCandidates;
   }
-  /// \brief Sets the flag telling whether this expression refers to
+  /// Sets the flag telling whether this expression refers to
   /// a function that was resolved from an overloaded set having size
   /// greater than 1.
   void setHadMultipleCandidates(bool V = true) {
     DeclRefExprBits.HadMultipleCandidates = V;
   }
 
-  /// \brief Does this DeclRefExpr refer to an enclosing local or a captured
+  /// Does this DeclRefExpr refer to an enclosing local or a captured
   /// variable?
   bool refersToEnclosingVariableOrCapture() const {
     return DeclRefExprBits.RefersToEnclosingVariableOrCapture;
@@ -1193,7 +1193,7 @@
   friend class ASTStmtWriter;
 };
 
-/// \brief [C99 6.4.2.2] - A predefined identifier such as __func__.
+/// [C99 6.4.2.2] - A predefined identifier such as __func__.
 class PredefinedExpr : public Expr {
 public:
   enum IdentType {
@@ -1203,7 +1203,7 @@
     FuncDName,
     FuncSig,
     PrettyFunction,
-    /// \brief The same as PrettyFunction, except that the
+    /// The same as PrettyFunction, except that the
     /// 'virtual' keyword is omitted for virtual member functions.
     PrettyFunctionNoVirtual
   };
@@ -1217,7 +1217,7 @@
   PredefinedExpr(SourceLocation L, QualType FNTy, IdentType IT,
                  StringLiteral *SL);
 
-  /// \brief Construct an empty predefined expression.
+  /// Construct an empty predefined expression.
   explicit PredefinedExpr(EmptyShell Empty)
       : Expr(PredefinedExprClass, Empty), Loc(), Type(Func), FnName(nullptr) {}
 
@@ -1250,7 +1250,7 @@
   friend class ASTStmtReader;
 };
 
-/// \brief Used by IntegerLiteral/FloatingLiteral to store the numeric without
+/// Used by IntegerLiteral/FloatingLiteral to store the numeric without
 /// leaking memory.
 ///
 /// For large floats/integers, APFloat/APInt will allocate memory from the heap
@@ -1304,7 +1304,7 @@
 class IntegerLiteral : public Expr, public APIntStorage {
   SourceLocation Loc;
 
-  /// \brief Construct an empty integer literal.
+  /// Construct an empty integer literal.
   explicit IntegerLiteral(EmptyShell Empty)
     : Expr(IntegerLiteralClass, Empty) { }
 
@@ -1314,19 +1314,19 @@
   IntegerLiteral(const ASTContext &C, const llvm::APInt &V, QualType type,
                  SourceLocation l);
 
-  /// \brief Returns a new integer literal with value 'V' and type 'type'.
+  /// Returns a new integer literal with value 'V' and type 'type'.
   /// \param type - either IntTy, LongTy, LongLongTy, UnsignedIntTy,
   /// UnsignedLongTy, or UnsignedLongLongTy which should match the size of V
   /// \param V - the value that the returned integer literal contains.
   static IntegerLiteral *Create(const ASTContext &C, const llvm::APInt &V,
                                 QualType type, SourceLocation l);
-  /// \brief Returns a new empty integer literal.
+  /// Returns a new empty integer literal.
   static IntegerLiteral *Create(const ASTContext &C, EmptyShell Empty);
 
   SourceLocation getLocStart() const LLVM_READONLY { return Loc; }
   SourceLocation getLocEnd() const LLVM_READONLY { return Loc; }
 
-  /// \brief Retrieve the location of the literal.
+  /// Retrieve the location of the literal.
   SourceLocation getLocation() const { return Loc; }
 
   void setLocation(SourceLocation Location) { Loc = Location; }
@@ -1367,7 +1367,7 @@
     CharacterLiteralBits.Kind = kind;
   }
 
-  /// \brief Construct an empty character literal.
+  /// Construct an empty character literal.
   CharacterLiteral(EmptyShell Empty) : Expr(CharacterLiteralClass, Empty) { }
 
   SourceLocation getLocation() const { return Loc; }
@@ -1403,7 +1403,7 @@
   FloatingLiteral(const ASTContext &C, const llvm::APFloat &V, bool isexact,
                   QualType Type, SourceLocation L);
 
-  /// \brief Construct an empty floating-point literal.
+  /// Construct an empty floating-point literal.
   explicit FloatingLiteral(const ASTContext &C, EmptyShell Empty);
 
 public:
@@ -1477,7 +1477,7 @@
            false, false),
       Val(val) {}
 
-  /// \brief Build an empty imaginary literal.
+  /// Build an empty imaginary literal.
   explicit ImaginaryLiteral(EmptyShell Empty)
     : Expr(ImaginaryLiteralClass, Empty) { }
 
@@ -1560,7 +1560,7 @@
     return Create(C, Str, Kind, Pascal, Ty, &Loc, 1);
   }
 
-  /// \brief Construct an empty string literal.
+  /// Construct an empty string literal.
   static StringLiteral *CreateEmpty(const ASTContext &C, unsigned NumStrs);
 
   StringRef getString() const {
@@ -1599,7 +1599,7 @@
   unsigned getLength() const { return Length; }
   unsigned getCharByteWidth() const { return CharByteWidth; }
 
-  /// \brief Sets the string data to the given string data.
+  /// Sets the string data to the given string data.
   void setString(const ASTContext &C, StringRef Str,
                  StringKind Kind, bool IsPascal);
 
@@ -1683,7 +1683,7 @@
            val->containsUnexpandedParameterPack()),
       L(l), R(r), Val(val) {}
 
-  /// \brief Construct an empty parenthesized expression.
+  /// Construct an empty parenthesized expression.
   explicit ParenExpr(EmptyShell Empty)
     : Expr(ParenExprClass, Empty) { }
 
@@ -1694,11 +1694,11 @@
   SourceLocation getLocStart() const LLVM_READONLY { return L; }
   SourceLocation getLocEnd() const LLVM_READONLY { return R; }
 
-  /// \brief Get the location of the left parentheses '('.
+  /// Get the location of the left parentheses '('.
   SourceLocation getLParen() const { return L; }
   void setLParen(SourceLocation Loc) { L = Loc; }
 
-  /// \brief Get the location of the right parentheses ')'.
+  /// Get the location of the right parentheses ')'.
   SourceLocation getRParen() const { return R; }
   void setRParen(SourceLocation Loc) { R = Loc; }
 
@@ -1743,7 +1743,7 @@
              input->containsUnexpandedParameterPack()),
         Opc(opc), CanOverflow(CanOverflow), Loc(l), Val(input) {}
 
-  /// \brief Build an empty unary operator.
+  /// Build an empty unary operator.
   explicit UnaryOperator(EmptyShell Empty)
     : Expr(UnaryOperatorClass, Empty), Opc(UO_AddrOf) { }
 
@@ -1807,11 +1807,11 @@
   /// corresponds to, e.g. "sizeof" or "[pre]++"
   static StringRef getOpcodeStr(Opcode Op);
 
-  /// \brief Retrieve the unary opcode that corresponds to the given
+  /// Retrieve the unary opcode that corresponds to the given
   /// overloaded operator.
   static Opcode getOverloadedOpcode(OverloadedOperatorKind OO, bool Postfix);
 
-  /// \brief Retrieve the overloaded operator kind that corresponds to
+  /// Retrieve the overloaded operator kind that corresponds to
   /// the given unary opcode.
   static OverloadedOperatorKind getOverloadedOperator(Opcode Opc);
 
@@ -1839,15 +1839,15 @@
 // __builtin_offsetof(type, identifier(.identifier|[expr])*)
 class OffsetOfNode {
 public:
-  /// \brief The kind of offsetof node we have.
+  /// The kind of offsetof node we have.
   enum Kind {
-    /// \brief An index into an array.
+    /// An index into an array.
     Array = 0x00,
-    /// \brief A field.
+    /// A field.
     Field = 0x01,
-    /// \brief A field in a dependent type, known only by its name.
+    /// A field in a dependent type, known only by its name.
     Identifier = 0x02,
-    /// \brief An implicit indirection through a C++ base class, when the
+    /// An implicit indirection through a C++ base class, when the
     /// field found is in a base class.
     Base = 0x03
   };
@@ -1855,10 +1855,10 @@
 private:
   enum { MaskBits = 2, Mask = 0x03 };
 
-  /// \brief The source range that covers this part of the designator.
+  /// The source range that covers this part of the designator.
   SourceRange Range;
 
-  /// \brief The data describing the designator, which comes in three
+  /// The data describing the designator, which comes in three
   /// different forms, depending on the lower two bits.
   ///   - An unsigned index into the array of Expr*'s stored after this node
   ///     in memory, for [constant-expression] designators.
@@ -1870,53 +1870,53 @@
   uintptr_t Data;
 
 public:
-  /// \brief Create an offsetof node that refers to an array element.
+  /// Create an offsetof node that refers to an array element.
   OffsetOfNode(SourceLocation LBracketLoc, unsigned Index,
                SourceLocation RBracketLoc)
       : Range(LBracketLoc, RBracketLoc), Data((Index << 2) | Array) {}
 
-  /// \brief Create an offsetof node that refers to a field.
+  /// Create an offsetof node that refers to a field.
   OffsetOfNode(SourceLocation DotLoc, FieldDecl *Field, SourceLocation NameLoc)
       : Range(DotLoc.isValid() ? DotLoc : NameLoc, NameLoc),
         Data(reinterpret_cast<uintptr_t>(Field) | OffsetOfNode::Field) {}
 
-  /// \brief Create an offsetof node that refers to an identifier.
+  /// Create an offsetof node that refers to an identifier.
   OffsetOfNode(SourceLocation DotLoc, IdentifierInfo *Name,
                SourceLocation NameLoc)
       : Range(DotLoc.isValid() ? DotLoc : NameLoc, NameLoc),
         Data(reinterpret_cast<uintptr_t>(Name) | Identifier) {}
 
-  /// \brief Create an offsetof node that refers into a C++ base class.
+  /// Create an offsetof node that refers into a C++ base class.
   explicit OffsetOfNode(const CXXBaseSpecifier *Base)
       : Range(), Data(reinterpret_cast<uintptr_t>(Base) | OffsetOfNode::Base) {}
 
-  /// \brief Determine what kind of offsetof node this is.
+  /// Determine what kind of offsetof node this is.
   Kind getKind() const { return static_cast<Kind>(Data & Mask); }
 
-  /// \brief For an array element node, returns the index into the array
+  /// For an array element node, returns the index into the array
   /// of expressions.
   unsigned getArrayExprIndex() const {
     assert(getKind() == Array);
     return Data >> 2;
   }
 
-  /// \brief For a field offsetof node, returns the field.
+  /// For a field offsetof node, returns the field.
   FieldDecl *getField() const {
     assert(getKind() == Field);
     return reinterpret_cast<FieldDecl *>(Data & ~(uintptr_t)Mask);
   }
 
-  /// \brief For a field or identifier offsetof node, returns the name of
+  /// For a field or identifier offsetof node, returns the name of
   /// the field.
   IdentifierInfo *getFieldName() const;
 
-  /// \brief For a base class node, returns the base specifier.
+  /// For a base class node, returns the base specifier.
   CXXBaseSpecifier *getBase() const {
     assert(getKind() == Base);
     return reinterpret_cast<CXXBaseSpecifier *>(Data & ~(uintptr_t)Mask);
   }
 
-  /// \brief Retrieve the source range that covers this offsetof node.
+  /// Retrieve the source range that covers this offsetof node.
   ///
   /// For an array element node, the source range contains the locations of
   /// the square brackets. For a field or identifier node, the source range
@@ -1979,7 +1979,7 @@
   SourceLocation getOperatorLoc() const { return OperatorLoc; }
   void setOperatorLoc(SourceLocation L) { OperatorLoc = L; }
 
-  /// \brief Return the location of the right parentheses.
+  /// Return the location of the right parentheses.
   SourceLocation getRParenLoc() const { return RParenLoc; }
   void setRParenLoc(SourceLocation R) { RParenLoc = R; }
 
@@ -2073,7 +2073,7 @@
                            QualType resultType, SourceLocation op,
                            SourceLocation rp);
 
-  /// \brief Construct an empty sizeof/alignof expression.
+  /// Construct an empty sizeof/alignof expression.
   explicit UnaryExprOrTypeTraitExpr(EmptyShell Empty)
     : Expr(UnaryExprOrTypeTraitExprClass, Empty) { }
 
@@ -2156,7 +2156,7 @@
     SubExprs[RHS] = rhs;
   }
 
-  /// \brief Create an empty array subscript expression.
+  /// Create an empty array subscript expression.
   explicit ArraySubscriptExpr(EmptyShell Shell)
     : Expr(ArraySubscriptExprClass, Shell) { }
 
@@ -2261,7 +2261,7 @@
   CallExpr(const ASTContext& C, Expr *fn, ArrayRef<Expr*> args, QualType t,
            ExprValueKind VK, SourceLocation rparenloc);
 
-  /// \brief Build an empty call expression.
+  /// Build an empty call expression.
   CallExpr(const ASTContext &C, StmtClass SC, EmptyShell Empty);
 
   const Expr *getCallee() const { return cast<Expr>(SubExprs[FN]); }
@@ -2273,7 +2273,7 @@
     return const_cast<CallExpr*>(this)->getCalleeDecl();
   }
 
-  /// \brief If the callee is a FunctionDecl, return it. Otherwise return 0.
+  /// If the callee is a FunctionDecl, return it. Otherwise return 0.
   FunctionDecl *getDirectCallee();
   const FunctionDecl *getDirectCallee() const {
     return const_cast<CallExpr*>(this)->getDirectCallee();
@@ -2283,7 +2283,7 @@
   ///
   unsigned getNumArgs() const { return NumArgs; }
 
-  /// \brief Retrieve the call arguments.
+  /// Retrieve the call arguments.
   Expr **getArgs() {
     return reinterpret_cast<Expr **>(SubExprs+getNumPreArgs()+PREARGS_START);
   }
@@ -2351,7 +2351,7 @@
   /// of the callee. If not, return 0.
   unsigned getBuiltinCallee() const;
 
-  /// \brief Returns \c true if this is a call to a builtin which does not
+  /// Returns \c true if this is a call to a builtin which does not
   /// evaluate side-effects within its arguments.
   bool isUnevaluatedBuiltinCall(const ASTContext &Ctx) const;
 
@@ -2395,11 +2395,11 @@
 
 /// Extra data stored in some MemberExpr objects.
 struct MemberExprNameQualifier {
-  /// \brief The nested-name-specifier that qualifies the name, including
+  /// The nested-name-specifier that qualifies the name, including
   /// source-location information.
   NestedNameSpecifierLoc QualifierLoc;
 
-  /// \brief The DeclAccessPair through which the MemberDecl was found due to
+  /// The DeclAccessPair through which the MemberDecl was found due to
   /// name qualifiers.
   DeclAccessPair FoundDecl;
 };
@@ -2432,20 +2432,20 @@
   /// IsArrow - True if this is "X->F", false if this is "X.F".
   bool IsArrow : 1;
 
-  /// \brief True if this member expression used a nested-name-specifier to
+  /// True if this member expression used a nested-name-specifier to
   /// refer to the member, e.g., "x->Base::f", or found its member via a using
   /// declaration.  When true, a MemberExprNameQualifier
   /// structure is allocated immediately after the MemberExpr.
   bool HasQualifierOrFoundDecl : 1;
 
-  /// \brief True if this member expression specified a template keyword
+  /// True if this member expression specified a template keyword
   /// and/or a template argument list explicitly, e.g., x->f<int>,
   /// x->template f, x->template f<int>.
   /// When true, an ASTTemplateKWAndArgsInfo structure and its
   /// TemplateArguments (if any) are present.
   bool HasTemplateKWAndArgsInfo : 1;
 
-  /// \brief True if this member expression refers to a method that
+  /// True if this member expression refers to a method that
   /// was resolved from an overloaded set having size greater than 1.
   bool HadMultipleCandidates : 1;
 
@@ -2498,14 +2498,14 @@
   void setBase(Expr *E) { Base = E; }
   Expr *getBase() const { return cast<Expr>(Base); }
 
-  /// \brief Retrieve the member declaration to which this expression refers.
+  /// Retrieve the member declaration to which this expression refers.
   ///
   /// The returned declaration will be a FieldDecl or (in C++) a VarDecl (for
   /// static data members), a CXXMethodDecl, or an EnumConstantDecl.
   ValueDecl *getMemberDecl() const { return MemberDecl; }
   void setMemberDecl(ValueDecl *D) { MemberDecl = D; }
 
-  /// \brief Retrieves the declaration found by lookup.
+  /// Retrieves the declaration found by lookup.
   DeclAccessPair getFoundDecl() const {
     if (!HasQualifierOrFoundDecl)
       return DeclAccessPair::make(getMemberDecl(),
@@ -2513,12 +2513,12 @@
     return getTrailingObjects<MemberExprNameQualifier>()->FoundDecl;
   }
 
-  /// \brief Determines whether this member expression actually had
+  /// Determines whether this member expression actually had
   /// a C++ nested-name-specifier prior to the name of the member, e.g.,
   /// x->Base::foo.
   bool hasQualifier() const { return getQualifier() != nullptr; }
 
-  /// \brief If the member name was qualified, retrieves the
+  /// If the member name was qualified, retrieves the
   /// nested-name-specifier that precedes the member name, with source-location
   /// information.
   NestedNameSpecifierLoc getQualifierLoc() const {
@@ -2528,28 +2528,28 @@
     return getTrailingObjects<MemberExprNameQualifier>()->QualifierLoc;
   }
 
-  /// \brief If the member name was qualified, retrieves the
+  /// If the member name was qualified, retrieves the
   /// nested-name-specifier that precedes the member name. Otherwise, returns
   /// NULL.
   NestedNameSpecifier *getQualifier() const {
     return getQualifierLoc().getNestedNameSpecifier();
   }
 
-  /// \brief Retrieve the location of the template keyword preceding
+  /// Retrieve the location of the template keyword preceding
   /// the member name, if any.
   SourceLocation getTemplateKeywordLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
     return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->TemplateKWLoc;
   }
 
-  /// \brief Retrieve the location of the left angle bracket starting the
+  /// Retrieve the location of the left angle bracket starting the
   /// explicit template argument list following the member name, if any.
   SourceLocation getLAngleLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
     return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->LAngleLoc;
   }
 
-  /// \brief Retrieve the location of the right angle bracket ending the
+  /// Retrieve the location of the right angle bracket ending the
   /// explicit template argument list following the member name, if any.
   SourceLocation getRAngleLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
@@ -2559,11 +2559,11 @@
   /// Determines whether the member name was preceded by the template keyword.
   bool hasTemplateKeyword() const { return getTemplateKeywordLoc().isValid(); }
 
-  /// \brief Determines whether the member name was followed by an
+  /// Determines whether the member name was followed by an
   /// explicit template argument list.
   bool hasExplicitTemplateArgs() const { return getLAngleLoc().isValid(); }
 
-  /// \brief Copies the template arguments (if present) into the given
+  /// Copies the template arguments (if present) into the given
   /// structure.
   void copyTemplateArgumentsInto(TemplateArgumentListInfo &List) const {
     if (hasExplicitTemplateArgs())
@@ -2571,7 +2571,7 @@
           getTrailingObjects<TemplateArgumentLoc>(), List);
   }
 
-  /// \brief Retrieve the template arguments provided as part of this
+  /// Retrieve the template arguments provided as part of this
   /// template-id.
   const TemplateArgumentLoc *getTemplateArgs() const {
     if (!hasExplicitTemplateArgs())
@@ -2580,7 +2580,7 @@
     return getTrailingObjects<TemplateArgumentLoc>();
   }
 
-  /// \brief Retrieve the number of template arguments provided as part of this
+  /// Retrieve the number of template arguments provided as part of this
   /// template-id.
   unsigned getNumTemplateArgs() const {
     if (!hasExplicitTemplateArgs())
@@ -2593,7 +2593,7 @@
     return {getTemplateArgs(), getNumTemplateArgs()};
   }
 
-  /// \brief Retrieve the member declaration name info.
+  /// Retrieve the member declaration name info.
   DeclarationNameInfo getMemberNameInfo() const {
     return DeclarationNameInfo(MemberDecl->getDeclName(),
                                MemberLoc, MemberDNLoc);
@@ -2614,24 +2614,24 @@
 
   SourceLocation getExprLoc() const LLVM_READONLY { return MemberLoc; }
 
-  /// \brief Determine whether the base of this explicit is implicit.
+  /// Determine whether the base of this explicit is implicit.
   bool isImplicitAccess() const {
     return getBase() && getBase()->isImplicitCXXThis();
   }
 
-  /// \brief Returns true if this member expression refers to a method that
+  /// Returns true if this member expression refers to a method that
   /// was resolved from an overloaded set having size greater than 1.
   bool hadMultipleCandidates() const {
     return HadMultipleCandidates;
   }
-  /// \brief Sets the flag telling whether this expression refers to
+  /// Sets the flag telling whether this expression refers to
   /// a method that was resolved from an overloaded set having size
   /// greater than 1.
   void setHadMultipleCandidates(bool V = true) {
     HadMultipleCandidates = V;
   }
 
-  /// \brief Returns true if virtual dispatch is performed.
+  /// Returns true if virtual dispatch is performed.
   /// If the member access is fully qualified, (i.e. X::f()), virtual
   /// dispatching is not performed. In -fapple-kext mode qualified
   /// calls to virtual method will still go through the vtable.
@@ -2678,7 +2678,7 @@
            init->containsUnexpandedParameterPack()),
       LParenLoc(lparenloc), TInfoAndScope(tinfo, fileScope), Init(init) {}
 
-  /// \brief Construct an empty compound literal.
+  /// Construct an empty compound literal.
   explicit CompoundLiteralExpr(EmptyShell Empty)
     : Expr(CompoundLiteralExprClass, Empty) { }
 
@@ -2769,7 +2769,7 @@
     assert(CastConsistency());
   }
 
-  /// \brief Construct an empty cast.
+  /// Construct an empty cast.
   CastExpr(StmtClass SC, EmptyShell Empty, unsigned BasePathSize)
     : Expr(SC, Empty) {
     setBasePathSize(BasePathSize);
@@ -2786,7 +2786,7 @@
   const Expr *getSubExpr() const { return cast<Expr>(Op); }
   void setSubExpr(Expr *E) { Op = E; }
 
-  /// \brief Retrieve the cast subexpression as it was written in the source
+  /// Retrieve the cast subexpression as it was written in the source
   /// code, looking through any implicit casts or other intermediate nodes
   /// introduced by semantic analysis.
   Expr *getSubExprAsWritten();
@@ -2852,7 +2852,7 @@
     : CastExpr(ImplicitCastExprClass, ty, VK, kind, op, BasePathLength) {
   }
 
-  /// \brief Construct an empty implicit cast.
+  /// Construct an empty implicit cast.
   explicit ImplicitCastExpr(EmptyShell Shell, unsigned PathSize)
     : CastExpr(ImplicitCastExprClass, Shell, PathSize) { }
 
@@ -2920,7 +2920,7 @@
                    TypeSourceInfo *writtenTy)
     : CastExpr(SC, exprTy, VK, kind, op, PathSize), TInfo(writtenTy) {}
 
-  /// \brief Construct an empty explicit cast.
+  /// Construct an empty explicit cast.
   ExplicitCastExpr(StmtClass SC, EmptyShell Shell, unsigned PathSize)
     : CastExpr(SC, Shell, PathSize) { }
 
@@ -2955,7 +2955,7 @@
     : ExplicitCastExpr(CStyleCastExprClass, exprTy, vk, kind, op, PathSize,
                        writtenTy), LPLoc(l), RPLoc(r) {}
 
-  /// \brief Construct an empty C-style explicit cast.
+  /// Construct an empty C-style explicit cast.
   explicit CStyleCastExpr(EmptyShell Shell, unsigned PathSize)
     : ExplicitCastExpr(CStyleCastExprClass, Shell, PathSize) { }
 
@@ -2988,7 +2988,7 @@
   friend class CastExpr;
 };
 
-/// \brief A builtin binary operation expression such as "x + y" or "x <= y".
+/// A builtin binary operation expression such as "x + y" or "x <= y".
 ///
 /// This expression node kind describes a builtin binary operation,
 /// such as "x + y" for integer values "x" and "y". The operands will
@@ -3039,7 +3039,7 @@
            "Use CompoundAssignOperator for compound assignments");
   }
 
-  /// \brief Construct an empty binary operator.
+  /// Construct an empty binary operator.
   explicit BinaryOperator(EmptyShell Empty)
     : Expr(BinaryOperatorClass, Empty), Opc(BO_Comma) { }
 
@@ -3068,11 +3068,11 @@
 
   StringRef getOpcodeStr() const { return getOpcodeStr(getOpcode()); }
 
-  /// \brief Retrieve the binary opcode that corresponds to the given
+  /// Retrieve the binary opcode that corresponds to the given
   /// overloaded operator.
   static Opcode getOverloadedOpcode(OverloadedOperatorKind OO);
 
-  /// \brief Retrieve the overloaded operator kind that corresponds to
+  /// Retrieve the overloaded operator kind that corresponds to
   /// the given binary opcode.
   static OverloadedOperatorKind getOverloadedOperator(Opcode Opc);
 
@@ -3228,7 +3228,7 @@
            "Only should be used for compound assignments");
   }
 
-  /// \brief Build an empty compound assignment operator expression.
+  /// Build an empty compound assignment operator expression.
   explicit CompoundAssignOperator(EmptyShell Empty)
     : BinaryOperator(CompoundAssignOperatorClass, Empty) { }
 
@@ -3318,7 +3318,7 @@
     SubExprs[RHS] = rhs;
   }
 
-  /// \brief Build an empty conditional operator.
+  /// Build an empty conditional operator.
   explicit ConditionalOperator(EmptyShell Empty)
     : AbstractConditionalOperator(ConditionalOperatorClass, Empty) { }
 
@@ -3396,30 +3396,30 @@
     assert(OpaqueValue->getSourceExpr() == common && "Wrong opaque value");
   }
 
-  /// \brief Build an empty conditional operator.
+  /// Build an empty conditional operator.
   explicit BinaryConditionalOperator(EmptyShell Empty)
     : AbstractConditionalOperator(BinaryConditionalOperatorClass, Empty) { }
 
-  /// \brief getCommon - Return the common expression, written to the
+  /// getCommon - Return the common expression, written to the
   ///   left of the condition.  The opaque value will be bound to the
   ///   result of this expression.
   Expr *getCommon() const { return cast<Expr>(SubExprs[COMMON]); }
 
-  /// \brief getOpaqueValue - Return the opaque value placeholder.
+  /// getOpaqueValue - Return the opaque value placeholder.
   OpaqueValueExpr *getOpaqueValue() const { return OpaqueValue; }
 
-  /// \brief getCond - Return the condition expression; this is defined
+  /// getCond - Return the condition expression; this is defined
   ///   in terms of the opaque value.
   Expr *getCond() const { return cast<Expr>(SubExprs[COND]); }
 
-  /// \brief getTrueExpr - Return the subexpression which will be
+  /// getTrueExpr - Return the subexpression which will be
   ///   evaluated if the condition evaluates to true;  this is defined
   ///   in terms of the opaque value.
   Expr *getTrueExpr() const {
     return cast<Expr>(SubExprs[LHS]);
   }
 
-  /// \brief getFalseExpr - Return the subexpression which will be
+  /// getFalseExpr - Return the subexpression which will be
   ///   evaluated if the condnition evaluates to false; this is
   ///   defined in terms of the opaque value.
   Expr *getFalseExpr() const {
@@ -3475,7 +3475,7 @@
            false),
       AmpAmpLoc(AALoc), LabelLoc(LLoc), Label(L) {}
 
-  /// \brief Build an empty address of a label expression.
+  /// Build an empty address of a label expression.
   explicit AddrLabelExpr(EmptyShell Empty)
     : Expr(AddrLabelExprClass, Empty) { }
 
@@ -3522,7 +3522,7 @@
          T->isDependentType(), false, false, false),
     SubStmt(substmt), LParenLoc(lp), RParenLoc(rp) { }
 
-  /// \brief Build an empty statement expression.
+  /// Build an empty statement expression.
   explicit StmtExpr(EmptyShell Empty) : Expr(StmtExprClass, Empty) { }
 
   CompoundStmt *getSubStmt() { return cast<CompoundStmt>(SubStmt); }
@@ -3568,7 +3568,7 @@
   ShuffleVectorExpr(const ASTContext &C, ArrayRef<Expr*> args, QualType Type,
                     SourceLocation BLoc, SourceLocation RP);
 
-  /// \brief Build an empty vector-shuffle expression.
+  /// Build an empty vector-shuffle expression.
   explicit ShuffleVectorExpr(EmptyShell Empty)
     : Expr(ShuffleVectorExprClass, Empty), SubExprs(nullptr) { }
 
@@ -3590,7 +3590,7 @@
   /// pointers.
   unsigned getNumSubExprs() const { return NumExprs; }
 
-  /// \brief Retrieve the array of expressions.
+  /// Retrieve the array of expressions.
   Expr **getSubExprs() { return reinterpret_cast<Expr **>(SubExprs); }
 
   /// getExpr - Return the Expr at the specified index.
@@ -3708,7 +3708,7 @@
       SubExprs[RHS] = rhs;
     }
 
-  /// \brief Build an empty __builtin_choose_expr.
+  /// Build an empty __builtin_choose_expr.
   explicit ChooseExpr(EmptyShell Empty) : Expr(ChooseExprClass, Empty) { }
 
   /// isConditionTrue - Return whether the condition is true (i.e. not
@@ -3775,7 +3775,7 @@
            false),
       TokenLoc(Loc) { }
 
-  /// \brief Build an empty GNU __null expression.
+  /// Build an empty GNU __null expression.
   explicit GNUNullExpr(EmptyShell Empty) : Expr(GNUNullExprClass, Empty) { }
 
   /// getTokenLocation - The location of the __null token.
@@ -3848,7 +3848,7 @@
   }
 };
 
-/// @brief Describes an C or C++ initializer list.
+/// Describes an C or C++ initializer list.
 ///
 /// InitListExpr describes an initializer list, which can be used to
 /// initialize objects of different types, including
@@ -3906,7 +3906,7 @@
   ///   - the semantic form, if this is in syntactic form.
   llvm::PointerIntPair<InitListExpr *, 1, bool> AltForm;
 
-  /// \brief Either:
+  /// Either:
   ///  If this initializer list initializes an array with more elements than
   ///  there are initializers in the list, specifies an expression to be used
   ///  for value initialization of the rest of the elements.
@@ -3919,16 +3919,16 @@
   InitListExpr(const ASTContext &C, SourceLocation lbraceloc,
                ArrayRef<Expr*> initExprs, SourceLocation rbraceloc);
 
-  /// \brief Build an empty initializer list.
+  /// Build an empty initializer list.
   explicit InitListExpr(EmptyShell Empty)
     : Expr(InitListExprClass, Empty), AltForm(nullptr, true) { }
 
   unsigned getNumInits() const { return InitExprs.size(); }
 
-  /// \brief Retrieve the set of initializers.
+  /// Retrieve the set of initializers.
   Expr **getInits() { return reinterpret_cast<Expr **>(InitExprs.data()); }
 
-  /// \brief Retrieve the set of initializers.
+  /// Retrieve the set of initializers.
   Expr * const *getInits() const {
     return reinterpret_cast<Expr * const *>(InitExprs.data());
   }
@@ -3964,10 +3964,10 @@
     }
   }
 
-  /// \brief Reserve space for some number of initializers.
+  /// Reserve space for some number of initializers.
   void reserveInits(const ASTContext &C, unsigned NumInits);
 
-  /// @brief Specify the number of initializers
+  /// Specify the number of initializers
   ///
   /// If there are more than @p NumInits initializers, the remaining
   /// initializers will be destroyed. If there are fewer than @p
@@ -3975,7 +3975,7 @@
   /// unknown initializers.
   void resizeInits(const ASTContext &Context, unsigned NumInits);
 
-  /// @brief Updates the initializer at index @p Init with the new
+  /// Updates the initializer at index @p Init with the new
   /// expression @p expr, and returns the old expression at that
   /// location.
   ///
@@ -3984,7 +3984,7 @@
   /// accommodate the new entry.
   Expr *updateInit(const ASTContext &C, unsigned Init, Expr *expr);
 
-  /// \brief If this initializer list initializes an array with more elements
+  /// If this initializer list initializes an array with more elements
   /// than there are initializers in the list, specifies an expression to be
   /// used for value initialization of the rest of the elements.
   Expr *getArrayFiller() {
@@ -3995,11 +3995,11 @@
   }
   void setArrayFiller(Expr *filler);
 
-  /// \brief Return true if this is an array initializer and its array "filler"
+  /// Return true if this is an array initializer and its array "filler"
   /// has been set.
   bool hasArrayFiller() const { return getArrayFiller(); }
 
-  /// \brief If this initializes a union, specifies which field in the
+  /// If this initializes a union, specifies which field in the
   /// union to initialize.
   ///
   /// Typically, this field is the first named field within the
@@ -4107,7 +4107,7 @@
   friend class ASTStmtWriter;
 };
 
-/// @brief Represents a C99 designated initializer expression.
+/// Represents a C99 designated initializer expression.
 ///
 /// A designated initializer expression (C99 6.7.8) contains one or
 /// more designators (which can be field designators, array
@@ -4131,7 +4131,7 @@
     : public Expr,
       private llvm::TrailingObjects<DesignatedInitExpr, Stmt *> {
 public:
-  /// \brief Forward declaration of the Designator class.
+  /// Forward declaration of the Designator class.
   class Designator;
 
 private:
@@ -4151,7 +4151,7 @@
   /// expressions used by array and array-range designators.
   unsigned NumSubExprs : 16;
 
-  /// \brief The designators in this designated initialization
+  /// The designators in this designated initialization
   /// expression.
   Designator *Designators;
 
@@ -4196,14 +4196,14 @@
     unsigned RBracketLoc;
   };
 
-  /// @brief Represents a single C99 designator.
+  /// Represents a single C99 designator.
   ///
   /// @todo This class is infuriatingly similar to clang::Designator,
   /// but minor differences (storing indices vs. storing pointers)
   /// keep us from reusing it. Try harder, later, to rectify these
   /// differences.
   class Designator {
-    /// @brief The kind of designator this describes.
+    /// The kind of designator this describes.
     enum {
       FieldDesignator,
       ArrayDesignator,
@@ -4221,7 +4221,7 @@
   public:
     Designator() {}
 
-    /// @brief Initializes a field designator.
+    /// Initializes a field designator.
     Designator(const IdentifierInfo *FieldName, SourceLocation DotLoc,
                SourceLocation FieldLoc)
       : Kind(FieldDesignator) {
@@ -4230,7 +4230,7 @@
       Field.FieldLoc = FieldLoc.getRawEncoding();
     }
 
-    /// @brief Initializes an array designator.
+    /// Initializes an array designator.
     Designator(unsigned Index, SourceLocation LBracketLoc,
                SourceLocation RBracketLoc)
       : Kind(ArrayDesignator) {
@@ -4240,7 +4240,7 @@
       ArrayOrRange.RBracketLoc = RBracketLoc.getRawEncoding();
     }
 
-    /// @brief Initializes a GNU array-range designator.
+    /// Initializes a GNU array-range designator.
     Designator(unsigned Index, SourceLocation LBracketLoc,
                SourceLocation EllipsisLoc, SourceLocation RBracketLoc)
       : Kind(ArrayRangeDesignator) {
@@ -4326,7 +4326,7 @@
   static DesignatedInitExpr *CreateEmpty(const ASTContext &C,
                                          unsigned NumIndexExprs);
 
-  /// @brief Returns the number of designators in this initializer.
+  /// Returns the number of designators in this initializer.
   unsigned size() const { return NumDesignators; }
 
   // Iterator access to the designators.
@@ -4350,17 +4350,17 @@
   Expr *getArrayRangeStart(const Designator &D) const;
   Expr *getArrayRangeEnd(const Designator &D) const;
 
-  /// @brief Retrieve the location of the '=' that precedes the
+  /// Retrieve the location of the '=' that precedes the
   /// initializer value itself, if present.
   SourceLocation getEqualOrColonLoc() const { return EqualOrColonLoc; }
   void setEqualOrColonLoc(SourceLocation L) { EqualOrColonLoc = L; }
 
-  /// @brief Determines whether this designated initializer used the
+  /// Determines whether this designated initializer used the
   /// deprecated GNU syntax for designated initializers.
   bool usesGNUSyntax() const { return GNUSyntax; }
   void setGNUSyntax(bool GNU) { GNUSyntax = GNU; }
 
-  /// @brief Retrieve the initializer value.
+  /// Retrieve the initializer value.
   Expr *getInit() const {
     return cast<Expr>(*const_cast<DesignatedInitExpr*>(this)->child_begin());
   }
@@ -4369,7 +4369,7 @@
     *child_begin() = init;
   }
 
-  /// \brief Retrieve the total number of subexpressions in this
+  /// Retrieve the total number of subexpressions in this
   /// designated initializer expression, including the actual
   /// initialized value and any expressions that occur within array
   /// and array-range designators.
@@ -4385,7 +4385,7 @@
     getTrailingObjects<Stmt *>()[Idx] = E;
   }
 
-  /// \brief Replaces the designator at index @p Idx with the series
+  /// Replaces the designator at index @p Idx with the series
   /// of designators in [First, Last).
   void ExpandDesignator(const ASTContext &C, unsigned Idx,
                         const Designator *First, const Designator *Last);
@@ -4412,7 +4412,7 @@
   friend TrailingObjects;
 };
 
-/// \brief Represents a place-holder for an object not to be initialized by
+/// Represents a place-holder for an object not to be initialized by
 /// anything.
 ///
 /// This only makes sense when it appears as part of an updater of a
@@ -4495,7 +4495,7 @@
   }
 };
 
-/// \brief Represents a loop initializing the elements of an array.
+/// Represents a loop initializing the elements of an array.
 ///
 /// The need to initialize the elements of an array occurs in a number of
 /// contexts:
@@ -4563,7 +4563,7 @@
   friend class ASTStmtWriter;
 };
 
-/// \brief Represents the index of the current element of an array being
+/// Represents the index of the current element of an array being
 /// initialized by an ArrayInitLoopExpr. This can only appear within the
 /// subexpression of an ArrayInitLoopExpr.
 class ArrayInitIndexExpr : public Expr {
@@ -4593,7 +4593,7 @@
   friend class ASTStmtReader;
 };
 
-/// \brief Represents an implicitly-generated value initialization of
+/// Represents an implicitly-generated value initialization of
 /// an object of a given type.
 ///
 /// Implicit value initializations occur within semantic initializer
@@ -4607,7 +4607,7 @@
     : Expr(ImplicitValueInitExprClass, ty, VK_RValue, OK_Ordinary,
            false, false, ty->isInstantiationDependentType(), false) { }
 
-  /// \brief Construct an empty implicit value initialization.
+  /// Construct an empty implicit value initialization.
   explicit ImplicitValueInitExpr(EmptyShell Empty)
     : Expr(ImplicitValueInitExprClass, Empty) { }
 
@@ -4636,7 +4636,7 @@
   ParenListExpr(const ASTContext& C, SourceLocation lparenloc,
                 ArrayRef<Expr*> exprs, SourceLocation rparenloc);
 
-  /// \brief Build an empty paren list.
+  /// Build an empty paren list.
   explicit ParenListExpr(EmptyShell Empty) : Expr(ParenListExprClass, Empty) { }
 
   unsigned getNumExprs() const { return NumExprs; }
@@ -4679,7 +4679,7 @@
   friend class ASTStmtWriter;
 };
 
-/// \brief Represents a C11 generic selection.
+/// Represents a C11 generic selection.
 ///
 /// A generic selection (C11 6.5.1.1) contains an unevaluated controlling
 /// expression, followed by one or more generic associations.  Each generic
@@ -4825,7 +4825,7 @@
            base->containsUnexpandedParameterPack()),
       Base(base), Accessor(&accessor), AccessorLoc(loc) {}
 
-  /// \brief Build an empty vector element expression.
+  /// Build an empty vector element expression.
   explicit ExtVectorElementExpr(EmptyShell Empty)
     : Expr(ExtVectorElementExprClass, Empty) { }
 
@@ -4883,7 +4883,7 @@
            false),
       TheBlock(BD) {}
 
-  /// \brief Build an empty block expression.
+  /// Build an empty block expression.
   explicit BlockExpr(EmptyShell Empty) : Expr(BlockExprClass, Empty) { }
 
   const BlockDecl *getBlockDecl() const { return TheBlock; }
@@ -5135,7 +5135,7 @@
   };
 
 private:
-  /// \brief Location of sub-expressions.
+  /// Location of sub-expressions.
   /// The location of Scope sub-expression is NumSubExprs - 1, which is
   /// not fixed, therefore is not defined in enum.
   enum { PTR, ORDER, VAL1, ORDER_FAIL, VAL2, WEAK, END_EXPR };
@@ -5149,11 +5149,11 @@
   AtomicExpr(SourceLocation BLoc, ArrayRef<Expr*> args, QualType t,
              AtomicOp op, SourceLocation RP);
 
-  /// \brief Determine the number of arguments the specified atomic builtin
+  /// Determine the number of arguments the specified atomic builtin
   /// should have.
   static unsigned getNumSubExprs(AtomicOp Op);
 
-  /// \brief Build an empty AtomicExpr.
+  /// Build an empty AtomicExpr.
   explicit AtomicExpr(EmptyShell Empty) : Expr(AtomicExprClass, Empty) { }
 
   Expr *getPtr() const {
@@ -5232,7 +5232,7 @@
     return const_child_range(SubExprs, SubExprs + NumSubExprs);
   }
 
-  /// \brief Get atomic scope model for the atomic op code.
+  /// Get atomic scope model for the atomic op code.
   /// \return empty atomic scope model if the atomic op code does not have
   ///   scope operand.
   static std::unique_ptr<AtomicScopeModel> getScopeModel(AtomicOp Op) {
@@ -5243,7 +5243,7 @@
     return AtomicScopeModel::create(Kind);
   }
 
-  /// \brief Get atomic scope model.
+  /// Get atomic scope model.
   /// \return empty atomic scope model if this atomic expression does not have
   ///   scope operand.
   std::unique_ptr<AtomicScopeModel> getScopeModel() const {
Index: cfe/trunk/include/clang/AST/ExprCXX.h
===================================================================
--- cfe/trunk/include/clang/AST/ExprCXX.h
+++ cfe/trunk/include/clang/AST/ExprCXX.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::Expr interface and subclasses for C++ expressions.
+/// Defines the clang::Expr interface and subclasses for C++ expressions.
 //
 //===----------------------------------------------------------------------===//
 
@@ -62,7 +62,7 @@
 // C++ Expressions.
 //===--------------------------------------------------------------------===//
 
-/// \brief A call to an overloaded operator written using operator
+/// A call to an overloaded operator written using operator
 /// syntax.
 ///
 /// Represents a call to an overloaded operator written using operator
@@ -76,7 +76,7 @@
 /// function templates that were found by name lookup at template
 /// definition time.
 class CXXOperatorCallExpr : public CallExpr {
-  /// \brief The overloaded operator.
+  /// The overloaded operator.
   OverloadedOperatorKind Operator;
 
   SourceRange Range;
@@ -101,7 +101,7 @@
   explicit CXXOperatorCallExpr(ASTContext& C, EmptyShell Empty)
       : CallExpr(C, CXXOperatorCallExprClass, Empty) {}
 
-  /// \brief Returns the kind of overloaded operator that this
+  /// Returns the kind of overloaded operator that this
   /// expression refers to.
   OverloadedOperatorKind getOperator() const { return Operator; }
 
@@ -115,10 +115,10 @@
   }
   bool isAssignmentOp() const { return isAssignmentOp(getOperator()); }
 
-  /// \brief Is this written as an infix binary operator?
+  /// Is this written as an infix binary operator?
   bool isInfixBinaryOp() const;
 
-  /// \brief Returns the location of the operator symbol in the expression.
+  /// Returns the location of the operator symbol in the expression.
   ///
   /// When \c getOperator()==OO_Call, this is the location of the right
   /// parentheses; when \c getOperator()==OO_Subscript, this is the location
@@ -170,15 +170,15 @@
   CXXMemberCallExpr(ASTContext &C, EmptyShell Empty)
       : CallExpr(C, CXXMemberCallExprClass, Empty) {}
 
-  /// \brief Retrieves the implicit object argument for the member call.
+  /// Retrieves the implicit object argument for the member call.
   ///
   /// For example, in "x.f(5)", this returns the sub-expression "x".
   Expr *getImplicitObjectArgument() const;
 
-  /// \brief Retrieves the declaration of the called method.
+  /// Retrieves the declaration of the called method.
   CXXMethodDecl *getMethodDecl() const;
 
-  /// \brief Retrieves the CXXRecordDecl for the underlying type of
+  /// Retrieves the CXXRecordDecl for the underlying type of
   /// the implicit object argument.
   ///
   /// Note that this is may not be the same declaration as that of the class
@@ -199,7 +199,7 @@
   }
 };
 
-/// \brief Represents a call to a CUDA kernel function.
+/// Represents a call to a CUDA kernel function.
 class CUDAKernelCallExpr : public CallExpr {
 private:
   enum { CONFIG, END_PREARG };
@@ -218,7 +218,7 @@
   }
   CallExpr *getConfig() { return cast_or_null<CallExpr>(getPreArg(CONFIG)); }
 
-  /// \brief Sets the kernel configuration expression.
+  /// Sets the kernel configuration expression.
   ///
   /// Note that this method cannot be called if config has already been set to a
   /// non-null value.
@@ -237,7 +237,7 @@
   }
 };
 
-/// \brief Abstract class common to all of the C++ "named"/"keyword" casts.
+/// Abstract class common to all of the C++ "named"/"keyword" casts.
 ///
 /// This abstract class is inherited by all of the classes
 /// representing "named" casts: CXXStaticCastExpr for \c static_cast,
@@ -271,11 +271,11 @@
 public:
   const char *getCastName() const;
 
-  /// \brief Retrieve the location of the cast operator keyword, e.g.,
+  /// Retrieve the location of the cast operator keyword, e.g.,
   /// \c static_cast.
   SourceLocation getOperatorLoc() const { return Loc; }
 
-  /// \brief Retrieve the location of the closing parenthesis.
+  /// Retrieve the location of the closing parenthesis.
   SourceLocation getRParenLoc() const { return RParenLoc; }
 
   SourceLocation getLocStart() const LLVM_READONLY { return Loc; }
@@ -295,7 +295,7 @@
   }
 };
 
-/// \brief A C++ \c static_cast expression (C++ [expr.static.cast]).
+/// A C++ \c static_cast expression (C++ [expr.static.cast]).
 ///
 /// This expression node represents a C++ static cast, e.g.,
 /// \c static_cast<int>(1.0).
@@ -330,7 +330,7 @@
   }
 };
 
-/// \brief A C++ @c dynamic_cast expression (C++ [expr.dynamic.cast]).
+/// A C++ @c dynamic_cast expression (C++ [expr.dynamic.cast]).
 ///
 /// This expression node represents a dynamic cast, e.g.,
 /// \c dynamic_cast<Derived*>(BasePtr). Such a cast may perform a run-time
@@ -369,7 +369,7 @@
   }
 };
 
-/// \brief A C++ @c reinterpret_cast expression (C++ [expr.reinterpret.cast]).
+/// A C++ @c reinterpret_cast expression (C++ [expr.reinterpret.cast]).
 ///
 /// This expression node represents a reinterpret cast, e.g.,
 /// @c reinterpret_cast<int>(VoidPtr).
@@ -410,7 +410,7 @@
   }
 };
 
-/// \brief A C++ \c const_cast expression (C++ [expr.const.cast]).
+/// A C++ \c const_cast expression (C++ [expr.const.cast]).
 ///
 /// This expression node represents a const cast, e.g.,
 /// \c const_cast<char*>(PtrToConstChar).
@@ -445,7 +445,7 @@
   }
 };
 
-/// \brief A call to a literal operator (C++11 [over.literal])
+/// A call to a literal operator (C++11 [over.literal])
 /// written as a user-defined literal (C++11 [lit.ext]).
 ///
 /// Represents a user-defined literal, e.g. "foo"_bar or 1.23_xyz. While this
@@ -455,7 +455,7 @@
 /// Since literal operators are never found by ADL and can only be declared at
 /// namespace scope, a user-defined literal is never dependent.
 class UserDefinedLiteral : public CallExpr {
-  /// \brief The location of a ud-suffix within the literal.
+  /// The location of a ud-suffix within the literal.
   SourceLocation UDSuffixLoc;
 
 public:
@@ -492,11 +492,11 @@
     LOK_Character
   };
 
-  /// \brief Returns the kind of literal operator invocation
+  /// Returns the kind of literal operator invocation
   /// which this expression represents.
   LiteralOperatorKind getLiteralOperatorKind() const;
 
-  /// \brief If this is not a raw user-defined literal, get the
+  /// If this is not a raw user-defined literal, get the
   /// underlying cooked literal (representing the literal with the suffix
   /// removed).
   Expr *getCookedLiteral();
@@ -512,13 +512,13 @@
 
   SourceLocation getLocEnd() const { return getRParenLoc(); }
 
-  /// \brief Returns the location of a ud-suffix in the expression.
+  /// Returns the location of a ud-suffix in the expression.
   ///
   /// For a string literal, there may be multiple identical suffixes. This
   /// returns the first.
   SourceLocation getUDSuffixLoc() const { return UDSuffixLoc; }
 
-  /// \brief Returns the ud-suffix specified for this literal.
+  /// Returns the ud-suffix specified for this literal.
   const IdentifierInfo *getUDSuffix() const;
 
   static bool classof(const Stmt *S) {
@@ -526,7 +526,7 @@
   }
 };
 
-/// \brief A boolean literal, per ([C++ lex.bool] Boolean literals).
+/// A boolean literal, per ([C++ lex.bool] Boolean literals).
 class CXXBoolLiteralExpr : public Expr {
   bool Value;
   SourceLocation Loc;
@@ -559,7 +559,7 @@
   }
 };
 
-/// \brief The null pointer literal (C++11 [lex.nullptr])
+/// The null pointer literal (C++11 [lex.nullptr])
 ///
 /// Introduced in C++11, the only literal of type \c nullptr_t is \c nullptr.
 class CXXNullPtrLiteralExpr : public Expr {
@@ -589,7 +589,7 @@
   }
 };
 
-/// \brief Implicit construction of a std::initializer_list<T> object from an
+/// Implicit construction of a std::initializer_list<T> object from an
 /// array temporary within list-initialization (C++11 [dcl.init.list]p5).
 class CXXStdInitializerListExpr : public Expr {
   Stmt *SubExpr = nullptr;
@@ -677,11 +677,11 @@
 
   bool isTypeOperand() const { return Operand.is<TypeSourceInfo *>(); }
 
-  /// \brief Retrieves the type operand of this typeid() expression after
+  /// Retrieves the type operand of this typeid() expression after
   /// various required adjustments (removing reference types, cv-qualifiers).
   QualType getTypeOperand(ASTContext &Context) const;
 
-  /// \brief Retrieve source information for the type operand.
+  /// Retrieve source information for the type operand.
   TypeSourceInfo *getTypeOperandSourceInfo() const {
     assert(isTypeOperand() && "Cannot call getTypeOperand for typeid(expr)");
     return Operand.get<TypeSourceInfo *>();
@@ -720,7 +720,7 @@
   }
 };
 
-/// \brief A member reference to an MSPropertyDecl. 
+/// A member reference to an MSPropertyDecl. 
 ///
 /// This expression always has pseudo-object type, and therefore it is
 /// typically not encountered in a fully-typechecked expression except
@@ -816,7 +816,7 @@
     SubExprs[IDX_EXPR] = Idx;
   }
 
-  /// \brief Create an empty array subscript expression.
+  /// Create an empty array subscript expression.
   explicit MSPropertySubscriptExpr(EmptyShell Shell)
       : Expr(MSPropertySubscriptExprClass, Shell) {}
 
@@ -884,11 +884,11 @@
 
   bool isTypeOperand() const { return Operand.is<TypeSourceInfo *>(); }
 
-  /// \brief Retrieves the type operand of this __uuidof() expression after
+  /// Retrieves the type operand of this __uuidof() expression after
   /// various required adjustments (removing reference types, cv-qualifiers).
   QualType getTypeOperand(ASTContext &Context) const;
 
-  /// \brief Retrieve source information for the type operand.
+  /// Retrieve source information for the type operand.
   TypeSourceInfo *getTypeOperandSourceInfo() const {
     assert(isTypeOperand() && "Cannot call getTypeOperand for __uuidof(expr)");
     return Operand.get<TypeSourceInfo *>();
@@ -930,7 +930,7 @@
   }
 };
 
-/// \brief Represents the \c this expression in C++.
+/// Represents the \c this expression in C++.
 ///
 /// This is a pointer to the object on which the current member function is
 /// executing (C++ [expr.prim]p3). Example:
@@ -977,7 +977,7 @@
   }
 };
 
-/// \brief A C++ throw-expression (C++ [except.throw]).
+/// A C++ throw-expression (C++ [except.throw]).
 ///
 /// This handles 'throw' (for re-throwing the current exception) and
 /// 'throw' assignment-expression.  When assignment-expression isn't
@@ -988,7 +988,7 @@
   Stmt *Op;
   SourceLocation ThrowLoc;
 
-  /// \brief Whether the thrown variable (if any) is in scope.
+  /// Whether the thrown variable (if any) is in scope.
   unsigned IsThrownVariableInScope : 1;
 
 public:
@@ -1009,7 +1009,7 @@
 
   SourceLocation getThrowLoc() const { return ThrowLoc; }
 
-  /// \brief Determines whether the variable thrown by this expression (if any!)
+  /// Determines whether the variable thrown by this expression (if any!)
   /// is within the innermost try block.
   ///
   /// This information is required to determine whether the NRVO can apply to
@@ -1034,16 +1034,16 @@
   }
 };
 
-/// \brief A default argument (C++ [dcl.fct.default]).
+/// A default argument (C++ [dcl.fct.default]).
 ///
 /// This wraps up a function call argument that was created from the
 /// corresponding parameter's default argument, when the call did not
 /// explicitly supply arguments for all of the parameters.
 class CXXDefaultArgExpr final : public Expr {
-  /// \brief The parameter whose default is being used.
+  /// The parameter whose default is being used.
   ParmVarDecl *Param;
 
-  /// \brief The location where the default argument expression was used.
+  /// The location where the default argument expression was used.
   SourceLocation Loc;
 
   CXXDefaultArgExpr(StmtClass SC, SourceLocation Loc, ParmVarDecl *param)
@@ -1081,7 +1081,7 @@
     return getParam()->getDefaultArg();
   }
 
-  /// \brief Retrieve the location where this default argument was actually
+  /// Retrieve the location where this default argument was actually
   /// used.
   SourceLocation getUsedLocation() const { return Loc; }
 
@@ -1102,7 +1102,7 @@
   }
 };
 
-/// \brief A use of a default initializer in a constructor or in aggregate
+/// A use of a default initializer in a constructor or in aggregate
 /// initialization.
 ///
 /// This wraps a use of a C++ default initializer (technically,
@@ -1111,10 +1111,10 @@
 /// (C++11 [class.base.init]p8) or in aggregate initialization
 /// (C++1y [dcl.init.aggr]p7).
 class CXXDefaultInitExpr : public Expr {
-  /// \brief The field whose default is being used.
+  /// The field whose default is being used.
   FieldDecl *Field;
 
-  /// \brief The location where the default initializer expression was used.
+  /// The location where the default initializer expression was used.
   SourceLocation Loc;
 
   CXXDefaultInitExpr(const ASTContext &C, SourceLocation Loc, FieldDecl *Field,
@@ -1133,11 +1133,11 @@
     return new (C) CXXDefaultInitExpr(C, Loc, Field, Field->getType());
   }
 
-  /// \brief Get the field whose initializer will be used.
+  /// Get the field whose initializer will be used.
   FieldDecl *getField() { return Field; }
   const FieldDecl *getField() const { return Field; }
 
-  /// \brief Get the initialization expression that will be used.
+  /// Get the initialization expression that will be used.
   const Expr *getExpr() const {
     assert(Field->getInClassInitializer() && "initializer hasn't been parsed");
     return Field->getInClassInitializer();
@@ -1160,9 +1160,9 @@
   }
 };
 
-/// \brief Represents a C++ temporary.
+/// Represents a C++ temporary.
 class CXXTemporary {
-  /// \brief The destructor that needs to be called.
+  /// The destructor that needs to be called.
   const CXXDestructorDecl *Destructor;
 
   explicit CXXTemporary(const CXXDestructorDecl *destructor)
@@ -1179,7 +1179,7 @@
   }
 };
 
-/// \brief Represents binding an expression to a temporary.
+/// Represents binding an expression to a temporary.
 ///
 /// This ensures the destructor is called for the temporary. It should only be
 /// needed for non-POD, non-trivially destructable class types. For example:
@@ -1235,7 +1235,7 @@
   child_range children() { return child_range(&SubExpr, &SubExpr + 1); }
 };
 
-/// \brief Represents a call to a C++ constructor.
+/// Represents a call to a C++ constructor.
 class CXXConstructExpr : public Expr {
 public:
   enum ConstructionKind {
@@ -1273,7 +1273,7 @@
                    ConstructionKind ConstructKind,
                    SourceRange ParenOrBraceRange);
 
-  /// \brief Construct an empty C++ construction expression.
+  /// Construct an empty C++ construction expression.
   CXXConstructExpr(StmtClass SC, EmptyShell Empty)
       : Expr(SC, Empty), NumArgs(0), Elidable(false),
         HadMultipleCandidates(false), ListInitialization(false),
@@ -1282,7 +1282,7 @@
 public:
   friend class ASTStmtReader;
 
-  /// \brief Construct an empty C++ construction expression.
+  /// Construct an empty C++ construction expression.
   explicit CXXConstructExpr(EmptyShell Empty)
       : CXXConstructExpr(CXXConstructExprClass, Empty) {}
 
@@ -1298,40 +1298,40 @@
                                   ConstructionKind ConstructKind,
                                   SourceRange ParenOrBraceRange);
 
-  /// \brief Get the constructor that this expression will (ultimately) call.
+  /// Get the constructor that this expression will (ultimately) call.
   CXXConstructorDecl *getConstructor() const { return Constructor; }
 
   SourceLocation getLocation() const { return Loc; }
   void setLocation(SourceLocation Loc) { this->Loc = Loc; }
 
-  /// \brief Whether this construction is elidable.
+  /// Whether this construction is elidable.
   bool isElidable() const { return Elidable; }
   void setElidable(bool E) { Elidable = E; }
 
-  /// \brief Whether the referred constructor was resolved from
+  /// Whether the referred constructor was resolved from
   /// an overloaded set having size greater than 1.
   bool hadMultipleCandidates() const { return HadMultipleCandidates; }
   void setHadMultipleCandidates(bool V) { HadMultipleCandidates = V; }
 
-  /// \brief Whether this constructor call was written as list-initialization.
+  /// Whether this constructor call was written as list-initialization.
   bool isListInitialization() const { return ListInitialization; }
   void setListInitialization(bool V) { ListInitialization = V; }
 
-  /// \brief Whether this constructor call was written as list-initialization,
+  /// Whether this constructor call was written as list-initialization,
   /// but was interpreted as forming a std::initializer_list<T> from the list
   /// and passing that as a single constructor argument.
   /// See C++11 [over.match.list]p1 bullet 1.
   bool isStdInitListInitialization() const { return StdInitListInitialization; }
   void setStdInitListInitialization(bool V) { StdInitListInitialization = V; }
 
-  /// \brief Whether this construction first requires
+  /// Whether this construction first requires
   /// zero-initialization before the initializer is called.
   bool requiresZeroInitialization() const { return ZeroInitialization; }
   void setRequiresZeroInitialization(bool ZeroInit) {
     ZeroInitialization = ZeroInit;
   }
 
-  /// \brief Determine whether this constructor is actually constructing
+  /// Determine whether this constructor is actually constructing
   /// a base class (rather than a complete object).
   ConstructionKind getConstructionKind() const {
     return (ConstructionKind)ConstructKind;
@@ -1361,7 +1361,7 @@
   }
   unsigned getNumArgs() const { return NumArgs; }
 
-  /// \brief Return the specified argument.
+  /// Return the specified argument.
   Expr *getArg(unsigned Arg) {
     assert(Arg < NumArgs && "Arg access out of range!");
     return cast<Expr>(Args[Arg]);
@@ -1371,7 +1371,7 @@
     return cast<Expr>(Args[Arg]);
   }
 
-  /// \brief Set the specified argument.
+  /// Set the specified argument.
   void setArg(unsigned Arg, Expr *ArgExpr) {
     assert(Arg < NumArgs && "Arg access out of range!");
     Args[Arg] = ArgExpr;
@@ -1393,7 +1393,7 @@
   }
 };
 
-/// \brief Represents a call to an inherited base class constructor from an
+/// Represents a call to an inherited base class constructor from an
 /// inheriting constructor. This call implicitly forwards the arguments from
 /// the enclosing context (an inheriting constructor) to the specified inherited
 /// base class constructor.
@@ -1414,7 +1414,7 @@
 public:
   friend class ASTStmtReader;
 
-  /// \brief Construct a C++ inheriting construction expression.
+  /// Construct a C++ inheriting construction expression.
   CXXInheritedCtorInitExpr(SourceLocation Loc, QualType T,
                            CXXConstructorDecl *Ctor, bool ConstructsVirtualBase,
                            bool InheritedFromVirtualBase)
@@ -1426,15 +1426,15 @@
     assert(!T->isDependentType());
   }
 
-  /// \brief Construct an empty C++ inheriting construction expression.
+  /// Construct an empty C++ inheriting construction expression.
   explicit CXXInheritedCtorInitExpr(EmptyShell Empty)
       : Expr(CXXInheritedCtorInitExprClass, Empty),
         ConstructsVirtualBase(false), InheritedFromVirtualBase(false) {}
 
-  /// \brief Get the constructor that this expression will call.
+  /// Get the constructor that this expression will call.
   CXXConstructorDecl *getConstructor() const { return Constructor; }
 
-  /// \brief Determine whether this constructor is actually constructing
+  /// Determine whether this constructor is actually constructing
   /// a base class (rather than a complete object).
   bool constructsVBase() const { return ConstructsVirtualBase; }
   CXXConstructExpr::ConstructionKind getConstructionKind() const {
@@ -1442,7 +1442,7 @@
                                  : CXXConstructExpr::CK_NonVirtualBase;
   }
 
-  /// \brief Determine whether the inherited constructor is inherited from a
+  /// Determine whether the inherited constructor is inherited from a
   /// virtual base of the object we construct. If so, we are not responsible
   /// for calling the inherited constructor (the complete object constructor
   /// does that), and so we don't need to pass any arguments.
@@ -1461,7 +1461,7 @@
   }
 };
 
-/// \brief Represents an explicit C++ type conversion that uses "functional"
+/// Represents an explicit C++ type conversion that uses "functional"
 /// notation (C++ [expr.type.conv]).
 ///
 /// Example:
@@ -1515,7 +1515,7 @@
   }
 };
 
-/// @brief Represents a C++ functional cast expression that builds a
+/// Represents a C++ functional cast expression that builds a
 /// temporary object.
 ///
 /// This expression type represents a C++ "functional" cast
@@ -1559,7 +1559,7 @@
   }
 };
 
-/// \brief A C++ lambda expression, which produces a function object
+/// A C++ lambda expression, which produces a function object
 /// (of unspecified type) that can be invoked later.
 ///
 /// Example:
@@ -1582,27 +1582,27 @@
 /// and which can never occur implicitly.
 class LambdaExpr final : public Expr,
                          private llvm::TrailingObjects<LambdaExpr, Stmt *> {
-  /// \brief The source range that covers the lambda introducer ([...]).
+  /// The source range that covers the lambda introducer ([...]).
   SourceRange IntroducerRange;
 
-  /// \brief The source location of this lambda's capture-default ('=' or '&').
+  /// The source location of this lambda's capture-default ('=' or '&').
   SourceLocation CaptureDefaultLoc;
 
-  /// \brief The number of captures.
+  /// The number of captures.
   unsigned NumCaptures : 16;
   
-  /// \brief The default capture kind, which is a value of type
+  /// The default capture kind, which is a value of type
   /// LambdaCaptureDefault.
   unsigned CaptureDefault : 2;
 
-  /// \brief Whether this lambda had an explicit parameter list vs. an
+  /// Whether this lambda had an explicit parameter list vs. an
   /// implicit (and empty) parameter list.
   unsigned ExplicitParams : 1;
 
-  /// \brief Whether this lambda had the result type explicitly specified.
+  /// Whether this lambda had the result type explicitly specified.
   unsigned ExplicitResultType : 1;
   
-  /// \brief The location of the closing brace ('}') that completes
+  /// The location of the closing brace ('}') that completes
   /// the lambda.
   /// 
   /// The location of the brace is also available by looking up the
@@ -1612,7 +1612,7 @@
   /// module file just to determine the source range.
   SourceLocation ClosingBrace;
 
-  /// \brief Construct a lambda expression.
+  /// Construct a lambda expression.
   LambdaExpr(QualType T, SourceRange IntroducerRange,
              LambdaCaptureDefault CaptureDefault,
              SourceLocation CaptureDefaultLoc, ArrayRef<LambdaCapture> Captures,
@@ -1620,7 +1620,7 @@
              ArrayRef<Expr *> CaptureInits, SourceLocation ClosingBrace,
              bool ContainsUnexpandedParameterPack);
 
-  /// \brief Construct an empty lambda expression.
+  /// Construct an empty lambda expression.
   LambdaExpr(EmptyShell Empty, unsigned NumCaptures)
       : Expr(LambdaExprClass, Empty), NumCaptures(NumCaptures),
         CaptureDefault(LCD_None), ExplicitParams(false),
@@ -1637,7 +1637,7 @@
   friend class ASTStmtWriter;
   friend TrailingObjects;
 
-  /// \brief Construct a new lambda expression.
+  /// Construct a new lambda expression.
   static LambdaExpr *
   Create(const ASTContext &C, CXXRecordDecl *Class, SourceRange IntroducerRange,
          LambdaCaptureDefault CaptureDefault, SourceLocation CaptureDefaultLoc,
@@ -1645,143 +1645,143 @@
          bool ExplicitResultType, ArrayRef<Expr *> CaptureInits,
          SourceLocation ClosingBrace, bool ContainsUnexpandedParameterPack);
 
-  /// \brief Construct a new lambda expression that will be deserialized from
+  /// Construct a new lambda expression that will be deserialized from
   /// an external source.
   static LambdaExpr *CreateDeserialized(const ASTContext &C,
                                         unsigned NumCaptures);
 
-  /// \brief Determine the default capture kind for this lambda.
+  /// Determine the default capture kind for this lambda.
   LambdaCaptureDefault getCaptureDefault() const {
     return static_cast<LambdaCaptureDefault>(CaptureDefault);
   }
 
-  /// \brief Retrieve the location of this lambda's capture-default, if any.
+  /// Retrieve the location of this lambda's capture-default, if any.
   SourceLocation getCaptureDefaultLoc() const {
     return CaptureDefaultLoc;
   }
 
-  /// \brief Determine whether one of this lambda's captures is an init-capture.
+  /// Determine whether one of this lambda's captures is an init-capture.
   bool isInitCapture(const LambdaCapture *Capture) const;
 
-  /// \brief An iterator that walks over the captures of the lambda,
+  /// An iterator that walks over the captures of the lambda,
   /// both implicit and explicit.
   using capture_iterator = const LambdaCapture *;
 
-  /// \brief An iterator over a range of lambda captures.
+  /// An iterator over a range of lambda captures.
   using capture_range = llvm::iterator_range<capture_iterator>;
 
-  /// \brief Retrieve this lambda's captures.
+  /// Retrieve this lambda's captures.
   capture_range captures() const;
   
-  /// \brief Retrieve an iterator pointing to the first lambda capture.
+  /// Retrieve an iterator pointing to the first lambda capture.
   capture_iterator capture_begin() const;
 
-  /// \brief Retrieve an iterator pointing past the end of the
+  /// Retrieve an iterator pointing past the end of the
   /// sequence of lambda captures.
   capture_iterator capture_end() const;
 
-  /// \brief Determine the number of captures in this lambda.
+  /// Determine the number of captures in this lambda.
   unsigned capture_size() const { return NumCaptures; }
 
-  /// \brief Retrieve this lambda's explicit captures.
+  /// Retrieve this lambda's explicit captures.
   capture_range explicit_captures() const;
   
-  /// \brief Retrieve an iterator pointing to the first explicit
+  /// Retrieve an iterator pointing to the first explicit
   /// lambda capture.
   capture_iterator explicit_capture_begin() const;
 
-  /// \brief Retrieve an iterator pointing past the end of the sequence of
+  /// Retrieve an iterator pointing past the end of the sequence of
   /// explicit lambda captures.
   capture_iterator explicit_capture_end() const;
 
-  /// \brief Retrieve this lambda's implicit captures.
+  /// Retrieve this lambda's implicit captures.
   capture_range implicit_captures() const;
 
-  /// \brief Retrieve an iterator pointing to the first implicit
+  /// Retrieve an iterator pointing to the first implicit
   /// lambda capture.
   capture_iterator implicit_capture_begin() const;
 
-  /// \brief Retrieve an iterator pointing past the end of the sequence of
+  /// Retrieve an iterator pointing past the end of the sequence of
   /// implicit lambda captures.
   capture_iterator implicit_capture_end() const;
 
-  /// \brief Iterator that walks over the capture initialization
+  /// Iterator that walks over the capture initialization
   /// arguments.
   using capture_init_iterator = Expr **;
 
-  /// \brief Const iterator that walks over the capture initialization
+  /// Const iterator that walks over the capture initialization
   /// arguments.
   using const_capture_init_iterator = Expr *const *;
 
-  /// \brief Retrieve the initialization expressions for this lambda's captures.
+  /// Retrieve the initialization expressions for this lambda's captures.
   llvm::iterator_range<capture_init_iterator> capture_inits() {
     return llvm::make_range(capture_init_begin(), capture_init_end());
   }
 
-  /// \brief Retrieve the initialization expressions for this lambda's captures.
+  /// Retrieve the initialization expressions for this lambda's captures.
   llvm::iterator_range<const_capture_init_iterator> capture_inits() const {
     return llvm::make_range(capture_init_begin(), capture_init_end());
   }
 
-  /// \brief Retrieve the first initialization argument for this
+  /// Retrieve the first initialization argument for this
   /// lambda expression (which initializes the first capture field).
   capture_init_iterator capture_init_begin() {
     return reinterpret_cast<Expr **>(getStoredStmts());
   }
 
-  /// \brief Retrieve the first initialization argument for this
+  /// Retrieve the first initialization argument for this
   /// lambda expression (which initializes the first capture field).
   const_capture_init_iterator capture_init_begin() const {
     return reinterpret_cast<Expr *const *>(getStoredStmts());
   }
 
-  /// \brief Retrieve the iterator pointing one past the last
+  /// Retrieve the iterator pointing one past the last
   /// initialization argument for this lambda expression.
   capture_init_iterator capture_init_end() {
     return capture_init_begin() + NumCaptures;
   }
 
-  /// \brief Retrieve the iterator pointing one past the last
+  /// Retrieve the iterator pointing one past the last
   /// initialization argument for this lambda expression.
   const_capture_init_iterator capture_init_end() const {
     return capture_init_begin() + NumCaptures;
   }
 
-  /// \brief Retrieve the source range covering the lambda introducer,
+  /// Retrieve the source range covering the lambda introducer,
   /// which contains the explicit capture list surrounded by square
   /// brackets ([...]).
   SourceRange getIntroducerRange() const { return IntroducerRange; }
 
-  /// \brief Retrieve the class that corresponds to the lambda.
+  /// Retrieve the class that corresponds to the lambda.
   /// 
   /// This is the "closure type" (C++1y [expr.prim.lambda]), and stores the
   /// captures in its fields and provides the various operations permitted
   /// on a lambda (copying, calling).
   CXXRecordDecl *getLambdaClass() const;
 
-  /// \brief Retrieve the function call operator associated with this
+  /// Retrieve the function call operator associated with this
   /// lambda expression. 
   CXXMethodDecl *getCallOperator() const;
 
-  /// \brief If this is a generic lambda expression, retrieve the template 
+  /// If this is a generic lambda expression, retrieve the template 
   /// parameter list associated with it, or else return null. 
   TemplateParameterList *getTemplateParameterList() const;
 
-  /// \brief Whether this is a generic lambda.
+  /// Whether this is a generic lambda.
   bool isGenericLambda() const { return getTemplateParameterList(); }
 
-  /// \brief Retrieve the body of the lambda.
+  /// Retrieve the body of the lambda.
   CompoundStmt *getBody() const;
 
-  /// \brief Determine whether the lambda is mutable, meaning that any
+  /// Determine whether the lambda is mutable, meaning that any
   /// captures values can be modified.
   bool isMutable() const;
 
-  /// \brief Determine whether this lambda has an explicit parameter
+  /// Determine whether this lambda has an explicit parameter
   /// list vs. an implicit (empty) parameter list.
   bool hasExplicitParameters() const { return ExplicitParams; }
 
-  /// \brief Whether this lambda had its result type explicitly specified.
+  /// Whether this lambda had its result type explicitly specified.
   bool hasExplicitResultType() const { return ExplicitResultType; }
     
   static bool classof(const Stmt *T) {
@@ -1809,7 +1809,7 @@
   TypeSourceInfo *TypeInfo;
 
 public:
-  /// \brief Create an explicitly-written scalar-value initialization
+  /// Create an explicitly-written scalar-value initialization
   /// expression.
   CXXScalarValueInitExpr(QualType Type, TypeSourceInfo *TypeInfo,
                          SourceLocation rParenLoc)
@@ -1840,7 +1840,7 @@
   }
 };
 
-/// \brief Represents a new-expression for memory allocation and constructor
+/// Represents a new-expression for memory allocation and constructor
 /// calls, e.g: "new CXXNewExpr(foo)".
 class CXXNewExpr : public Expr {
   friend class ASTStmtReader;
@@ -1850,24 +1850,24 @@
   /// expression, and any number of optional placement arguments, in that order.
   Stmt **SubExprs = nullptr;
 
-  /// \brief Points to the allocation function used.
+  /// Points to the allocation function used.
   FunctionDecl *OperatorNew;
 
-  /// \brief Points to the deallocation function used in case of error. May be
+  /// Points to the deallocation function used in case of error. May be
   /// null.
   FunctionDecl *OperatorDelete;
 
-  /// \brief The allocated type-source information, as written in the source.
+  /// The allocated type-source information, as written in the source.
   TypeSourceInfo *AllocatedTypeInfo;
 
-  /// \brief If the allocated type was expressed as a parenthesized type-id,
+  /// If the allocated type was expressed as a parenthesized type-id,
   /// the source range covering the parenthesized type-id.
   SourceRange TypeIdParens;
 
-  /// \brief Range of the entire new expression.
+  /// Range of the entire new expression.
   SourceRange Range;
 
-  /// \brief Source-range of a paren-delimited initializer.
+  /// Source-range of a paren-delimited initializer.
   SourceRange DirectInitRange;
 
   /// Was the usage ::new, i.e. is the global new to be used?
@@ -1925,7 +1925,7 @@
     return AllocatedTypeInfo;
   }
 
-  /// \brief True if the allocation result needs to be null-checked.
+  /// True if the allocation result needs to be null-checked.
   ///
   /// C++11 [expr.new]p13:
   ///   If the allocation function returns null, initialization shall
@@ -1976,17 +1976,17 @@
 
   bool isGlobalNew() const { return GlobalNew; }
 
-  /// \brief Whether this new-expression has any initializer at all.
+  /// Whether this new-expression has any initializer at all.
   bool hasInitializer() const { return StoredInitializationStyle > 0; }
 
-  /// \brief The kind of initializer this new-expression has.
+  /// The kind of initializer this new-expression has.
   InitializationStyle getInitializationStyle() const {
     if (StoredInitializationStyle == 0)
       return NoInit;
     return static_cast<InitializationStyle>(StoredInitializationStyle-1);
   }
 
-  /// \brief The initializer of this new-expression.
+  /// The initializer of this new-expression.
   Expr *getInitializer() {
     return hasInitializer() ? cast<Expr>(SubExprs[Array]) : nullptr;
   }
@@ -1994,7 +1994,7 @@
     return hasInitializer() ? cast<Expr>(SubExprs[Array]) : nullptr;
   }
 
-  /// \brief Returns the CXXConstructExpr from this new-expression, or null.
+  /// Returns the CXXConstructExpr from this new-expression, or null.
   const CXXConstructExpr *getConstructExpr() const {
     return dyn_cast_or_null<CXXConstructExpr>(getInitializer());
   }
@@ -2069,7 +2069,7 @@
   }
 };
 
-/// \brief Represents a \c delete expression for memory deallocation and
+/// Represents a \c delete expression for memory deallocation and
 /// destructor calls, e.g. "delete[] pArray".
 class CXXDeleteExpr : public Expr {
   /// Points to the operator delete overload that is used. Could be a member.
@@ -2128,7 +2128,7 @@
   Expr *getArgument() { return cast<Expr>(Argument); }
   const Expr *getArgument() const { return cast<Expr>(Argument); }
 
-  /// \brief Retrieve the type being destroyed. 
+  /// Retrieve the type being destroyed. 
   ///
   /// If the type being destroyed is a dependent type which may or may not
   /// be a pointer, return an invalid type.
@@ -2145,13 +2145,13 @@
   child_range children() { return child_range(&Argument, &Argument+1); }
 };
 
-/// \brief Stores the type being destroyed by a pseudo-destructor expression.
+/// Stores the type being destroyed by a pseudo-destructor expression.
 class PseudoDestructorTypeStorage {
-  /// \brief Either the type source information or the name of the type, if
+  /// Either the type source information or the name of the type, if
   /// it couldn't be resolved due to type-dependence.
   llvm::PointerUnion<TypeSourceInfo *, IdentifierInfo *> Type;
 
-  /// \brief The starting source location of the pseudo-destructor type.
+  /// The starting source location of the pseudo-destructor type.
   SourceLocation Location;
 
 public:
@@ -2173,7 +2173,7 @@
   SourceLocation getLocation() const { return Location; }
 };
 
-/// \brief Represents a C++ pseudo-destructor (C++ [expr.pseudo]).
+/// Represents a C++ pseudo-destructor (C++ [expr.pseudo]).
 ///
 /// A pseudo-destructor is an expression that looks like a member access to a
 /// destructor of a scalar type, except that scalar types don't have
@@ -2200,31 +2200,31 @@
 class CXXPseudoDestructorExpr : public Expr {
   friend class ASTStmtReader;
 
-  /// \brief The base expression (that is being destroyed).
+  /// The base expression (that is being destroyed).
   Stmt *Base = nullptr;
 
-  /// \brief Whether the operator was an arrow ('->'); otherwise, it was a
+  /// Whether the operator was an arrow ('->'); otherwise, it was a
   /// period ('.').
   bool IsArrow : 1;
 
-  /// \brief The location of the '.' or '->' operator.
+  /// The location of the '.' or '->' operator.
   SourceLocation OperatorLoc;
 
-  /// \brief The nested-name-specifier that follows the operator, if present.
+  /// The nested-name-specifier that follows the operator, if present.
   NestedNameSpecifierLoc QualifierLoc;
 
-  /// \brief The type that precedes the '::' in a qualified pseudo-destructor
+  /// The type that precedes the '::' in a qualified pseudo-destructor
   /// expression.
   TypeSourceInfo *ScopeType = nullptr;
 
-  /// \brief The location of the '::' in a qualified pseudo-destructor
+  /// The location of the '::' in a qualified pseudo-destructor
   /// expression.
   SourceLocation ColonColonLoc;
 
-  /// \brief The location of the '~'.
+  /// The location of the '~'.
   SourceLocation TildeLoc;
 
-  /// \brief The type being destroyed, or its name if we were unable to
+  /// The type being destroyed, or its name if we were unable to
   /// resolve the name.
   PseudoDestructorTypeStorage DestroyedType;
 
@@ -2242,30 +2242,30 @@
 
   Expr *getBase() const { return cast<Expr>(Base); }
 
-  /// \brief Determines whether this member expression actually had
+  /// Determines whether this member expression actually had
   /// a C++ nested-name-specifier prior to the name of the member, e.g.,
   /// x->Base::foo.
   bool hasQualifier() const { return QualifierLoc.hasQualifier(); }
 
-  /// \brief Retrieves the nested-name-specifier that qualifies the type name,
+  /// Retrieves the nested-name-specifier that qualifies the type name,
   /// with source-location information.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief If the member name was qualified, retrieves the
+  /// If the member name was qualified, retrieves the
   /// nested-name-specifier that precedes the member name. Otherwise, returns
   /// null.
   NestedNameSpecifier *getQualifier() const {
     return QualifierLoc.getNestedNameSpecifier();
   }
 
-  /// \brief Determine whether this pseudo-destructor expression was written
+  /// Determine whether this pseudo-destructor expression was written
   /// using an '->' (otherwise, it used a '.').
   bool isArrow() const { return IsArrow; }
 
-  /// \brief Retrieve the location of the '.' or '->' operator.
+  /// Retrieve the location of the '.' or '->' operator.
   SourceLocation getOperatorLoc() const { return OperatorLoc; }
 
-  /// \brief Retrieve the scope type in a qualified pseudo-destructor
+  /// Retrieve the scope type in a qualified pseudo-destructor
   /// expression.
   ///
   /// Pseudo-destructor expressions can have extra qualification within them
@@ -2276,14 +2276,14 @@
   /// destructor expression.
   TypeSourceInfo *getScopeTypeInfo() const { return ScopeType; }
 
-  /// \brief Retrieve the location of the '::' in a qualified pseudo-destructor
+  /// Retrieve the location of the '::' in a qualified pseudo-destructor
   /// expression.
   SourceLocation getColonColonLoc() const { return ColonColonLoc; }
 
-  /// \brief Retrieve the location of the '~'.
+  /// Retrieve the location of the '~'.
   SourceLocation getTildeLoc() const { return TildeLoc; }
 
-  /// \brief Retrieve the source location information for the type
+  /// Retrieve the source location information for the type
   /// being destroyed.
   ///
   /// This type-source information is available for non-dependent
@@ -2294,28 +2294,28 @@
     return DestroyedType.getTypeSourceInfo();
   }
 
-  /// \brief In a dependent pseudo-destructor expression for which we do not
+  /// In a dependent pseudo-destructor expression for which we do not
   /// have full type information on the destroyed type, provides the name
   /// of the destroyed type.
   IdentifierInfo *getDestroyedTypeIdentifier() const {
     return DestroyedType.getIdentifier();
   }
 
-  /// \brief Retrieve the type being destroyed.
+  /// Retrieve the type being destroyed.
   QualType getDestroyedType() const;
 
-  /// \brief Retrieve the starting location of the type being destroyed.
+  /// Retrieve the starting location of the type being destroyed.
   SourceLocation getDestroyedTypeLoc() const {
     return DestroyedType.getLocation();
   }
 
-  /// \brief Set the name of destroyed type for a dependent pseudo-destructor
+  /// Set the name of destroyed type for a dependent pseudo-destructor
   /// expression.
   void setDestroyedType(IdentifierInfo *II, SourceLocation Loc) {
     DestroyedType = PseudoDestructorTypeStorage(II, Loc);
   }
 
-  /// \brief Set the destroyed type.
+  /// Set the destroyed type.
   void setDestroyedType(TypeSourceInfo *Info) {
     DestroyedType = PseudoDestructorTypeStorage(Info);
   }
@@ -2331,7 +2331,7 @@
   child_range children() { return child_range(&Base, &Base + 1); }
 };
 
-/// \brief A type trait used in the implementation of various C++11 and
+/// A type trait used in the implementation of various C++11 and
 /// Library TR1 trait templates.
 ///
 /// \code
@@ -2342,10 +2342,10 @@
 class TypeTraitExpr final
     : public Expr,
       private llvm::TrailingObjects<TypeTraitExpr, TypeSourceInfo *> {
-  /// \brief The location of the type trait keyword.
+  /// The location of the type trait keyword.
   SourceLocation Loc;
   
-  /// \brief  The location of the closing parenthesis.
+  ///  The location of the closing parenthesis.
   SourceLocation RParenLoc;
   
   // Note: The TypeSourceInfos for the arguments are allocated after the
@@ -2367,7 +2367,7 @@
   friend class ASTStmtWriter;
   friend TrailingObjects;
 
-  /// \brief Create a new type trait expression.
+  /// Create a new type trait expression.
   static TypeTraitExpr *Create(const ASTContext &C, QualType T,
                                SourceLocation Loc, TypeTrait Kind,
                                ArrayRef<TypeSourceInfo *> Args,
@@ -2377,7 +2377,7 @@
   static TypeTraitExpr *CreateDeserialized(const ASTContext &C,
                                            unsigned NumArgs);
   
-  /// \brief Determine which type trait this expression uses.
+  /// Determine which type trait this expression uses.
   TypeTrait getTrait() const {
     return static_cast<TypeTrait>(TypeTraitExprBits.Kind);
   }
@@ -2387,16 +2387,16 @@
     return TypeTraitExprBits.Value; 
   }
   
-  /// \brief Determine the number of arguments to this type trait.
+  /// Determine the number of arguments to this type trait.
   unsigned getNumArgs() const { return TypeTraitExprBits.NumArgs; }
   
-  /// \brief Retrieve the Ith argument.
+  /// Retrieve the Ith argument.
   TypeSourceInfo *getArg(unsigned I) const {
     assert(I < getNumArgs() && "Argument out-of-range");
     return getArgs()[I];
   }
   
-  /// \brief Retrieve the argument types.
+  /// Retrieve the argument types.
   ArrayRef<TypeSourceInfo *> getArgs() const {
     return llvm::makeArrayRef(getTrailingObjects<TypeSourceInfo *>(),
                               getNumArgs());
@@ -2415,7 +2415,7 @@
   }
 };
 
-/// \brief An Embarcadero array type trait, as used in the implementation of
+/// An Embarcadero array type trait, as used in the implementation of
 /// __array_rank and __array_extent.
 ///
 /// Example:
@@ -2424,22 +2424,22 @@
 ///   __array_extent(int, 1)    == 20
 /// \endcode
 class ArrayTypeTraitExpr : public Expr {
-  /// \brief The trait. An ArrayTypeTrait enum in MSVC compat unsigned.
+  /// The trait. An ArrayTypeTrait enum in MSVC compat unsigned.
   unsigned ATT : 2;
 
-  /// \brief The value of the type trait. Unspecified if dependent.
+  /// The value of the type trait. Unspecified if dependent.
   uint64_t Value = 0;
 
-  /// \brief The array dimension being queried, or -1 if not used.
+  /// The array dimension being queried, or -1 if not used.
   Expr *Dimension;
 
-  /// \brief The location of the type trait keyword.
+  /// The location of the type trait keyword.
   SourceLocation Loc;
 
-  /// \brief The location of the closing paren.
+  /// The location of the closing paren.
   SourceLocation RParen;
 
-  /// \brief The type being queried.
+  /// The type being queried.
   TypeSourceInfo *QueriedType = nullptr;
 
   virtual void anchor();
@@ -2486,7 +2486,7 @@
   }
 };
 
-/// \brief An expression trait intrinsic.
+/// An expression trait intrinsic.
 ///
 /// Example:
 /// \code
@@ -2494,19 +2494,19 @@
 ///   __is_lvalue_expr(1) == false
 /// \endcode
 class ExpressionTraitExpr : public Expr {
-  /// \brief The trait. A ExpressionTrait enum in MSVC compatible unsigned.
+  /// The trait. A ExpressionTrait enum in MSVC compatible unsigned.
   unsigned ET : 31;
 
-  /// \brief The value of the type trait. Unspecified if dependent.
+  /// The value of the type trait. Unspecified if dependent.
   unsigned Value : 1;
 
-  /// \brief The location of the type trait keyword.
+  /// The location of the type trait keyword.
   SourceLocation Loc;
 
-  /// \brief The location of the closing paren.
+  /// The location of the closing paren.
   SourceLocation RParen;
 
-  /// \brief The expression being queried.
+  /// The expression being queried.
   Expr* QueriedExpression = nullptr;
 
 public:
@@ -2546,13 +2546,13 @@
   }
 };
 
-/// \brief A reference to an overloaded function set, either an
+/// A reference to an overloaded function set, either an
 /// \c UnresolvedLookupExpr or an \c UnresolvedMemberExpr.
 class OverloadExpr : public Expr {
-  /// \brief The common name of these declarations.
+  /// The common name of these declarations.
   DeclarationNameInfo NameInfo;
 
-  /// \brief The nested-name-specifier that qualifies the name, if any.
+  /// The nested-name-specifier that qualifies the name, if any.
   NestedNameSpecifierLoc QualifierLoc;
 
   /// The results.  These are undesugared, which is to say, they may
@@ -2564,7 +2564,7 @@
   unsigned NumResults = 0;
 
 protected:
-  /// \brief Whether the name includes info for explicit template
+  /// Whether the name includes info for explicit template
   /// keyword and arguments.
   bool HasTemplateKWAndArgsInfo = false;
 
@@ -2580,11 +2580,11 @@
 
   OverloadExpr(StmtClass K, EmptyShell Empty) : Expr(K, Empty) {}
 
-  /// \brief Return the optional template keyword and arguments info.
+  /// Return the optional template keyword and arguments info.
   ASTTemplateKWAndArgsInfo *
   getTrailingASTTemplateKWAndArgsInfo(); // defined far below.
 
-  /// \brief Return the optional template keyword and arguments info.
+  /// Return the optional template keyword and arguments info.
   const ASTTemplateKWAndArgsInfo *getTrailingASTTemplateKWAndArgsInfo() const {
     return const_cast<OverloadExpr *>(this)
         ->getTrailingASTTemplateKWAndArgsInfo();
@@ -2607,7 +2607,7 @@
     bool HasFormOfMemberPointer;
   };
 
-  /// \brief Finds the overloaded expression in the given expression \p E of
+  /// Finds the overloaded expression in the given expression \p E of
   /// OverloadTy.
   ///
   /// \return the expression (which must be there) and true if it has
@@ -2635,7 +2635,7 @@
     return Result;
   }
 
-  /// \brief Gets the naming class of this lookup, if any.
+  /// Gets the naming class of this lookup, if any.
   CXXRecordDecl *getNamingClass() const;
 
   using decls_iterator = UnresolvedSetImpl::iterator;
@@ -2648,52 +2648,52 @@
     return llvm::make_range(decls_begin(), decls_end());
   }
 
-  /// \brief Gets the number of declarations in the unresolved set.
+  /// Gets the number of declarations in the unresolved set.
   unsigned getNumDecls() const { return NumResults; }
 
-  /// \brief Gets the full name info.
+  /// Gets the full name info.
   const DeclarationNameInfo &getNameInfo() const { return NameInfo; }
 
-  /// \brief Gets the name looked up.
+  /// Gets the name looked up.
   DeclarationName getName() const { return NameInfo.getName(); }
 
-  /// \brief Gets the location of the name.
+  /// Gets the location of the name.
   SourceLocation getNameLoc() const { return NameInfo.getLoc(); }
 
-  /// \brief Fetches the nested-name qualifier, if one was given.
+  /// Fetches the nested-name qualifier, if one was given.
   NestedNameSpecifier *getQualifier() const {
     return QualifierLoc.getNestedNameSpecifier();
   }
 
-  /// \brief Fetches the nested-name qualifier with source-location
+  /// Fetches the nested-name qualifier with source-location
   /// information, if one was given.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief Retrieve the location of the template keyword preceding
+  /// Retrieve the location of the template keyword preceding
   /// this name, if any.
   SourceLocation getTemplateKeywordLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
     return getTrailingASTTemplateKWAndArgsInfo()->TemplateKWLoc;
   }
 
-  /// \brief Retrieve the location of the left angle bracket starting the
+  /// Retrieve the location of the left angle bracket starting the
   /// explicit template argument list following the name, if any.
   SourceLocation getLAngleLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
     return getTrailingASTTemplateKWAndArgsInfo()->LAngleLoc;
   }
 
-  /// \brief Retrieve the location of the right angle bracket ending the
+  /// Retrieve the location of the right angle bracket ending the
   /// explicit template argument list following the name, if any.
   SourceLocation getRAngleLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
     return getTrailingASTTemplateKWAndArgsInfo()->RAngleLoc;
   }
 
-  /// \brief Determines whether the name was preceded by the template keyword.
+  /// Determines whether the name was preceded by the template keyword.
   bool hasTemplateKeyword() const { return getTemplateKeywordLoc().isValid(); }
 
-  /// \brief Determines whether this expression had explicit template arguments.
+  /// Determines whether this expression had explicit template arguments.
   bool hasExplicitTemplateArgs() const { return getLAngleLoc().isValid(); }
 
   TemplateArgumentLoc const *getTemplateArgs() const {
@@ -2713,7 +2713,7 @@
     return {getTemplateArgs(), getNumTemplateArgs()};
   }
 
-  /// \brief Copies the template arguments into the given structure.
+  /// Copies the template arguments into the given structure.
   void copyTemplateArgumentsInto(TemplateArgumentListInfo &List) const {
     if (hasExplicitTemplateArgs())
       getTrailingASTTemplateKWAndArgsInfo()->copyInto(getTemplateArgs(), List);
@@ -2725,7 +2725,7 @@
   }
 };
 
-/// \brief A reference to a name which we were able to look up during
+/// A reference to a name which we were able to look up during
 /// parsing but could not resolve to a specific declaration.
 ///
 /// This arises in several ways:
@@ -2840,7 +2840,7 @@
   }
 };
 
-/// \brief A qualified reference to a name whose declaration cannot
+/// A qualified reference to a name whose declaration cannot
 /// yet be resolved.
 ///
 /// DependentScopeDeclRefExpr is similar to DeclRefExpr in that
@@ -2859,14 +2859,14 @@
       private llvm::TrailingObjects<DependentScopeDeclRefExpr,
                                     ASTTemplateKWAndArgsInfo,
                                     TemplateArgumentLoc> {
-  /// \brief The nested-name-specifier that qualifies this unresolved
+  /// The nested-name-specifier that qualifies this unresolved
   /// declaration name.
   NestedNameSpecifierLoc QualifierLoc;
 
-  /// \brief The name of the entity we will be referencing.
+  /// The name of the entity we will be referencing.
   DeclarationNameInfo NameInfo;
 
-  /// \brief Whether the name includes info for explicit template
+  /// Whether the name includes info for explicit template
   /// keyword and arguments.
   bool HasTemplateKWAndArgsInfo;
 
@@ -2895,42 +2895,42 @@
                                                 bool HasTemplateKWAndArgsInfo,
                                                 unsigned NumTemplateArgs);
 
-  /// \brief Retrieve the name that this expression refers to.
+  /// Retrieve the name that this expression refers to.
   const DeclarationNameInfo &getNameInfo() const { return NameInfo; }
 
-  /// \brief Retrieve the name that this expression refers to.
+  /// Retrieve the name that this expression refers to.
   DeclarationName getDeclName() const { return NameInfo.getName(); }
 
-  /// \brief Retrieve the location of the name within the expression.
+  /// Retrieve the location of the name within the expression.
   ///
   /// For example, in "X<T>::value" this is the location of "value".
   SourceLocation getLocation() const { return NameInfo.getLoc(); }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the
+  /// Retrieve the nested-name-specifier that qualifies the
   /// name, with source location information.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies this
+  /// Retrieve the nested-name-specifier that qualifies this
   /// declaration.
   NestedNameSpecifier *getQualifier() const {
     return QualifierLoc.getNestedNameSpecifier();
   }
 
-  /// \brief Retrieve the location of the template keyword preceding
+  /// Retrieve the location of the template keyword preceding
   /// this name, if any.
   SourceLocation getTemplateKeywordLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
     return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->TemplateKWLoc;
   }
 
-  /// \brief Retrieve the location of the left angle bracket starting the
+  /// Retrieve the location of the left angle bracket starting the
   /// explicit template argument list following the name, if any.
   SourceLocation getLAngleLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
     return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->LAngleLoc;
   }
 
-  /// \brief Retrieve the location of the right angle bracket ending the
+  /// Retrieve the location of the right angle bracket ending the
   /// explicit template argument list following the name, if any.
   SourceLocation getRAngleLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
@@ -2943,7 +2943,7 @@
   /// Determines whether this lookup had explicit template arguments.
   bool hasExplicitTemplateArgs() const { return getLAngleLoc().isValid(); }
 
-  /// \brief Copies the template arguments (if present) into the given
+  /// Copies the template arguments (if present) into the given
   /// structure.
   void copyTemplateArgumentsInto(TemplateArgumentListInfo &List) const {
     if (hasExplicitTemplateArgs())
@@ -3066,7 +3066,7 @@
   child_range children() { return child_range(&SubExpr, &SubExpr + 1); }
 };
 
-/// \brief Describes an explicit type conversion that uses functional
+/// Describes an explicit type conversion that uses functional
 /// notion but could not be resolved because one or more arguments are
 /// type-dependent.
 ///
@@ -3093,16 +3093,16 @@
   friend class ASTStmtReader;
   friend TrailingObjects;
 
-  /// \brief The type being constructed.
+  /// The type being constructed.
   TypeSourceInfo *Type = nullptr;
 
-  /// \brief The location of the left parentheses ('(').
+  /// The location of the left parentheses ('(').
   SourceLocation LParenLoc;
 
-  /// \brief The location of the right parentheses (')').
+  /// The location of the right parentheses (')').
   SourceLocation RParenLoc;
 
-  /// \brief The number of arguments used to construct the type.
+  /// The number of arguments used to construct the type.
   unsigned NumArgs;
 
   CXXUnresolvedConstructExpr(TypeSourceInfo *Type,
@@ -3123,20 +3123,20 @@
   static CXXUnresolvedConstructExpr *CreateEmpty(const ASTContext &C,
                                                  unsigned NumArgs);
 
-  /// \brief Retrieve the type that is being constructed, as specified
+  /// Retrieve the type that is being constructed, as specified
   /// in the source code.
   QualType getTypeAsWritten() const { return Type->getType(); }
 
-  /// \brief Retrieve the type source information for the type being
+  /// Retrieve the type source information for the type being
   /// constructed.
   TypeSourceInfo *getTypeSourceInfo() const { return Type; }
 
-  /// \brief Retrieve the location of the left parentheses ('(') that
+  /// Retrieve the location of the left parentheses ('(') that
   /// precedes the argument list.
   SourceLocation getLParenLoc() const { return LParenLoc; }
   void setLParenLoc(SourceLocation L) { LParenLoc = L; }
 
-  /// \brief Retrieve the location of the right parentheses (')') that
+  /// Retrieve the location of the right parentheses (')') that
   /// follows the argument list.
   SourceLocation getRParenLoc() const { return RParenLoc; }
   void setRParenLoc(SourceLocation L) { RParenLoc = L; }
@@ -3146,7 +3146,7 @@
   /// an InitListExpr.
   bool isListInitialization() const { return LParenLoc.isInvalid(); }
 
-  /// \brief Retrieve the number of arguments.
+  /// Retrieve the number of arguments.
   unsigned arg_size() const { return NumArgs; }
 
   using arg_iterator = Expr **;
@@ -3195,7 +3195,7 @@
   }
 };
 
-/// \brief Represents a C++ member access expression where the actual
+/// Represents a C++ member access expression where the actual
 /// member referenced could not be resolved because the base
 /// expression or the member name was dependent.
 ///
@@ -3207,29 +3207,29 @@
       private llvm::TrailingObjects<CXXDependentScopeMemberExpr,
                                     ASTTemplateKWAndArgsInfo,
                                     TemplateArgumentLoc> {
-  /// \brief The expression for the base pointer or class reference,
+  /// The expression for the base pointer or class reference,
   /// e.g., the \c x in x.f.  Can be null in implicit accesses.
   Stmt *Base;
 
-  /// \brief The type of the base expression.  Never null, even for
+  /// The type of the base expression.  Never null, even for
   /// implicit accesses.
   QualType BaseType;
 
-  /// \brief Whether this member expression used the '->' operator or
+  /// Whether this member expression used the '->' operator or
   /// the '.' operator.
   bool IsArrow : 1;
 
-  /// \brief Whether this member expression has info for explicit template
+  /// Whether this member expression has info for explicit template
   /// keyword and arguments.
   bool HasTemplateKWAndArgsInfo : 1;
 
-  /// \brief The location of the '->' or '.' operator.
+  /// The location of the '->' or '.' operator.
   SourceLocation OperatorLoc;
 
-  /// \brief The nested-name-specifier that precedes the member name, if any.
+  /// The nested-name-specifier that precedes the member name, if any.
   NestedNameSpecifierLoc QualifierLoc;
 
-  /// \brief In a qualified member access expression such as t->Base::f, this
+  /// In a qualified member access expression such as t->Base::f, this
   /// member stores the resolves of name lookup in the context of the member
   /// access expression, to be used at instantiation time.
   ///
@@ -3238,7 +3238,7 @@
   /// the CXXDependentScopeMemberExpr, to save space in the common case.
   NamedDecl *FirstQualifierFoundInScope;
 
-  /// \brief The member to which this member expression refers, which
+  /// The member to which this member expression refers, which
   /// can be name, overloaded operator, or destructor.
   ///
   /// FIXME: could also be a template-id
@@ -3280,12 +3280,12 @@
   CreateEmpty(const ASTContext &C, bool HasTemplateKWAndArgsInfo,
               unsigned NumTemplateArgs);
 
-  /// \brief True if this is an implicit access, i.e. one in which the
+  /// True if this is an implicit access, i.e. one in which the
   /// member being accessed was not written in the source.  The source
   /// location of the operator is invalid in this case.
   bool isImplicitAccess() const;
 
-  /// \brief Retrieve the base object of this member expressions,
+  /// Retrieve the base object of this member expressions,
   /// e.g., the \c x in \c x.m.
   Expr *getBase() const {
     assert(!isImplicitAccess());
@@ -3294,24 +3294,24 @@
 
   QualType getBaseType() const { return BaseType; }
 
-  /// \brief Determine whether this member expression used the '->'
+  /// Determine whether this member expression used the '->'
   /// operator; otherwise, it used the '.' operator.
   bool isArrow() const { return IsArrow; }
 
-  /// \brief Retrieve the location of the '->' or '.' operator.
+  /// Retrieve the location of the '->' or '.' operator.
   SourceLocation getOperatorLoc() const { return OperatorLoc; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the member
+  /// Retrieve the nested-name-specifier that qualifies the member
   /// name.
   NestedNameSpecifier *getQualifier() const {
     return QualifierLoc.getNestedNameSpecifier();
   }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies the member
+  /// Retrieve the nested-name-specifier that qualifies the member
   /// name, with source location information.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief Retrieve the first part of the nested-name-specifier that was
+  /// Retrieve the first part of the nested-name-specifier that was
   /// found in the scope of the member access expression when the member access
   /// was initially parsed.
   ///
@@ -3326,35 +3326,35 @@
     return FirstQualifierFoundInScope;
   }
 
-  /// \brief Retrieve the name of the member that this expression
+  /// Retrieve the name of the member that this expression
   /// refers to.
   const DeclarationNameInfo &getMemberNameInfo() const {
     return MemberNameInfo;
   }
 
-  /// \brief Retrieve the name of the member that this expression
+  /// Retrieve the name of the member that this expression
   /// refers to.
   DeclarationName getMember() const { return MemberNameInfo.getName(); }
 
-  // \brief Retrieve the location of the name of the member that this
+  // Retrieve the location of the name of the member that this
   // expression refers to.
   SourceLocation getMemberLoc() const { return MemberNameInfo.getLoc(); }
 
-  /// \brief Retrieve the location of the template keyword preceding the
+  /// Retrieve the location of the template keyword preceding the
   /// member name, if any.
   SourceLocation getTemplateKeywordLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
     return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->TemplateKWLoc;
   }
 
-  /// \brief Retrieve the location of the left angle bracket starting the
+  /// Retrieve the location of the left angle bracket starting the
   /// explicit template argument list following the member name, if any.
   SourceLocation getLAngleLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
     return getTrailingObjects<ASTTemplateKWAndArgsInfo>()->LAngleLoc;
   }
 
-  /// \brief Retrieve the location of the right angle bracket ending the
+  /// Retrieve the location of the right angle bracket ending the
   /// explicit template argument list following the member name, if any.
   SourceLocation getRAngleLoc() const {
     if (!HasTemplateKWAndArgsInfo) return SourceLocation();
@@ -3364,11 +3364,11 @@
   /// Determines whether the member name was preceded by the template keyword.
   bool hasTemplateKeyword() const { return getTemplateKeywordLoc().isValid(); }
 
-  /// \brief Determines whether this member expression actually had a C++
+  /// Determines whether this member expression actually had a C++
   /// template argument list explicitly specified, e.g., x.f<int>.
   bool hasExplicitTemplateArgs() const { return getLAngleLoc().isValid(); }
 
-  /// \brief Copies the template arguments (if present) into the given
+  /// Copies the template arguments (if present) into the given
   /// structure.
   void copyTemplateArgumentsInto(TemplateArgumentListInfo &List) const {
     if (hasExplicitTemplateArgs())
@@ -3376,7 +3376,7 @@
           getTrailingObjects<TemplateArgumentLoc>(), List);
   }
 
-  /// \brief Retrieve the template arguments provided as part of this
+  /// Retrieve the template arguments provided as part of this
   /// template-id.
   const TemplateArgumentLoc *getTemplateArgs() const {
     if (!hasExplicitTemplateArgs())
@@ -3385,7 +3385,7 @@
     return getTrailingObjects<TemplateArgumentLoc>();
   }
 
-  /// \brief Retrieve the number of template arguments provided as part of this
+  /// Retrieve the number of template arguments provided as part of this
   /// template-id.
   unsigned getNumTemplateArgs() const {
     if (!hasExplicitTemplateArgs())
@@ -3424,7 +3424,7 @@
   }
 };
 
-/// \brief Represents a C++ member access expression for which lookup
+/// Represents a C++ member access expression for which lookup
 /// produced a set of overloaded functions.
 ///
 /// The member access may be explicit or implicit:
@@ -3447,24 +3447,24 @@
   friend class OverloadExpr;
   friend TrailingObjects;
 
-  /// \brief Whether this member expression used the '->' operator or
+  /// Whether this member expression used the '->' operator or
   /// the '.' operator.
   bool IsArrow : 1;
 
-  /// \brief Whether the lookup results contain an unresolved using
+  /// Whether the lookup results contain an unresolved using
   /// declaration.
   bool HasUnresolvedUsing : 1;
 
-  /// \brief The expression for the base pointer or class reference,
+  /// The expression for the base pointer or class reference,
   /// e.g., the \c x in x.f.
   ///
   /// This can be null if this is an 'unbased' member expression.
   Stmt *Base = nullptr;
 
-  /// \brief The type of the base expression; never null.
+  /// The type of the base expression; never null.
   QualType BaseType;
 
-  /// \brief The location of the '->' or '.' operator.
+  /// The location of the '->' or '.' operator.
   SourceLocation OperatorLoc;
 
   UnresolvedMemberExpr(const ASTContext &C, bool HasUnresolvedUsing,
@@ -3499,13 +3499,13 @@
   CreateEmpty(const ASTContext &C, bool HasTemplateKWAndArgsInfo,
               unsigned NumTemplateArgs);
 
-  /// \brief True if this is an implicit access, i.e., one in which the
+  /// True if this is an implicit access, i.e., one in which the
   /// member being accessed was not written in the source.
   ///
   /// The source location of the operator is invalid in this case.
   bool isImplicitAccess() const;
 
-  /// \brief Retrieve the base object of this member expressions,
+  /// Retrieve the base object of this member expressions,
   /// e.g., the \c x in \c x.m.
   Expr *getBase() {
     assert(!isImplicitAccess());
@@ -3518,33 +3518,33 @@
 
   QualType getBaseType() const { return BaseType; }
 
-  /// \brief Determine whether the lookup results contain an unresolved using
+  /// Determine whether the lookup results contain an unresolved using
   /// declaration.
   bool hasUnresolvedUsing() const { return HasUnresolvedUsing; }
 
-  /// \brief Determine whether this member expression used the '->'
+  /// Determine whether this member expression used the '->'
   /// operator; otherwise, it used the '.' operator.
   bool isArrow() const { return IsArrow; }
 
-  /// \brief Retrieve the location of the '->' or '.' operator.
+  /// Retrieve the location of the '->' or '.' operator.
   SourceLocation getOperatorLoc() const { return OperatorLoc; }
 
-  /// \brief Retrieve the naming class of this lookup.
+  /// Retrieve the naming class of this lookup.
   CXXRecordDecl *getNamingClass() const;
 
-  /// \brief Retrieve the full name info for the member that this expression
+  /// Retrieve the full name info for the member that this expression
   /// refers to.
   const DeclarationNameInfo &getMemberNameInfo() const { return getNameInfo(); }
 
-  /// \brief Retrieve the name of the member that this expression
+  /// Retrieve the name of the member that this expression
   /// refers to.
   DeclarationName getMemberName() const { return getName(); }
 
-  // \brief Retrieve the location of the name of the member that this
+  // Retrieve the location of the name of the member that this
   // expression refers to.
   SourceLocation getMemberLoc() const { return getNameLoc(); }
 
-  // \brief Return the preferred location (the member name) for the arrow when
+  // Return the preferred location (the member name) for the arrow when
   // diagnosing a problem with this expression.
   SourceLocation getExprLoc() const LLVM_READONLY { return getMemberLoc(); }
 
@@ -3596,7 +3596,7 @@
         ->getTrailingObjects<TemplateArgumentLoc>();
 }
 
-/// \brief Represents a C++11 noexcept expression (C++ [expr.unary.noexcept]).
+/// Represents a C++11 noexcept expression (C++ [expr.unary.noexcept]).
 ///
 /// The noexcept expression tests whether a given expression might throw. Its
 /// result is a boolean constant.
@@ -3635,7 +3635,7 @@
   child_range children() { return child_range(&Operand, &Operand + 1); }
 };
 
-/// \brief Represents a C++11 pack expansion that produces a sequence of
+/// Represents a C++11 pack expansion that produces a sequence of
 /// expressions.
 ///
 /// A pack expansion expression contains a pattern (which itself is an
@@ -3658,7 +3658,7 @@
 
   SourceLocation EllipsisLoc;
 
-  /// \brief The number of expansions that will be produced by this pack
+  /// The number of expansions that will be produced by this pack
   /// expansion expression, if known.
   ///
   /// When zero, the number of expansions is not known. Otherwise, this value
@@ -3680,17 +3680,17 @@
 
   PackExpansionExpr(EmptyShell Empty) : Expr(PackExpansionExprClass, Empty) {}
 
-  /// \brief Retrieve the pattern of the pack expansion.
+  /// Retrieve the pattern of the pack expansion.
   Expr *getPattern() { return reinterpret_cast<Expr *>(Pattern); }
 
-  /// \brief Retrieve the pattern of the pack expansion.
+  /// Retrieve the pattern of the pack expansion.
   const Expr *getPattern() const { return reinterpret_cast<Expr *>(Pattern); }
 
-  /// \brief Retrieve the location of the ellipsis that describes this pack
+  /// Retrieve the location of the ellipsis that describes this pack
   /// expansion.
   SourceLocation getEllipsisLoc() const { return EllipsisLoc; }
 
-  /// \brief Determine the number of expansions that will be produced when
+  /// Determine the number of expansions that will be produced when
   /// this pack expansion is instantiated, if already known.
   Optional<unsigned> getNumExpansions() const {
     if (NumExpansions)
@@ -3715,7 +3715,7 @@
   }
 };
 
-/// \brief Represents an expression that computes the length of a parameter
+/// Represents an expression that computes the length of a parameter
 /// pack.
 ///
 /// \code
@@ -3731,16 +3731,16 @@
   friend class ASTStmtWriter;
   friend TrailingObjects;
 
-  /// \brief The location of the \c sizeof keyword.
+  /// The location of the \c sizeof keyword.
   SourceLocation OperatorLoc;
 
-  /// \brief The location of the name of the parameter pack.
+  /// The location of the name of the parameter pack.
   SourceLocation PackLoc;
 
-  /// \brief The location of the closing parenthesis.
+  /// The location of the closing parenthesis.
   SourceLocation RParenLoc;
 
-  /// \brief The length of the parameter pack, if known.
+  /// The length of the parameter pack, if known.
   ///
   /// When this expression is not value-dependent, this is the length of
   /// the pack. When the expression was parsed rather than instantiated
@@ -3752,10 +3752,10 @@
   /// and this is the length of that array.
   unsigned Length;
 
-  /// \brief The parameter pack.
+  /// The parameter pack.
   NamedDecl *Pack = nullptr;
 
-  /// \brief Create an expression that computes the length of
+  /// Create an expression that computes the length of
   /// the given parameter pack.
   SizeOfPackExpr(QualType SizeType, SourceLocation OperatorLoc, NamedDecl *Pack,
                  SourceLocation PackLoc, SourceLocation RParenLoc,
@@ -3772,7 +3772,7 @@
     std::uninitialized_copy(PartialArgs.begin(), PartialArgs.end(), Args);
   }
 
-  /// \brief Create an empty expression.
+  /// Create an empty expression.
   SizeOfPackExpr(EmptyShell Empty, unsigned NumPartialArgs)
       : Expr(SizeOfPackExprClass, Empty), Length(NumPartialArgs) {}
 
@@ -3785,19 +3785,19 @@
   static SizeOfPackExpr *CreateDeserialized(ASTContext &Context,
                                             unsigned NumPartialArgs);
 
-  /// \brief Determine the location of the 'sizeof' keyword.
+  /// Determine the location of the 'sizeof' keyword.
   SourceLocation getOperatorLoc() const { return OperatorLoc; }
 
-  /// \brief Determine the location of the parameter pack.
+  /// Determine the location of the parameter pack.
   SourceLocation getPackLoc() const { return PackLoc; }
 
-  /// \brief Determine the location of the right parenthesis.
+  /// Determine the location of the right parenthesis.
   SourceLocation getRParenLoc() const { return RParenLoc; }
 
-  /// \brief Retrieve the parameter pack.
+  /// Retrieve the parameter pack.
   NamedDecl *getPack() const { return Pack; }
 
-  /// \brief Retrieve the length of the parameter pack.
+  /// Retrieve the length of the parameter pack.
   ///
   /// This routine may only be invoked when the expression is not
   /// value-dependent.
@@ -3807,7 +3807,7 @@
     return Length;
   }
 
-  /// \brief Determine whether this represents a partially-substituted sizeof...
+  /// Determine whether this represents a partially-substituted sizeof...
   /// expression, such as is produced for:
   ///
   ///   template<typename ...Ts> using X = int[sizeof...(Ts)];
@@ -3816,7 +3816,7 @@
     return isValueDependent() && Length;
   }
 
-  /// \brief Get
+  /// Get
   ArrayRef<TemplateArgument> getPartialArguments() const {
     assert(isPartiallySubstituted());
     const auto *Args = getTrailingObjects<TemplateArgument>();
@@ -3836,19 +3836,19 @@
   }
 };
 
-/// \brief Represents a reference to a non-type template parameter
+/// Represents a reference to a non-type template parameter
 /// that has been substituted with a template argument.
 class SubstNonTypeTemplateParmExpr : public Expr {
   friend class ASTReader;
   friend class ASTStmtReader;
 
-  /// \brief The replaced parameter.
+  /// The replaced parameter.
   NonTypeTemplateParmDecl *Param;
 
-  /// \brief The replacement expression.
+  /// The replacement expression.
   Stmt *Replacement;
 
-  /// \brief The location of the non-type template parameter reference.
+  /// The location of the non-type template parameter reference.
   SourceLocation NameLoc;
 
   explicit SubstNonTypeTemplateParmExpr(EmptyShell Empty)
@@ -3882,7 +3882,7 @@
   child_range children() { return child_range(&Replacement, &Replacement+1); }
 };
 
-/// \brief Represents a reference to a non-type template parameter pack that
+/// Represents a reference to a non-type template parameter pack that
 /// has been substituted with a non-template argument pack.
 ///
 /// When a pack expansion in the source code contains multiple parameter packs
@@ -3898,17 +3898,17 @@
   friend class ASTReader;
   friend class ASTStmtReader;
 
-  /// \brief The non-type template parameter pack itself.
+  /// The non-type template parameter pack itself.
   NonTypeTemplateParmDecl *Param;
 
-  /// \brief A pointer to the set of template arguments that this
+  /// A pointer to the set of template arguments that this
   /// parameter pack is instantiated with.
   const TemplateArgument *Arguments;
 
-  /// \brief The number of template arguments in \c Arguments.
+  /// The number of template arguments in \c Arguments.
   unsigned NumArguments;
 
-  /// \brief The location of the non-type template parameter pack reference.
+  /// The location of the non-type template parameter pack reference.
   SourceLocation NameLoc;
 
   explicit SubstNonTypeTemplateParmPackExpr(EmptyShell Empty)
@@ -3921,13 +3921,13 @@
                                    SourceLocation NameLoc,
                                    const TemplateArgument &ArgPack);
 
-  /// \brief Retrieve the non-type template parameter pack being substituted.
+  /// Retrieve the non-type template parameter pack being substituted.
   NonTypeTemplateParmDecl *getParameterPack() const { return Param; }
 
-  /// \brief Retrieve the location of the parameter pack name.
+  /// Retrieve the location of the parameter pack name.
   SourceLocation getParameterPackLocation() const { return NameLoc; }
 
-  /// \brief Retrieve the template argument pack containing the substituted
+  /// Retrieve the template argument pack containing the substituted
   /// template arguments.
   TemplateArgument getArgumentPack() const;
 
@@ -3944,7 +3944,7 @@
   }
 };
 
-/// \brief Represents a reference to a function parameter pack that has been
+/// Represents a reference to a function parameter pack that has been
 /// substituted but not yet expanded.
 ///
 /// When a pack expansion contains multiple parameter packs at different levels,
@@ -3965,13 +3965,13 @@
   friend class ASTStmtReader;
   friend TrailingObjects;
 
-  /// \brief The function parameter pack which was referenced.
+  /// The function parameter pack which was referenced.
   ParmVarDecl *ParamPack;
 
-  /// \brief The location of the function parameter pack reference.
+  /// The location of the function parameter pack reference.
   SourceLocation NameLoc;
 
-  /// \brief The number of expansions of this pack.
+  /// The number of expansions of this pack.
   unsigned NumParameters;
 
   FunctionParmPackExpr(QualType T, ParmVarDecl *ParamPack,
@@ -3986,22 +3986,22 @@
   static FunctionParmPackExpr *CreateEmpty(const ASTContext &Context,
                                            unsigned NumParams);
 
-  /// \brief Get the parameter pack which this expression refers to.
+  /// Get the parameter pack which this expression refers to.
   ParmVarDecl *getParameterPack() const { return ParamPack; }
 
-  /// \brief Get the location of the parameter pack.
+  /// Get the location of the parameter pack.
   SourceLocation getParameterPackLocation() const { return NameLoc; }
 
-  /// \brief Iterators over the parameters which the parameter pack expanded
+  /// Iterators over the parameters which the parameter pack expanded
   /// into.
   using iterator = ParmVarDecl * const *;
   iterator begin() const { return getTrailingObjects<ParmVarDecl *>(); }
   iterator end() const { return begin() + NumParameters; }
 
-  /// \brief Get the number of parameters in this parameter pack.
+  /// Get the number of parameters in this parameter pack.
   unsigned getNumExpansions() const { return NumParameters; }
 
-  /// \brief Get an expansion of the parameter pack by index.
+  /// Get an expansion of the parameter pack by index.
   ParmVarDecl *getExpansion(unsigned I) const { return begin()[I]; }
 
   SourceLocation getLocStart() const LLVM_READONLY { return NameLoc; }
@@ -4016,7 +4016,7 @@
   }
 };
 
-/// \brief Represents a prvalue temporary that is written into memory so that
+/// Represents a prvalue temporary that is written into memory so that
 /// a reference can bind to it.
 ///
 /// Prvalue expressions are materialized when they need to have an address
@@ -4042,11 +4042,11 @@
   friend class ASTStmtWriter;
 
   struct ExtraState {
-    /// \brief The temporary-generating expression whose value will be
+    /// The temporary-generating expression whose value will be
     /// materialized.
     Stmt *Temporary;
 
-    /// \brief The declaration which lifetime-extended this reference, if any.
+    /// The declaration which lifetime-extended this reference, if any.
     /// Either a VarDecl, or (for a ctor-initializer) a FieldDecl.
     const ValueDecl *ExtendingDecl;
 
@@ -4075,11 +4075,11 @@
                               : State.get<ExtraState *>()->Temporary;
   }
 
-  /// \brief Retrieve the temporary-generating subexpression whose value will
+  /// Retrieve the temporary-generating subexpression whose value will
   /// be materialized into a glvalue.
   Expr *GetTemporaryExpr() const { return static_cast<Expr *>(getTemporary()); }
 
-  /// \brief Retrieve the storage duration for the materialized temporary.
+  /// Retrieve the storage duration for the materialized temporary.
   StorageDuration getStorageDuration() const {
     const ValueDecl *ExtendingDecl = getExtendingDecl();
     if (!ExtendingDecl)
@@ -4097,7 +4097,7 @@
     return cast<VarDecl>(ExtendingDecl)->getStorageDuration();
   }
 
-  /// \brief Get the declaration which triggered the lifetime-extension of this
+  /// Get the declaration which triggered the lifetime-extension of this
   /// temporary, if any.
   const ValueDecl *getExtendingDecl() const {
     return State.is<Stmt *>() ? nullptr
@@ -4110,7 +4110,7 @@
     return State.is<Stmt *>() ? 0 : State.get<ExtraState *>()->ManglingNumber;
   }
 
-  /// \brief Determine whether this materialized temporary is bound to an
+  /// Determine whether this materialized temporary is bound to an
   /// lvalue reference; otherwise, it's bound to an rvalue reference.
   bool isBoundToLvalueReference() const {
     return getValueKind() == VK_LValue;
@@ -4138,7 +4138,7 @@
   }
 };
 
-/// \brief Represents a folding of a pack over an operator.
+/// Represents a folding of a pack over an operator.
 ///
 /// This expression is always dependent and represents a pack expansion of the
 /// forms:
@@ -4207,7 +4207,7 @@
   child_range children() { return child_range(SubExprs, SubExprs + 2); }
 };
 
-/// \brief Represents an expression that might suspend coroutine execution;
+/// Represents an expression that might suspend coroutine execution;
 /// either a co_await or co_yield expression.
 ///
 /// Evaluation of this expression first evaluates its 'ready' expression. If
@@ -4271,7 +4271,7 @@
     return static_cast<Expr*>(SubExprs[SubExpr::Common]);
   }
 
-  /// \brief getOpaqueValue - Return the opaque value placeholder.
+  /// getOpaqueValue - Return the opaque value placeholder.
   OpaqueValueExpr *getOpaqueValue() const { return OpaqueValue; }
 
   Expr *getReadyExpr() const {
@@ -4304,7 +4304,7 @@
   }
 };
 
-/// \brief Represents a 'co_await' expression.
+/// Represents a 'co_await' expression.
 class CoawaitExpr : public CoroutineSuspendExpr {
   friend class ASTStmtReader;
 
@@ -4339,7 +4339,7 @@
   }
 };
 
-/// \brief Represents a 'co_await' expression while the type of the promise
+/// Represents a 'co_await' expression while the type of the promise
 /// is dependent.
 class DependentCoawaitExpr : public Expr {
   friend class ASTStmtReader;
@@ -4387,7 +4387,7 @@
   }
 };
 
-/// \brief Represents a 'co_yield' expression.
+/// Represents a 'co_yield' expression.
 class CoyieldExpr : public CoroutineSuspendExpr {
   friend class ASTStmtReader;
 
Index: cfe/trunk/include/clang/AST/ExprObjC.h
===================================================================
--- cfe/trunk/include/clang/AST/ExprObjC.h
+++ cfe/trunk/include/clang/AST/ExprObjC.h
@@ -198,10 +198,10 @@
   SourceLocation getLocEnd() const LLVM_READONLY { return Range.getEnd(); }
   SourceRange getSourceRange() const LLVM_READONLY { return Range; }
 
-  /// \brief Retrieve elements of array of literals.
+  /// Retrieve elements of array of literals.
   Expr **getElements() { return getTrailingObjects<Expr *>(); }
 
-  /// \brief Retrieve elements of array of literals.
+  /// Retrieve elements of array of literals.
   const Expr * const *getElements() const {
     return getTrailingObjects<Expr *>();
   }
@@ -234,23 +234,23 @@
   }
 };
 
-/// \brief An element in an Objective-C dictionary literal.
+/// An element in an Objective-C dictionary literal.
 ///
 struct ObjCDictionaryElement {
-  /// \brief The key for the dictionary element.
+  /// The key for the dictionary element.
   Expr *Key;
   
-  /// \brief The value of the dictionary element.
+  /// The value of the dictionary element.
   Expr *Value;
   
-  /// \brief The location of the ellipsis, if this is a pack expansion.
+  /// The location of the ellipsis, if this is a pack expansion.
   SourceLocation EllipsisLoc;
   
-  /// \brief The number of elements this pack expansion will expand to, if
+  /// The number of elements this pack expansion will expand to, if
   /// this is a pack expansion and is known.
   Optional<unsigned> NumExpansions;
 
-  /// \brief Determines whether this dictionary element is a pack expansion.
+  /// Determines whether this dictionary element is a pack expansion.
   bool isPackExpansion() const { return EllipsisLoc.isValid(); }
 };
 
@@ -264,21 +264,21 @@
 
 namespace clang {
 
-/// \brief Internal struct for storing Key/value pair.
+/// Internal struct for storing Key/value pair.
 struct ObjCDictionaryLiteral_KeyValuePair {
   Expr *Key;
   Expr *Value;
 };
 
-/// \brief Internal struct to describes an element that is a pack
+/// Internal struct to describes an element that is a pack
 /// expansion, used if any of the elements in the dictionary literal
 /// are pack expansions.
 struct ObjCDictionaryLiteral_ExpansionData {
-  /// \brief The location of the ellipsis, if this element is a pack
+  /// The location of the ellipsis, if this element is a pack
   /// expansion.
   SourceLocation EllipsisLoc;
 
-  /// \brief If non-zero, the number of elements that this pack
+  /// If non-zero, the number of elements that this pack
   /// expansion will expand to (+1).
   unsigned NumExpansionsPlusOne;
 };
@@ -290,10 +290,10 @@
       private llvm::TrailingObjects<ObjCDictionaryLiteral,
                                     ObjCDictionaryLiteral_KeyValuePair,
                                     ObjCDictionaryLiteral_ExpansionData> {
-  /// \brief The number of elements in this dictionary literal.
+  /// The number of elements in this dictionary literal.
   unsigned NumElements : 31;
 
-  /// \brief Determine whether this dictionary literal has any pack expansions.
+  /// Determine whether this dictionary literal has any pack expansions.
   ///
   /// If the dictionary literal has pack expansions, then there will
   /// be an array of pack expansion data following the array of
@@ -582,7 +582,7 @@
   /// the pointer is an ObjCPropertyDecl and Setter is always null.
   llvm::PointerIntPair<NamedDecl *, 1, bool> PropertyOrGetter;
 
-  /// \brief Indicates whether the property reference will result in a message
+  /// Indicates whether the property reference will result in a message
   /// to the getter, the setter, or both.
   /// This applies to both implicit and explicit property references.
   enum MethodRefFlags {
@@ -591,7 +591,7 @@
     MethodRef_Setter = 0x2
   };
 
-  /// \brief Contains the Setter method pointer and MethodRefFlags bit flags.
+  /// Contains the Setter method pointer and MethodRefFlags bit flags.
   llvm::PointerIntPair<ObjCMethodDecl *, 2, unsigned> SetterAndMethodRefFlags;
 
   // FIXME: Maybe we should store the property identifier here,
@@ -601,7 +601,7 @@
 
   SourceLocation IdLoc;
   
-  /// \brief When the receiver in property access is 'super', this is
+  /// When the receiver in property access is 'super', this is
   /// the location of the 'super' keyword.  When it's an interface,
   /// this is that interface.
   SourceLocation ReceiverLoc;
@@ -694,14 +694,14 @@
     return getExplicitProperty()->getSetterName();
   }
 
-  /// \brief True if the property reference will result in a message to the
+  /// True if the property reference will result in a message to the
   /// getter.
   /// This applies to both implicit and explicit property references.
   bool isMessagingGetter() const {
     return SetterAndMethodRefFlags.getInt() & MethodRef_Getter;
   }
 
-  /// \brief True if the property reference will result in a message to the
+  /// True if the property reference will result in a message to the
   /// setter.
   /// This applies to both implicit and explicit property references.
   bool isMessagingSetter() const {
@@ -874,7 +874,7 @@
   friend class ASTStmtReader;
 };
 
-/// \brief An expression that sends a message to the given Objective-C
+/// An expression that sends a message to the given Objective-C
 /// object or class.
 ///
 /// The following contains two message send expressions:
@@ -903,47 +903,47 @@
 class ObjCMessageExpr final
     : public Expr,
       private llvm::TrailingObjects<ObjCMessageExpr, void *, SourceLocation> {
-  /// \brief Stores either the selector that this message is sending
+  /// Stores either the selector that this message is sending
   /// to (when \c HasMethod is zero) or an \c ObjCMethodDecl pointer
   /// referring to the method that we type-checked against.
   uintptr_t SelectorOrMethod = 0;
 
   enum { NumArgsBitWidth = 16 };
 
-  /// \brief The number of arguments in the message send, not
+  /// The number of arguments in the message send, not
   /// including the receiver.
   unsigned NumArgs : NumArgsBitWidth;
   
-  /// \brief The kind of message send this is, which is one of the
+  /// The kind of message send this is, which is one of the
   /// ReceiverKind values.
   ///
   /// We pad this out to a byte to avoid excessive masking and shifting.
   unsigned Kind : 8;
 
-  /// \brief Whether we have an actual method prototype in \c
+  /// Whether we have an actual method prototype in \c
   /// SelectorOrMethod.
   ///
   /// When non-zero, we have a method declaration; otherwise, we just
   /// have a selector.
   unsigned HasMethod : 1;
 
-  /// \brief Whether this message send is a "delegate init call",
+  /// Whether this message send is a "delegate init call",
   /// i.e. a call of an init method on self from within an init method.
   unsigned IsDelegateInitCall : 1;
 
-  /// \brief Whether this message send was implicitly generated by
+  /// Whether this message send was implicitly generated by
   /// the implementation rather than explicitly written by the user.
   unsigned IsImplicit : 1;
 
-  /// \brief Whether the locations of the selector identifiers are in a
+  /// Whether the locations of the selector identifiers are in a
   /// "standard" position, a enum SelectorLocationsKind.
   unsigned SelLocsKind : 2;
 
-  /// \brief When the message expression is a send to 'super', this is
+  /// When the message expression is a send to 'super', this is
   /// the location of the 'super' keyword.
   SourceLocation SuperLoc;
 
-  /// \brief The source locations of the open and close square
+  /// The source locations of the open and close square
   /// brackets ('[' and ']', respectively).
   SourceLocation LBracLoc, RBracLoc;
 
@@ -997,10 +997,10 @@
                           ArrayRef<SourceLocation> SelLocs,
                           SelectorLocationsKind SelLocsK);
 
-  /// \brief Retrieve the pointer value of the message receiver.
+  /// Retrieve the pointer value of the message receiver.
   void *getReceiverPointer() const { return *getTrailingObjects<void *>(); }
 
-  /// \brief Set the pointer value of the message receiver.
+  /// Set the pointer value of the message receiver.
   void setReceiverPointer(void *Value) {
     *getTrailingObjects<void *>() = Value;
   }
@@ -1013,7 +1013,7 @@
     return getSelLocsKind() != SelLoc_NonStandard;
   }
 
-  /// \brief Get a pointer to the stored selector identifiers locations array.
+  /// Get a pointer to the stored selector identifiers locations array.
   /// No locations will be stored if HasStandardSelLocs is true.
   SourceLocation *getStoredSelLocs() {
     return getTrailingObjects<SourceLocation>();
@@ -1022,7 +1022,7 @@
     return getTrailingObjects<SourceLocation>();
   }
 
-  /// \brief Get the number of stored selector identifiers locations.
+  /// Get the number of stored selector identifiers locations.
   /// No locations will be stored if HasStandardSelLocs is true.
   unsigned getNumStoredSelLocs() const {
     if (hasStandardSelLocs())
@@ -1045,22 +1045,22 @@
   friend class ASTStmtWriter;
   friend TrailingObjects;
 
-  /// \brief The kind of receiver this message is sending to.
+  /// The kind of receiver this message is sending to.
   enum ReceiverKind {
-    /// \brief The receiver is a class.
+    /// The receiver is a class.
     Class = 0,
 
-    /// \brief The receiver is an object instance.
+    /// The receiver is an object instance.
     Instance,
 
-    /// \brief The receiver is a superclass.
+    /// The receiver is a superclass.
     SuperClass,
 
-    /// \brief The receiver is the instance of the superclass object.
+    /// The receiver is the instance of the superclass object.
     SuperInstance
   };
 
-  /// \brief Create a message send to super.
+  /// Create a message send to super.
   ///
   /// \param Context The ASTContext in which this expression will be created.
   ///
@@ -1098,7 +1098,7 @@
                                  SourceLocation RBracLoc,
                                  bool isImplicit);
 
-  /// \brief Create a class message send.
+  /// Create a class message send.
   ///
   /// \param Context The ASTContext in which this expression will be created.
   ///
@@ -1132,7 +1132,7 @@
                                  SourceLocation RBracLoc,
                                  bool isImplicit);
 
-  /// \brief Create an instance message send.
+  /// Create an instance message send.
   ///
   /// \param Context The ASTContext in which this expression will be created.
   ///
@@ -1166,7 +1166,7 @@
                                  SourceLocation RBracLoc,
                                  bool isImplicit);
 
-  /// \brief Create an empty Objective-C message expression, to be
+  /// Create an empty Objective-C message expression, to be
   /// filled in by subsequent calls.
   ///
   /// \param Context The context in which the message send will be created.
@@ -1177,31 +1177,31 @@
                                       unsigned NumArgs,
                                       unsigned NumStoredSelLocs);
 
-  /// \brief Indicates whether the message send was implicitly
+  /// Indicates whether the message send was implicitly
   /// generated by the implementation. If false, it was written explicitly
   /// in the source code.
   bool isImplicit() const { return IsImplicit; }
 
-  /// \brief Determine the kind of receiver that this message is being
+  /// Determine the kind of receiver that this message is being
   /// sent to.
   ReceiverKind getReceiverKind() const { return (ReceiverKind)Kind; }
 
-  /// \brief Source range of the receiver.
+  /// Source range of the receiver.
   SourceRange getReceiverRange() const;
 
-  /// \brief Determine whether this is an instance message to either a
+  /// Determine whether this is an instance message to either a
   /// computed object or to super.
   bool isInstanceMessage() const {
     return getReceiverKind() == Instance || getReceiverKind() == SuperInstance;
   }
 
-  /// \brief Determine whether this is an class message to either a
+  /// Determine whether this is an class message to either a
   /// specified class or to super.
   bool isClassMessage() const {
     return getReceiverKind() == Class || getReceiverKind() == SuperClass;
   }
 
-  /// \brief Returns the object expression (receiver) for an instance message,
+  /// Returns the object expression (receiver) for an instance message,
   /// or null for a message that is not an instance message.
   Expr *getInstanceReceiver() {
     if (getReceiverKind() == Instance)
@@ -1213,14 +1213,14 @@
     return const_cast<ObjCMessageExpr*>(this)->getInstanceReceiver();
   }
 
-  /// \brief Turn this message send into an instance message that
+  /// Turn this message send into an instance message that
   /// computes the receiver object with the given expression.
   void setInstanceReceiver(Expr *rec) { 
     Kind = Instance;
     setReceiverPointer(rec);
   }
   
-  /// \brief Returns the type of a class message send, or NULL if the
+  /// Returns the type of a class message send, or NULL if the
   /// message is not a class message.
   QualType getClassReceiver() const { 
     if (TypeSourceInfo *TSInfo = getClassReceiverTypeInfo())
@@ -1229,7 +1229,7 @@
     return {};
   }
 
-  /// \brief Returns a type-source information of a class message
+  /// Returns a type-source information of a class message
   /// send, or nullptr if the message is not a class message.
   TypeSourceInfo *getClassReceiverTypeInfo() const {
     if (getReceiverKind() == Class)
@@ -1242,7 +1242,7 @@
     setReceiverPointer(TSInfo);
   }
 
-  /// \brief Retrieve the location of the 'super' keyword for a class
+  /// Retrieve the location of the 'super' keyword for a class
   /// or instance message to 'super', otherwise an invalid source location.
   SourceLocation getSuperLoc() const { 
     if (getReceiverKind() == SuperInstance || getReceiverKind() == SuperClass)
@@ -1251,7 +1251,7 @@
     return SourceLocation();
   }
 
-  /// \brief Retrieve the receiver type to which this message is being directed.
+  /// Retrieve the receiver type to which this message is being directed.
   ///
   /// This routine cross-cuts all of the different kinds of message
   /// sends to determine what the underlying (statically known) type
@@ -1262,7 +1262,7 @@
   /// \returns The type of the receiver.
   QualType getReceiverType() const;
 
-  /// \brief Retrieve the Objective-C interface to which this message
+  /// Retrieve the Objective-C interface to which this message
   /// is being directed, if known.
   ///
   /// This routine cross-cuts all of the different kinds of message
@@ -1274,7 +1274,7 @@
   /// \returns The Objective-C interface if known, otherwise nullptr.
   ObjCInterfaceDecl *getReceiverInterface() const;
 
-  /// \brief Retrieve the type referred to by 'super'. 
+  /// Retrieve the type referred to by 'super'. 
   ///
   /// The returned type will either be an ObjCInterfaceType (for an
   /// class message to super) or an ObjCObjectPointerType that refers
@@ -1323,11 +1323,11 @@
     return getSelector().getMethodFamily();
   }
 
-  /// \brief Return the number of actual arguments in this message,
+  /// Return the number of actual arguments in this message,
   /// not counting the receiver.
   unsigned getNumArgs() const { return NumArgs; }
 
-  /// \brief Retrieve the arguments to this message, not including the
+  /// Retrieve the arguments to this message, not including the
   /// receiver.
   Expr **getArgs() {
     return reinterpret_cast<Expr **>(getTrailingObjects<void *>() + 1);
@@ -1455,7 +1455,7 @@
              /*ContainsUnexpandedParameterPack=*/false),
         Base(base), IsaMemberLoc(l), OpLoc(oploc), IsArrow(isarrow) {}
 
-  /// \brief Build an empty expression.
+  /// Build an empty expression.
   explicit ObjCIsaExpr(EmptyShell Empty) : Expr(ObjCIsaExprClass, Empty) {}
 
   void setBase(Expr *E) { Base = E; }
@@ -1563,7 +1563,7 @@
   }
 };
 
-/// \brief An Objective-C "bridged" cast expression, which casts between
+/// An Objective-C "bridged" cast expression, which casts between
 /// Objective-C pointers and C pointers, transferring ownership in the process.
 ///
 /// \code
@@ -1589,21 +1589,21 @@
                          CK, Operand, 0, TSInfo),
         LParenLoc(LParenLoc), BridgeKeywordLoc(BridgeKeywordLoc), Kind(Kind) {}
   
-  /// \brief Construct an empty Objective-C bridged cast.
+  /// Construct an empty Objective-C bridged cast.
   explicit ObjCBridgedCastExpr(EmptyShell Shell)
       : ExplicitCastExpr(ObjCBridgedCastExprClass, Shell, 0) {}
 
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Determine which kind of bridge is being performed via this cast.
+  /// Determine which kind of bridge is being performed via this cast.
   ObjCBridgeCastKind getBridgeKind() const { 
     return static_cast<ObjCBridgeCastKind>(Kind); 
   }
   
-  /// \brief Retrieve the kind of bridge being performed as a string.
+  /// Retrieve the kind of bridge being performed as a string.
   StringRef getBridgeKindName() const;
   
-  /// \brief The location of the bridge keyword.
+  /// The location of the bridge keyword.
   SourceLocation getBridgeKeywordLoc() const { return BridgeKeywordLoc; }
   
   SourceLocation getLocStart() const LLVM_READONLY { return LParenLoc; }
@@ -1617,7 +1617,7 @@
   }
 };
 
-/// \brief A runtime availability query.
+/// A runtime availability query.
 ///
 /// There are 2 ways to spell this node:
 /// \code
@@ -1650,7 +1650,7 @@
   SourceLocation getLocEnd() const { return RParen; }
   SourceRange getSourceRange() const { return {AtLoc, RParen}; }
 
-  /// \brief This may be '*', in which case this should fold to true.
+  /// This may be '*', in which case this should fold to true.
   bool hasVersion() const { return !VersionToCheck.empty(); }
   VersionTuple getVersion() { return VersionToCheck; }
 
Index: cfe/trunk/include/clang/AST/ExprOpenMP.h
===================================================================
--- cfe/trunk/include/clang/AST/ExprOpenMP.h
+++ cfe/trunk/include/clang/AST/ExprOpenMP.h
@@ -17,7 +17,7 @@
 #include "clang/AST/Expr.h"
 
 namespace clang {
-/// \brief OpenMP 4.0 [2.4, Array Sections].
+/// OpenMP 4.0 [2.4, Array Sections].
 /// To specify an array section in an OpenMP construct, array subscript
 /// expressions are extended with the following syntax:
 /// \code
@@ -72,33 +72,33 @@
     SubExprs[LENGTH] = Length;
   }
 
-  /// \brief Create an empty array section expression.
+  /// Create an empty array section expression.
   explicit OMPArraySectionExpr(EmptyShell Shell)
       : Expr(OMPArraySectionExprClass, Shell) {}
 
   /// An array section can be written only as Base[LowerBound:Length].
 
-  /// \brief Get base of the array section.
+  /// Get base of the array section.
   Expr *getBase() { return cast<Expr>(SubExprs[BASE]); }
   const Expr *getBase() const { return cast<Expr>(SubExprs[BASE]); }
-  /// \brief Set base of the array section.
+  /// Set base of the array section.
   void setBase(Expr *E) { SubExprs[BASE] = E; }
 
-  /// \brief Return original type of the base expression for array section.
+  /// Return original type of the base expression for array section.
   static QualType getBaseOriginalType(const Expr *Base);
 
-  /// \brief Get lower bound of array section.
+  /// Get lower bound of array section.
   Expr *getLowerBound() { return cast_or_null<Expr>(SubExprs[LOWER_BOUND]); }
   const Expr *getLowerBound() const {
     return cast_or_null<Expr>(SubExprs[LOWER_BOUND]);
   }
-  /// \brief Set lower bound of the array section.
+  /// Set lower bound of the array section.
   void setLowerBound(Expr *E) { SubExprs[LOWER_BOUND] = E; }
 
-  /// \brief Get length of array section.
+  /// Get length of array section.
   Expr *getLength() { return cast_or_null<Expr>(SubExprs[LENGTH]); }
   const Expr *getLength() const { return cast_or_null<Expr>(SubExprs[LENGTH]); }
-  /// \brief Set length of the array section.
+  /// Set length of the array section.
   void setLength(Expr *E) { SubExprs[LENGTH] = E; }
 
   SourceLocation getLocStart() const LLVM_READONLY {
Index: cfe/trunk/include/clang/AST/ExternalASTSource.h
===================================================================
--- cfe/trunk/include/clang/AST/ExternalASTSource.h
+++ cfe/trunk/include/clang/AST/ExternalASTSource.h
@@ -53,7 +53,7 @@
 class Stmt;
 class TagDecl;
 
-/// \brief Abstract interface for external sources of AST nodes.
+/// Abstract interface for external sources of AST nodes.
 ///
 /// External AST sources provide AST nodes constructed from some
 /// external source, such as a precompiled header. External AST
@@ -67,7 +67,7 @@
   /// whenever we might have added new redeclarations for existing decls.
   uint32_t CurrentGeneration = 0;
 
-  /// \brief Whether this AST source also provides information for
+  /// Whether this AST source also provides information for
   /// semantic analysis.
   bool SemaSource = false;
 
@@ -75,7 +75,7 @@
   ExternalASTSource() = default;
   virtual ~ExternalASTSource();
 
-  /// \brief RAII class for safely pairing a StartedDeserializing call
+  /// RAII class for safely pairing a StartedDeserializing call
   /// with FinishedDeserializing.
   class Deserializing {
     ExternalASTSource *Source;
@@ -91,12 +91,12 @@
     }
   };
 
-  /// \brief Get the current generation of this AST source. This number
+  /// Get the current generation of this AST source. This number
   /// is incremented each time the AST source lazily extends an existing
   /// entity.
   uint32_t getGeneration() const { return CurrentGeneration; }
 
-  /// \brief Resolve a declaration ID into a declaration, potentially
+  /// Resolve a declaration ID into a declaration, potentially
   /// building a new declaration.
   ///
   /// This method only needs to be implemented if the AST source ever
@@ -105,7 +105,7 @@
   /// The default implementation of this method is a no-op.
   virtual Decl *GetExternalDecl(uint32_t ID);
 
-  /// \brief Resolve a selector ID into a selector.
+  /// Resolve a selector ID into a selector.
   ///
   /// This operation only needs to be implemented if the AST source
   /// returns non-zero for GetNumKnownSelectors().
@@ -113,13 +113,13 @@
   /// The default implementation of this method is a no-op.
   virtual Selector GetExternalSelector(uint32_t ID);
 
-  /// \brief Returns the number of selectors known to the external AST
+  /// Returns the number of selectors known to the external AST
   /// source.
   ///
   /// The default implementation of this method is a no-op.
   virtual uint32_t GetNumExternalSelectors();
 
-  /// \brief Resolve the offset of a statement in the decl stream into
+  /// Resolve the offset of a statement in the decl stream into
   /// a statement.
   ///
   /// This operation is meant to be used via a LazyOffsetPtr.  It only
@@ -129,22 +129,22 @@
   /// The default implementation of this method is a no-op.
   virtual Stmt *GetExternalDeclStmt(uint64_t Offset);
 
-  /// \brief Resolve the offset of a set of C++ constructor initializers in
+  /// Resolve the offset of a set of C++ constructor initializers in
   /// the decl stream into an array of initializers.
   ///
   /// The default implementation of this method is a no-op.
   virtual CXXCtorInitializer **GetExternalCXXCtorInitializers(uint64_t Offset);
 
-  /// \brief Resolve the offset of a set of C++ base specifiers in the decl
+  /// Resolve the offset of a set of C++ base specifiers in the decl
   /// stream into an array of specifiers.
   ///
   /// The default implementation of this method is a no-op.
   virtual CXXBaseSpecifier *GetExternalCXXBaseSpecifiers(uint64_t Offset);
 
-  /// \brief Update an out-of-date identifier.
+  /// Update an out-of-date identifier.
   virtual void updateOutOfDateIdentifier(IdentifierInfo &II) {}
 
-  /// \brief Find all declarations with the given name in the given context,
+  /// Find all declarations with the given name in the given context,
   /// and add them to the context by calling SetExternalVisibleDeclsForName
   /// or SetNoExternalVisibleDeclsForName.
   /// \return \c true if any declarations might have been found, \c false if
@@ -154,13 +154,13 @@
   virtual bool
   FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Name);
 
-  /// \brief Ensures that the table of all visible declarations inside this
+  /// Ensures that the table of all visible declarations inside this
   /// context is up to date.
   ///
   /// The default implementation of this function is a no-op.
   virtual void completeVisibleDeclsMap(const DeclContext *DC);
 
-  /// \brief Retrieve the module that corresponds to the given module ID.
+  /// Retrieve the module that corresponds to the given module ID.
   virtual Module *getModule(unsigned ID) { return nullptr; }
 
   /// Abstracts clang modules and precompiled header files and holds
@@ -195,7 +195,7 @@
 
   virtual ExtKind hasExternalDefinitions(const Decl *D);
 
-  /// \brief Finds all declarations lexically contained within the given
+  /// Finds all declarations lexically contained within the given
   /// DeclContext, after applying an optional filter predicate.
   ///
   /// \param IsKindWeWant a predicate function that returns true if the passed
@@ -207,31 +207,31 @@
                            llvm::function_ref<bool(Decl::Kind)> IsKindWeWant,
                            SmallVectorImpl<Decl *> &Result);
 
-  /// \brief Finds all declarations lexically contained within the given
+  /// Finds all declarations lexically contained within the given
   /// DeclContext.
   void FindExternalLexicalDecls(const DeclContext *DC,
                                 SmallVectorImpl<Decl *> &Result) {
     FindExternalLexicalDecls(DC, [](Decl::Kind) { return true; }, Result);
   }
 
-  /// \brief Get the decls that are contained in a file in the Offset/Length
+  /// Get the decls that are contained in a file in the Offset/Length
   /// range. \p Length can be 0 to indicate a point at \p Offset instead of
   /// a range.
   virtual void FindFileRegionDecls(FileID File, unsigned Offset,
                                    unsigned Length,
                                    SmallVectorImpl<Decl *> &Decls);
 
-  /// \brief Gives the external AST source an opportunity to complete
+  /// Gives the external AST source an opportunity to complete
   /// the redeclaration chain for a declaration. Called each time we
   /// need the most recent declaration of a declaration after the
   /// generation count is incremented.
   virtual void CompleteRedeclChain(const Decl *D);
 
-  /// \brief Gives the external AST source an opportunity to complete
+  /// Gives the external AST source an opportunity to complete
   /// an incomplete type.
   virtual void CompleteType(TagDecl *Tag);
 
-  /// \brief Gives the external AST source an opportunity to complete an
+  /// Gives the external AST source an opportunity to complete an
   /// incomplete Objective-C class.
   ///
   /// This routine will only be invoked if the "externally completed" bit is
@@ -239,35 +239,35 @@
   /// \c ObjCInterfaceDecl::setExternallyCompleted().
   virtual void CompleteType(ObjCInterfaceDecl *Class);
 
-  /// \brief Loads comment ranges.
+  /// Loads comment ranges.
   virtual void ReadComments();
 
-  /// \brief Notify ExternalASTSource that we started deserialization of
+  /// Notify ExternalASTSource that we started deserialization of
   /// a decl or type so until FinishedDeserializing is called there may be
   /// decls that are initializing. Must be paired with FinishedDeserializing.
   ///
   /// The default implementation of this method is a no-op.
   virtual void StartedDeserializing();
 
-  /// \brief Notify ExternalASTSource that we finished the deserialization of
+  /// Notify ExternalASTSource that we finished the deserialization of
   /// a decl or type. Must be paired with StartedDeserializing.
   ///
   /// The default implementation of this method is a no-op.
   virtual void FinishedDeserializing();
 
-  /// \brief Function that will be invoked when we begin parsing a new
+  /// Function that will be invoked when we begin parsing a new
   /// translation unit involving this external AST source.
   ///
   /// The default implementation of this method is a no-op.
   virtual void StartTranslationUnit(ASTConsumer *Consumer);
 
-  /// \brief Print any statistics that have been gathered regarding
+  /// Print any statistics that have been gathered regarding
   /// the external AST source.
   ///
   /// The default implementation of this method is a no-op.
   virtual void PrintStats();
   
-  /// \brief Perform layout on the given record.
+  /// Perform layout on the given record.
   ///
   /// This routine allows the external AST source to provide an specific 
   /// layout for a record, overriding the layout that would normally be
@@ -332,11 +332,11 @@
   SetNoExternalVisibleDeclsForName(const DeclContext *DC,
                                    DeclarationName Name);
 
-  /// \brief Increment the current generation.
+  /// Increment the current generation.
   uint32_t incrementGeneration(ASTContext &C);
 };
 
-/// \brief A lazy pointer to an AST node (of base type T) that resides
+/// A lazy pointer to an AST node (of base type T) that resides
 /// within an external AST source.
 ///
 /// The AST node is identified within the external AST source by a
@@ -344,7 +344,7 @@
 /// external AST source itself.
 template<typename T, typename OffsT, T* (ExternalASTSource::*Get)(OffsT Offset)>
 struct LazyOffsetPtr {
-  /// \brief Either a pointer to an AST node or the offset within the
+  /// Either a pointer to an AST node or the offset within the
   /// external AST source where the AST node can be found.
   ///
   /// If the low bit is clear, a pointer to the AST node. If the low
@@ -376,20 +376,20 @@
     return *this;
   }
 
-  /// \brief Whether this pointer is non-NULL.
+  /// Whether this pointer is non-NULL.
   ///
   /// This operation does not require the AST node to be deserialized.
   explicit operator bool() const { return Ptr != 0; }
 
-  /// \brief Whether this pointer is non-NULL.
+  /// Whether this pointer is non-NULL.
   ///
   /// This operation does not require the AST node to be deserialized.
   bool isValid() const { return Ptr != 0; }
 
-  /// \brief Whether this pointer is currently stored as an offset.
+  /// Whether this pointer is currently stored as an offset.
   bool isOffset() const { return Ptr & 0x01; }
 
-  /// \brief Retrieve the pointer to the AST node that this lazy pointer
+  /// Retrieve the pointer to the AST node that this lazy pointer
   ///
   /// \param Source the external AST source.
   ///
@@ -404,7 +404,7 @@
   }
 };
 
-/// \brief A lazy value (of type T) that is within an AST node of type Owner,
+/// A lazy value (of type T) that is within an AST node of type Owner,
 /// where the value might change in later generations of the external AST
 /// source.
 template<typename Owner, typename T, void (ExternalASTSource::*Update)(Owner)>
@@ -505,7 +505,7 @@
 
 namespace clang {
 
-/// \brief Represents a lazily-loaded vector of data.
+/// Represents a lazily-loaded vector of data.
 ///
 /// The lazily-loaded vector of data contains data that is partially loaded
 /// from an external source and partially added by local translation. The 
@@ -589,20 +589,20 @@
   }
 };
 
-/// \brief A lazy pointer to a statement.
+/// A lazy pointer to a statement.
 using LazyDeclStmtPtr =
     LazyOffsetPtr<Stmt, uint64_t, &ExternalASTSource::GetExternalDeclStmt>;
 
-/// \brief A lazy pointer to a declaration.
+/// A lazy pointer to a declaration.
 using LazyDeclPtr =
     LazyOffsetPtr<Decl, uint32_t, &ExternalASTSource::GetExternalDecl>;
 
-/// \brief A lazy pointer to a set of CXXCtorInitializers.
+/// A lazy pointer to a set of CXXCtorInitializers.
 using LazyCXXCtorInitializersPtr =
     LazyOffsetPtr<CXXCtorInitializer *, uint64_t,
                   &ExternalASTSource::GetExternalCXXCtorInitializers>;
 
-/// \brief A lazy pointer to a set of CXXBaseSpecifiers.
+/// A lazy pointer to a set of CXXBaseSpecifiers.
 using LazyCXXBaseSpecifiersPtr =
     LazyOffsetPtr<CXXBaseSpecifier, uint64_t,
                   &ExternalASTSource::GetExternalCXXBaseSpecifiers>;
Index: cfe/trunk/include/clang/AST/LambdaCapture.h
===================================================================
--- cfe/trunk/include/clang/AST/LambdaCapture.h
+++ cfe/trunk/include/clang/AST/LambdaCapture.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the LambdaCapture class.
+/// Defines the LambdaCapture class.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -21,21 +21,21 @@
 
 namespace clang {
 
-/// \brief Describes the capture of a variable or of \c this, or of a
+/// Describes the capture of a variable or of \c this, or of a
 /// C++1y init-capture.
 class LambdaCapture {
   enum {
-    /// \brief Flag used by the Capture class to indicate that the given
+    /// Flag used by the Capture class to indicate that the given
     /// capture was implicit.
     Capture_Implicit = 0x01,
 
-    /// \brief Flag used by the Capture class to indicate that the
+    /// Flag used by the Capture class to indicate that the
     /// given capture was by-copy.
     ///
     /// This includes the case of a non-reference init-capture.
     Capture_ByCopy = 0x02,
 
-    /// \brief Flag used by the Capture class to distinguish between a capture
+    /// Flag used by the Capture class to distinguish between a capture
     /// of '*this' and a capture of a VLA type.
     Capture_This = 0x04
   };
@@ -56,7 +56,7 @@
   friend class ASTStmtWriter;
 
 public:
-  /// \brief Create a new capture of a variable or of \c this.
+  /// Create a new capture of a variable or of \c this.
   ///
   /// \param Loc The source location associated with this capture.
   ///
@@ -75,29 +75,29 @@
                 VarDecl *Var = nullptr,
                 SourceLocation EllipsisLoc = SourceLocation());
 
-  /// \brief Determine the kind of capture.
+  /// Determine the kind of capture.
   LambdaCaptureKind getCaptureKind() const;
 
-  /// \brief Determine whether this capture handles the C++ \c this
+  /// Determine whether this capture handles the C++ \c this
   /// pointer.
   bool capturesThis() const {
     return DeclAndBits.getPointer() == nullptr &&
           (DeclAndBits.getInt() & Capture_This);
   }
 
-  /// \brief Determine whether this capture handles a variable.
+  /// Determine whether this capture handles a variable.
   bool capturesVariable() const {
     return dyn_cast_or_null<VarDecl>(DeclAndBits.getPointer());
   }
 
-  /// \brief Determine whether this captures a variable length array bound
+  /// Determine whether this captures a variable length array bound
   /// expression.
   bool capturesVLAType() const {
     return DeclAndBits.getPointer() == nullptr &&
            !(DeclAndBits.getInt() & Capture_This);
   }
 
-  /// \brief Retrieve the declaration of the local variable being
+  /// Retrieve the declaration of the local variable being
   /// captured.
   ///
   /// This operation is only valid if this capture is a variable capture
@@ -107,17 +107,17 @@
     return static_cast<VarDecl *>(DeclAndBits.getPointer());
   }
 
-  /// \brief Determine whether this was an implicit capture (not
+  /// Determine whether this was an implicit capture (not
   /// written between the square brackets introducing the lambda).
   bool isImplicit() const {
     return DeclAndBits.getInt() & Capture_Implicit;
   }
 
-  /// \brief Determine whether this was an explicit capture (written
+  /// Determine whether this was an explicit capture (written
   /// between the square brackets introducing the lambda).
   bool isExplicit() const { return !isImplicit(); }
 
-  /// \brief Retrieve the source location of the capture.
+  /// Retrieve the source location of the capture.
   ///
   /// For an explicit capture, this returns the location of the
   /// explicit capture in the source. For an implicit capture, this
@@ -125,11 +125,11 @@
   /// used.
   SourceLocation getLocation() const { return Loc; }
 
-  /// \brief Determine whether this capture is a pack expansion,
+  /// Determine whether this capture is a pack expansion,
   /// which captures a function parameter pack.
   bool isPackExpansion() const { return EllipsisLoc.isValid(); }
 
-  /// \brief Retrieve the location of the ellipsis for a capture
+  /// Retrieve the location of the ellipsis for a capture
   /// that is a pack expansion.
   SourceLocation getEllipsisLoc() const {
     assert(isPackExpansion() && "No ellipsis location for a non-expansion");
Index: cfe/trunk/include/clang/AST/LocInfoType.h
===================================================================
--- cfe/trunk/include/clang/AST/LocInfoType.h
+++ cfe/trunk/include/clang/AST/LocInfoType.h
@@ -20,7 +20,7 @@
 
 class TypeSourceInfo;
 
-/// \brief Holds a QualType and a TypeSourceInfo* that came out of a declarator
+/// Holds a QualType and a TypeSourceInfo* that came out of a declarator
 /// parsing.
 ///
 /// LocInfoType is a "transient" type, only needed for passing to/from Parser
Index: cfe/trunk/include/clang/AST/Mangle.h
===================================================================
--- cfe/trunk/include/clang/AST/Mangle.h
+++ cfe/trunk/include/clang/AST/Mangle.h
@@ -183,14 +183,14 @@
   explicit MicrosoftMangleContext(ASTContext &C, DiagnosticsEngine &D)
       : MangleContext(C, D, MK_Microsoft) {}
 
-  /// \brief Mangle vftable symbols.  Only a subset of the bases along the path
+  /// Mangle vftable symbols.  Only a subset of the bases along the path
   /// to the vftable are included in the name.  It's up to the caller to pick
   /// them correctly.
   virtual void mangleCXXVFTable(const CXXRecordDecl *Derived,
                                 ArrayRef<const CXXRecordDecl *> BasePath,
                                 raw_ostream &Out) = 0;
 
-  /// \brief Mangle vbtable symbols.  Only a subset of the bases along the path
+  /// Mangle vbtable symbols.  Only a subset of the bases along the path
   /// to the vbtable are included in the name.  It's up to the caller to pick
   /// them correctly.
   virtual void mangleCXXVBTable(const CXXRecordDecl *Derived,
Index: cfe/trunk/include/clang/AST/MangleNumberingContext.h
===================================================================
--- cfe/trunk/include/clang/AST/MangleNumberingContext.h
+++ cfe/trunk/include/clang/AST/MangleNumberingContext.h
@@ -27,29 +27,29 @@
 class Type;
 class VarDecl;
 
-/// \brief Keeps track of the mangled names of lambda expressions and block
+/// Keeps track of the mangled names of lambda expressions and block
 /// literals within a particular context.
 class MangleNumberingContext {
 public:
   virtual ~MangleNumberingContext() {}
 
-  /// \brief Retrieve the mangling number of a new lambda expression with the
+  /// Retrieve the mangling number of a new lambda expression with the
   /// given call operator within this context.
   virtual unsigned getManglingNumber(const CXXMethodDecl *CallOperator) = 0;
 
-  /// \brief Retrieve the mangling number of a new block literal within this
+  /// Retrieve the mangling number of a new block literal within this
   /// context.
   virtual unsigned getManglingNumber(const BlockDecl *BD) = 0;
 
   /// Static locals are numbered by source order.
   virtual unsigned getStaticLocalNumber(const VarDecl *VD) = 0;
 
-  /// \brief Retrieve the mangling number of a static local variable within
+  /// Retrieve the mangling number of a static local variable within
   /// this context.
   virtual unsigned getManglingNumber(const VarDecl *VD,
                                      unsigned MSLocalManglingNumber) = 0;
 
-  /// \brief Retrieve the mangling number of a static local variable within
+  /// Retrieve the mangling number of a static local variable within
   /// this context.
   virtual unsigned getManglingNumber(const TagDecl *TD,
                                      unsigned MSLocalManglingNumber) = 0;
Index: cfe/trunk/include/clang/AST/NSAPI.h
===================================================================
--- cfe/trunk/include/clang/AST/NSAPI.h
+++ cfe/trunk/include/clang/AST/NSAPI.h
@@ -20,7 +20,7 @@
   class QualType;
   class Expr;
 
-// \brief Provides info and caches identifiers/selectors for NSFoundation API.
+// Provides info and caches identifiers/selectors for NSFoundation API.
 class NSAPI {
 public:
   explicit NSAPI(ASTContext &Ctx);
@@ -53,25 +53,25 @@
 
   IdentifierInfo *getNSClassId(NSClassIdKindKind K) const;
 
-  /// \brief The Objective-C NSString selectors.
+  /// The Objective-C NSString selectors.
   Selector getNSStringSelector(NSStringMethodKind MK) const;
 
-  /// \brief Return NSStringMethodKind if \param Sel is such a selector.
+  /// Return NSStringMethodKind if \param Sel is such a selector.
   Optional<NSStringMethodKind> getNSStringMethodKind(Selector Sel) const;
 
-  /// \brief Returns true if the expression \param E is a reference of
+  /// Returns true if the expression \param E is a reference of
   /// "NSUTF8StringEncoding" enum constant.
   bool isNSUTF8StringEncodingConstant(const Expr *E) const {
     return isObjCEnumerator(E, "NSUTF8StringEncoding", NSUTF8StringEncodingId);
   }
 
-  /// \brief Returns true if the expression \param E is a reference of
+  /// Returns true if the expression \param E is a reference of
   /// "NSASCIIStringEncoding" enum constant.
   bool isNSASCIIStringEncodingConstant(const Expr *E) const {
     return isObjCEnumerator(E, "NSASCIIStringEncoding",NSASCIIStringEncodingId);
   }
 
-  /// \brief Enumerates the NSArray/NSMutableArray methods used to generate
+  /// Enumerates the NSArray/NSMutableArray methods used to generate
   /// literals and to apply some checks.
   enum NSArrayMethodKind {
     NSArr_array,
@@ -89,13 +89,13 @@
   };
   static const unsigned NumNSArrayMethods = 12;
 
-  /// \brief The Objective-C NSArray selectors.
+  /// The Objective-C NSArray selectors.
   Selector getNSArraySelector(NSArrayMethodKind MK) const;
 
-  /// \brief Return NSArrayMethodKind if \p Sel is such a selector.
+  /// Return NSArrayMethodKind if \p Sel is such a selector.
   Optional<NSArrayMethodKind> getNSArrayMethodKind(Selector Sel);
 
-  /// \brief Enumerates the NSDictionary/NSMutableDictionary methods used
+  /// Enumerates the NSDictionary/NSMutableDictionary methods used
   /// to generate literals and to apply some checks.
   enum NSDictionaryMethodKind {
     NSDict_dictionary,
@@ -114,13 +114,13 @@
   };
   static const unsigned NumNSDictionaryMethods = 13;
   
-  /// \brief The Objective-C NSDictionary selectors.
+  /// The Objective-C NSDictionary selectors.
   Selector getNSDictionarySelector(NSDictionaryMethodKind MK) const;
 
-  /// \brief Return NSDictionaryMethodKind if \p Sel is such a selector.
+  /// Return NSDictionaryMethodKind if \p Sel is such a selector.
   Optional<NSDictionaryMethodKind> getNSDictionaryMethodKind(Selector Sel);
 
-  /// \brief Enumerates the NSMutableSet/NSOrderedSet methods used
+  /// Enumerates the NSMutableSet/NSOrderedSet methods used
   /// to apply some checks.
   enum NSSetMethodKind {
     NSMutableSet_addObject,
@@ -131,42 +131,42 @@
   };
   static const unsigned NumNSSetMethods = 5;
 
-  /// \brief The Objective-C NSSet selectors.
+  /// The Objective-C NSSet selectors.
   Selector getNSSetSelector(NSSetMethodKind MK) const;
 
-  /// \brief Return NSSetMethodKind if \p Sel is such a selector.
+  /// Return NSSetMethodKind if \p Sel is such a selector.
   Optional<NSSetMethodKind> getNSSetMethodKind(Selector Sel);
 
-  /// \brief Returns selector for "objectForKeyedSubscript:".
+  /// Returns selector for "objectForKeyedSubscript:".
   Selector getObjectForKeyedSubscriptSelector() const {
     return getOrInitSelector(StringRef("objectForKeyedSubscript"),
                              objectForKeyedSubscriptSel);
   }
 
-  /// \brief Returns selector for "objectAtIndexedSubscript:".
+  /// Returns selector for "objectAtIndexedSubscript:".
   Selector getObjectAtIndexedSubscriptSelector() const {
     return getOrInitSelector(StringRef("objectAtIndexedSubscript"),
                              objectAtIndexedSubscriptSel);
   }
 
-  /// \brief Returns selector for "setObject:forKeyedSubscript".
+  /// Returns selector for "setObject:forKeyedSubscript".
   Selector getSetObjectForKeyedSubscriptSelector() const {
     StringRef Ids[] = { "setObject", "forKeyedSubscript" };
     return getOrInitSelector(Ids, setObjectForKeyedSubscriptSel);
   }
 
-  /// \brief Returns selector for "setObject:atIndexedSubscript".
+  /// Returns selector for "setObject:atIndexedSubscript".
   Selector getSetObjectAtIndexedSubscriptSelector() const {
     StringRef Ids[] = { "setObject", "atIndexedSubscript" };
     return getOrInitSelector(Ids, setObjectAtIndexedSubscriptSel);
   }
 
-  /// \brief Returns selector for "isEqual:".
+  /// Returns selector for "isEqual:".
   Selector getIsEqualSelector() const {
     return getOrInitSelector(StringRef("isEqual"), isEqualSel);
   }
 
-  /// \brief Enumerates the NSNumber methods used to generate literals.
+  /// Enumerates the NSNumber methods used to generate literals.
   enum NSNumberLiteralMethodKind {
     NSNumberWithChar,
     NSNumberWithUnsignedChar,
@@ -186,7 +186,7 @@
   };
   static const unsigned NumNSNumberLiteralMethods = 15;
 
-  /// \brief The Objective-C NSNumber selectors used to create NSNumber literals.
+  /// The Objective-C NSNumber selectors used to create NSNumber literals.
   /// \param Instance if true it will return the selector for the init* method
   /// otherwise it will return the selector for the number* method.
   Selector getNSNumberLiteralSelector(NSNumberLiteralMethodKind MK,
@@ -198,29 +198,29 @@
            Sel == getNSNumberLiteralSelector(MK, true);
   }
 
-  /// \brief Return NSNumberLiteralMethodKind if \p Sel is such a selector.
+  /// Return NSNumberLiteralMethodKind if \p Sel is such a selector.
   Optional<NSNumberLiteralMethodKind>
       getNSNumberLiteralMethodKind(Selector Sel) const;
 
-  /// \brief Determine the appropriate NSNumber factory method kind for a
+  /// Determine the appropriate NSNumber factory method kind for a
   /// literal of the given type.
   Optional<NSNumberLiteralMethodKind>
       getNSNumberFactoryMethodKind(QualType T) const;
 
-  /// \brief Returns true if \param T is a typedef of "BOOL" in objective-c.
+  /// Returns true if \param T is a typedef of "BOOL" in objective-c.
   bool isObjCBOOLType(QualType T) const;
-  /// \brief Returns true if \param T is a typedef of "NSInteger" in objective-c.
+  /// Returns true if \param T is a typedef of "NSInteger" in objective-c.
   bool isObjCNSIntegerType(QualType T) const;
-  /// \brief Returns true if \param T is a typedef of "NSUInteger" in objective-c.
+  /// Returns true if \param T is a typedef of "NSUInteger" in objective-c.
   bool isObjCNSUIntegerType(QualType T) const;
-  /// \brief Returns one of NSIntegral typedef names if \param T is a typedef
+  /// Returns one of NSIntegral typedef names if \param T is a typedef
   /// of that name in objective-c.
   StringRef GetNSIntegralKind(QualType T) const;
 
-  /// \brief Returns \c true if \p Id is currently defined as a macro.
+  /// Returns \c true if \p Id is currently defined as a macro.
   bool isMacroDefined(StringRef Id) const;
 
-  /// \brief Returns \c true if \p InterfaceDecl is subclass of \p NSClassKind
+  /// Returns \c true if \p InterfaceDecl is subclass of \p NSClassKind
   bool isSubclassOfNSClass(ObjCInterfaceDecl *InterfaceDecl,
                            NSClassIdKindKind NSClassKind) const;
 
@@ -236,16 +236,16 @@
 
   mutable Selector NSStringSelectors[NumNSStringMethods];
 
-  /// \brief The selectors for Objective-C NSArray methods.
+  /// The selectors for Objective-C NSArray methods.
   mutable Selector NSArraySelectors[NumNSArrayMethods];
 
-  /// \brief The selectors for Objective-C NSDictionary methods.
+  /// The selectors for Objective-C NSDictionary methods.
   mutable Selector NSDictionarySelectors[NumNSDictionaryMethods];
 
-  /// \brief The selectors for Objective-C NSSet methods.
+  /// The selectors for Objective-C NSSet methods.
   mutable Selector NSSetSelectors[NumNSSetMethods];
 
-  /// \brief The Objective-C NSNumber selectors used to create NSNumber literals.
+  /// The Objective-C NSNumber selectors used to create NSNumber literals.
   mutable Selector NSNumberClassSelectors[NumNSNumberLiteralMethods];
   mutable Selector NSNumberInstanceSelectors[NumNSNumberLiteralMethods];
 
Index: cfe/trunk/include/clang/AST/NestedNameSpecifier.h
===================================================================
--- cfe/trunk/include/clang/AST/NestedNameSpecifier.h
+++ cfe/trunk/include/clang/AST/NestedNameSpecifier.h
@@ -36,7 +36,7 @@
 class Type;
 class TypeLoc;
 
-/// \brief Represents a C++ nested name specifier, such as
+/// Represents a C++ nested name specifier, such as
 /// "\::std::vector<int>::".
 ///
 /// C++ nested name specifiers are the prefixes to qualified
@@ -47,7 +47,7 @@
 /// The last two specifiers can only appear at the start of a 
 /// nested-namespace-specifier.
 class NestedNameSpecifier : public llvm::FoldingSetNode {
-  /// \brief Enumeration describing
+  /// Enumeration describing
   enum StoredSpecifierKind {
     StoredIdentifier = 0,
     StoredDecl = 1,
@@ -55,7 +55,7 @@
     StoredTypeSpecWithTemplate = 3
   };
 
-  /// \brief The nested name specifier that precedes this nested name
+  /// The nested name specifier that precedes this nested name
   /// specifier.
   ///
   /// The pointer is the nested-name-specifier that precedes this
@@ -63,7 +63,7 @@
   /// SpecifierKind.
   llvm::PointerIntPair<NestedNameSpecifier *, 2, StoredSpecifierKind> Prefix;
 
-  /// \brief The last component in the nested name specifier, which
+  /// The last component in the nested name specifier, which
   /// can be an identifier, a declaration, or a type.
   ///
   /// When the pointer is NULL, this specifier represents the global
@@ -73,42 +73,42 @@
   void* Specifier = nullptr;
 
 public:
-  /// \brief The kind of specifier that completes this nested name
+  /// The kind of specifier that completes this nested name
   /// specifier.
   enum SpecifierKind {
-    /// \brief An identifier, stored as an IdentifierInfo*.
+    /// An identifier, stored as an IdentifierInfo*.
     Identifier,
 
-    /// \brief A namespace, stored as a NamespaceDecl*.
+    /// A namespace, stored as a NamespaceDecl*.
     Namespace,
 
-    /// \brief A namespace alias, stored as a NamespaceAliasDecl*.
+    /// A namespace alias, stored as a NamespaceAliasDecl*.
     NamespaceAlias,
 
-    /// \brief A type, stored as a Type*.
+    /// A type, stored as a Type*.
     TypeSpec,
 
-    /// \brief A type that was preceded by the 'template' keyword,
+    /// A type that was preceded by the 'template' keyword,
     /// stored as a Type*.
     TypeSpecWithTemplate,
 
-    /// \brief The global specifier '::'. There is no stored value.
+    /// The global specifier '::'. There is no stored value.
     Global,
 
-    /// \brief Microsoft's '__super' specifier, stored as a CXXRecordDecl* of
+    /// Microsoft's '__super' specifier, stored as a CXXRecordDecl* of
     /// the class it appeared in.
     Super
   };
 
 private:
-  /// \brief Builds the global specifier.
+  /// Builds the global specifier.
   NestedNameSpecifier() : Prefix(nullptr, StoredIdentifier) {}
 
-  /// \brief Copy constructor used internally to clone nested name
+  /// Copy constructor used internally to clone nested name
   /// specifiers.
   NestedNameSpecifier(const NestedNameSpecifier &Other) = default;
 
-  /// \brief Either find or insert the given nested name specifier
+  /// Either find or insert the given nested name specifier
   /// mockup in the given context.
   static NestedNameSpecifier *FindOrInsert(const ASTContext &Context,
                                            const NestedNameSpecifier &Mockup);
@@ -116,7 +116,7 @@
 public:
   NestedNameSpecifier &operator=(const NestedNameSpecifier &) = delete;
 
-  /// \brief Builds a specifier combining a prefix and an identifier.
+  /// Builds a specifier combining a prefix and an identifier.
   ///
   /// The prefix must be dependent, since nested name specifiers
   /// referencing an identifier are only permitted when the identifier
@@ -125,22 +125,22 @@
                                      NestedNameSpecifier *Prefix,
                                      IdentifierInfo *II);
 
-  /// \brief Builds a nested name specifier that names a namespace.
+  /// Builds a nested name specifier that names a namespace.
   static NestedNameSpecifier *Create(const ASTContext &Context,
                                      NestedNameSpecifier *Prefix,
                                      const NamespaceDecl *NS);
 
-  /// \brief Builds a nested name specifier that names a namespace alias.
+  /// Builds a nested name specifier that names a namespace alias.
   static NestedNameSpecifier *Create(const ASTContext &Context,
                                      NestedNameSpecifier *Prefix,
                                      NamespaceAliasDecl *Alias);
 
-  /// \brief Builds a nested name specifier that names a type.
+  /// Builds a nested name specifier that names a type.
   static NestedNameSpecifier *Create(const ASTContext &Context,
                                      NestedNameSpecifier *Prefix,
                                      bool Template, const Type *T);
 
-  /// \brief Builds a specifier that consists of just an identifier.
+  /// Builds a specifier that consists of just an identifier.
   ///
   /// The nested-name-specifier is assumed to be dependent, but has no
   /// prefix because the prefix is implied by something outside of the
@@ -149,16 +149,16 @@
   static NestedNameSpecifier *Create(const ASTContext &Context,
                                      IdentifierInfo *II);
 
-  /// \brief Returns the nested name specifier representing the global
+  /// Returns the nested name specifier representing the global
   /// scope.
   static NestedNameSpecifier *GlobalSpecifier(const ASTContext &Context);
 
-  /// \brief Returns the nested name specifier representing the __super scope
+  /// Returns the nested name specifier representing the __super scope
   /// for the given CXXRecordDecl.
   static NestedNameSpecifier *SuperSpecifier(const ASTContext &Context,
                                              CXXRecordDecl *RD);
 
-  /// \brief Return the prefix of this nested name specifier.
+  /// Return the prefix of this nested name specifier.
   ///
   /// The prefix contains all of the parts of the nested name
   /// specifier that preced this current specifier. For example, for a
@@ -167,10 +167,10 @@
   /// "foo::".
   NestedNameSpecifier *getPrefix() const { return Prefix.getPointer(); }
 
-  /// \brief Determine what kind of nested name specifier is stored.
+  /// Determine what kind of nested name specifier is stored.
   SpecifierKind getKind() const;
 
-  /// \brief Retrieve the identifier stored in this nested name
+  /// Retrieve the identifier stored in this nested name
   /// specifier.
   IdentifierInfo *getAsIdentifier() const {
     if (Prefix.getInt() == StoredIdentifier)
@@ -179,19 +179,19 @@
     return nullptr;
   }
 
-  /// \brief Retrieve the namespace stored in this nested name
+  /// Retrieve the namespace stored in this nested name
   /// specifier.
   NamespaceDecl *getAsNamespace() const;
 
-  /// \brief Retrieve the namespace alias stored in this nested name
+  /// Retrieve the namespace alias stored in this nested name
   /// specifier.
   NamespaceAliasDecl *getAsNamespaceAlias() const;
 
-  /// \brief Retrieve the record declaration stored in this nested name
+  /// Retrieve the record declaration stored in this nested name
   /// specifier.
   CXXRecordDecl *getAsRecordDecl() const;
 
-  /// \brief Retrieve the type stored in this nested name specifier.
+  /// Retrieve the type stored in this nested name specifier.
   const Type *getAsType() const {
     if (Prefix.getInt() == StoredTypeSpec ||
         Prefix.getInt() == StoredTypeSpecWithTemplate)
@@ -200,19 +200,19 @@
     return nullptr;
   }
 
-  /// \brief Whether this nested name specifier refers to a dependent
+  /// Whether this nested name specifier refers to a dependent
   /// type or not.
   bool isDependent() const;
 
-  /// \brief Whether this nested name specifier involves a template
+  /// Whether this nested name specifier involves a template
   /// parameter.
   bool isInstantiationDependent() const;
 
-  /// \brief Whether this nested-name-specifier contains an unexpanded
+  /// Whether this nested-name-specifier contains an unexpanded
   /// parameter pack (for C++11 variadic templates).
   bool containsUnexpandedParameterPack() const;
 
-  /// \brief Print this nested name specifier to the given output
+  /// Print this nested name specifier to the given output
   /// stream.
   void print(raw_ostream &OS, const PrintingPolicy &Policy) const;
 
@@ -221,53 +221,53 @@
     ID.AddPointer(Specifier);
   }
 
-  /// \brief Dump the nested name specifier to standard output to aid
+  /// Dump the nested name specifier to standard output to aid
   /// in debugging.
   void dump(const LangOptions &LO) const;
   void dump() const;
 };
 
-/// \brief A C++ nested-name-specifier augmented with source location
+/// A C++ nested-name-specifier augmented with source location
 /// information.
 class NestedNameSpecifierLoc {
   NestedNameSpecifier *Qualifier = nullptr;
   void *Data = nullptr;
 
-  /// \brief Determines the data length for the last component in the
+  /// Determines the data length for the last component in the
   /// given nested-name-specifier.
   static unsigned getLocalDataLength(NestedNameSpecifier *Qualifier);
 
-  /// \brief Determines the data length for the entire
+  /// Determines the data length for the entire
   /// nested-name-specifier.
   static unsigned getDataLength(NestedNameSpecifier *Qualifier);
 
 public:
-  /// \brief Construct an empty nested-name-specifier.
+  /// Construct an empty nested-name-specifier.
   NestedNameSpecifierLoc() = default;
 
-  /// \brief Construct a nested-name-specifier with source location information
+  /// Construct a nested-name-specifier with source location information
   /// from
   NestedNameSpecifierLoc(NestedNameSpecifier *Qualifier, void *Data)
       : Qualifier(Qualifier), Data(Data) {}
 
-  /// \brief Evaluates true when this nested-name-specifier location is
+  /// Evaluates true when this nested-name-specifier location is
   /// non-empty.
   explicit operator bool() const { return Qualifier; }
 
-  /// \brief Evaluates true when this nested-name-specifier location is
+  /// Evaluates true when this nested-name-specifier location is
   /// empty.
   bool hasQualifier() const { return Qualifier; }
 
-  /// \brief Retrieve the nested-name-specifier to which this instance
+  /// Retrieve the nested-name-specifier to which this instance
   /// refers.
   NestedNameSpecifier *getNestedNameSpecifier() const {
     return Qualifier;
   }
 
-  /// \brief Retrieve the opaque pointer that refers to source-location data.
+  /// Retrieve the opaque pointer that refers to source-location data.
   void *getOpaqueData() const { return Data; }
 
-  /// \brief Retrieve the source range covering the entirety of this
+  /// Retrieve the source range covering the entirety of this
   /// nested-name-specifier.
   ///
   /// For example, if this instance refers to a nested-name-specifier
@@ -275,7 +275,7 @@
   /// from the initial '::' to the last '::'.
   SourceRange getSourceRange() const LLVM_READONLY;
 
-  /// \brief Retrieve the source range covering just the last part of
+  /// Retrieve the source range covering just the last part of
   /// this nested-name-specifier, not including the prefix.
   ///
   /// For example, if this instance refers to a nested-name-specifier
@@ -283,31 +283,31 @@
   /// from "vector" to the last '::'.
   SourceRange getLocalSourceRange() const;
 
-  /// \brief Retrieve the location of the beginning of this
+  /// Retrieve the location of the beginning of this
   /// nested-name-specifier.
   SourceLocation getBeginLoc() const {
     return getSourceRange().getBegin();
   }
 
-  /// \brief Retrieve the location of the end of this
+  /// Retrieve the location of the end of this
   /// nested-name-specifier.
   SourceLocation getEndLoc() const {
     return getSourceRange().getEnd();
   }
 
-  /// \brief Retrieve the location of the beginning of this
+  /// Retrieve the location of the beginning of this
   /// component of the nested-name-specifier.
   SourceLocation getLocalBeginLoc() const {
     return getLocalSourceRange().getBegin();
   }
 
-  /// \brief Retrieve the location of the end of this component of the
+  /// Retrieve the location of the end of this component of the
   /// nested-name-specifier.
   SourceLocation getLocalEndLoc() const {
     return getLocalSourceRange().getEnd();
   }
 
-  /// \brief Return the prefix of this nested-name-specifier.
+  /// Return the prefix of this nested-name-specifier.
   ///
   /// For example, if this instance refers to a nested-name-specifier
   /// \c \::std::vector<int>::, the prefix is \c \::std::. Note that the
@@ -320,11 +320,11 @@
     return NestedNameSpecifierLoc(Qualifier->getPrefix(), Data);
   }
 
-  /// \brief For a nested-name-specifier that refers to a type,
+  /// For a nested-name-specifier that refers to a type,
   /// retrieve the type with source-location information.
   TypeLoc getTypeLoc() const;
 
-  /// \brief Determines the data length for the entire
+  /// Determines the data length for the entire
   /// nested-name-specifier.
   unsigned getDataLength() const { return getDataLength(Qualifier); }
 
@@ -339,15 +339,15 @@
   }
 };
 
-/// \brief Class that aids in the construction of nested-name-specifiers along
+/// Class that aids in the construction of nested-name-specifiers along
 /// with source-location information for all of the components of the
 /// nested-name-specifier.
 class NestedNameSpecifierLocBuilder {
-  /// \brief The current representation of the nested-name-specifier we're
+  /// The current representation of the nested-name-specifier we're
   /// building.
   NestedNameSpecifier *Representation = nullptr;
 
-  /// \brief Buffer used to store source-location information for the
+  /// Buffer used to store source-location information for the
   /// nested-name-specifier.
   ///
   /// Note that we explicitly manage the buffer (rather than using a
@@ -355,11 +355,11 @@
   /// a \c CXXScopeSpec, and CXXScopeSpec uses a NestedNameSpecifierLocBuilder.
   char *Buffer = nullptr;
 
-  /// \brief The size of the buffer used to store source-location information
+  /// The size of the buffer used to store source-location information
   /// for the nested-name-specifier.
   unsigned BufferSize = 0;
 
-  /// \brief The capacity of the buffer used to store source-location
+  /// The capacity of the buffer used to store source-location
   /// information for the nested-name-specifier.
   unsigned BufferCapacity = 0;
 
@@ -375,10 +375,10 @@
       free(Buffer);
   }
 
-  /// \brief Retrieve the representation of the nested-name-specifier.
+  /// Retrieve the representation of the nested-name-specifier.
   NestedNameSpecifier *getRepresentation() const { return Representation; }
 
-  /// \brief Extend the current nested-name-specifier by another
+  /// Extend the current nested-name-specifier by another
   /// nested-name-specifier component of the form 'type::'.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -392,7 +392,7 @@
   void Extend(ASTContext &Context, SourceLocation TemplateKWLoc, TypeLoc TL,
               SourceLocation ColonColonLoc);
 
-  /// \brief Extend the current nested-name-specifier by another
+  /// Extend the current nested-name-specifier by another
   /// nested-name-specifier component of the form 'identifier::'.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -406,7 +406,7 @@
   void Extend(ASTContext &Context, IdentifierInfo *Identifier,
               SourceLocation IdentifierLoc, SourceLocation ColonColonLoc);
 
-  /// \brief Extend the current nested-name-specifier by another
+  /// Extend the current nested-name-specifier by another
   /// nested-name-specifier component of the form 'namespace::'.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -420,7 +420,7 @@
   void Extend(ASTContext &Context, NamespaceDecl *Namespace,
               SourceLocation NamespaceLoc, SourceLocation ColonColonLoc);
 
-  /// \brief Extend the current nested-name-specifier by another
+  /// Extend the current nested-name-specifier by another
   /// nested-name-specifier component of the form 'namespace-alias::'.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -435,11 +435,11 @@
   void Extend(ASTContext &Context, NamespaceAliasDecl *Alias,
               SourceLocation AliasLoc, SourceLocation ColonColonLoc);
 
-  /// \brief Turn this (empty) nested-name-specifier into the global
+  /// Turn this (empty) nested-name-specifier into the global
   /// nested-name-specifier '::'.
   void MakeGlobal(ASTContext &Context, SourceLocation ColonColonLoc);
   
-  /// \brief Turns this (empty) nested-name-specifier into '__super'
+  /// Turns this (empty) nested-name-specifier into '__super'
   /// nested-name-specifier.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -455,7 +455,7 @@
   void MakeSuper(ASTContext &Context, CXXRecordDecl *RD, 
                  SourceLocation SuperLoc, SourceLocation ColonColonLoc);
 
-  /// \brief Make a new nested-name-specifier from incomplete source-location
+  /// Make a new nested-name-specifier from incomplete source-location
   /// information.
   ///
   /// This routine should be used very, very rarely, in cases where we
@@ -464,23 +464,23 @@
   void MakeTrivial(ASTContext &Context, NestedNameSpecifier *Qualifier,
                    SourceRange R);
 
-  /// \brief Adopt an existing nested-name-specifier (with source-range
+  /// Adopt an existing nested-name-specifier (with source-range
   /// information).
   void Adopt(NestedNameSpecifierLoc Other);
 
-  /// \brief Retrieve the source range covered by this nested-name-specifier.
+  /// Retrieve the source range covered by this nested-name-specifier.
   SourceRange getSourceRange() const LLVM_READONLY {
     return NestedNameSpecifierLoc(Representation, Buffer).getSourceRange();
   }
 
-  /// \brief Retrieve a nested-name-specifier with location information,
+  /// Retrieve a nested-name-specifier with location information,
   /// copied into the given AST context.
   ///
   /// \param Context The context into which this nested-name-specifier will be
   /// copied.
   NestedNameSpecifierLoc getWithLocInContext(ASTContext &Context) const;
 
-  /// \brief Retrieve a nested-name-specifier with location
+  /// Retrieve a nested-name-specifier with location
   /// information based on the information in this builder.
   ///
   /// This loc will contain references to the builder's internal data and may
@@ -489,14 +489,14 @@
     return NestedNameSpecifierLoc(Representation, Buffer);
   }
 
-  /// \brief Clear out this builder, and prepare it to build another
+  /// Clear out this builder, and prepare it to build another
   /// nested-name-specifier with source-location information.
   void Clear() {
     Representation = nullptr;
     BufferSize = 0;
   }
 
-  /// \brief Retrieve the underlying buffer.
+  /// Retrieve the underlying buffer.
   ///
   /// \returns A pair containing a pointer to the buffer of source-location
   /// data and the size of the source-location data that resides in that
Index: cfe/trunk/include/clang/AST/OpenMPClause.h
===================================================================
--- cfe/trunk/include/clang/AST/OpenMPClause.h
+++ cfe/trunk/include/clang/AST/OpenMPClause.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief This file defines OpenMP AST classes for clauses.
+/// This file defines OpenMP AST classes for clauses.
 /// There are clauses for executable directives, clauses for declarative
 /// directives and clauses which can be used in both kinds of directives.
 //
@@ -47,15 +47,15 @@
 // AST classes for clauses.
 //===----------------------------------------------------------------------===//
 
-/// \brief This is a basic class for representing single OpenMP clause.
+/// This is a basic class for representing single OpenMP clause.
 class OMPClause {
-  /// \brief Starting location of the clause (the clause keyword).
+  /// Starting location of the clause (the clause keyword).
   SourceLocation StartLoc;
 
-  /// \brief Ending location of the clause.
+  /// Ending location of the clause.
   SourceLocation EndLoc;
 
-  /// \brief Kind of the clause.
+  /// Kind of the clause.
   OpenMPClauseKind Kind;
 
 protected:
@@ -63,19 +63,19 @@
       : StartLoc(StartLoc), EndLoc(EndLoc), Kind(K) {}
 
 public:
-  /// \brief Returns the starting location of the clause.
+  /// Returns the starting location of the clause.
   SourceLocation getLocStart() const { return StartLoc; }
 
-  /// \brief Returns the ending location of the clause.
+  /// Returns the ending location of the clause.
   SourceLocation getLocEnd() const { return EndLoc; }
 
-  /// \brief Sets the starting location of the clause.
+  /// Sets the starting location of the clause.
   void setLocStart(SourceLocation Loc) { StartLoc = Loc; }
 
-  /// \brief Sets the ending location of the clause.
+  /// Sets the ending location of the clause.
   void setLocEnd(SourceLocation Loc) { EndLoc = Loc; }
 
-  /// \brief Returns kind of OpenMP clause (private, shared, reduction, etc.).
+  /// Returns kind of OpenMP clause (private, shared, reduction, etc.).
   OpenMPClauseKind getClauseKind() const { return Kind; }
 
   bool isImplicit() const { return StartLoc.isInvalid(); }
@@ -157,20 +157,20 @@
   static const OMPClauseWithPostUpdate *get(const OMPClause *C);
 };
 
-/// \brief This represents clauses with the list of variables like 'private',
+/// This represents clauses with the list of variables like 'private',
 /// 'firstprivate', 'copyin', 'shared', or 'reduction' clauses in the
 /// '#pragma omp ...' directives.
 template <class T> class OMPVarListClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Number of variables in the list.
+  /// Number of variables in the list.
   unsigned NumVars;
 
 protected:
-  /// \brief Build a clause with \a N variables
+  /// Build a clause with \a N variables
   ///
   /// \param K Kind of the clause.
   /// \param StartLoc Starting location of the clause (the clause keyword).
@@ -181,13 +181,13 @@
                    SourceLocation LParenLoc, SourceLocation EndLoc, unsigned N)
       : OMPClause(K, StartLoc, EndLoc), LParenLoc(LParenLoc), NumVars(N) {}
 
-  /// \brief Fetches list of variables associated with this clause.
+  /// Fetches list of variables associated with this clause.
   MutableArrayRef<Expr *> getVarRefs() {
     return MutableArrayRef<Expr *>(
         static_cast<T *>(this)->template getTrailingObjects<Expr *>(), NumVars);
   }
 
-  /// \brief Sets the list of variables for this clause.
+  /// Sets the list of variables for this clause.
   void setVarRefs(ArrayRef<Expr *> VL) {
     assert(VL.size() == NumVars &&
            "Number of variables is not the same as the preallocated buffer");
@@ -216,13 +216,13 @@
   varlist_const_iterator varlist_begin() const { return getVarRefs().begin(); }
   varlist_const_iterator varlist_end() const { return getVarRefs().end(); }
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Fetches list of all variables in the clause.
+  /// Fetches list of all variables in the clause.
   ArrayRef<const Expr *> getVarRefs() const {
     return llvm::makeArrayRef(
         static_cast<const T *>(this)->template getTrailingObjects<Expr *>(),
@@ -230,7 +230,7 @@
   }
 };
 
-/// \brief This represents 'if' clause in the '#pragma omp ...' directive.
+/// This represents 'if' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp parallel if(parallel:a > 5)
@@ -240,35 +240,35 @@
 class OMPIfClause : public OMPClause, public OMPClauseWithPreInit {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Condition of the 'if' clause.
+  /// Condition of the 'if' clause.
   Stmt *Condition = nullptr;
 
-  /// \brief Location of ':' (if any).
+  /// Location of ':' (if any).
   SourceLocation ColonLoc;
 
-  /// \brief Directive name modifier for the clause.
+  /// Directive name modifier for the clause.
   OpenMPDirectiveKind NameModifier = OMPD_unknown;
 
-  /// \brief Name modifier location.
+  /// Name modifier location.
   SourceLocation NameModifierLoc;
 
-  /// \brief Set condition.
+  /// Set condition.
   void setCondition(Expr *Cond) { Condition = Cond; }
 
-  /// \brief Set directive name modifier for the clause.
+  /// Set directive name modifier for the clause.
   void setNameModifier(OpenMPDirectiveKind NM) { NameModifier = NM; }
 
-  /// \brief Set location of directive name modifier for the clause.
+  /// Set location of directive name modifier for the clause.
   void setNameModifierLoc(SourceLocation Loc) { NameModifierLoc = Loc; }
 
-  /// \brief Set location of ':'.
+  /// Set location of ':'.
   void setColonLoc(SourceLocation Loc) { ColonLoc = Loc; }
 
 public:
-  /// \brief Build 'if' clause with condition \a Cond.
+  /// Build 'if' clause with condition \a Cond.
   ///
   /// \param NameModifier [OpenMP 4.1] Directive name modifier of clause.
   /// \param Cond Condition of the clause.
@@ -290,27 +290,27 @@
     setPreInitStmt(HelperCond, CaptureRegion);
   }
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPIfClause()
       : OMPClause(OMPC_if, SourceLocation(), SourceLocation()),
         OMPClauseWithPreInit(this) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return the location of ':'.
+  /// Return the location of ':'.
   SourceLocation getColonLoc() const { return ColonLoc; }
 
-  /// \brief Returns condition.
+  /// Returns condition.
   Expr *getCondition() const { return cast_or_null<Expr>(Condition); }
 
-  /// \brief Return directive name modifier associated with the clause.
+  /// Return directive name modifier associated with the clause.
   OpenMPDirectiveKind getNameModifier() const { return NameModifier; }
 
-  /// \brief Return the location of directive name modifier.
+  /// Return the location of directive name modifier.
   SourceLocation getNameModifierLoc() const { return NameModifierLoc; }
 
   child_range children() { return child_range(&Condition, &Condition + 1); }
@@ -320,7 +320,7 @@
   }
 };
 
-/// \brief This represents 'final' clause in the '#pragma omp ...' directive.
+/// This represents 'final' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp task final(a > 5)
@@ -330,17 +330,17 @@
 class OMPFinalClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Condition of the 'if' clause.
+  /// Condition of the 'if' clause.
   Stmt *Condition = nullptr;
 
-  /// \brief Set condition.
+  /// Set condition.
   void setCondition(Expr *Cond) { Condition = Cond; }
 
 public:
-  /// \brief Build 'final' clause with condition \a Cond.
+  /// Build 'final' clause with condition \a Cond.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -351,17 +351,17 @@
       : OMPClause(OMPC_final, StartLoc, EndLoc), LParenLoc(LParenLoc),
         Condition(Cond) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPFinalClause()
       : OMPClause(OMPC_final, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Returns condition.
+  /// Returns condition.
   Expr *getCondition() const { return cast_or_null<Expr>(Condition); }
 
   child_range children() { return child_range(&Condition, &Condition + 1); }
@@ -371,7 +371,7 @@
   }
 };
 
-/// \brief This represents 'num_threads' clause in the '#pragma omp ...'
+/// This represents 'num_threads' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -382,17 +382,17 @@
 class OMPNumThreadsClause : public OMPClause, public OMPClauseWithPreInit {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Condition of the 'num_threads' clause.
+  /// Condition of the 'num_threads' clause.
   Stmt *NumThreads = nullptr;
 
-  /// \brief Set condition.
+  /// Set condition.
   void setNumThreads(Expr *NThreads) { NumThreads = NThreads; }
 
 public:
-  /// \brief Build 'num_threads' clause with condition \a NumThreads.
+  /// Build 'num_threads' clause with condition \a NumThreads.
   ///
   /// \param NumThreads Number of threads for the construct.
   /// \param HelperNumThreads Helper Number of threads for the construct.
@@ -411,18 +411,18 @@
     setPreInitStmt(HelperNumThreads, CaptureRegion);
   }
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPNumThreadsClause()
       : OMPClause(OMPC_num_threads, SourceLocation(), SourceLocation()),
         OMPClauseWithPreInit(this) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Returns number of threads.
+  /// Returns number of threads.
   Expr *getNumThreads() const { return cast_or_null<Expr>(NumThreads); }
 
   child_range children() { return child_range(&NumThreads, &NumThreads + 1); }
@@ -432,7 +432,7 @@
   }
 };
 
-/// \brief This represents 'safelen' clause in the '#pragma omp ...'
+/// This represents 'safelen' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -447,17 +447,17 @@
 class OMPSafelenClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Safe iteration space distance.
+  /// Safe iteration space distance.
   Stmt *Safelen = nullptr;
 
-  /// \brief Set safelen.
+  /// Set safelen.
   void setSafelen(Expr *Len) { Safelen = Len; }
 
 public:
-  /// \brief Build 'safelen' clause.
+  /// Build 'safelen' clause.
   ///
   /// \param Len Expression associated with this clause.
   /// \param StartLoc Starting location of the clause.
@@ -467,17 +467,17 @@
       : OMPClause(OMPC_safelen, StartLoc, EndLoc), LParenLoc(LParenLoc),
         Safelen(Len) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   explicit OMPSafelenClause()
       : OMPClause(OMPC_safelen, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return safe iteration space distance.
+  /// Return safe iteration space distance.
   Expr *getSafelen() const { return cast_or_null<Expr>(Safelen); }
 
   child_range children() { return child_range(&Safelen, &Safelen + 1); }
@@ -487,7 +487,7 @@
   }
 };
 
-/// \brief This represents 'simdlen' clause in the '#pragma omp ...'
+/// This represents 'simdlen' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -501,17 +501,17 @@
 class OMPSimdlenClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Safe iteration space distance.
+  /// Safe iteration space distance.
   Stmt *Simdlen = nullptr;
 
-  /// \brief Set simdlen.
+  /// Set simdlen.
   void setSimdlen(Expr *Len) { Simdlen = Len; }
 
 public:
-  /// \brief Build 'simdlen' clause.
+  /// Build 'simdlen' clause.
   ///
   /// \param Len Expression associated with this clause.
   /// \param StartLoc Starting location of the clause.
@@ -521,17 +521,17 @@
       : OMPClause(OMPC_simdlen, StartLoc, EndLoc), LParenLoc(LParenLoc),
         Simdlen(Len) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   explicit OMPSimdlenClause()
       : OMPClause(OMPC_simdlen, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return safe iteration space distance.
+  /// Return safe iteration space distance.
   Expr *getSimdlen() const { return cast_or_null<Expr>(Simdlen); }
 
   child_range children() { return child_range(&Simdlen, &Simdlen + 1); }
@@ -541,7 +541,7 @@
   }
 };
 
-/// \brief This represents 'collapse' clause in the '#pragma omp ...'
+/// This represents 'collapse' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -555,17 +555,17 @@
 class OMPCollapseClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Number of for-loops.
+  /// Number of for-loops.
   Stmt *NumForLoops = nullptr;
 
-  /// \brief Set the number of associated for-loops.
+  /// Set the number of associated for-loops.
   void setNumForLoops(Expr *Num) { NumForLoops = Num; }
 
 public:
-  /// \brief Build 'collapse' clause.
+  /// Build 'collapse' clause.
   ///
   /// \param Num Expression associated with this clause.
   /// \param StartLoc Starting location of the clause.
@@ -576,17 +576,17 @@
       : OMPClause(OMPC_collapse, StartLoc, EndLoc), LParenLoc(LParenLoc),
         NumForLoops(Num) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   explicit OMPCollapseClause()
       : OMPClause(OMPC_collapse, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return the number of associated for-loops.
+  /// Return the number of associated for-loops.
   Expr *getNumForLoops() const { return cast_or_null<Expr>(NumForLoops); }
 
   child_range children() { return child_range(&NumForLoops, &NumForLoops + 1); }
@@ -596,7 +596,7 @@
   }
 };
 
-/// \brief This represents 'default' clause in the '#pragma omp ...' directive.
+/// This represents 'default' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp parallel default(shared)
@@ -606,27 +606,27 @@
 class OMPDefaultClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief A kind of the 'default' clause.
+  /// A kind of the 'default' clause.
   OpenMPDefaultClauseKind Kind = OMPC_DEFAULT_unknown;
 
-  /// \brief Start location of the kind in source code.
+  /// Start location of the kind in source code.
   SourceLocation KindKwLoc;
 
-  /// \brief Set kind of the clauses.
+  /// Set kind of the clauses.
   ///
   /// \param K Argument of clause.
   void setDefaultKind(OpenMPDefaultClauseKind K) { Kind = K; }
 
-  /// \brief Set argument location.
+  /// Set argument location.
   ///
   /// \param KLoc Argument location.
   void setDefaultKindKwLoc(SourceLocation KLoc) { KindKwLoc = KLoc; }
 
 public:
-  /// \brief Build 'default' clause with argument \a A ('none' or 'shared').
+  /// Build 'default' clause with argument \a A ('none' or 'shared').
   ///
   /// \param A Argument of the clause ('none' or 'shared').
   /// \param ALoc Starting location of the argument.
@@ -639,20 +639,20 @@
       : OMPClause(OMPC_default, StartLoc, EndLoc), LParenLoc(LParenLoc),
         Kind(A), KindKwLoc(ALoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPDefaultClause()
       : OMPClause(OMPC_default, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Returns kind of the clause.
+  /// Returns kind of the clause.
   OpenMPDefaultClauseKind getDefaultKind() const { return Kind; }
 
-  /// \brief Returns location of clause kind.
+  /// Returns location of clause kind.
   SourceLocation getDefaultKindKwLoc() const { return KindKwLoc; }
 
   child_range children() {
@@ -664,7 +664,7 @@
   }
 };
 
-/// \brief This represents 'proc_bind' clause in the '#pragma omp ...'
+/// This represents 'proc_bind' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -675,27 +675,27 @@
 class OMPProcBindClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief A kind of the 'proc_bind' clause.
+  /// A kind of the 'proc_bind' clause.
   OpenMPProcBindClauseKind Kind = OMPC_PROC_BIND_unknown;
 
-  /// \brief Start location of the kind in source code.
+  /// Start location of the kind in source code.
   SourceLocation KindKwLoc;
 
-  /// \brief Set kind of the clause.
+  /// Set kind of the clause.
   ///
   /// \param K Kind of clause.
   void setProcBindKind(OpenMPProcBindClauseKind K) { Kind = K; }
 
-  /// \brief Set clause kind location.
+  /// Set clause kind location.
   ///
   /// \param KLoc Kind location.
   void setProcBindKindKwLoc(SourceLocation KLoc) { KindKwLoc = KLoc; }
 
 public:
-  /// \brief Build 'proc_bind' clause with argument \a A ('master', 'close' or
+  /// Build 'proc_bind' clause with argument \a A ('master', 'close' or
   ///        'spread').
   ///
   /// \param A Argument of the clause ('master', 'close' or 'spread').
@@ -709,20 +709,20 @@
       : OMPClause(OMPC_proc_bind, StartLoc, EndLoc), LParenLoc(LParenLoc),
         Kind(A), KindKwLoc(ALoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPProcBindClause()
       : OMPClause(OMPC_proc_bind, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Returns kind of the clause.
+  /// Returns kind of the clause.
   OpenMPProcBindClauseKind getProcBindKind() const { return Kind; }
 
-  /// \brief Returns location of clause kind.
+  /// Returns location of clause kind.
   SourceLocation getProcBindKindKwLoc() const { return KindKwLoc; }
 
   child_range children() {
@@ -734,7 +734,7 @@
   }
 };
 
-/// \brief This represents 'schedule' clause in the '#pragma omp ...' directive.
+/// This represents 'schedule' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp for schedule(static, 3)
@@ -744,58 +744,58 @@
 class OMPScheduleClause : public OMPClause, public OMPClauseWithPreInit {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief A kind of the 'schedule' clause.
+  /// A kind of the 'schedule' clause.
   OpenMPScheduleClauseKind Kind = OMPC_SCHEDULE_unknown;
 
-  /// \brief Modifiers for 'schedule' clause.
+  /// Modifiers for 'schedule' clause.
   enum {FIRST, SECOND, NUM_MODIFIERS};
   OpenMPScheduleClauseModifier Modifiers[NUM_MODIFIERS];
 
-  /// \brief Locations of modifiers.
+  /// Locations of modifiers.
   SourceLocation ModifiersLoc[NUM_MODIFIERS];
 
-  /// \brief Start location of the schedule ind in source code.
+  /// Start location of the schedule ind in source code.
   SourceLocation KindLoc;
 
-  /// \brief Location of ',' (if any).
+  /// Location of ',' (if any).
   SourceLocation CommaLoc;
 
-  /// \brief Chunk size.
+  /// Chunk size.
   Expr *ChunkSize = nullptr;
 
-  /// \brief Set schedule kind.
+  /// Set schedule kind.
   ///
   /// \param K Schedule kind.
   void setScheduleKind(OpenMPScheduleClauseKind K) { Kind = K; }
 
-  /// \brief Set the first schedule modifier.
+  /// Set the first schedule modifier.
   ///
   /// \param M Schedule modifier.
   void setFirstScheduleModifier(OpenMPScheduleClauseModifier M) {
     Modifiers[FIRST] = M;
   }
 
-  /// \brief Set the second schedule modifier.
+  /// Set the second schedule modifier.
   ///
   /// \param M Schedule modifier.
   void setSecondScheduleModifier(OpenMPScheduleClauseModifier M) {
     Modifiers[SECOND] = M;
   }
 
-  /// \brief Set location of the first schedule modifier.
+  /// Set location of the first schedule modifier.
   void setFirstScheduleModifierLoc(SourceLocation Loc) {
     ModifiersLoc[FIRST] = Loc;
   }
 
-  /// \brief Set location of the second schedule modifier.
+  /// Set location of the second schedule modifier.
   void setSecondScheduleModifierLoc(SourceLocation Loc) {
     ModifiersLoc[SECOND] = Loc;
   }
 
-  /// \brief Set schedule modifier location.
+  /// Set schedule modifier location.
   ///
   /// \param M Schedule modifier location.
   void setScheduleModifer(OpenMPScheduleClauseModifier M) {
@@ -807,28 +807,28 @@
     }
   }
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   ///
   /// \param Loc Location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Set schedule kind start location.
+  /// Set schedule kind start location.
   ///
   /// \param KLoc Schedule kind location.
   void setScheduleKindLoc(SourceLocation KLoc) { KindLoc = KLoc; }
 
-  /// \brief Set location of ','.
+  /// Set location of ','.
   ///
   /// \param Loc Location of ','.
   void setCommaLoc(SourceLocation Loc) { CommaLoc = Loc; }
 
-  /// \brief Set chunk size.
+  /// Set chunk size.
   ///
   /// \param E Chunk size.
   void setChunkSize(Expr *E) { ChunkSize = E; }
 
 public:
-  /// \brief Build 'schedule' clause with schedule kind \a Kind and chunk size
+  /// Build 'schedule' clause with schedule kind \a Kind and chunk size
   /// expression \a ChunkSize.
   ///
   /// \param StartLoc Starting location of the clause.
@@ -859,7 +859,7 @@
     ModifiersLoc[SECOND] = M2Loc;
   }
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   explicit OMPScheduleClause()
       : OMPClause(OMPC_schedule, SourceLocation(), SourceLocation()),
         OMPClauseWithPreInit(this) {
@@ -867,42 +867,42 @@
     Modifiers[SECOND] = OMPC_SCHEDULE_MODIFIER_unknown;
   }
 
-  /// \brief Get kind of the clause.
+  /// Get kind of the clause.
   OpenMPScheduleClauseKind getScheduleKind() const { return Kind; }
 
-  /// \brief Get the first modifier of the clause.
+  /// Get the first modifier of the clause.
   OpenMPScheduleClauseModifier getFirstScheduleModifier() const {
     return Modifiers[FIRST];
   }
 
-  /// \brief Get the second modifier of the clause.
+  /// Get the second modifier of the clause.
   OpenMPScheduleClauseModifier getSecondScheduleModifier() const {
     return Modifiers[SECOND];
   }
 
-  /// \brief Get location of '('.
+  /// Get location of '('.
   SourceLocation getLParenLoc() { return LParenLoc; }
 
-  /// \brief Get kind location.
+  /// Get kind location.
   SourceLocation getScheduleKindLoc() { return KindLoc; }
 
-  /// \brief Get the first modifier location.
+  /// Get the first modifier location.
   SourceLocation getFirstScheduleModifierLoc() const {
     return ModifiersLoc[FIRST];
   }
 
-  /// \brief Get the second modifier location.
+  /// Get the second modifier location.
   SourceLocation getSecondScheduleModifierLoc() const {
     return ModifiersLoc[SECOND];
   }
 
-  /// \brief Get location of ','.
+  /// Get location of ','.
   SourceLocation getCommaLoc() { return CommaLoc; }
 
-  /// \brief Get chunk size.
+  /// Get chunk size.
   Expr *getChunkSize() { return ChunkSize; }
 
-  /// \brief Get chunk size.
+  /// Get chunk size.
   const Expr *getChunkSize() const { return ChunkSize; }
 
   child_range children() {
@@ -915,7 +915,7 @@
   }
 };
 
-/// \brief This represents 'ordered' clause in the '#pragma omp ...' directive.
+/// This represents 'ordered' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp for ordered (2)
@@ -925,17 +925,17 @@
 class OMPOrderedClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Number of for-loops.
+  /// Number of for-loops.
   Stmt *NumForLoops = nullptr;
 
-  /// \brief Set the number of associated for-loops.
+  /// Set the number of associated for-loops.
   void setNumForLoops(Expr *Num) { NumForLoops = Num; }
 
 public:
-  /// \brief Build 'ordered' clause.
+  /// Build 'ordered' clause.
   ///
   /// \param Num Expression, possibly associated with this clause.
   /// \param StartLoc Starting location of the clause.
@@ -946,17 +946,17 @@
       : OMPClause(OMPC_ordered, StartLoc, EndLoc), LParenLoc(LParenLoc),
         NumForLoops(Num) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   explicit OMPOrderedClause()
       : OMPClause(OMPC_ordered, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return the number of associated for-loops.
+  /// Return the number of associated for-loops.
   Expr *getNumForLoops() const { return cast_or_null<Expr>(NumForLoops); }
 
   child_range children() { return child_range(&NumForLoops, &NumForLoops + 1); }
@@ -966,7 +966,7 @@
   }
 };
 
-/// \brief This represents 'nowait' clause in the '#pragma omp ...' directive.
+/// This represents 'nowait' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp for nowait
@@ -974,14 +974,14 @@
 /// In this example directive '#pragma omp for' has 'nowait' clause.
 class OMPNowaitClause : public OMPClause {
 public:
-  /// \brief Build 'nowait' clause.
+  /// Build 'nowait' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPNowaitClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_nowait, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPNowaitClause()
       : OMPClause(OMPC_nowait, SourceLocation(), SourceLocation()) {}
 
@@ -994,7 +994,7 @@
   }
 };
 
-/// \brief This represents 'untied' clause in the '#pragma omp ...' directive.
+/// This represents 'untied' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp task untied
@@ -1002,14 +1002,14 @@
 /// In this example directive '#pragma omp task' has 'untied' clause.
 class OMPUntiedClause : public OMPClause {
 public:
-  /// \brief Build 'untied' clause.
+  /// Build 'untied' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPUntiedClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_untied, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPUntiedClause()
       : OMPClause(OMPC_untied, SourceLocation(), SourceLocation()) {}
 
@@ -1022,7 +1022,7 @@
   }
 };
 
-/// \brief This represents 'mergeable' clause in the '#pragma omp ...'
+/// This represents 'mergeable' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -1031,14 +1031,14 @@
 /// In this example directive '#pragma omp task' has 'mergeable' clause.
 class OMPMergeableClause : public OMPClause {
 public:
-  /// \brief Build 'mergeable' clause.
+  /// Build 'mergeable' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPMergeableClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_mergeable, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPMergeableClause()
       : OMPClause(OMPC_mergeable, SourceLocation(), SourceLocation()) {}
 
@@ -1051,7 +1051,7 @@
   }
 };
 
-/// \brief This represents 'read' clause in the '#pragma omp atomic' directive.
+/// This represents 'read' clause in the '#pragma omp atomic' directive.
 ///
 /// \code
 /// #pragma omp atomic read
@@ -1059,14 +1059,14 @@
 /// In this example directive '#pragma omp atomic' has 'read' clause.
 class OMPReadClause : public OMPClause {
 public:
-  /// \brief Build 'read' clause.
+  /// Build 'read' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPReadClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_read, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPReadClause() : OMPClause(OMPC_read, SourceLocation(), SourceLocation()) {}
 
   child_range children() {
@@ -1078,7 +1078,7 @@
   }
 };
 
-/// \brief This represents 'write' clause in the '#pragma omp atomic' directive.
+/// This represents 'write' clause in the '#pragma omp atomic' directive.
 ///
 /// \code
 /// #pragma omp atomic write
@@ -1086,14 +1086,14 @@
 /// In this example directive '#pragma omp atomic' has 'write' clause.
 class OMPWriteClause : public OMPClause {
 public:
-  /// \brief Build 'write' clause.
+  /// Build 'write' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPWriteClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_write, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPWriteClause()
       : OMPClause(OMPC_write, SourceLocation(), SourceLocation()) {}
 
@@ -1106,7 +1106,7 @@
   }
 };
 
-/// \brief This represents 'update' clause in the '#pragma omp atomic'
+/// This represents 'update' clause in the '#pragma omp atomic'
 /// directive.
 ///
 /// \code
@@ -1115,14 +1115,14 @@
 /// In this example directive '#pragma omp atomic' has 'update' clause.
 class OMPUpdateClause : public OMPClause {
 public:
-  /// \brief Build 'update' clause.
+  /// Build 'update' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPUpdateClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_update, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPUpdateClause()
       : OMPClause(OMPC_update, SourceLocation(), SourceLocation()) {}
 
@@ -1135,7 +1135,7 @@
   }
 };
 
-/// \brief This represents 'capture' clause in the '#pragma omp atomic'
+/// This represents 'capture' clause in the '#pragma omp atomic'
 /// directive.
 ///
 /// \code
@@ -1144,14 +1144,14 @@
 /// In this example directive '#pragma omp atomic' has 'capture' clause.
 class OMPCaptureClause : public OMPClause {
 public:
-  /// \brief Build 'capture' clause.
+  /// Build 'capture' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPCaptureClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_capture, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPCaptureClause()
       : OMPClause(OMPC_capture, SourceLocation(), SourceLocation()) {}
 
@@ -1164,7 +1164,7 @@
   }
 };
 
-/// \brief This represents 'seq_cst' clause in the '#pragma omp atomic'
+/// This represents 'seq_cst' clause in the '#pragma omp atomic'
 /// directive.
 ///
 /// \code
@@ -1173,14 +1173,14 @@
 /// In this example directive '#pragma omp atomic' has 'seq_cst' clause.
 class OMPSeqCstClause : public OMPClause {
 public:
-  /// \brief Build 'seq_cst' clause.
+  /// Build 'seq_cst' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPSeqCstClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_seq_cst, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPSeqCstClause()
       : OMPClause(OMPC_seq_cst, SourceLocation(), SourceLocation()) {}
 
@@ -1193,7 +1193,7 @@
   }
 };
 
-/// \brief This represents clause 'private' in the '#pragma omp ...' directives.
+/// This represents clause 'private' in the '#pragma omp ...' directives.
 ///
 /// \code
 /// #pragma omp parallel private(a,b)
@@ -1207,7 +1207,7 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Build clause with number of variables \a N.
+  /// Build clause with number of variables \a N.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -1218,7 +1218,7 @@
       : OMPVarListClause<OMPPrivateClause>(OMPC_private, StartLoc, LParenLoc,
                                            EndLoc, N) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param N Number of variables.
   explicit OMPPrivateClause(unsigned N)
@@ -1226,12 +1226,12 @@
                                            SourceLocation(), SourceLocation(),
                                            N) {}
 
-  /// \brief Sets the list of references to private copies with initializers for
+  /// Sets the list of references to private copies with initializers for
   /// new private variables.
   /// \param VL List of references.
   void setPrivateCopies(ArrayRef<Expr *> VL);
 
-  /// \brief Gets the list of references to private copies with initializers for
+  /// Gets the list of references to private copies with initializers for
   /// new private variables.
   MutableArrayRef<Expr *> getPrivateCopies() {
     return MutableArrayRef<Expr *>(varlist_end(), varlist_size());
@@ -1241,7 +1241,7 @@
   }
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -1254,7 +1254,7 @@
                                   SourceLocation EndLoc, ArrayRef<Expr *> VL,
                                   ArrayRef<Expr *> PrivateVL);
 
-  /// \brief Creates an empty clause with the place for \a N variables.
+  /// Creates an empty clause with the place for \a N variables.
   ///
   /// \param C AST context.
   /// \param N The number of variables.
@@ -1286,7 +1286,7 @@
   }
 };
 
-/// \brief This represents clause 'firstprivate' in the '#pragma omp ...'
+/// This represents clause 'firstprivate' in the '#pragma omp ...'
 /// directives.
 ///
 /// \code
@@ -1302,7 +1302,7 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Build clause with number of variables \a N.
+  /// Build clause with number of variables \a N.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -1314,7 +1314,7 @@
                                                 LParenLoc, EndLoc, N),
         OMPClauseWithPreInit(this) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param N Number of variables.
   explicit OMPFirstprivateClause(unsigned N)
@@ -1323,12 +1323,12 @@
             SourceLocation(), N),
         OMPClauseWithPreInit(this) {}
 
-  /// \brief Sets the list of references to private copies with initializers for
+  /// Sets the list of references to private copies with initializers for
   /// new private variables.
   /// \param VL List of references.
   void setPrivateCopies(ArrayRef<Expr *> VL);
 
-  /// \brief Gets the list of references to private copies with initializers for
+  /// Gets the list of references to private copies with initializers for
   /// new private variables.
   MutableArrayRef<Expr *> getPrivateCopies() {
     return MutableArrayRef<Expr *>(varlist_end(), varlist_size());
@@ -1337,12 +1337,12 @@
     return llvm::makeArrayRef(varlist_end(), varlist_size());
   }
 
-  /// \brief Sets the list of references to initializer variables for new
+  /// Sets the list of references to initializer variables for new
   /// private variables.
   /// \param VL List of references.
   void setInits(ArrayRef<Expr *> VL);
 
-  /// \brief Gets the list of references to initializer variables for new
+  /// Gets the list of references to initializer variables for new
   /// private variables.
   MutableArrayRef<Expr *> getInits() {
     return MutableArrayRef<Expr *>(getPrivateCopies().end(), varlist_size());
@@ -1352,7 +1352,7 @@
   }
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -1370,7 +1370,7 @@
          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> PrivateVL,
          ArrayRef<Expr *> InitVL, Stmt *PreInit);
 
-  /// \brief Creates an empty clause with the place for \a N variables.
+  /// Creates an empty clause with the place for \a N variables.
   ///
   /// \param C AST context.
   /// \param N The number of variables.
@@ -1413,7 +1413,7 @@
   }
 };
 
-/// \brief This represents clause 'lastprivate' in the '#pragma omp ...'
+/// This represents clause 'lastprivate' in the '#pragma omp ...'
 /// directives.
 ///
 /// \code
@@ -1445,7 +1445,7 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Build clause with number of variables \a N.
+  /// Build clause with number of variables \a N.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -1457,7 +1457,7 @@
                                                LParenLoc, EndLoc, N),
         OMPClauseWithPostUpdate(this) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param N Number of variables.
   explicit OMPLastprivateClause(unsigned N)
@@ -1466,7 +1466,7 @@
             SourceLocation(), N),
         OMPClauseWithPostUpdate(this) {}
 
-  /// \brief Get the list of helper expressions for initialization of private
+  /// Get the list of helper expressions for initialization of private
   /// copies for lastprivate variables.
   MutableArrayRef<Expr *> getPrivateCopies() {
     return MutableArrayRef<Expr *>(varlist_end(), varlist_size());
@@ -1475,13 +1475,13 @@
     return llvm::makeArrayRef(varlist_end(), varlist_size());
   }
 
-  /// \brief Set list of helper expressions, required for proper codegen of the
+  /// Set list of helper expressions, required for proper codegen of the
   /// clause. These expressions represent private variables (for arrays, single
   /// array element) in the final assignment statement performed by the
   /// lastprivate clause.
   void setSourceExprs(ArrayRef<Expr *> SrcExprs);
 
-  /// \brief Get the list of helper source expressions.
+  /// Get the list of helper source expressions.
   MutableArrayRef<Expr *> getSourceExprs() {
     return MutableArrayRef<Expr *>(getPrivateCopies().end(), varlist_size());
   }
@@ -1489,13 +1489,13 @@
     return llvm::makeArrayRef(getPrivateCopies().end(), varlist_size());
   }
 
-  /// \brief Set list of helper expressions, required for proper codegen of the
+  /// Set list of helper expressions, required for proper codegen of the
   /// clause. These expressions represent original variables (for arrays, single
   /// array element) in the final assignment statement performed by the
   /// lastprivate clause.
   void setDestinationExprs(ArrayRef<Expr *> DstExprs);
 
-  /// \brief Get the list of helper destination expressions.
+  /// Get the list of helper destination expressions.
   MutableArrayRef<Expr *> getDestinationExprs() {
     return MutableArrayRef<Expr *>(getSourceExprs().end(), varlist_size());
   }
@@ -1503,12 +1503,12 @@
     return llvm::makeArrayRef(getSourceExprs().end(), varlist_size());
   }
 
-  /// \brief Set list of helper assignment expressions, required for proper
+  /// Set list of helper assignment expressions, required for proper
   /// codegen of the clause. These expressions are assignment expressions that
   /// assign private copy of the variable to original variable.
   void setAssignmentOps(ArrayRef<Expr *> AssignmentOps);
 
-  /// \brief Get the list of helper assignment expressions.
+  /// Get the list of helper assignment expressions.
   MutableArrayRef<Expr *> getAssignmentOps() {
     return MutableArrayRef<Expr *>(getDestinationExprs().end(), varlist_size());
   }
@@ -1517,7 +1517,7 @@
   }
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -1547,7 +1547,7 @@
          ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps,
          Stmt *PreInit, Expr *PostUpdate);
 
-  /// \brief Creates an empty clause with the place for \a N variables.
+  /// Creates an empty clause with the place for \a N variables.
   ///
   /// \param C AST context.
   /// \param N The number of variables.
@@ -1559,7 +1559,7 @@
   using helper_expr_const_range =
       llvm::iterator_range<helper_expr_const_iterator>;
 
-  /// \brief Set list of helper expressions, required for generation of private
+  /// Set list of helper expressions, required for generation of private
   /// copies of original lastprivate variables.
   void setPrivateCopies(ArrayRef<Expr *> PrivateCopies);
 
@@ -1612,7 +1612,7 @@
   }
 };
 
-/// \brief This represents clause 'shared' in the '#pragma omp ...' directives.
+/// This represents clause 'shared' in the '#pragma omp ...' directives.
 ///
 /// \code
 /// #pragma omp parallel shared(a,b)
@@ -1625,7 +1625,7 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Build clause with number of variables \a N.
+  /// Build clause with number of variables \a N.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -1636,7 +1636,7 @@
       : OMPVarListClause<OMPSharedClause>(OMPC_shared, StartLoc, LParenLoc,
                                           EndLoc, N) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param N Number of variables.
   explicit OMPSharedClause(unsigned N)
@@ -1645,7 +1645,7 @@
                                           N) {}
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -1656,7 +1656,7 @@
                                  SourceLocation LParenLoc,
                                  SourceLocation EndLoc, ArrayRef<Expr *> VL);
 
-  /// \brief Creates an empty clause with \a N variables.
+  /// Creates an empty clause with \a N variables.
   ///
   /// \param C AST context.
   /// \param N The number of variables.
@@ -1672,7 +1672,7 @@
   }
 };
 
-/// \brief This represents clause 'reduction' in the '#pragma omp ...'
+/// This represents clause 'reduction' in the '#pragma omp ...'
 /// directives.
 ///
 /// \code
@@ -1688,16 +1688,16 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Location of ':'.
+  /// Location of ':'.
   SourceLocation ColonLoc;
 
-  /// \brief Nested name specifier for C++.
+  /// Nested name specifier for C++.
   NestedNameSpecifierLoc QualifierLoc;
 
-  /// \brief Name of custom operator.
+  /// Name of custom operator.
   DeclarationNameInfo NameInfo;
 
-  /// \brief Build clause with number of variables \a N.
+  /// Build clause with number of variables \a N.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -1715,7 +1715,7 @@
         OMPClauseWithPostUpdate(this), ColonLoc(ColonLoc),
         QualifierLoc(QualifierLoc), NameInfo(NameInfo) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param N Number of variables.
   explicit OMPReductionClause(unsigned N)
@@ -1724,21 +1724,21 @@
                                              N),
         OMPClauseWithPostUpdate(this) {}
 
-  /// \brief Sets location of ':' symbol in clause.
+  /// Sets location of ':' symbol in clause.
   void setColonLoc(SourceLocation CL) { ColonLoc = CL; }
 
-  /// \brief Sets the name info for specified reduction identifier.
+  /// Sets the name info for specified reduction identifier.
   void setNameInfo(DeclarationNameInfo DNI) { NameInfo = DNI; }
 
-  /// \brief Sets the nested name specifier.
+  /// Sets the nested name specifier.
   void setQualifierLoc(NestedNameSpecifierLoc NSL) { QualifierLoc = NSL; }
 
-  /// \brief Set list of helper expressions, required for proper codegen of the
+  /// Set list of helper expressions, required for proper codegen of the
   /// clause. These expressions represent private copy of the reduction
   /// variable.
   void setPrivates(ArrayRef<Expr *> Privates);
 
-  /// \brief Get the list of helper privates.
+  /// Get the list of helper privates.
   MutableArrayRef<Expr *> getPrivates() {
     return MutableArrayRef<Expr *>(varlist_end(), varlist_size());
   }
@@ -1746,12 +1746,12 @@
     return llvm::makeArrayRef(varlist_end(), varlist_size());
   }
 
-  /// \brief Set list of helper expressions, required for proper codegen of the
+  /// Set list of helper expressions, required for proper codegen of the
   /// clause. These expressions represent LHS expression in the final
   /// reduction expression performed by the reduction clause.
   void setLHSExprs(ArrayRef<Expr *> LHSExprs);
 
-  /// \brief Get the list of helper LHS expressions.
+  /// Get the list of helper LHS expressions.
   MutableArrayRef<Expr *> getLHSExprs() {
     return MutableArrayRef<Expr *>(getPrivates().end(), varlist_size());
   }
@@ -1759,14 +1759,14 @@
     return llvm::makeArrayRef(getPrivates().end(), varlist_size());
   }
 
-  /// \brief Set list of helper expressions, required for proper codegen of the
+  /// Set list of helper expressions, required for proper codegen of the
   /// clause. These expressions represent RHS expression in the final
   /// reduction expression performed by the reduction clause.
   /// Also, variables in these expressions are used for proper initialization of
   /// reduction copies.
   void setRHSExprs(ArrayRef<Expr *> RHSExprs);
 
-  /// \brief Get the list of helper destination expressions.
+  /// Get the list of helper destination expressions.
   MutableArrayRef<Expr *> getRHSExprs() {
     return MutableArrayRef<Expr *>(getLHSExprs().end(), varlist_size());
   }
@@ -1774,13 +1774,13 @@
     return llvm::makeArrayRef(getLHSExprs().end(), varlist_size());
   }
 
-  /// \brief Set list of helper reduction expressions, required for proper
+  /// Set list of helper reduction expressions, required for proper
   /// codegen of the clause. These expressions are binary expressions or
   /// operator/custom reduction call that calculates new value from source
   /// helper expressions to destination helper expressions.
   void setReductionOps(ArrayRef<Expr *> ReductionOps);
 
-  /// \brief Get the list of helper reduction expressions.
+  /// Get the list of helper reduction expressions.
   MutableArrayRef<Expr *> getReductionOps() {
     return MutableArrayRef<Expr *>(getRHSExprs().end(), varlist_size());
   }
@@ -1789,7 +1789,7 @@
   }
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -1829,19 +1829,19 @@
          ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,
          ArrayRef<Expr *> ReductionOps, Stmt *PreInit, Expr *PostUpdate);
 
-  /// \brief Creates an empty clause with the place for \a N variables.
+  /// Creates an empty clause with the place for \a N variables.
   ///
   /// \param C AST context.
   /// \param N The number of variables.
   static OMPReductionClause *CreateEmpty(const ASTContext &C, unsigned N);
 
-  /// \brief Gets location of ':' symbol in clause.
+  /// Gets location of ':' symbol in clause.
   SourceLocation getColonLoc() const { return ColonLoc; }
 
-  /// \brief Gets the name info for specified reduction identifier.
+  /// Gets the name info for specified reduction identifier.
   const DeclarationNameInfo &getNameInfo() const { return NameInfo; }
 
-  /// \brief Gets the nested name specifier.
+  /// Gets the nested name specifier.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
   using helper_expr_iterator = MutableArrayRef<Expr *>::iterator;
@@ -2357,7 +2357,7 @@
   }
 };
 
-/// \brief This represents clause 'linear' in the '#pragma omp ...'
+/// This represents clause 'linear' in the '#pragma omp ...'
 /// directives.
 ///
 /// \code
@@ -2373,22 +2373,22 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Modifier of 'linear' clause.
+  /// Modifier of 'linear' clause.
   OpenMPLinearClauseKind Modifier = OMPC_LINEAR_val;
 
-  /// \brief Location of linear modifier if any.
+  /// Location of linear modifier if any.
   SourceLocation ModifierLoc;
 
-  /// \brief Location of ':'.
+  /// Location of ':'.
   SourceLocation ColonLoc;
 
-  /// \brief Sets the linear step for clause.
+  /// Sets the linear step for clause.
   void setStep(Expr *Step) { *(getFinals().end()) = Step; }
 
-  /// \brief Sets the expression to calculate linear step for clause.
+  /// Sets the expression to calculate linear step for clause.
   void setCalcStep(Expr *CalcStep) { *(getFinals().end() + 1) = CalcStep; }
 
-  /// \brief Build 'linear' clause with given number of variables \a NumVars.
+  /// Build 'linear' clause with given number of variables \a NumVars.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -2404,7 +2404,7 @@
         OMPClauseWithPostUpdate(this), Modifier(Modifier),
         ModifierLoc(ModifierLoc), ColonLoc(ColonLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param NumVars Number of variables.
   explicit OMPLinearClause(unsigned NumVars)
@@ -2413,7 +2413,7 @@
                                           NumVars),
         OMPClauseWithPostUpdate(this) {}
 
-  /// \brief Gets the list of initial values for linear variables.
+  /// Gets the list of initial values for linear variables.
   ///
   /// There are NumVars expressions with initial values allocated after the
   /// varlist, they are followed by NumVars update expressions (used to update
@@ -2439,7 +2439,7 @@
     return llvm::makeArrayRef(getPrivates().end(), varlist_size());
   }
 
-  /// \brief Sets the list of update expressions for linear variables.
+  /// Sets the list of update expressions for linear variables.
   MutableArrayRef<Expr *> getUpdates() {
     return MutableArrayRef<Expr *>(getInits().end(), varlist_size());
   }
@@ -2447,7 +2447,7 @@
     return llvm::makeArrayRef(getInits().end(), varlist_size());
   }
 
-  /// \brief Sets the list of final update expressions for linear variables.
+  /// Sets the list of final update expressions for linear variables.
   MutableArrayRef<Expr *> getFinals() {
     return MutableArrayRef<Expr *>(getUpdates().end(), varlist_size());
   }
@@ -2455,16 +2455,16 @@
     return llvm::makeArrayRef(getUpdates().end(), varlist_size());
   }
 
-  /// \brief Sets the list of the copies of original linear variables.
+  /// Sets the list of the copies of original linear variables.
   /// \param PL List of expressions.
   void setPrivates(ArrayRef<Expr *> PL);
 
-  /// \brief Sets the list of the initial values for linear variables.
+  /// Sets the list of the initial values for linear variables.
   /// \param IL List of expressions.
   void setInits(ArrayRef<Expr *> IL);
 
 public:
-  /// \brief Creates clause with a list of variables \a VL and a linear step
+  /// Creates clause with a list of variables \a VL and a linear step
   /// \a Step.
   ///
   /// \param C AST Context.
@@ -2490,47 +2490,47 @@
          ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep,
          Stmt *PreInit, Expr *PostUpdate);
 
-  /// \brief Creates an empty clause with the place for \a NumVars variables.
+  /// Creates an empty clause with the place for \a NumVars variables.
   ///
   /// \param C AST context.
   /// \param NumVars Number of variables.
   static OMPLinearClause *CreateEmpty(const ASTContext &C, unsigned NumVars);
 
-  /// \brief Set modifier.
+  /// Set modifier.
   void setModifier(OpenMPLinearClauseKind Kind) { Modifier = Kind; }
 
-  /// \brief Return modifier.
+  /// Return modifier.
   OpenMPLinearClauseKind getModifier() const { return Modifier; }
 
-  /// \brief Set modifier location.
+  /// Set modifier location.
   void setModifierLoc(SourceLocation Loc) { ModifierLoc = Loc; }
 
-  /// \brief Return modifier location.
+  /// Return modifier location.
   SourceLocation getModifierLoc() const { return ModifierLoc; }
 
-  /// \brief Sets the location of ':'.
+  /// Sets the location of ':'.
   void setColonLoc(SourceLocation Loc) { ColonLoc = Loc; }
 
-  /// \brief Returns the location of ':'.
+  /// Returns the location of ':'.
   SourceLocation getColonLoc() const { return ColonLoc; }
 
-  /// \brief Returns linear step.
+  /// Returns linear step.
   Expr *getStep() { return *(getFinals().end()); }
 
-  /// \brief Returns linear step.
+  /// Returns linear step.
   const Expr *getStep() const { return *(getFinals().end()); }
 
-  /// \brief Returns expression to calculate linear step.
+  /// Returns expression to calculate linear step.
   Expr *getCalcStep() { return *(getFinals().end() + 1); }
 
-  /// \brief Returns expression to calculate linear step.
+  /// Returns expression to calculate linear step.
   const Expr *getCalcStep() const { return *(getFinals().end() + 1); }
 
-  /// \brief Sets the list of update expressions for linear variables.
+  /// Sets the list of update expressions for linear variables.
   /// \param UL List of expressions.
   void setUpdates(ArrayRef<Expr *> UL);
 
-  /// \brief Sets the list of final update expressions for linear variables.
+  /// Sets the list of final update expressions for linear variables.
   /// \param FL List of expressions.
   void setFinals(ArrayRef<Expr *> FL);
 
@@ -2596,7 +2596,7 @@
   }
 };
 
-/// \brief This represents clause 'aligned' in the '#pragma omp ...'
+/// This represents clause 'aligned' in the '#pragma omp ...'
 /// directives.
 ///
 /// \code
@@ -2611,13 +2611,13 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Location of ':'.
+  /// Location of ':'.
   SourceLocation ColonLoc;
 
-  /// \brief Sets the alignment for clause.
+  /// Sets the alignment for clause.
   void setAlignment(Expr *A) { *varlist_end() = A; }
 
-  /// \brief Build 'aligned' clause with given number of variables \a NumVars.
+  /// Build 'aligned' clause with given number of variables \a NumVars.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -2631,7 +2631,7 @@
                                            EndLoc, NumVars),
         ColonLoc(ColonLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param NumVars Number of variables.
   explicit OMPAlignedClause(unsigned NumVars)
@@ -2640,7 +2640,7 @@
                                            NumVars) {}
 
 public:
-  /// \brief Creates clause with a list of variables \a VL and alignment \a A.
+  /// Creates clause with a list of variables \a VL and alignment \a A.
   ///
   /// \param C AST Context.
   /// \param StartLoc Starting location of the clause.
@@ -2655,22 +2655,22 @@
                                   SourceLocation EndLoc, ArrayRef<Expr *> VL,
                                   Expr *A);
 
-  /// \brief Creates an empty clause with the place for \a NumVars variables.
+  /// Creates an empty clause with the place for \a NumVars variables.
   ///
   /// \param C AST context.
   /// \param NumVars Number of variables.
   static OMPAlignedClause *CreateEmpty(const ASTContext &C, unsigned NumVars);
 
-  /// \brief Sets the location of ':'.
+  /// Sets the location of ':'.
   void setColonLoc(SourceLocation Loc) { ColonLoc = Loc; }
 
-  /// \brief Returns the location of ':'.
+  /// Returns the location of ':'.
   SourceLocation getColonLoc() const { return ColonLoc; }
 
-  /// \brief Returns alignment.
+  /// Returns alignment.
   Expr *getAlignment() { return *varlist_end(); }
 
-  /// \brief Returns alignment.
+  /// Returns alignment.
   const Expr *getAlignment() const { return *varlist_end(); }
 
   child_range children() {
@@ -2683,7 +2683,7 @@
   }
 };
 
-/// \brief This represents clause 'copyin' in the '#pragma omp ...' directives.
+/// This represents clause 'copyin' in the '#pragma omp ...' directives.
 ///
 /// \code
 /// #pragma omp parallel copyin(a,b)
@@ -2710,7 +2710,7 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Build clause with number of variables \a N.
+  /// Build clause with number of variables \a N.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -2721,7 +2721,7 @@
       : OMPVarListClause<OMPCopyinClause>(OMPC_copyin, StartLoc, LParenLoc,
                                           EndLoc, N) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param N Number of variables.
   explicit OMPCopyinClause(unsigned N)
@@ -2729,12 +2729,12 @@
                                           SourceLocation(), SourceLocation(),
                                           N) {}
 
-  /// \brief Set list of helper expressions, required for proper codegen of the
+  /// Set list of helper expressions, required for proper codegen of the
   /// clause. These expressions represent source expression in the final
   /// assignment statement performed by the copyin clause.
   void setSourceExprs(ArrayRef<Expr *> SrcExprs);
 
-  /// \brief Get the list of helper source expressions.
+  /// Get the list of helper source expressions.
   MutableArrayRef<Expr *> getSourceExprs() {
     return MutableArrayRef<Expr *>(varlist_end(), varlist_size());
   }
@@ -2742,12 +2742,12 @@
     return llvm::makeArrayRef(varlist_end(), varlist_size());
   }
 
-  /// \brief Set list of helper expressions, required for proper codegen of the
+  /// Set list of helper expressions, required for proper codegen of the
   /// clause. These expressions represent destination expression in the final
   /// assignment statement performed by the copyin clause.
   void setDestinationExprs(ArrayRef<Expr *> DstExprs);
 
-  /// \brief Get the list of helper destination expressions.
+  /// Get the list of helper destination expressions.
   MutableArrayRef<Expr *> getDestinationExprs() {
     return MutableArrayRef<Expr *>(getSourceExprs().end(), varlist_size());
   }
@@ -2755,13 +2755,13 @@
     return llvm::makeArrayRef(getSourceExprs().end(), varlist_size());
   }
 
-  /// \brief Set list of helper assignment expressions, required for proper
+  /// Set list of helper assignment expressions, required for proper
   /// codegen of the clause. These expressions are assignment expressions that
   /// assign source helper expressions to destination helper expressions
   /// correspondingly.
   void setAssignmentOps(ArrayRef<Expr *> AssignmentOps);
 
-  /// \brief Get the list of helper assignment expressions.
+  /// Get the list of helper assignment expressions.
   MutableArrayRef<Expr *> getAssignmentOps() {
     return MutableArrayRef<Expr *>(getDestinationExprs().end(), varlist_size());
   }
@@ -2770,7 +2770,7 @@
   }
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -2796,7 +2796,7 @@
          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
          ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);
 
-  /// \brief Creates an empty clause with \a N variables.
+  /// Creates an empty clause with \a N variables.
   ///
   /// \param C AST context.
   /// \param N The number of variables.
@@ -2847,7 +2847,7 @@
   }
 };
 
-/// \brief This represents clause 'copyprivate' in the '#pragma omp ...'
+/// This represents clause 'copyprivate' in the '#pragma omp ...'
 /// directives.
 ///
 /// \code
@@ -2862,7 +2862,7 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Build clause with number of variables \a N.
+  /// Build clause with number of variables \a N.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -2873,7 +2873,7 @@
       : OMPVarListClause<OMPCopyprivateClause>(OMPC_copyprivate, StartLoc,
                                                LParenLoc, EndLoc, N) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param N Number of variables.
   explicit OMPCopyprivateClause(unsigned N)
@@ -2881,12 +2881,12 @@
             OMPC_copyprivate, SourceLocation(), SourceLocation(),
             SourceLocation(), N) {}
 
-  /// \brief Set list of helper expressions, required for proper codegen of the
+  /// Set list of helper expressions, required for proper codegen of the
   /// clause. These expressions represent source expression in the final
   /// assignment statement performed by the copyprivate clause.
   void setSourceExprs(ArrayRef<Expr *> SrcExprs);
 
-  /// \brief Get the list of helper source expressions.
+  /// Get the list of helper source expressions.
   MutableArrayRef<Expr *> getSourceExprs() {
     return MutableArrayRef<Expr *>(varlist_end(), varlist_size());
   }
@@ -2894,12 +2894,12 @@
     return llvm::makeArrayRef(varlist_end(), varlist_size());
   }
 
-  /// \brief Set list of helper expressions, required for proper codegen of the
+  /// Set list of helper expressions, required for proper codegen of the
   /// clause. These expressions represent destination expression in the final
   /// assignment statement performed by the copyprivate clause.
   void setDestinationExprs(ArrayRef<Expr *> DstExprs);
 
-  /// \brief Get the list of helper destination expressions.
+  /// Get the list of helper destination expressions.
   MutableArrayRef<Expr *> getDestinationExprs() {
     return MutableArrayRef<Expr *>(getSourceExprs().end(), varlist_size());
   }
@@ -2907,13 +2907,13 @@
     return llvm::makeArrayRef(getSourceExprs().end(), varlist_size());
   }
 
-  /// \brief Set list of helper assignment expressions, required for proper
+  /// Set list of helper assignment expressions, required for proper
   /// codegen of the clause. These expressions are assignment expressions that
   /// assign source helper expressions to destination helper expressions
   /// correspondingly.
   void setAssignmentOps(ArrayRef<Expr *> AssignmentOps);
 
-  /// \brief Get the list of helper assignment expressions.
+  /// Get the list of helper assignment expressions.
   MutableArrayRef<Expr *> getAssignmentOps() {
     return MutableArrayRef<Expr *>(getDestinationExprs().end(), varlist_size());
   }
@@ -2922,7 +2922,7 @@
   }
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -2947,7 +2947,7 @@
          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
          ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);
 
-  /// \brief Creates an empty clause with \a N variables.
+  /// Creates an empty clause with \a N variables.
   ///
   /// \param C AST context.
   /// \param N The number of variables.
@@ -2998,7 +2998,7 @@
   }
 };
 
-/// \brief This represents implicit clause 'flush' for the '#pragma omp flush'
+/// This represents implicit clause 'flush' for the '#pragma omp flush'
 /// directive.
 /// This clause does not exist by itself, it can be only as a part of 'omp
 /// flush' directive. This clause is introduced to keep the original structure
@@ -3016,7 +3016,7 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Build clause with number of variables \a N.
+  /// Build clause with number of variables \a N.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -3027,7 +3027,7 @@
       : OMPVarListClause<OMPFlushClause>(OMPC_flush, StartLoc, LParenLoc,
                                          EndLoc, N) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param N Number of variables.
   explicit OMPFlushClause(unsigned N)
@@ -3036,7 +3036,7 @@
                                          N) {}
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -3047,7 +3047,7 @@
                                 SourceLocation LParenLoc, SourceLocation EndLoc,
                                 ArrayRef<Expr *> VL);
 
-  /// \brief Creates an empty clause with \a N variables.
+  /// Creates an empty clause with \a N variables.
   ///
   /// \param C AST context.
   /// \param N The number of variables.
@@ -3063,7 +3063,7 @@
   }
 };
 
-/// \brief This represents implicit clause 'depend' for the '#pragma omp task'
+/// This represents implicit clause 'depend' for the '#pragma omp task'
 /// directive.
 ///
 /// \code
@@ -3078,16 +3078,16 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Dependency type (one of in, out, inout).
+  /// Dependency type (one of in, out, inout).
   OpenMPDependClauseKind DepKind = OMPC_DEPEND_unknown;
 
-  /// \brief Dependency type location.
+  /// Dependency type location.
   SourceLocation DepLoc;
 
-  /// \brief Colon location.
+  /// Colon location.
   SourceLocation ColonLoc;
 
-  /// \brief Build clause with number of variables \a N.
+  /// Build clause with number of variables \a N.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -3098,7 +3098,7 @@
       : OMPVarListClause<OMPDependClause>(OMPC_depend, StartLoc, LParenLoc,
                                           EndLoc, N) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param N Number of variables.
   explicit OMPDependClause(unsigned N)
@@ -3106,17 +3106,17 @@
                                           SourceLocation(), SourceLocation(),
                                           N) {}
 
-  /// \brief Set dependency kind.
+  /// Set dependency kind.
   void setDependencyKind(OpenMPDependClauseKind K) { DepKind = K; }
 
-  /// \brief Set dependency kind and its location.
+  /// Set dependency kind and its location.
   void setDependencyLoc(SourceLocation Loc) { DepLoc = Loc; }
 
-  /// \brief Set colon location.
+  /// Set colon location.
   void setColonLoc(SourceLocation Loc) { ColonLoc = Loc; }
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -3131,19 +3131,19 @@
          SourceLocation EndLoc, OpenMPDependClauseKind DepKind,
          SourceLocation DepLoc, SourceLocation ColonLoc, ArrayRef<Expr *> VL);
 
-  /// \brief Creates an empty clause with \a N variables.
+  /// Creates an empty clause with \a N variables.
   ///
   /// \param C AST context.
   /// \param N The number of variables.
   static OMPDependClause *CreateEmpty(const ASTContext &C, unsigned N);
 
-  /// \brief Get dependency type.
+  /// Get dependency type.
   OpenMPDependClauseKind getDependencyKind() const { return DepKind; }
 
-  /// \brief Get dependency type location.
+  /// Get dependency type location.
   SourceLocation getDependencyLoc() const { return DepLoc; }
 
-  /// \brief Get colon location.
+  /// Get colon location.
   SourceLocation getColonLoc() const { return ColonLoc; }
 
   /// Set the loop counter value for the depend clauses with 'sink|source' kind
@@ -3166,7 +3166,7 @@
   }
 };
 
-/// \brief This represents 'device' clause in the '#pragma omp ...'
+/// This represents 'device' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -3177,19 +3177,19 @@
 class OMPDeviceClause : public OMPClause, public OMPClauseWithPreInit {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Device number.
+  /// Device number.
   Stmt *Device = nullptr;
 
-  /// \brief Set the device number.
+  /// Set the device number.
   ///
   /// \param E Device number.
   void setDevice(Expr *E) { Device = E; }
 
 public:
-  /// \brief Build 'device' clause.
+  /// Build 'device' clause.
   ///
   /// \param E Expression associated with this clause.
   /// \param CaptureRegion Innermost OpenMP region where expressions in this
@@ -3205,21 +3205,21 @@
     setPreInitStmt(HelperE, CaptureRegion);
   }
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPDeviceClause()
       : OMPClause(OMPC_device, SourceLocation(), SourceLocation()),
         OMPClauseWithPreInit(this) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return device number.
+  /// Return device number.
   Expr *getDevice() { return cast<Expr>(Device); }
 
-  /// \brief Return device number.
+  /// Return device number.
   Expr *getDevice() const { return cast<Expr>(Device); }
 
   child_range children() { return child_range(&Device, &Device + 1); }
@@ -3229,7 +3229,7 @@
   }
 };
 
-/// \brief This represents 'threads' clause in the '#pragma omp ...' directive.
+/// This represents 'threads' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp ordered threads
@@ -3237,14 +3237,14 @@
 /// In this example directive '#pragma omp ordered' has simple 'threads' clause.
 class OMPThreadsClause : public OMPClause {
 public:
-  /// \brief Build 'threads' clause.
+  /// Build 'threads' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPThreadsClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_threads, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPThreadsClause()
       : OMPClause(OMPC_threads, SourceLocation(), SourceLocation()) {}
 
@@ -3257,7 +3257,7 @@
   }
 };
 
-/// \brief This represents 'simd' clause in the '#pragma omp ...' directive.
+/// This represents 'simd' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp ordered simd
@@ -3265,14 +3265,14 @@
 /// In this example directive '#pragma omp ordered' has simple 'simd' clause.
 class OMPSIMDClause : public OMPClause {
 public:
-  /// \brief Build 'simd' clause.
+  /// Build 'simd' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPSIMDClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_simd, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPSIMDClause() : OMPClause(OMPC_simd, SourceLocation(), SourceLocation()) {}
 
   child_range children() {
@@ -3284,7 +3284,7 @@
   }
 };
 
-/// \brief Struct that defines common infrastructure to handle mappable
+/// Struct that defines common infrastructure to handle mappable
 /// expressions used in OpenMP clauses.
 class OMPClauseMappableExprCommon {
 public:
@@ -3320,29 +3320,29 @@
     }
   };
 
-  // \brief List of components of an expression. This first one is the whole
+  // List of components of an expression. This first one is the whole
   // expression and the last one is the base expression.
   using MappableExprComponentList = SmallVector<MappableComponent, 8>;
   using MappableExprComponentListRef = ArrayRef<MappableComponent>;
 
-  // \brief List of all component lists associated to the same base declaration.
+  // List of all component lists associated to the same base declaration.
   // E.g. if both 'S.a' and 'S.b' are a mappable expressions, each will have
   // their component list but the same base declaration 'S'.
   using MappableExprComponentLists = SmallVector<MappableExprComponentList, 8>;
   using MappableExprComponentListsRef = ArrayRef<MappableExprComponentList>;
 
 protected:
-  // \brief Return the total number of elements in a list of component lists.
+  // Return the total number of elements in a list of component lists.
   static unsigned
   getComponentsTotalNumber(MappableExprComponentListsRef ComponentLists);
 
-  // \brief Return the total number of elements in a list of declarations. All
+  // Return the total number of elements in a list of declarations. All
   // declarations are expected to be canonical.
   static unsigned
   getUniqueDeclarationsTotalNumber(ArrayRef<const ValueDecl *> Declarations);
 };
 
-/// \brief This represents clauses with a list of expressions that are mappable.
+/// This represents clauses with a list of expressions that are mappable.
 /// Examples of these clauses are 'map' in
 /// '#pragma omp target [enter|exit] [data]...' directives, and  'to' and 'from
 /// in '#pragma omp target update...' directives.
@@ -3351,17 +3351,17 @@
                                   public OMPClauseMappableExprCommon {
   friend class OMPClauseReader;
 
-  /// \brief Number of unique declarations in this clause.
+  /// Number of unique declarations in this clause.
   unsigned NumUniqueDeclarations;
 
-  /// \brief Number of component lists in this clause.
+  /// Number of component lists in this clause.
   unsigned NumComponentLists;
 
-  /// \brief Total number of components in this clause.
+  /// Total number of components in this clause.
   unsigned NumComponents;
 
 protected:
-  /// \brief Build a clause for \a NumUniqueDeclarations declarations, \a
+  /// Build a clause for \a NumUniqueDeclarations declarations, \a
   /// NumComponentLists total component lists, and \a NumComponents total
   /// components.
   ///
@@ -3383,7 +3383,7 @@
         NumUniqueDeclarations(NumUniqueDeclarations),
         NumComponentLists(NumComponentLists), NumComponents(NumComponents) {}
 
-  /// \brief Get the unique declarations that are in the trailing objects of the
+  /// Get the unique declarations that are in the trailing objects of the
   /// class.
   MutableArrayRef<ValueDecl *> getUniqueDeclsRef() {
     return MutableArrayRef<ValueDecl *>(
@@ -3391,7 +3391,7 @@
         NumUniqueDeclarations);
   }
 
-  /// \brief Get the unique declarations that are in the trailing objects of the
+  /// Get the unique declarations that are in the trailing objects of the
   /// class.
   ArrayRef<ValueDecl *> getUniqueDeclsRef() const {
     return ArrayRef<ValueDecl *>(
@@ -3400,7 +3400,7 @@
         NumUniqueDeclarations);
   }
 
-  /// \brief Set the unique declarations that are in the trailing objects of the
+  /// Set the unique declarations that are in the trailing objects of the
   /// class.
   void setUniqueDecls(ArrayRef<ValueDecl *> UDs) {
     assert(UDs.size() == NumUniqueDeclarations &&
@@ -3408,7 +3408,7 @@
     std::copy(UDs.begin(), UDs.end(), getUniqueDeclsRef().begin());
   }
 
-  /// \brief Get the number of lists per declaration that are in the trailing
+  /// Get the number of lists per declaration that are in the trailing
   /// objects of the class.
   MutableArrayRef<unsigned> getDeclNumListsRef() {
     return MutableArrayRef<unsigned>(
@@ -3416,7 +3416,7 @@
         NumUniqueDeclarations);
   }
 
-  /// \brief Get the number of lists per declaration that are in the trailing
+  /// Get the number of lists per declaration that are in the trailing
   /// objects of the class.
   ArrayRef<unsigned> getDeclNumListsRef() const {
     return ArrayRef<unsigned>(
@@ -3424,7 +3424,7 @@
         NumUniqueDeclarations);
   }
 
-  /// \brief Set the number of lists per declaration that are in the trailing
+  /// Set the number of lists per declaration that are in the trailing
   /// objects of the class.
   void setDeclNumLists(ArrayRef<unsigned> DNLs) {
     assert(DNLs.size() == NumUniqueDeclarations &&
@@ -3432,7 +3432,7 @@
     std::copy(DNLs.begin(), DNLs.end(), getDeclNumListsRef().begin());
   }
 
-  /// \brief Get the cumulative component lists sizes that are in the trailing
+  /// Get the cumulative component lists sizes that are in the trailing
   /// objects of the class. They are appended after the number of lists.
   MutableArrayRef<unsigned> getComponentListSizesRef() {
     return MutableArrayRef<unsigned>(
@@ -3441,7 +3441,7 @@
         NumComponentLists);
   }
 
-  /// \brief Get the cumulative component lists sizes that are in the trailing
+  /// Get the cumulative component lists sizes that are in the trailing
   /// objects of the class. They are appended after the number of lists.
   ArrayRef<unsigned> getComponentListSizesRef() const {
     return ArrayRef<unsigned>(
@@ -3450,7 +3450,7 @@
         NumComponentLists);
   }
 
-  /// \brief Set the cumulative component lists sizes that are in the trailing
+  /// Set the cumulative component lists sizes that are in the trailing
   /// objects of the class.
   void setComponentListSizes(ArrayRef<unsigned> CLSs) {
     assert(CLSs.size() == NumComponentLists &&
@@ -3458,7 +3458,7 @@
     std::copy(CLSs.begin(), CLSs.end(), getComponentListSizesRef().begin());
   }
 
-  /// \brief Get the components that are in the trailing objects of the class.
+  /// Get the components that are in the trailing objects of the class.
   MutableArrayRef<MappableComponent> getComponentsRef() {
     return MutableArrayRef<MappableComponent>(
         static_cast<T *>(this)
@@ -3466,7 +3466,7 @@
         NumComponents);
   }
 
-  /// \brief Get the components that are in the trailing objects of the class.
+  /// Get the components that are in the trailing objects of the class.
   ArrayRef<MappableComponent> getComponentsRef() const {
     return ArrayRef<MappableComponent>(
         static_cast<const T *>(this)
@@ -3474,7 +3474,7 @@
         NumComponents);
   }
 
-  /// \brief Set the components that are in the trailing objects of the class.
+  /// Set the components that are in the trailing objects of the class.
   /// This requires the list sizes so that it can also fill the original
   /// expressions, which are the first component of each list.
   void setComponents(ArrayRef<MappableComponent> Components,
@@ -3486,7 +3486,7 @@
     std::copy(Components.begin(), Components.end(), getComponentsRef().begin());
   }
 
-  /// \brief Fill the clause information from the list of declarations and
+  /// Fill the clause information from the list of declarations and
   /// associated component lists.
   void setClauseInfo(ArrayRef<ValueDecl *> Declarations,
                      MappableExprComponentListsRef ComponentLists) {
@@ -3563,17 +3563,17 @@
   }
 
 public:
-  /// \brief Return the number of unique base declarations in this clause.
+  /// Return the number of unique base declarations in this clause.
   unsigned getUniqueDeclarationsNum() const { return NumUniqueDeclarations; }
 
-  /// \brief Return the number of lists derived from the clause expressions.
+  /// Return the number of lists derived from the clause expressions.
   unsigned getTotalComponentListNum() const { return NumComponentLists; }
 
-  /// \brief Return the total number of components in all lists derived from the
+  /// Return the total number of components in all lists derived from the
   /// clause.
   unsigned getTotalComponentsNum() const { return NumComponents; }
 
-  /// \brief Iterator that browse the components by lists. It also allows
+  /// Iterator that browse the components by lists. It also allows
   /// browsing components of a single declaration.
   class const_component_lists_iterator
       : public llvm::iterator_adaptor_base<
@@ -3603,7 +3603,7 @@
     MappableExprComponentListRef::const_iterator End;
 
   public:
-    /// \brief Construct an iterator that scans all lists.
+    /// Construct an iterator that scans all lists.
     explicit const_component_lists_iterator(
         ArrayRef<ValueDecl *> UniqueDecls, ArrayRef<unsigned> DeclsListNum,
         ArrayRef<unsigned> CumulativeListSizes,
@@ -3619,7 +3619,7 @@
         RemainingLists = *NumListsCur;
     }
 
-    /// \brief Construct an iterator that scan lists for a given declaration \a
+    /// Construct an iterator that scan lists for a given declaration \a
     /// Declaration.
     explicit const_component_lists_iterator(
         const ValueDecl *Declaration, ArrayRef<ValueDecl *> UniqueDecls,
@@ -3709,7 +3709,7 @@
   using const_component_lists_range =
       llvm::iterator_range<const_component_lists_iterator>;
 
-  /// \brief Iterators for all component lists.
+  /// Iterators for all component lists.
   const_component_lists_iterator component_lists_begin() const {
     return const_component_lists_iterator(
         getUniqueDeclsRef(), getDeclNumListsRef(), getComponentListSizesRef(),
@@ -3725,7 +3725,7 @@
     return {component_lists_begin(), component_lists_end()};
   }
 
-  /// \brief Iterators for component lists associated with the provided
+  /// Iterators for component lists associated with the provided
   /// declaration.
   const_component_lists_iterator
   decl_component_lists_begin(const ValueDecl *VD) const {
@@ -3778,7 +3778,7 @@
   }
 };
 
-/// \brief This represents clause 'map' in the '#pragma omp ...'
+/// This represents clause 'map' in the '#pragma omp ...'
 /// directives.
 ///
 /// \code
@@ -3807,22 +3807,22 @@
     return getUniqueDeclarationsNum() + getTotalComponentListNum();
   }
 
-  /// \brief Map type modifier for the 'map' clause.
+  /// Map type modifier for the 'map' clause.
   OpenMPMapClauseKind MapTypeModifier = OMPC_MAP_unknown;
 
-  /// \brief Map type for the 'map' clause.
+  /// Map type for the 'map' clause.
   OpenMPMapClauseKind MapType = OMPC_MAP_unknown;
 
-  /// \brief Is this an implicit map type or not.
+  /// Is this an implicit map type or not.
   bool MapTypeIsImplicit = false;
 
-  /// \brief Location of the map type.
+  /// Location of the map type.
   SourceLocation MapLoc;
 
-  /// \brief Colon location.
+  /// Colon location.
   SourceLocation ColonLoc;
 
-  /// \brief Build a clause for \a NumVars listed expressions, \a
+  /// Build a clause for \a NumVars listed expressions, \a
   /// NumUniqueDeclarations declarations, \a NumComponentLists total component
   /// lists, and \a NumComponents total expression components.
   ///
@@ -3849,7 +3849,7 @@
         MapTypeModifier(MapTypeModifier), MapType(MapType),
         MapTypeIsImplicit(MapTypeIsImplicit), MapLoc(MapLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param NumVars Number of expressions listed in this clause.
   /// \param NumUniqueDeclarations Number of unique base declarations in this
@@ -3862,26 +3862,26 @@
             OMPC_map, SourceLocation(), SourceLocation(), SourceLocation(),
             NumVars, NumUniqueDeclarations, NumComponentLists, NumComponents) {}
 
-  /// \brief Set type modifier for the clause.
+  /// Set type modifier for the clause.
   ///
   /// \param T Type Modifier for the clause.
   void setMapTypeModifier(OpenMPMapClauseKind T) { MapTypeModifier = T; }
 
-  /// \brief Set type for the clause.
+  /// Set type for the clause.
   ///
   /// \param T Type for the clause.
   void setMapType(OpenMPMapClauseKind T) { MapType = T; }
 
-  /// \brief Set type location.
+  /// Set type location.
   ///
   /// \param TLoc Type location.
   void setMapLoc(SourceLocation TLoc) { MapLoc = TLoc; }
 
-  /// \brief Set colon location.
+  /// Set colon location.
   void setColonLoc(SourceLocation Loc) { ColonLoc = Loc; }
 
 public:
-  /// \brief Creates clause with a list of variables \a VL.
+  /// Creates clause with a list of variables \a VL.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -3902,7 +3902,7 @@
                               OpenMPMapClauseKind Type, bool TypeIsImplicit,
                               SourceLocation TypeLoc);
 
-  /// \brief Creates an empty clause with the place for \a NumVars original
+  /// Creates an empty clause with the place for \a NumVars original
   /// expressions, \a NumUniqueDeclarations declarations, \NumComponentLists
   /// lists, and \a NumComponents expression components.
   ///
@@ -3918,25 +3918,25 @@
                                    unsigned NumComponentLists,
                                    unsigned NumComponents);
 
-  /// \brief Fetches mapping kind for the clause.
+  /// Fetches mapping kind for the clause.
   OpenMPMapClauseKind getMapType() const LLVM_READONLY { return MapType; }
 
-  /// \brief Is this an implicit map type?
+  /// Is this an implicit map type?
   /// We have to capture 'IsMapTypeImplicit' from the parser for more
   /// informative error messages.  It helps distinguish map(r) from
   /// map(tofrom: r), which is important to print more helpful error
   /// messages for some target directives.
   bool isImplicitMapType() const LLVM_READONLY { return MapTypeIsImplicit; }
 
-  /// \brief Fetches the map type modifier for the clause.
+  /// Fetches the map type modifier for the clause.
   OpenMPMapClauseKind getMapTypeModifier() const LLVM_READONLY {
     return MapTypeModifier;
   }
 
-  /// \brief Fetches location of clause mapping kind.
+  /// Fetches location of clause mapping kind.
   SourceLocation getMapLoc() const LLVM_READONLY { return MapLoc; }
 
-  /// \brief Get colon location.
+  /// Get colon location.
   SourceLocation getColonLoc() const { return ColonLoc; }
 
   child_range children() {
@@ -3950,7 +3950,7 @@
   }
 };
 
-/// \brief This represents 'num_teams' clause in the '#pragma omp ...'
+/// This represents 'num_teams' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -3961,19 +3961,19 @@
 class OMPNumTeamsClause : public OMPClause, public OMPClauseWithPreInit {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief NumTeams number.
+  /// NumTeams number.
   Stmt *NumTeams = nullptr;
 
-  /// \brief Set the NumTeams number.
+  /// Set the NumTeams number.
   ///
   /// \param E NumTeams number.
   void setNumTeams(Expr *E) { NumTeams = E; }
 
 public:
-  /// \brief Build 'num_teams' clause.
+  /// Build 'num_teams' clause.
   ///
   /// \param E Expression associated with this clause.
   /// \param HelperE Helper Expression associated with this clause.
@@ -3990,21 +3990,21 @@
     setPreInitStmt(HelperE, CaptureRegion);
   }
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPNumTeamsClause()
       : OMPClause(OMPC_num_teams, SourceLocation(), SourceLocation()),
         OMPClauseWithPreInit(this) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return NumTeams number.
+  /// Return NumTeams number.
   Expr *getNumTeams() { return cast<Expr>(NumTeams); }
 
-  /// \brief Return NumTeams number.
+  /// Return NumTeams number.
   Expr *getNumTeams() const { return cast<Expr>(NumTeams); }
 
   child_range children() { return child_range(&NumTeams, &NumTeams + 1); }
@@ -4014,7 +4014,7 @@
   }
 };
 
-/// \brief This represents 'thread_limit' clause in the '#pragma omp ...'
+/// This represents 'thread_limit' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -4025,19 +4025,19 @@
 class OMPThreadLimitClause : public OMPClause, public OMPClauseWithPreInit {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief ThreadLimit number.
+  /// ThreadLimit number.
   Stmt *ThreadLimit = nullptr;
 
-  /// \brief Set the ThreadLimit number.
+  /// Set the ThreadLimit number.
   ///
   /// \param E ThreadLimit number.
   void setThreadLimit(Expr *E) { ThreadLimit = E; }
 
 public:
-  /// \brief Build 'thread_limit' clause.
+  /// Build 'thread_limit' clause.
   ///
   /// \param E Expression associated with this clause.
   /// \param HelperE Helper Expression associated with this clause.
@@ -4055,21 +4055,21 @@
     setPreInitStmt(HelperE, CaptureRegion);
   }
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPThreadLimitClause()
       : OMPClause(OMPC_thread_limit, SourceLocation(), SourceLocation()),
         OMPClauseWithPreInit(this) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return ThreadLimit number.
+  /// Return ThreadLimit number.
   Expr *getThreadLimit() { return cast<Expr>(ThreadLimit); }
 
-  /// \brief Return ThreadLimit number.
+  /// Return ThreadLimit number.
   Expr *getThreadLimit() const { return cast<Expr>(ThreadLimit); }
 
   child_range children() { return child_range(&ThreadLimit, &ThreadLimit + 1); }
@@ -4079,7 +4079,7 @@
   }
 };
 
-/// \brief This represents 'priority' clause in the '#pragma omp ...'
+/// This represents 'priority' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -4090,19 +4090,19 @@
 class OMPPriorityClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Priority number.
+  /// Priority number.
   Stmt *Priority = nullptr;
 
-  /// \brief Set the Priority number.
+  /// Set the Priority number.
   ///
   /// \param E Priority number.
   void setPriority(Expr *E) { Priority = E; }
 
 public:
-  /// \brief Build 'priority' clause.
+  /// Build 'priority' clause.
   ///
   /// \param E Expression associated with this clause.
   /// \param StartLoc Starting location of the clause.
@@ -4113,20 +4113,20 @@
       : OMPClause(OMPC_priority, StartLoc, EndLoc), LParenLoc(LParenLoc),
         Priority(E) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPPriorityClause()
       : OMPClause(OMPC_priority, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return Priority number.
+  /// Return Priority number.
   Expr *getPriority() { return cast<Expr>(Priority); }
 
-  /// \brief Return Priority number.
+  /// Return Priority number.
   Expr *getPriority() const { return cast<Expr>(Priority); }
 
   child_range children() { return child_range(&Priority, &Priority + 1); }
@@ -4136,7 +4136,7 @@
   }
 };
 
-/// \brief This represents 'grainsize' clause in the '#pragma omp ...'
+/// This represents 'grainsize' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -4147,17 +4147,17 @@
 class OMPGrainsizeClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Safe iteration space distance.
+  /// Safe iteration space distance.
   Stmt *Grainsize = nullptr;
 
-  /// \brief Set safelen.
+  /// Set safelen.
   void setGrainsize(Expr *Size) { Grainsize = Size; }
 
 public:
-  /// \brief Build 'grainsize' clause.
+  /// Build 'grainsize' clause.
   ///
   /// \param Size Expression associated with this clause.
   /// \param StartLoc Starting location of the clause.
@@ -4167,17 +4167,17 @@
       : OMPClause(OMPC_grainsize, StartLoc, EndLoc), LParenLoc(LParenLoc),
         Grainsize(Size) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   explicit OMPGrainsizeClause()
       : OMPClause(OMPC_grainsize, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return safe iteration space distance.
+  /// Return safe iteration space distance.
   Expr *getGrainsize() const { return cast_or_null<Expr>(Grainsize); }
 
   child_range children() { return child_range(&Grainsize, &Grainsize + 1); }
@@ -4187,7 +4187,7 @@
   }
 };
 
-/// \brief This represents 'nogroup' clause in the '#pragma omp ...' directive.
+/// This represents 'nogroup' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp taskloop nogroup
@@ -4195,14 +4195,14 @@
 /// In this example directive '#pragma omp taskloop' has 'nogroup' clause.
 class OMPNogroupClause : public OMPClause {
 public:
-  /// \brief Build 'nogroup' clause.
+  /// Build 'nogroup' clause.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
   OMPNogroupClause(SourceLocation StartLoc, SourceLocation EndLoc)
       : OMPClause(OMPC_nogroup, StartLoc, EndLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPNogroupClause()
       : OMPClause(OMPC_nogroup, SourceLocation(), SourceLocation()) {}
 
@@ -4215,7 +4215,7 @@
   }
 };
 
-/// \brief This represents 'num_tasks' clause in the '#pragma omp ...'
+/// This represents 'num_tasks' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -4226,17 +4226,17 @@
 class OMPNumTasksClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Safe iteration space distance.
+  /// Safe iteration space distance.
   Stmt *NumTasks = nullptr;
 
-  /// \brief Set safelen.
+  /// Set safelen.
   void setNumTasks(Expr *Size) { NumTasks = Size; }
 
 public:
-  /// \brief Build 'num_tasks' clause.
+  /// Build 'num_tasks' clause.
   ///
   /// \param Size Expression associated with this clause.
   /// \param StartLoc Starting location of the clause.
@@ -4246,17 +4246,17 @@
       : OMPClause(OMPC_num_tasks, StartLoc, EndLoc), LParenLoc(LParenLoc),
         NumTasks(Size) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   explicit OMPNumTasksClause()
       : OMPClause(OMPC_num_tasks, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Return safe iteration space distance.
+  /// Return safe iteration space distance.
   Expr *getNumTasks() const { return cast_or_null<Expr>(NumTasks); }
 
   child_range children() { return child_range(&NumTasks, &NumTasks + 1); }
@@ -4266,7 +4266,7 @@
   }
 };
 
-/// \brief This represents 'hint' clause in the '#pragma omp ...' directive.
+/// This represents 'hint' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp critical (name) hint(6)
@@ -4276,17 +4276,17 @@
 class OMPHintClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Hint expression of the 'hint' clause.
+  /// Hint expression of the 'hint' clause.
   Stmt *Hint = nullptr;
 
-  /// \brief Set hint expression.
+  /// Set hint expression.
   void setHint(Expr *H) { Hint = H; }
 
 public:
-  /// \brief Build 'hint' clause with expression \a Hint.
+  /// Build 'hint' clause with expression \a Hint.
   ///
   /// \param Hint Hint expression.
   /// \param StartLoc Starting location of the clause.
@@ -4297,16 +4297,16 @@
       : OMPClause(OMPC_hint, StartLoc, EndLoc), LParenLoc(LParenLoc),
         Hint(Hint) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   OMPHintClause() : OMPClause(OMPC_hint, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Returns the location of '('.
+  /// Returns the location of '('.
   SourceLocation getLParenLoc() const { return LParenLoc; }
 
-  /// \brief Returns number of threads.
+  /// Returns number of threads.
   Expr *getHint() const { return cast_or_null<Expr>(Hint); }
 
   child_range children() { return child_range(&Hint, &Hint + 1); }
@@ -4316,7 +4316,7 @@
   }
 };
 
-/// \brief This represents 'dist_schedule' clause in the '#pragma omp ...'
+/// This represents 'dist_schedule' clause in the '#pragma omp ...'
 /// directive.
 ///
 /// \code
@@ -4327,48 +4327,48 @@
 class OMPDistScheduleClause : public OMPClause, public OMPClauseWithPreInit {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief A kind of the 'schedule' clause.
+  /// A kind of the 'schedule' clause.
   OpenMPDistScheduleClauseKind Kind = OMPC_DIST_SCHEDULE_unknown;
 
-  /// \brief Start location of the schedule kind in source code.
+  /// Start location of the schedule kind in source code.
   SourceLocation KindLoc;
 
-  /// \brief Location of ',' (if any).
+  /// Location of ',' (if any).
   SourceLocation CommaLoc;
 
-  /// \brief Chunk size.
+  /// Chunk size.
   Expr *ChunkSize = nullptr;
 
-  /// \brief Set schedule kind.
+  /// Set schedule kind.
   ///
   /// \param K Schedule kind.
   void setDistScheduleKind(OpenMPDistScheduleClauseKind K) { Kind = K; }
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   ///
   /// \param Loc Location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Set schedule kind start location.
+  /// Set schedule kind start location.
   ///
   /// \param KLoc Schedule kind location.
   void setDistScheduleKindLoc(SourceLocation KLoc) { KindLoc = KLoc; }
 
-  /// \brief Set location of ','.
+  /// Set location of ','.
   ///
   /// \param Loc Location of ','.
   void setCommaLoc(SourceLocation Loc) { CommaLoc = Loc; }
 
-  /// \brief Set chunk size.
+  /// Set chunk size.
   ///
   /// \param E Chunk size.
   void setChunkSize(Expr *E) { ChunkSize = E; }
 
 public:
-  /// \brief Build 'dist_schedule' clause with schedule kind \a Kind and chunk
+  /// Build 'dist_schedule' clause with schedule kind \a Kind and chunk
   /// size expression \a ChunkSize.
   ///
   /// \param StartLoc Starting location of the clause.
@@ -4390,27 +4390,27 @@
     setPreInitStmt(HelperChunkSize);
   }
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   explicit OMPDistScheduleClause()
       : OMPClause(OMPC_dist_schedule, SourceLocation(), SourceLocation()),
         OMPClauseWithPreInit(this) {}
 
-  /// \brief Get kind of the clause.
+  /// Get kind of the clause.
   OpenMPDistScheduleClauseKind getDistScheduleKind() const { return Kind; }
 
-  /// \brief Get location of '('.
+  /// Get location of '('.
   SourceLocation getLParenLoc() { return LParenLoc; }
 
-  /// \brief Get kind location.
+  /// Get kind location.
   SourceLocation getDistScheduleKindLoc() { return KindLoc; }
 
-  /// \brief Get location of ','.
+  /// Get location of ','.
   SourceLocation getCommaLoc() { return CommaLoc; }
 
-  /// \brief Get chunk size.
+  /// Get chunk size.
   Expr *getChunkSize() { return ChunkSize; }
 
-  /// \brief Get chunk size.
+  /// Get chunk size.
   const Expr *getChunkSize() const { return ChunkSize; }
 
   child_range children() {
@@ -4423,7 +4423,7 @@
   }
 };
 
-/// \brief This represents 'defaultmap' clause in the '#pragma omp ...' directive.
+/// This represents 'defaultmap' clause in the '#pragma omp ...' directive.
 ///
 /// \code
 /// #pragma omp target defaultmap(tofrom: scalar)
@@ -4433,50 +4433,50 @@
 class OMPDefaultmapClause : public OMPClause {
   friend class OMPClauseReader;
 
-  /// \brief Location of '('.
+  /// Location of '('.
   SourceLocation LParenLoc;
 
-  /// \brief Modifiers for 'defaultmap' clause.
+  /// Modifiers for 'defaultmap' clause.
   OpenMPDefaultmapClauseModifier Modifier = OMPC_DEFAULTMAP_MODIFIER_unknown;
 
-  /// \brief Locations of modifiers.
+  /// Locations of modifiers.
   SourceLocation ModifierLoc;
 
-  /// \brief A kind of the 'defaultmap' clause.
+  /// A kind of the 'defaultmap' clause.
   OpenMPDefaultmapClauseKind Kind = OMPC_DEFAULTMAP_unknown;
 
-  /// \brief Start location of the defaultmap kind in source code.
+  /// Start location of the defaultmap kind in source code.
   SourceLocation KindLoc;
 
-  /// \brief Set defaultmap kind.
+  /// Set defaultmap kind.
   ///
   /// \param K Defaultmap kind.
   void setDefaultmapKind(OpenMPDefaultmapClauseKind K) { Kind = K; }
 
-  /// \brief Set the defaultmap modifier.
+  /// Set the defaultmap modifier.
   ///
   /// \param M Defaultmap modifier.
   void setDefaultmapModifier(OpenMPDefaultmapClauseModifier M) {
     Modifier = M;
   }
 
-  /// \brief Set location of the defaultmap modifier.
+  /// Set location of the defaultmap modifier.
   void setDefaultmapModifierLoc(SourceLocation Loc) {
     ModifierLoc = Loc;
   }
 
-  /// \brief Sets the location of '('.
+  /// Sets the location of '('.
   ///
   /// \param Loc Location of '('.
   void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
 
-  /// \brief Set defaultmap kind start location.
+  /// Set defaultmap kind start location.
   ///
   /// \param KLoc Defaultmap kind location.
   void setDefaultmapKindLoc(SourceLocation KLoc) { KindLoc = KLoc; }
 
 public:
-  /// \brief Build 'defaultmap' clause with defaultmap kind \a Kind
+  /// Build 'defaultmap' clause with defaultmap kind \a Kind
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param LParenLoc Location of '('.
@@ -4492,25 +4492,25 @@
       : OMPClause(OMPC_defaultmap, StartLoc, EndLoc), LParenLoc(LParenLoc),
         Modifier(M), ModifierLoc(MLoc), Kind(Kind), KindLoc(KLoc) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   explicit OMPDefaultmapClause()
       : OMPClause(OMPC_defaultmap, SourceLocation(), SourceLocation()) {}
 
-  /// \brief Get kind of the clause.
+  /// Get kind of the clause.
   OpenMPDefaultmapClauseKind getDefaultmapKind() const { return Kind; }
 
-  /// \brief Get the modifier of the clause.
+  /// Get the modifier of the clause.
   OpenMPDefaultmapClauseModifier getDefaultmapModifier() const {
     return Modifier;
   }
 
-  /// \brief Get location of '('.
+  /// Get location of '('.
   SourceLocation getLParenLoc() { return LParenLoc; }
 
-  /// \brief Get kind location.
+  /// Get kind location.
   SourceLocation getDefaultmapKindLoc() { return KindLoc; }
 
-  /// \brief Get the modifier location.
+  /// Get the modifier location.
   SourceLocation getDefaultmapModifierLoc() const {
     return ModifierLoc;
   }
@@ -4524,7 +4524,7 @@
   }
 };
 
-/// \brief This represents clause 'to' in the '#pragma omp ...'
+/// This represents clause 'to' in the '#pragma omp ...'
 /// directives.
 ///
 /// \code
@@ -4541,7 +4541,7 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Build clause with number of variables \a NumVars.
+  /// Build clause with number of variables \a NumVars.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
@@ -4558,7 +4558,7 @@
                                   NumUniqueDeclarations, NumComponentLists,
                                   NumComponents) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param NumVars Number of expressions listed in this clause.
   /// \param NumUniqueDeclarations Number of unique base declarations in this
@@ -4584,7 +4584,7 @@
   }
 
 public:
-  /// \brief Creates clause with a list of variables \a Vars.
+  /// Creates clause with a list of variables \a Vars.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -4598,7 +4598,7 @@
                              ArrayRef<ValueDecl *> Declarations,
                              MappableExprComponentListsRef ComponentLists);
 
-  /// \brief Creates an empty clause with the place for \a NumVars variables.
+  /// Creates an empty clause with the place for \a NumVars variables.
   ///
   /// \param C AST context.
   /// \param NumVars Number of expressions listed in the clause.
@@ -4622,7 +4622,7 @@
   }
 };
 
-/// \brief This represents clause 'from' in the '#pragma omp ...'
+/// This represents clause 'from' in the '#pragma omp ...'
 /// directives.
 ///
 /// \code
@@ -4640,7 +4640,7 @@
   friend OMPVarListClause;
   friend TrailingObjects;
 
-  /// \brief Build clause with number of variables \a NumVars.
+  /// Build clause with number of variables \a NumVars.
   ///
   /// \param StartLoc Starting location of the clause.
   /// \param EndLoc Ending location of the clause.
@@ -4657,7 +4657,7 @@
                                   NumVars, NumUniqueDeclarations,
                                   NumComponentLists, NumComponents) {}
 
-  /// \brief Build an empty clause.
+  /// Build an empty clause.
   ///
   /// \param NumVars Number of expressions listed in this clause.
   /// \param NumUniqueDeclarations Number of unique base declarations in this
@@ -4683,7 +4683,7 @@
   }
 
 public:
-  /// \brief Creates clause with a list of variables \a Vars.
+  /// Creates clause with a list of variables \a Vars.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the clause.
@@ -4697,7 +4697,7 @@
                                ArrayRef<ValueDecl *> Declarations,
                                MappableExprComponentListsRef ComponentLists);
 
-  /// \brief Creates an empty clause with the place for \a NumVars variables.
+  /// Creates an empty clause with the place for \a NumVars variables.
   ///
   /// \param C AST context.
   /// \param NumVars Number of expressions listed in the clause.
Index: cfe/trunk/include/clang/AST/OperationKinds.h
===================================================================
--- cfe/trunk/include/clang/AST/OperationKinds.h
+++ cfe/trunk/include/clang/AST/OperationKinds.h
@@ -33,15 +33,15 @@
 #include "clang/AST/OperationKinds.def"
 };
 
-/// \brief The kind of bridging performed by the Objective-C bridge cast.
+/// The kind of bridging performed by the Objective-C bridge cast.
 enum ObjCBridgeCastKind {
-  /// \brief Bridging via __bridge, which does nothing but reinterpret
+  /// Bridging via __bridge, which does nothing but reinterpret
   /// the bits.
   OBC_Bridge,
-  /// \brief Bridging via __bridge_transfer, which transfers ownership of an
+  /// Bridging via __bridge_transfer, which transfers ownership of an
   /// Objective-C pointer into ARC.
   OBC_BridgeTransfer,
-  /// \brief Bridging via __bridge_retain, which makes an ARC object available
+  /// Bridging via __bridge_retain, which makes an ARC object available
   /// as a +1 C pointer.
   OBC_BridgeRetained
 };
Index: cfe/trunk/include/clang/AST/OperationKinds.def
===================================================================
--- cfe/trunk/include/clang/AST/OperationKinds.def
+++ cfe/trunk/include/clang/AST/OperationKinds.def
@@ -227,87 +227,87 @@
 /// to a block pointer.  Block-to-block casts are bitcasts.
 CAST_OPERATION(AnyPointerToBlockPointerCast)
 
-/// \brief Converting between two Objective-C object types, which
+/// Converting between two Objective-C object types, which
 /// can occur when performing reference binding to an Objective-C
 /// object.
 CAST_OPERATION(ObjCObjectLValueCast)
 
-/// \brief A conversion of a floating point real to a floating point
+/// A conversion of a floating point real to a floating point
 /// complex of the original type.  Injects the value as the real
 /// component with a zero imaginary component.
 ///   float -> _Complex float
 CAST_OPERATION(FloatingRealToComplex)
 
-/// \brief Converts a floating point complex to floating point real
+/// Converts a floating point complex to floating point real
 /// of the source's element type.  Just discards the imaginary
 /// component.
 ///   _Complex long double -> long double
 CAST_OPERATION(FloatingComplexToReal)
 
-/// \brief Converts a floating point complex to bool by comparing
+/// Converts a floating point complex to bool by comparing
 /// against 0+0i.
 CAST_OPERATION(FloatingComplexToBoolean)
 
-/// \brief Converts between different floating point complex types.
+/// Converts between different floating point complex types.
 ///   _Complex float -> _Complex double
 CAST_OPERATION(FloatingComplexCast)
 
-/// \brief Converts from a floating complex to an integral complex.
+/// Converts from a floating complex to an integral complex.
 ///   _Complex float -> _Complex int
 CAST_OPERATION(FloatingComplexToIntegralComplex)
 
-/// \brief Converts from an integral real to an integral complex
+/// Converts from an integral real to an integral complex
 /// whose element type matches the source.  Injects the value as
 /// the real component with a zero imaginary component.
 ///   long -> _Complex long
 CAST_OPERATION(IntegralRealToComplex)
 
-/// \brief Converts an integral complex to an integral real of the
+/// Converts an integral complex to an integral real of the
 /// source's element type by discarding the imaginary component.
 ///   _Complex short -> short
 CAST_OPERATION(IntegralComplexToReal)
 
-/// \brief Converts an integral complex to bool by comparing against
+/// Converts an integral complex to bool by comparing against
 /// 0+0i.
 CAST_OPERATION(IntegralComplexToBoolean)
 
-/// \brief Converts between different integral complex types.
+/// Converts between different integral complex types.
 ///   _Complex char -> _Complex long long
 ///   _Complex unsigned int -> _Complex signed int
 CAST_OPERATION(IntegralComplexCast)
 
-/// \brief Converts from an integral complex to a floating complex.
+/// Converts from an integral complex to a floating complex.
 ///   _Complex unsigned -> _Complex float
 CAST_OPERATION(IntegralComplexToFloatingComplex)
 
-/// \brief [ARC] Produces a retainable object pointer so that it may
+/// [ARC] Produces a retainable object pointer so that it may
 /// be consumed, e.g. by being passed to a consuming parameter.
 /// Calls objc_retain.
 CAST_OPERATION(ARCProduceObject)
 
-/// \brief [ARC] Consumes a retainable object pointer that has just
+/// [ARC] Consumes a retainable object pointer that has just
 /// been produced, e.g. as the return value of a retaining call.
 /// Enters a cleanup to call objc_release at some indefinite time.
 CAST_OPERATION(ARCConsumeObject)
 
-/// \brief [ARC] Reclaim a retainable object pointer object that may
+/// [ARC] Reclaim a retainable object pointer object that may
 /// have been produced and autoreleased as part of a function return
 /// sequence.
 CAST_OPERATION(ARCReclaimReturnedObject)
 
-/// \brief [ARC] Causes a value of block type to be copied to the
+/// [ARC] Causes a value of block type to be copied to the
 /// heap, if it is not already there.  A number of other operations
 /// in ARC cause blocks to be copied; this is for cases where that
 /// would not otherwise be guaranteed, such as when casting to a
 /// non-block pointer type.
 CAST_OPERATION(ARCExtendBlockObject)
 
-/// \brief Converts from _Atomic(T) to T.
+/// Converts from _Atomic(T) to T.
 CAST_OPERATION(AtomicToNonAtomic)
-/// \brief Converts from T to _Atomic(T).
+/// Converts from T to _Atomic(T).
 CAST_OPERATION(NonAtomicToAtomic)
 
-/// \brief Causes a block literal to by copied to the heap and then 
+/// Causes a block literal to by copied to the heap and then 
 /// autoreleased.
 ///
 /// This particular cast kind is used for the conversion from a C++11
Index: cfe/trunk/include/clang/AST/ParentMap.h
===================================================================
--- cfe/trunk/include/clang/AST/ParentMap.h
+++ cfe/trunk/include/clang/AST/ParentMap.h
@@ -24,7 +24,7 @@
   ParentMap(Stmt* ASTRoot);
   ~ParentMap();
 
-  /// \brief Adds and/or updates the parent/child-relations of the complete
+  /// Adds and/or updates the parent/child-relations of the complete
   /// stmt tree of S. All children of S including indirect descendants are
   /// visited and updated or inserted but not the parents of S.
   void addStmt(Stmt* S);
Index: cfe/trunk/include/clang/AST/PrettyPrinter.h
===================================================================
--- cfe/trunk/include/clang/AST/PrettyPrinter.h
+++ cfe/trunk/include/clang/AST/PrettyPrinter.h
@@ -36,7 +36,7 @@
 /// This type is intended to be small and suitable for passing by value.
 /// It is very frequently copied.
 struct PrintingPolicy {
-  /// \brief Create a default printing policy for the specified language.
+  /// Create a default printing policy for the specified language.
   PrintingPolicy(const LangOptions &LO)
     : Indentation(2), SuppressSpecifiers(false),
       SuppressTagKeyword(LO.CPlusPlus),
Index: cfe/trunk/include/clang/AST/QualTypeNames.h
===================================================================
--- cfe/trunk/include/clang/AST/QualTypeNames.h
+++ cfe/trunk/include/clang/AST/QualTypeNames.h
@@ -63,7 +63,7 @@
 
 namespace clang {
 namespace TypeName {
-/// \brief Get the fully qualified name for a type. This includes full
+/// Get the fully qualified name for a type. This includes full
 /// qualification of all template parameters etc.
 ///
 /// \param[in] QT - the type for which the fully qualified name will be
@@ -75,7 +75,7 @@
                                   const PrintingPolicy &Policy,
                                   bool WithGlobalNsPrefix = false);
 
-/// \brief Generates a QualType that can be used to name the same type
+/// Generates a QualType that can be used to name the same type
 /// if used at the end of the current translation unit. This ignores
 /// issues such as type shadowing.
 ///
Index: cfe/trunk/include/clang/AST/RawCommentList.h
===================================================================
--- cfe/trunk/include/clang/AST/RawCommentList.h
+++ cfe/trunk/include/clang/AST/RawCommentList.h
@@ -132,7 +132,7 @@
   bool IsTrailingComment : 1;
   bool IsAlmostTrailingComment : 1;
 
-  /// \brief Constructor for AST deserialization.
+  /// Constructor for AST deserialization.
   RawComment(SourceRange SR, CommentKind K, bool IsTrailingComment,
              bool IsAlmostTrailingComment) :
     Range(SR), RawTextValid(false), BriefTextValid(false), Kind(K),
@@ -147,7 +147,7 @@
   friend class ASTReader;
 };
 
-/// \brief Compare comments' source locations.
+/// Compare comments' source locations.
 template<>
 class BeforeThanCompare<RawComment> {
   const SourceManager &SM;
@@ -164,7 +164,7 @@
   }
 };
 
-/// \brief This class represents all comments included in the translation unit,
+/// This class represents all comments included in the translation unit,
 /// sorted in order of appearance in the translation unit.
 class RawCommentList {
 public:
Index: cfe/trunk/include/clang/AST/RecordLayout.h
===================================================================
--- cfe/trunk/include/clang/AST/RecordLayout.h
+++ cfe/trunk/include/clang/AST/RecordLayout.h
@@ -111,7 +111,7 @@
     /// Only used for MS-ABI.
     bool EndsWithZeroSizedObject : 1;
 
-    /// \brief True if this class is zero sized or first base is zero sized or
+    /// True if this class is zero sized or first base is zero sized or
     /// has this property.  Only used for MS-ABI.
     bool LeadsWithZeroSizedBase : 1;
 
Index: cfe/trunk/include/clang/AST/RecursiveASTVisitor.h
===================================================================
--- cfe/trunk/include/clang/AST/RecursiveASTVisitor.h
+++ cfe/trunk/include/clang/AST/RecursiveASTVisitor.h
@@ -83,7 +83,7 @@
       return false;                                                            \
   } while (false)
 
-/// \brief A class that does preorder or postorder
+/// A class that does preorder or postorder
 /// depth-first traversal on the entire Clang AST and visits each node.
 ///
 /// This class performs three distinct tasks:
@@ -158,25 +158,25 @@
   typedef SmallVectorImpl<llvm::PointerIntPair<Stmt *, 1, bool>>
     DataRecursionQueue;
 
-  /// \brief Return a reference to the derived class.
+  /// Return a reference to the derived class.
   Derived &getDerived() { return *static_cast<Derived *>(this); }
 
-  /// \brief Return whether this visitor should recurse into
+  /// Return whether this visitor should recurse into
   /// template instantiations.
   bool shouldVisitTemplateInstantiations() const { return false; }
 
-  /// \brief Return whether this visitor should recurse into the types of
+  /// Return whether this visitor should recurse into the types of
   /// TypeLocs.
   bool shouldWalkTypesOfTypeLocs() const { return true; }
 
-  /// \brief Return whether this visitor should recurse into implicit
+  /// Return whether this visitor should recurse into implicit
   /// code, e.g., implicit constructors and destructors.
   bool shouldVisitImplicitCode() const { return false; }
 
-  /// \brief Return whether this visitor should traverse post-order.
+  /// Return whether this visitor should traverse post-order.
   bool shouldTraversePostOrder() const { return false; }
 
-  /// \brief Recursively visit a statement or expression, by
+  /// Recursively visit a statement or expression, by
   /// dispatching to Traverse*() based on the argument's dynamic type.
   ///
   /// \returns false if the visitation was terminated early, true
@@ -195,70 +195,70 @@
   /// \returns false if the visitation was terminated early, true otherwise.
   bool dataTraverseStmtPost(Stmt *S) { return true; }
 
-  /// \brief Recursively visit a type, by dispatching to
+  /// Recursively visit a type, by dispatching to
   /// Traverse*Type() based on the argument's getTypeClass() property.
   ///
   /// \returns false if the visitation was terminated early, true
   /// otherwise (including when the argument is a Null type).
   bool TraverseType(QualType T);
 
-  /// \brief Recursively visit a type with location, by dispatching to
+  /// Recursively visit a type with location, by dispatching to
   /// Traverse*TypeLoc() based on the argument type's getTypeClass() property.
   ///
   /// \returns false if the visitation was terminated early, true
   /// otherwise (including when the argument is a Null type location).
   bool TraverseTypeLoc(TypeLoc TL);
 
-  /// \brief Recursively visit an attribute, by dispatching to
+  /// Recursively visit an attribute, by dispatching to
   /// Traverse*Attr() based on the argument's dynamic type.
   ///
   /// \returns false if the visitation was terminated early, true
   /// otherwise (including when the argument is a Null type location).
   bool TraverseAttr(Attr *At);
 
-  /// \brief Recursively visit a declaration, by dispatching to
+  /// Recursively visit a declaration, by dispatching to
   /// Traverse*Decl() based on the argument's dynamic type.
   ///
   /// \returns false if the visitation was terminated early, true
   /// otherwise (including when the argument is NULL).
   bool TraverseDecl(Decl *D);
 
-  /// \brief Recursively visit a C++ nested-name-specifier.
+  /// Recursively visit a C++ nested-name-specifier.
   ///
   /// \returns false if the visitation was terminated early, true otherwise.
   bool TraverseNestedNameSpecifier(NestedNameSpecifier *NNS);
 
-  /// \brief Recursively visit a C++ nested-name-specifier with location
+  /// Recursively visit a C++ nested-name-specifier with location
   /// information.
   ///
   /// \returns false if the visitation was terminated early, true otherwise.
   bool TraverseNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS);
 
-  /// \brief Recursively visit a name with its location information.
+  /// Recursively visit a name with its location information.
   ///
   /// \returns false if the visitation was terminated early, true otherwise.
   bool TraverseDeclarationNameInfo(DeclarationNameInfo NameInfo);
 
-  /// \brief Recursively visit a template name and dispatch to the
+  /// Recursively visit a template name and dispatch to the
   /// appropriate method.
   ///
   /// \returns false if the visitation was terminated early, true otherwise.
   bool TraverseTemplateName(TemplateName Template);
 
-  /// \brief Recursively visit a template argument and dispatch to the
+  /// Recursively visit a template argument and dispatch to the
   /// appropriate method for the argument type.
   ///
   /// \returns false if the visitation was terminated early, true otherwise.
   // FIXME: migrate callers to TemplateArgumentLoc instead.
   bool TraverseTemplateArgument(const TemplateArgument &Arg);
 
-  /// \brief Recursively visit a template argument location and dispatch to the
+  /// Recursively visit a template argument location and dispatch to the
   /// appropriate method for the argument type.
   ///
   /// \returns false if the visitation was terminated early, true otherwise.
   bool TraverseTemplateArgumentLoc(const TemplateArgumentLoc &ArgLoc);
 
-  /// \brief Recursively visit a set of template arguments.
+  /// Recursively visit a set of template arguments.
   /// This can be overridden by a subclass, but it's not expected that
   /// will be needed -- this visitor always dispatches to another.
   ///
@@ -267,13 +267,13 @@
   bool TraverseTemplateArguments(const TemplateArgument *Args,
                                  unsigned NumArgs);
 
-  /// \brief Recursively visit a base specifier. This can be overridden by a
+  /// Recursively visit a base specifier. This can be overridden by a
   /// subclass.
   ///
   /// \returns false if the visitation was terminated early, true otherwise.
   bool TraverseCXXBaseSpecifier(const CXXBaseSpecifier &Base);
 
-  /// \brief Recursively visit a constructor initializer.  This
+  /// Recursively visit a constructor initializer.  This
   /// automatically dispatches to another visitor for the initializer
   /// expression, but not for the name of the initializer, so may
   /// be overridden for clients that need access to the name.
@@ -281,14 +281,14 @@
   /// \returns false if the visitation was terminated early, true otherwise.
   bool TraverseConstructorInitializer(CXXCtorInitializer *Init);
 
-  /// \brief Recursively visit a lambda capture. \c Init is the expression that
+  /// Recursively visit a lambda capture. \c Init is the expression that
   /// will be used to initialize the capture.
   ///
   /// \returns false if the visitation was terminated early, true otherwise.
   bool TraverseLambdaCapture(LambdaExpr *LE, const LambdaCapture *C,
                              Expr *Init);
 
-  /// \brief Recursively visit the body of a lambda expression.
+  /// Recursively visit the body of a lambda expression.
   ///
   /// This provides a hook for visitors that need more context when visiting
   /// \c LE->getBody().
@@ -296,7 +296,7 @@
   /// \returns false if the visitation was terminated early, true otherwise.
   bool TraverseLambdaBody(LambdaExpr *LE, DataRecursionQueue *Queue = nullptr);
 
-  /// \brief Recursively visit the syntactic or semantic form of an
+  /// Recursively visit the syntactic or semantic form of an
   /// initialization list.
   ///
   /// \returns false if the visitation was terminated early, true otherwise.
@@ -305,7 +305,7 @@
 
   // ---- Methods on Attrs ----
 
-  // \brief Visit an attribute.
+  // Visit an attribute.
   bool VisitAttr(Attr *A) { return true; }
 
 // Declare Traverse* and empty Visit* for all Attr classes.
@@ -529,7 +529,7 @@
   bool TraverseOMPClause(OMPClause *C);
 #define OPENMP_CLAUSE(Name, Class) bool Visit##Class(Class *C);
 #include "clang/Basic/OpenMPKinds.def"
-  /// \brief Process clauses with list of variables.
+  /// Process clauses with list of variables.
   template <typename T> bool VisitOMPClauseList(T *Node);
   /// Process clauses with pre-initis.
   bool VisitOMPClauseWithPreInit(OMPClauseWithPreInit *Node);
Index: cfe/trunk/include/clang/AST/Redeclarable.h
===================================================================
--- cfe/trunk/include/clang/AST/Redeclarable.h
+++ cfe/trunk/include/clang/AST/Redeclarable.h
@@ -82,7 +82,7 @@
 //        | link                +-----+                  |
 //        +-->-------------------------------------------+
 
-/// \brief Provides common interface for the Decls that can be redeclared.
+/// Provides common interface for the Decls that can be redeclared.
 template<typename decl_type>
 class Redeclarable {
 protected:
@@ -176,7 +176,7 @@
     return DeclLink(DeclLink::LatestLink, Ctx);
   }
 
-  /// \brief Points to the next redeclaration in the chain.
+  /// Points to the next redeclaration in the chain.
   ///
   /// If NextIsPrevious() is true, this is a link to the previous declaration
   /// of this same Decl. If NextIsLatest() is true, this is the first
@@ -203,7 +203,7 @@
       : RedeclLink(LatestDeclLink(Ctx)),
         First(static_cast<decl_type *>(this)) {}
 
-  /// \brief Return the previous declaration of this declaration or NULL if this
+  /// Return the previous declaration of this declaration or NULL if this
   /// is the first declaration.
   decl_type *getPreviousDecl() {
     if (RedeclLink.NextIsPrevious())
@@ -215,32 +215,32 @@
                  static_cast<const decl_type*>(this))->getPreviousDecl();
   }
 
-  /// \brief Return the first declaration of this declaration or itself if this
+  /// Return the first declaration of this declaration or itself if this
   /// is the only declaration.
   decl_type *getFirstDecl() { return First; }
 
-  /// \brief Return the first declaration of this declaration or itself if this
+  /// Return the first declaration of this declaration or itself if this
   /// is the only declaration.
   const decl_type *getFirstDecl() const { return First; }
 
-  /// \brief True if this is the first declaration in its redeclaration chain.
+  /// True if this is the first declaration in its redeclaration chain.
   bool isFirstDecl() const { return RedeclLink.NextIsLatest(); }
 
-  /// \brief Returns the most recent (re)declaration of this declaration.
+  /// Returns the most recent (re)declaration of this declaration.
   decl_type *getMostRecentDecl() {
     return getFirstDecl()->getNextRedeclaration();
   }
 
-  /// \brief Returns the most recent (re)declaration of this declaration.
+  /// Returns the most recent (re)declaration of this declaration.
   const decl_type *getMostRecentDecl() const {
     return getFirstDecl()->getNextRedeclaration();
   }
 
-  /// \brief Set the previous declaration. If PrevDecl is NULL, set this as the
+  /// Set the previous declaration. If PrevDecl is NULL, set this as the
   /// first and only declaration.
   void setPreviousDecl(decl_type *PrevDecl);
 
-  /// \brief Iterates through all the redeclarations of the same decl.
+  /// Iterates through all the redeclarations of the same decl.
   class redecl_iterator {
     /// Current - The current declaration.
     decl_type *Current = nullptr;
@@ -294,7 +294,7 @@
 
   using redecl_range = llvm::iterator_range<redecl_iterator>;
 
-  /// \brief Returns an iterator range for all the redeclarations of the same
+  /// Returns an iterator range for all the redeclarations of the same
   /// decl. It will iterate at least once (when this decl is the only one).
   redecl_range redecls() const {
     return redecl_range(redecl_iterator(const_cast<decl_type *>(
@@ -306,11 +306,11 @@
   redecl_iterator redecls_end() const { return redecls().end(); }
 };
 
-/// \brief Get the primary declaration for a declaration from an AST file. That
+/// Get the primary declaration for a declaration from an AST file. That
 /// will be the first-loaded declaration.
 Decl *getPrimaryMergedDecl(Decl *D);
 
-/// \brief Provides common interface for the Decls that cannot be redeclared,
+/// Provides common interface for the Decls that cannot be redeclared,
 /// but can be merged if the same declaration is brought in from multiple
 /// modules.
 template<typename decl_type>
@@ -318,7 +318,7 @@
 public:
   Mergeable() = default;
 
-  /// \brief Return the first declaration of this declaration or itself if this
+  /// Return the first declaration of this declaration or itself if this
   /// is the only declaration.
   decl_type *getFirstDecl() {
     auto *D = static_cast<decl_type *>(this);
@@ -327,7 +327,7 @@
     return cast<decl_type>(getPrimaryMergedDecl(const_cast<decl_type*>(D)));
   }
 
-  /// \brief Return the first declaration of this declaration or itself if this
+  /// Return the first declaration of this declaration or itself if this
   /// is the only declaration.
   const decl_type *getFirstDecl() const {
     const auto *D = static_cast<const decl_type *>(this);
@@ -336,7 +336,7 @@
     return cast<decl_type>(getPrimaryMergedDecl(const_cast<decl_type*>(D)));
   }
 
-  /// \brief Returns true if this is the first declaration.
+  /// Returns true if this is the first declaration.
   bool isFirstDecl() const { return getFirstDecl() == this; }
 };
 
Index: cfe/trunk/include/clang/AST/SelectorLocationsKind.h
===================================================================
--- cfe/trunk/include/clang/AST/SelectorLocationsKind.h
+++ cfe/trunk/include/clang/AST/SelectorLocationsKind.h
@@ -23,32 +23,32 @@
   class Expr;
   class ParmVarDecl;
 
-/// \brief Whether all locations of the selector identifiers are in a
+/// Whether all locations of the selector identifiers are in a
 /// "standard" position.
 enum SelectorLocationsKind {
-  /// \brief Non-standard.
+  /// Non-standard.
   SelLoc_NonStandard = 0,
 
-  /// \brief For nullary selectors, immediately before the end:
+  /// For nullary selectors, immediately before the end:
   ///    "[foo release]" / "-(void)release;"
   /// Or immediately before the arguments:
   ///    "[foo first:1 second:2]" / "-(id)first:(int)x second:(int)y;
   SelLoc_StandardNoSpace = 1,
 
-  /// \brief For nullary selectors, immediately before the end:
+  /// For nullary selectors, immediately before the end:
   ///    "[foo release]" / "-(void)release;"
   /// Or with a space between the arguments:
   ///    "[foo first: 1 second: 2]" / "-(id)first: (int)x second: (int)y;
   SelLoc_StandardWithSpace = 2
 };
 
-/// \brief Returns true if all \p SelLocs are in a "standard" location.
+/// Returns true if all \p SelLocs are in a "standard" location.
 SelectorLocationsKind hasStandardSelectorLocs(Selector Sel,
                                               ArrayRef<SourceLocation> SelLocs,
                                               ArrayRef<Expr *> Args,
                                               SourceLocation EndLoc);
 
-/// \brief Get the "standard" location of a selector identifier, e.g:
+/// Get the "standard" location of a selector identifier, e.g:
 /// For nullary selectors, immediately before ']': "[foo release]"
 ///
 /// \param WithArgSpace if true the standard location is with a space apart
@@ -60,13 +60,13 @@
                                       ArrayRef<Expr *> Args,
                                       SourceLocation EndLoc);
 
-/// \brief Returns true if all \p SelLocs are in a "standard" location.
+/// Returns true if all \p SelLocs are in a "standard" location.
 SelectorLocationsKind hasStandardSelectorLocs(Selector Sel,
                                               ArrayRef<SourceLocation> SelLocs,
                                               ArrayRef<ParmVarDecl *> Args,
                                               SourceLocation EndLoc);
 
-/// \brief Get the "standard" location of a selector identifier, e.g:
+/// Get the "standard" location of a selector identifier, e.g:
 /// For nullary selectors, immediately before ']': "[foo release]"
 ///
 /// \param WithArgSpace if true the standard location is with a space apart
Index: cfe/trunk/include/clang/AST/Stmt.h
===================================================================
--- cfe/trunk/include/clang/AST/Stmt.h
+++ cfe/trunk/include/clang/AST/Stmt.h
@@ -92,7 +92,7 @@
   class StmtBitfields {
     friend class Stmt;
 
-    /// \brief The statement class.
+    /// The statement class.
     unsigned sClass : 8;
   };
   enum { NumStmtBits = 8 };
@@ -272,14 +272,14 @@
     
     unsigned : NumExprBits;
     
-    /// \brief The kind of type trait, which is a value of a TypeTrait enumerator.
+    /// The kind of type trait, which is a value of a TypeTrait enumerator.
     unsigned Kind : 8;
     
-    /// \brief If this expression is not value-dependent, this indicates whether
+    /// If this expression is not value-dependent, this indicates whether
     /// the trait evaluated true or false.
     unsigned Value : 1;
 
-    /// \brief The number of arguments to this type trait.
+    /// The number of arguments to this type trait.
     unsigned NumArgs : 32 - 8 - 1 - NumExprBits;
   };
 
@@ -330,7 +330,7 @@
   void operator delete(void *, void *) noexcept {}
 
 public:
-  /// \brief A placeholder type used to construct an empty shell of a
+  /// A placeholder type used to construct an empty shell of a
   /// type, that will be filled in later (e.g., by some
   /// de-serialization).
   struct EmptyShell {};
@@ -369,11 +369,11 @@
   };
 
 private:
-  /// \brief Whether statistic collection is enabled.
+  /// Whether statistic collection is enabled.
   static bool StatisticsEnabled;
 
 protected:
-  /// \brief Construct an empty statement.
+  /// Construct an empty statement.
   explicit Stmt(StmtClass SC, EmptyShell) : Stmt(SC) {}
 
 public:
@@ -404,7 +404,7 @@
   static void EnableStatistics();
   static void PrintStats();
 
-  /// \brief Dumps the specified AST fragment and all subtrees to
+  /// Dumps the specified AST fragment and all subtrees to
   /// \c llvm::errs().
   void dump() const;
   void dump(SourceManager &SM) const;
@@ -432,7 +432,7 @@
     return const_cast<Stmt *>(this)->IgnoreImplicit();
   }
 
-  /// \brief Skip no-op (attributed, compound) container stmts and skip captured
+  /// Skip no-op (attributed, compound) container stmts and skip captured
   /// stmt at the top, if \a IgnoreCaptured is true.
   Stmt *IgnoreContainers(bool IgnoreCaptured = false);
   const Stmt *IgnoreContainers(bool IgnoreCaptured = false) const {
@@ -467,7 +467,7 @@
   const_child_iterator child_begin() const { return children().begin(); }
   const_child_iterator child_end() const { return children().end(); }
 
-  /// \brief Produce a unique representation of the given statement.
+  /// Produce a unique representation of the given statement.
   ///
   /// \param ID once the profiling operation is complete, will contain
   /// the unique representation of the given statement.
@@ -482,7 +482,7 @@
   void Profile(llvm::FoldingSetNodeID &ID, const ASTContext &Context,
                bool Canonical) const;
 
-  /// \brief Calculate a unique representation for a statement that is
+  /// Calculate a unique representation for a statement that is
   /// stable across compiler invocations.
   ///
   /// \param ID profile information will be stored in ID.
@@ -504,7 +504,7 @@
   DeclStmt(DeclGroupRef dg, SourceLocation startLoc, SourceLocation endLoc)
       : Stmt(DeclStmtClass), DG(dg), StartLoc(startLoc), EndLoc(endLoc) {}
 
-  /// \brief Build an empty declaration statement.
+  /// Build an empty declaration statement.
   explicit DeclStmt(EmptyShell Empty) : Stmt(DeclStmtClass, Empty) {}
 
   /// isSingleDecl - This method returns true if this DeclStmt refers
@@ -570,7 +570,7 @@
 class NullStmt : public Stmt {
   SourceLocation SemiLoc;
 
-  /// \brief True if the null statement was preceded by an empty macro, e.g:
+  /// True if the null statement was preceded by an empty macro, e.g:
   /// @code
   ///   #define CALL(x)
   ///   CALL(0);
@@ -585,7 +585,7 @@
       : Stmt(NullStmtClass), SemiLoc(L),
         HasLeadingEmptyMacro(hasLeadingEmptyMacro) {}
 
-  /// \brief Build an empty null statement.
+  /// Build an empty null statement.
   explicit NullStmt(EmptyShell Empty) : Stmt(NullStmtClass, Empty) {}
 
   SourceLocation getSemiLoc() const { return SemiLoc; }
@@ -622,13 +622,13 @@
   static CompoundStmt *Create(const ASTContext &C, ArrayRef<Stmt *> Stmts,
                               SourceLocation LB, SourceLocation RB);
 
-  // \brief Build an empty compound statement with a location.
+  // Build an empty compound statement with a location.
   explicit CompoundStmt(SourceLocation Loc)
       : Stmt(CompoundStmtClass), LBraceLoc(Loc), RBraceLoc(Loc) {
     CompoundStmtBits.NumStmts = 0;
   }
 
-  // \brief Build an empty compound statement.
+  // Build an empty compound statement.
   static CompoundStmt *CreateEmpty(const ASTContext &C, unsigned NumStmts);
 
   bool body_empty() const { return CompoundStmtBits.NumStmts == 0; }
@@ -767,7 +767,7 @@
     EllipsisLoc = ellipsisLoc;
   }
 
-  /// \brief Build an empty switch case statement.
+  /// Build an empty switch case statement.
   explicit CaseStmt(EmptyShell Empty) : SwitchCase(CaseStmtClass, Empty) {}
 
   SourceLocation getCaseLoc() const { return KeywordLoc; }
@@ -823,7 +823,7 @@
   DefaultStmt(SourceLocation DL, SourceLocation CL, Stmt *substmt) :
     SwitchCase(DefaultStmtClass, DL, CL), SubStmt(substmt) {}
 
-  /// \brief Build an empty default statement.
+  /// Build an empty default statement.
   explicit DefaultStmt(EmptyShell Empty)
       : SwitchCase(DefaultStmtClass, Empty) {}
 
@@ -868,7 +868,7 @@
                   "LabelStmt too big");
   }
 
-  // \brief Build an empty label statement.
+  // Build an empty label statement.
   explicit LabelStmt(EmptyShell Empty) : Stmt(LabelStmtClass, Empty) {}
 
   SourceLocation getIdentLoc() const { return IdentLoc; }
@@ -890,7 +890,7 @@
   }
 };
 
-/// \brief Represents an attribute applied to a statement.
+/// Represents an attribute applied to a statement.
 ///
 /// Represents an attribute applied to a statement. For example:
 ///   [[omp::for(...)]] for (...) { ... }
@@ -924,7 +924,7 @@
   static AttributedStmt *Create(const ASTContext &C, SourceLocation Loc,
                                 ArrayRef<const Attr*> Attrs, Stmt *SubStmt);
 
-  // \brief Build an empty attributed statement.
+  // Build an empty attributed statement.
   static AttributedStmt *CreateEmpty(const ASTContext &C, unsigned NumAttrs);
 
   SourceLocation getAttrLoc() const { return AttrLoc; }
@@ -959,10 +959,10 @@
          Stmt *then, SourceLocation EL = SourceLocation(),
          Stmt *elsev = nullptr);
 
-  /// \brief Build an empty if/then/else statement
+  /// Build an empty if/then/else statement
   explicit IfStmt(EmptyShell Empty) : Stmt(IfStmtClass, Empty) {}
 
-  /// \brief Retrieve the variable declared in this "if" statement, if any.
+  /// Retrieve the variable declared in this "if" statement, if any.
   ///
   /// In the following example, "x" is the condition variable.
   /// \code
@@ -1038,10 +1038,10 @@
 public:
   SwitchStmt(const ASTContext &C, Stmt *Init, VarDecl *Var, Expr *cond);
 
-  /// \brief Build a empty switch statement.
+  /// Build a empty switch statement.
   explicit SwitchStmt(EmptyShell Empty) : Stmt(SwitchStmtClass, Empty) {}
 
-  /// \brief Retrieve the variable declared in this "switch" statement, if any.
+  /// Retrieve the variable declared in this "switch" statement, if any.
   ///
   /// In the following example, "x" is the condition variable.
   /// \code
@@ -1072,7 +1072,7 @@
   void setBody(Stmt *S) { SubExprs[BODY] = S; }
   SwitchCase *getSwitchCaseList() { return FirstCase.getPointer(); }
 
-  /// \brief Set the case list for this switch statement.
+  /// Set the case list for this switch statement.
   void setSwitchCaseList(SwitchCase *SC) { FirstCase.setPointer(SC); }
 
   SourceLocation getSwitchLoc() const { return SwitchLoc; }
@@ -1124,10 +1124,10 @@
   WhileStmt(const ASTContext &C, VarDecl *Var, Expr *cond, Stmt *body,
             SourceLocation WL);
 
-  /// \brief Build an empty while statement.
+  /// Build an empty while statement.
   explicit WhileStmt(EmptyShell Empty) : Stmt(WhileStmtClass, Empty) {}
 
-  /// \brief Retrieve the variable declared in this "while" statement, if any.
+  /// Retrieve the variable declared in this "while" statement, if any.
   ///
   /// In the following example, "x" is the condition variable.
   /// \code
@@ -1186,7 +1186,7 @@
     SubExprs[BODY] = body;
   }
 
-  /// \brief Build an empty do-while statement.
+  /// Build an empty do-while statement.
   explicit DoStmt(EmptyShell Empty) : Stmt(DoStmtClass, Empty) {}
 
   Expr *getCond() { return reinterpret_cast<Expr*>(SubExprs[COND]); }
@@ -1231,12 +1231,12 @@
           Expr *Inc, Stmt *Body, SourceLocation FL, SourceLocation LP,
           SourceLocation RP);
 
-  /// \brief Build an empty for statement.
+  /// Build an empty for statement.
   explicit ForStmt(EmptyShell Empty) : Stmt(ForStmtClass, Empty) {}
 
   Stmt *getInit() { return SubExprs[INIT]; }
 
-  /// \brief Retrieve the variable declared in this "for" statement, if any.
+  /// Retrieve the variable declared in this "for" statement, if any.
   ///
   /// In the following example, "y" is the condition variable.
   /// \code
@@ -1300,7 +1300,7 @@
   GotoStmt(LabelDecl *label, SourceLocation GL, SourceLocation LL)
       : Stmt(GotoStmtClass), Label(label), GotoLoc(GL), LabelLoc(LL) {}
 
-  /// \brief Build an empty goto statement.
+  /// Build an empty goto statement.
   explicit GotoStmt(EmptyShell Empty) : Stmt(GotoStmtClass, Empty) {}
 
   LabelDecl *getLabel() const { return Label; }
@@ -1336,7 +1336,7 @@
     : Stmt(IndirectGotoStmtClass), GotoLoc(gotoLoc), StarLoc(starLoc),
       Target((Stmt*)target) {}
 
-  /// \brief Build an empty indirect goto statement.
+  /// Build an empty indirect goto statement.
   explicit IndirectGotoStmt(EmptyShell Empty)
       : Stmt(IndirectGotoStmtClass, Empty) {}
 
@@ -1374,7 +1374,7 @@
 public:
   ContinueStmt(SourceLocation CL) : Stmt(ContinueStmtClass), ContinueLoc(CL) {}
 
-  /// \brief Build an empty continue statement.
+  /// Build an empty continue statement.
   explicit ContinueStmt(EmptyShell Empty) : Stmt(ContinueStmtClass, Empty) {}
 
   SourceLocation getContinueLoc() const { return ContinueLoc; }
@@ -1403,7 +1403,7 @@
                   "BreakStmt too large");
   }
 
-  /// \brief Build an empty break statement.
+  /// Build an empty break statement.
   explicit BreakStmt(EmptyShell Empty) : Stmt(BreakStmtClass, Empty) {}
 
   SourceLocation getBreakLoc() const { return BreakLoc; }
@@ -1442,7 +1442,7 @@
       : Stmt(ReturnStmtClass), RetLoc(RL), RetExpr((Stmt *)E),
         NRVOCandidate(NRVOCandidate) {}
 
-  /// \brief Build an empty return expression.
+  /// Build an empty return expression.
   explicit ReturnStmt(EmptyShell Empty) : Stmt(ReturnStmtClass, Empty) {}
 
   const Expr *getRetValue() const;
@@ -1452,7 +1452,7 @@
   SourceLocation getReturnLoc() const { return RetLoc; }
   void setReturnLoc(SourceLocation L) { RetLoc = L; }
 
-  /// \brief Retrieve the variable that might be used for the named return
+  /// Retrieve the variable that might be used for the named return
   /// value optimization.
   ///
   /// The optimization itself can only be performed if the variable is
@@ -1484,11 +1484,11 @@
 
   SourceLocation AsmLoc;
 
-  /// \brief True if the assembly statement does not have any input or output
+  /// True if the assembly statement does not have any input or output
   /// operands.
   bool IsSimple;
 
-  /// \brief If true, treat this inline assembly as having side effects.
+  /// If true, treat this inline assembly as having side effects.
   /// This assembly statement should not be optimized, deleted or moved.
   bool IsVolatile;
 
@@ -1505,7 +1505,7 @@
         NumClobbers(numclobbers) {}
 
 public:
-  /// \brief Build an empty inline-assembly statement.
+  /// Build an empty inline-assembly statement.
   explicit AsmStmt(StmtClass SC, EmptyShell Empty) : Stmt(SC, Empty) {}
 
   SourceLocation getAsmLoc() const { return AsmLoc; }
@@ -1651,7 +1651,7 @@
              StringLiteral *asmstr, unsigned numclobbers,
              StringLiteral **clobbers, SourceLocation rparenloc);
 
-  /// \brief Build an empty inline-assembly statement.
+  /// Build an empty inline-assembly statement.
   explicit GCCAsmStmt(EmptyShell Empty) : AsmStmt(GCCAsmStmtClass, Empty) {}
 
   SourceLocation getRParenLoc() const { return RParenLoc; }
@@ -1828,7 +1828,7 @@
             ArrayRef<Expr*> exprs, StringRef asmstr,
             ArrayRef<StringRef> clobbers, SourceLocation endloc);
 
-  /// \brief Build an empty MS-style inline-assembly statement.
+  /// Build an empty MS-style inline-assembly statement.
   explicit MSAsmStmt(EmptyShell Empty) : AsmStmt(MSAsmStmtClass, Empty) {}
 
   SourceLocation getLBraceLoc() const { return LBraceLoc; }
@@ -2039,7 +2039,7 @@
   explicit SEHLeaveStmt(SourceLocation LL)
       : Stmt(SEHLeaveStmtClass), LeaveLoc(LL) {}
 
-  /// \brief Build an empty __leave statement.
+  /// Build an empty __leave statement.
   explicit SEHLeaveStmt(EmptyShell Empty) : Stmt(SEHLeaveStmtClass, Empty) {}
 
   SourceLocation getLeaveLoc() const { return LeaveLoc; }
@@ -2058,7 +2058,7 @@
   }
 };
 
-/// \brief This captures a statement into a function. For example, the following
+/// This captures a statement into a function. For example, the following
 /// pragma annotated compound statement can be represented as a CapturedStmt,
 /// and this compound statement is the body of an anonymous outlined function.
 /// @code
@@ -2069,7 +2069,7 @@
 /// @endcode
 class CapturedStmt : public Stmt {
 public:
-  /// \brief The different capture forms: by 'this', by reference, capture for
+  /// The different capture forms: by 'this', by reference, capture for
   /// variable-length array type etc.
   enum VariableCaptureKind {
     VCK_This,
@@ -2078,7 +2078,7 @@
     VCK_VLAType,
   };
 
-  /// \brief Describes the capture of either a variable, or 'this', or
+  /// Describes the capture of either a variable, or 'this', or
   /// variable-length array type.
   class Capture {
     llvm::PointerIntPair<VarDecl *, 2, VariableCaptureKind> VarAndKind;
@@ -2087,7 +2087,7 @@
   public:
     friend class ASTStmtReader;
 
-    /// \brief Create a new capture.
+    /// Create a new capture.
     ///
     /// \param Loc The source location associated with this capture.
     ///
@@ -2097,52 +2097,52 @@
     Capture(SourceLocation Loc, VariableCaptureKind Kind,
             VarDecl *Var = nullptr);
 
-    /// \brief Determine the kind of capture.
+    /// Determine the kind of capture.
     VariableCaptureKind getCaptureKind() const;
 
-    /// \brief Retrieve the source location at which the variable or 'this' was
+    /// Retrieve the source location at which the variable or 'this' was
     /// first used.
     SourceLocation getLocation() const { return Loc; }
 
-    /// \brief Determine whether this capture handles the C++ 'this' pointer.
+    /// Determine whether this capture handles the C++ 'this' pointer.
     bool capturesThis() const { return getCaptureKind() == VCK_This; }
 
-    /// \brief Determine whether this capture handles a variable (by reference).
+    /// Determine whether this capture handles a variable (by reference).
     bool capturesVariable() const { return getCaptureKind() == VCK_ByRef; }
 
-    /// \brief Determine whether this capture handles a variable by copy.
+    /// Determine whether this capture handles a variable by copy.
     bool capturesVariableByCopy() const {
       return getCaptureKind() == VCK_ByCopy;
     }
 
-    /// \brief Determine whether this capture handles a variable-length array
+    /// Determine whether this capture handles a variable-length array
     /// type.
     bool capturesVariableArrayType() const {
       return getCaptureKind() == VCK_VLAType;
     }
 
-    /// \brief Retrieve the declaration of the variable being captured.
+    /// Retrieve the declaration of the variable being captured.
     ///
     /// This operation is only valid if this capture captures a variable.
     VarDecl *getCapturedVar() const;
   };
 
 private:
-  /// \brief The number of variable captured, including 'this'.
+  /// The number of variable captured, including 'this'.
   unsigned NumCaptures;
 
-  /// \brief The pointer part is the implicit the outlined function and the 
+  /// The pointer part is the implicit the outlined function and the 
   /// int part is the captured region kind, 'CR_Default' etc.
   llvm::PointerIntPair<CapturedDecl *, 1, CapturedRegionKind> CapDeclAndKind;
 
-  /// \brief The record for captured variables, a RecordDecl or CXXRecordDecl.
+  /// The record for captured variables, a RecordDecl or CXXRecordDecl.
   RecordDecl *TheRecordDecl = nullptr;
 
-  /// \brief Construct a captured statement.
+  /// Construct a captured statement.
   CapturedStmt(Stmt *S, CapturedRegionKind Kind, ArrayRef<Capture> Captures,
                ArrayRef<Expr *> CaptureInits, CapturedDecl *CD, RecordDecl *RD);
 
-  /// \brief Construct an empty captured statement.
+  /// Construct an empty captured statement.
   CapturedStmt(EmptyShell Empty, unsigned NumCaptures);
 
   Stmt **getStoredStmts() { return reinterpret_cast<Stmt **>(this + 1); }
@@ -2167,36 +2167,36 @@
   static CapturedStmt *CreateDeserialized(const ASTContext &Context,
                                           unsigned NumCaptures);
 
-  /// \brief Retrieve the statement being captured.
+  /// Retrieve the statement being captured.
   Stmt *getCapturedStmt() { return getStoredStmts()[NumCaptures]; }
   const Stmt *getCapturedStmt() const { return getStoredStmts()[NumCaptures]; }
 
-  /// \brief Retrieve the outlined function declaration.
+  /// Retrieve the outlined function declaration.
   CapturedDecl *getCapturedDecl();
   const CapturedDecl *getCapturedDecl() const;
 
-  /// \brief Set the outlined function declaration.
+  /// Set the outlined function declaration.
   void setCapturedDecl(CapturedDecl *D);
 
-  /// \brief Retrieve the captured region kind.
+  /// Retrieve the captured region kind.
   CapturedRegionKind getCapturedRegionKind() const;
 
-  /// \brief Set the captured region kind.
+  /// Set the captured region kind.
   void setCapturedRegionKind(CapturedRegionKind Kind);
 
-  /// \brief Retrieve the record declaration for captured variables.
+  /// Retrieve the record declaration for captured variables.
   const RecordDecl *getCapturedRecordDecl() const { return TheRecordDecl; }
 
-  /// \brief Set the record declaration for captured variables.
+  /// Set the record declaration for captured variables.
   void setCapturedRecordDecl(RecordDecl *D) {
     assert(D && "null RecordDecl");
     TheRecordDecl = D;
   }
 
-  /// \brief True if this variable has been captured.
+  /// True if this variable has been captured.
   bool capturesVariable(const VarDecl *Var) const;
 
-  /// \brief An iterator that walks over the captures.
+  /// An iterator that walks over the captures.
   using capture_iterator = Capture *;
   using const_capture_iterator = const Capture *;
   using capture_range = llvm::iterator_range<capture_iterator>;
@@ -2209,24 +2209,24 @@
     return capture_const_range(capture_begin(), capture_end());
   }
 
-  /// \brief Retrieve an iterator pointing to the first capture.
+  /// Retrieve an iterator pointing to the first capture.
   capture_iterator capture_begin() { return getStoredCaptures(); }
   const_capture_iterator capture_begin() const { return getStoredCaptures(); }
 
-  /// \brief Retrieve an iterator pointing past the end of the sequence of
+  /// Retrieve an iterator pointing past the end of the sequence of
   /// captures.
   capture_iterator capture_end() const {
     return getStoredCaptures() + NumCaptures;
   }
 
-  /// \brief Retrieve the number of captures, including 'this'.
+  /// Retrieve the number of captures, including 'this'.
   unsigned capture_size() const { return NumCaptures; }
 
-  /// \brief Iterator that walks over the capture initialization arguments.
+  /// Iterator that walks over the capture initialization arguments.
   using capture_init_iterator = Expr **;
   using capture_init_range = llvm::iterator_range<capture_init_iterator>;
 
-  /// \brief Const iterator that walks over the capture initialization
+  /// Const iterator that walks over the capture initialization
   /// arguments.
   using const_capture_init_iterator = Expr *const *;
   using const_capture_init_range =
@@ -2240,7 +2240,7 @@
     return const_capture_init_range(capture_init_begin(), capture_init_end());
   }
 
-  /// \brief Retrieve the first initialization argument.
+  /// Retrieve the first initialization argument.
   capture_init_iterator capture_init_begin() {
     return reinterpret_cast<Expr **>(getStoredStmts());
   }
@@ -2249,7 +2249,7 @@
     return reinterpret_cast<Expr *const *>(getStoredStmts());
   }
 
-  /// \brief Retrieve the iterator pointing one past the last initialization
+  /// Retrieve the iterator pointing one past the last initialization
   /// argument.
   capture_init_iterator capture_init_end() {
     return capture_init_begin() + NumCaptures;
Index: cfe/trunk/include/clang/AST/StmtCXX.h
===================================================================
--- cfe/trunk/include/clang/AST/StmtCXX.h
+++ cfe/trunk/include/clang/AST/StmtCXX.h
@@ -210,7 +210,7 @@
   }
 };
 
-/// \brief Representation of a Microsoft __if_exists or __if_not_exists
+/// Representation of a Microsoft __if_exists or __if_not_exists
 /// statement with a dependent name.
 ///
 /// The __if_exists statement can be used to include a sequence of statements
@@ -257,25 +257,25 @@
     QualifierLoc(QualifierLoc), NameInfo(NameInfo),
     SubStmt(reinterpret_cast<Stmt *>(SubStmt)) { }
 
-  /// \brief Retrieve the location of the __if_exists or __if_not_exists
+  /// Retrieve the location of the __if_exists or __if_not_exists
   /// keyword.
   SourceLocation getKeywordLoc() const { return KeywordLoc; }
 
-  /// \brief Determine whether this is an __if_exists statement.
+  /// Determine whether this is an __if_exists statement.
   bool isIfExists() const { return IsIfExists; }
 
-  /// \brief Determine whether this is an __if_exists statement.
+  /// Determine whether this is an __if_exists statement.
   bool isIfNotExists() const { return !IsIfExists; }
 
-  /// \brief Retrieve the nested-name-specifier that qualifies this name, if
+  /// Retrieve the nested-name-specifier that qualifies this name, if
   /// any.
   NestedNameSpecifierLoc getQualifierLoc() const { return QualifierLoc; }
 
-  /// \brief Retrieve the name of the entity we're testing for, along with
+  /// Retrieve the name of the entity we're testing for, along with
   /// location information
   DeclarationNameInfo getNameInfo() const { return NameInfo; }
 
-  /// \brief Retrieve the compound statement that will be included in the
+  /// Retrieve the compound statement that will be included in the
   /// program only if the existence of the symbol matches the initial keyword.
   CompoundStmt *getSubStmt() const {
     return reinterpret_cast<CompoundStmt *>(SubStmt);
@@ -293,7 +293,7 @@
   }
 };
 
-/// \brief Represents the body of a coroutine. This wraps the normal function
+/// Represents the body of a coroutine. This wraps the normal function
 /// body and holds the additional semantic context required to set up and tear
 /// down the coroutine frame.
 class CoroutineBodyStmt final
@@ -355,7 +355,7 @@
     return getPromiseDecl()->getType()->isDependentType();
   }
 
-  /// \brief Retrieve the body of the coroutine as written. This will be either
+  /// Retrieve the body of the coroutine as written. This will be either
   /// a CompoundStmt or a TryStmt.
   Stmt *getBody() const {
     return getStoredStmts()[SubStmt::Body];
@@ -418,7 +418,7 @@
   }
 };
 
-/// \brief Represents a 'co_return' statement in the C++ Coroutines TS.
+/// Represents a 'co_return' statement in the C++ Coroutines TS.
 ///
 /// This statament models the initialization of the coroutine promise
 /// (encapsulating the eventual notional return value) from an expression
@@ -451,11 +451,11 @@
 
   SourceLocation getKeywordLoc() const { return CoreturnLoc; }
 
-  /// \brief Retrieve the operand of the 'co_return' statement. Will be nullptr
+  /// Retrieve the operand of the 'co_return' statement. Will be nullptr
   /// if none was specified.
   Expr *getOperand() const { return static_cast<Expr*>(SubStmts[Operand]); }
 
-  /// \brief Retrieve the promise call that results from this 'co_return'
+  /// Retrieve the promise call that results from this 'co_return'
   /// statement. Will be nullptr if either the coroutine has not yet been
   /// finalized or the coroutine has no eventual return type.
   Expr *getPromiseCall() const {
Index: cfe/trunk/include/clang/AST/StmtObjC.h
===================================================================
--- cfe/trunk/include/clang/AST/StmtObjC.h
+++ cfe/trunk/include/clang/AST/StmtObjC.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 /// \file
-/// \brief Defines the Objective-C statement AST node classes.
+/// Defines the Objective-C statement AST node classes.
 
 #ifndef LLVM_CLANG_AST_STMTOBJC_H
 #define LLVM_CLANG_AST_STMTOBJC_H
@@ -18,7 +18,7 @@
 
 namespace clang {
 
-/// \brief Represents Objective-C's collection statement.
+/// Represents Objective-C's collection statement.
 ///
 /// This is represented as 'for (element 'in' collection-expression)' stmt.
 class ObjCForCollectionStmt : public Stmt {
@@ -70,7 +70,7 @@
   }
 };
 
-/// \brief Represents Objective-C's \@catch statement.
+/// Represents Objective-C's \@catch statement.
 class ObjCAtCatchStmt : public Stmt {
 private:
   VarDecl *ExceptionDecl;
@@ -116,7 +116,7 @@
   child_range children() { return child_range(&Body, &Body + 1); }
 };
 
-/// \brief Represents Objective-C's \@finally statement
+/// Represents Objective-C's \@finally statement
 class ObjCAtFinallyStmt : public Stmt {
   SourceLocation AtFinallyLoc;
   Stmt *AtFinallyStmt;
@@ -150,7 +150,7 @@
   }
 };
 
-/// \brief Represents Objective-C's \@try ... \@catch ... \@finally statement.
+/// Represents Objective-C's \@try ... \@catch ... \@finally statement.
 class ObjCAtTryStmt : public Stmt {
 private:
   // The location of the @ in the \@try.
@@ -162,7 +162,7 @@
   // Whether this statement has a \@finally statement.
   bool HasFinally : 1;
   
-  /// \brief Retrieve the statements that are stored after this \@try statement.
+  /// Retrieve the statements that are stored after this \@try statement.
   ///
   /// The order of the statements in memory follows the order in the source,
   /// with the \@try body first, followed by the \@catch statements (if any)
@@ -189,38 +189,38 @@
   static ObjCAtTryStmt *CreateEmpty(const ASTContext &Context,
                                     unsigned NumCatchStmts, bool HasFinally);
   
-  /// \brief Retrieve the location of the @ in the \@try.
+  /// Retrieve the location of the @ in the \@try.
   SourceLocation getAtTryLoc() const { return AtTryLoc; }
   void setAtTryLoc(SourceLocation Loc) { AtTryLoc = Loc; }
 
-  /// \brief Retrieve the \@try body.
+  /// Retrieve the \@try body.
   const Stmt *getTryBody() const { return getStmts()[0]; }
   Stmt *getTryBody() { return getStmts()[0]; }
   void setTryBody(Stmt *S) { getStmts()[0] = S; }
 
-  /// \brief Retrieve the number of \@catch statements in this try-catch-finally
+  /// Retrieve the number of \@catch statements in this try-catch-finally
   /// block.
   unsigned getNumCatchStmts() const { return NumCatchStmts; }
   
-  /// \brief Retrieve a \@catch statement.
+  /// Retrieve a \@catch statement.
   const ObjCAtCatchStmt *getCatchStmt(unsigned I) const {
     assert(I < NumCatchStmts && "Out-of-bounds @catch index");
     return cast_or_null<ObjCAtCatchStmt>(getStmts()[I + 1]);
   }
   
-  /// \brief Retrieve a \@catch statement.
+  /// Retrieve a \@catch statement.
   ObjCAtCatchStmt *getCatchStmt(unsigned I) {
     assert(I < NumCatchStmts && "Out-of-bounds @catch index");
     return cast_or_null<ObjCAtCatchStmt>(getStmts()[I + 1]);
   }
   
-  /// \brief Set a particular catch statement.
+  /// Set a particular catch statement.
   void setCatchStmt(unsigned I, ObjCAtCatchStmt *S) {
     assert(I < NumCatchStmts && "Out-of-bounds @catch index");
     getStmts()[I + 1] = S;
   }
   
-  /// \brief Retrieve the \@finally statement, if any.
+  /// Retrieve the \@finally statement, if any.
   const ObjCAtFinallyStmt *getFinallyStmt() const {
     if (!HasFinally)
       return nullptr;
@@ -251,7 +251,7 @@
   }
 };
 
-/// \brief Represents Objective-C's \@synchronized statement.
+/// Represents Objective-C's \@synchronized statement.
 ///
 /// Example:
 /// \code
@@ -309,7 +309,7 @@
   }
 };
 
-/// \brief Represents Objective-C's \@throw statement.
+/// Represents Objective-C's \@throw statement.
 class ObjCAtThrowStmt : public Stmt {
   SourceLocation AtThrowLoc;
   Stmt *Throw;
@@ -341,7 +341,7 @@
   child_range children() { return child_range(&Throw, &Throw+1); }
 };
 
-/// \brief Represents Objective-C's \@autoreleasepool Statement
+/// Represents Objective-C's \@autoreleasepool Statement
 class ObjCAutoreleasePoolStmt : public Stmt {
   SourceLocation AtLoc;
   Stmt *SubStmt;
Index: cfe/trunk/include/clang/AST/StmtOpenMP.h
===================================================================
--- cfe/trunk/include/clang/AST/StmtOpenMP.h
+++ cfe/trunk/include/clang/AST/StmtOpenMP.h
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 /// \file
-/// \brief This file defines OpenMP AST classes for executable directives and
+/// This file defines OpenMP AST classes for executable directives and
 /// clauses.
 ///
 //===----------------------------------------------------------------------===//
@@ -27,28 +27,28 @@
 // AST classes for directives.
 //===----------------------------------------------------------------------===//
 
-/// \brief This is a basic class for representing single OpenMP executable
+/// This is a basic class for representing single OpenMP executable
 /// directive.
 ///
 class OMPExecutableDirective : public Stmt {
   friend class ASTStmtReader;
-  /// \brief Kind of the directive.
+  /// Kind of the directive.
   OpenMPDirectiveKind Kind;
-  /// \brief Starting location of the directive (directive keyword).
+  /// Starting location of the directive (directive keyword).
   SourceLocation StartLoc;
-  /// \brief Ending location of the directive.
+  /// Ending location of the directive.
   SourceLocation EndLoc;
-  /// \brief Numbers of clauses.
+  /// Numbers of clauses.
   const unsigned NumClauses;
-  /// \brief Number of child expressions/stmts.
+  /// Number of child expressions/stmts.
   const unsigned NumChildren;
-  /// \brief Offset from this to the start of clauses.
+  /// Offset from this to the start of clauses.
   /// There are NumClauses pointers to clauses, they are followed by
   /// NumChildren pointers to child stmts/exprs (if the directive type
   /// requires an associated stmt, then it has to be the first of them).
   const unsigned ClausesOffset;
 
-  /// \brief Get the clauses storage.
+  /// Get the clauses storage.
   MutableArrayRef<OMPClause *> getClauses() {
     OMPClause **ClauseStorage = reinterpret_cast<OMPClause **>(
         reinterpret_cast<char *>(this) + ClausesOffset);
@@ -56,7 +56,7 @@
   }
 
 protected:
-  /// \brief Build instance of directive of class \a K.
+  /// Build instance of directive of class \a K.
   ///
   /// \param SC Statement class.
   /// \param K Kind of OpenMP directive.
@@ -72,13 +72,13 @@
         NumChildren(NumChildren),
         ClausesOffset(llvm::alignTo(sizeof(T), alignof(OMPClause *))) {}
 
-  /// \brief Sets the list of variables for this clause.
+  /// Sets the list of variables for this clause.
   ///
   /// \param Clauses The list of clauses for the directive.
   ///
   void setClauses(ArrayRef<OMPClause *> Clauses);
 
-  /// \brief Set the associated statement for the directive.
+  /// Set the associated statement for the directive.
   ///
   /// /param S Associated statement.
   ///
@@ -88,7 +88,7 @@
   }
 
 public:
-  /// \brief Iterates over a filtered subrange of clauses applied to a
+  /// Iterates over a filtered subrange of clauses applied to a
   /// directive.
   ///
   /// This iterator visits only clauses of type SpecificClause.
@@ -164,35 +164,35 @@
     return Clauses.begin() != Clauses.end();
   }
 
-  /// \brief Returns starting location of directive kind.
+  /// Returns starting location of directive kind.
   SourceLocation getLocStart() const { return StartLoc; }
-  /// \brief Returns ending location of directive.
+  /// Returns ending location of directive.
   SourceLocation getLocEnd() const { return EndLoc; }
 
-  /// \brief Set starting location of directive kind.
+  /// Set starting location of directive kind.
   ///
   /// \param Loc New starting location of directive.
   ///
   void setLocStart(SourceLocation Loc) { StartLoc = Loc; }
-  /// \brief Set ending location of directive.
+  /// Set ending location of directive.
   ///
   /// \param Loc New ending location of directive.
   ///
   void setLocEnd(SourceLocation Loc) { EndLoc = Loc; }
 
-  /// \brief Get number of clauses.
+  /// Get number of clauses.
   unsigned getNumClauses() const { return NumClauses; }
 
-  /// \brief Returns specified clause.
+  /// Returns specified clause.
   ///
   /// \param i Number of clause.
   ///
   OMPClause *getClause(unsigned i) const { return clauses()[i]; }
 
-  /// \brief Returns true if directive has associated statement.
+  /// Returns true if directive has associated statement.
   bool hasAssociatedStmt() const { return NumChildren > 0; }
 
-  /// \brief Returns statement associated with the directive.
+  /// Returns statement associated with the directive.
   const Stmt *getAssociatedStmt() const {
     assert(hasAssociatedStmt() && "no associated statement.");
     return *child_begin();
@@ -202,7 +202,7 @@
     return *child_begin();
   }
 
-  /// \brief Returns the captured statement associated with the
+  /// Returns the captured statement associated with the
   /// component region within the (combined) directive.
   //
   // \param RegionKind Component region kind.
@@ -262,7 +262,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp parallel' directive.
+/// This represents '#pragma omp parallel' directive.
 ///
 /// \code
 /// #pragma omp parallel private(a,b) reduction(+: c,d)
@@ -273,10 +273,10 @@
 ///
 class OMPParallelDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief true if the construct has inner cancel directive.
+  /// true if the construct has inner cancel directive.
   bool HasCancel;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive (directive keyword).
   /// \param EndLoc Ending Location of the directive.
@@ -287,7 +287,7 @@
                                StartLoc, EndLoc, NumClauses, 1),
         HasCancel(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -297,11 +297,11 @@
                                1),
         HasCancel(false) {}
 
-  /// \brief Set cancel state.
+  /// Set cancel state.
   void setHasCancel(bool Has) { HasCancel = Has; }
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -314,7 +314,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, bool HasCancel);
 
-  /// \brief Creates an empty directive with the place for \a N clauses.
+  /// Creates an empty directive with the place for \a N clauses.
   ///
   /// \param C AST context.
   /// \param NumClauses Number of clauses.
@@ -322,7 +322,7 @@
   static OMPParallelDirective *CreateEmpty(const ASTContext &C,
                                            unsigned NumClauses, EmptyShell);
 
-  /// \brief Return true if current directive has inner cancel directive.
+  /// Return true if current directive has inner cancel directive.
   bool hasCancel() const { return HasCancel; }
 
   static bool classof(const Stmt *T) {
@@ -330,15 +330,15 @@
   }
 };
 
-/// \brief This is a common base class for loop directives ('omp simd', 'omp
+/// This is a common base class for loop directives ('omp simd', 'omp
 /// for', 'omp for simd' etc.). It is responsible for the loop code generation.
 ///
 class OMPLoopDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Number of collapsed loops as specified by 'collapse' clause.
+  /// Number of collapsed loops as specified by 'collapse' clause.
   unsigned CollapsedNum;
 
-  /// \brief Offsets to the stored exprs.
+  /// Offsets to the stored exprs.
   /// This enumeration contains offsets to all the pointers to children
   /// expressions stored in OMPLoopDirective.
   /// The first 9 children are necessary for all the loop directives,
@@ -395,21 +395,21 @@
     CombinedDistributeEnd = 28,
   };
 
-  /// \brief Get the counters storage.
+  /// Get the counters storage.
   MutableArrayRef<Expr *> getCounters() {
     Expr **Storage = reinterpret_cast<Expr **>(
         &(*(std::next(child_begin(), getArraysOffset(getDirectiveKind())))));
     return MutableArrayRef<Expr *>(Storage, CollapsedNum);
   }
 
-  /// \brief Get the private counters storage.
+  /// Get the private counters storage.
   MutableArrayRef<Expr *> getPrivateCounters() {
     Expr **Storage = reinterpret_cast<Expr **>(&*std::next(
         child_begin(), getArraysOffset(getDirectiveKind()) + CollapsedNum));
     return MutableArrayRef<Expr *>(Storage, CollapsedNum);
   }
 
-  /// \brief Get the updates storage.
+  /// Get the updates storage.
   MutableArrayRef<Expr *> getInits() {
     Expr **Storage = reinterpret_cast<Expr **>(
         &*std::next(child_begin(),
@@ -417,7 +417,7 @@
     return MutableArrayRef<Expr *>(Storage, CollapsedNum);
   }
 
-  /// \brief Get the updates storage.
+  /// Get the updates storage.
   MutableArrayRef<Expr *> getUpdates() {
     Expr **Storage = reinterpret_cast<Expr **>(
         &*std::next(child_begin(),
@@ -425,7 +425,7 @@
     return MutableArrayRef<Expr *>(Storage, CollapsedNum);
   }
 
-  /// \brief Get the final counter updates storage.
+  /// Get the final counter updates storage.
   MutableArrayRef<Expr *> getFinals() {
     Expr **Storage = reinterpret_cast<Expr **>(
         &*std::next(child_begin(),
@@ -434,7 +434,7 @@
   }
 
 protected:
-  /// \brief Build instance of loop directive of class \a Kind.
+  /// Build instance of loop directive of class \a Kind.
   ///
   /// \param SC Statement class.
   /// \param Kind Kind of OpenMP directive.
@@ -454,7 +454,7 @@
                                    NumSpecialChildren),
         CollapsedNum(CollapsedNum) {}
 
-  /// \brief Offset to the start of children expression arrays.
+  /// Offset to the start of children expression arrays.
   static unsigned getArraysOffset(OpenMPDirectiveKind Kind) {
     if (isOpenMPLoopBoundSharingDirective(Kind))
       return CombinedDistributeEnd;
@@ -464,7 +464,7 @@
     return DefaultEnd;
   }
 
-  /// \brief Children number.
+  /// Children number.
   static unsigned numLoopChildren(unsigned CollapsedNum,
                                   OpenMPDirectiveKind Kind) {
     return getArraysOffset(Kind) + 5 * CollapsedNum; // Counters,
@@ -637,64 +637,64 @@
     Expr *NUB;
   };
 
-  /// \brief The expressions built for the OpenMP loop CodeGen for the
+  /// The expressions built for the OpenMP loop CodeGen for the
   /// whole collapsed loop nest.
   struct HelperExprs {
-    /// \brief Loop iteration variable.
+    /// Loop iteration variable.
     Expr *IterationVarRef;
-    /// \brief Loop last iteration number.
+    /// Loop last iteration number.
     Expr *LastIteration;
-    /// \brief Loop number of iterations.
+    /// Loop number of iterations.
     Expr *NumIterations;
-    /// \brief Calculation of last iteration.
+    /// Calculation of last iteration.
     Expr *CalcLastIteration;
-    /// \brief Loop pre-condition.
+    /// Loop pre-condition.
     Expr *PreCond;
-    /// \brief Loop condition.
+    /// Loop condition.
     Expr *Cond;
-    /// \brief Loop iteration variable init.
+    /// Loop iteration variable init.
     Expr *Init;
-    /// \brief Loop increment.
+    /// Loop increment.
     Expr *Inc;
-    /// \brief IsLastIteration - local flag variable passed to runtime.
+    /// IsLastIteration - local flag variable passed to runtime.
     Expr *IL;
-    /// \brief LowerBound - local variable passed to runtime.
+    /// LowerBound - local variable passed to runtime.
     Expr *LB;
-    /// \brief UpperBound - local variable passed to runtime.
+    /// UpperBound - local variable passed to runtime.
     Expr *UB;
-    /// \brief Stride - local variable passed to runtime.
+    /// Stride - local variable passed to runtime.
     Expr *ST;
-    /// \brief EnsureUpperBound -- expression UB = min(UB, NumIterations).
+    /// EnsureUpperBound -- expression UB = min(UB, NumIterations).
     Expr *EUB;
-    /// \brief Update of LowerBound for statically scheduled 'omp for' loops.
+    /// Update of LowerBound for statically scheduled 'omp for' loops.
     Expr *NLB;
-    /// \brief Update of UpperBound for statically scheduled 'omp for' loops.
+    /// Update of UpperBound for statically scheduled 'omp for' loops.
     Expr *NUB;
-    /// \brief PreviousLowerBound - local variable passed to runtime in the
+    /// PreviousLowerBound - local variable passed to runtime in the
     /// enclosing schedule or null if that does not apply.
     Expr *PrevLB;
-    /// \brief PreviousUpperBound - local variable passed to runtime in the
+    /// PreviousUpperBound - local variable passed to runtime in the
     /// enclosing schedule or null if that does not apply.
     Expr *PrevUB;
-    /// \brief DistInc - increment expression for distribute loop when found
+    /// DistInc - increment expression for distribute loop when found
     /// combined with a further loop level (e.g. in 'distribute parallel for')
     /// expression IV = IV + ST
     Expr *DistInc;
-    /// \brief PrevEUB - expression similar to EUB but to be used when loop
+    /// PrevEUB - expression similar to EUB but to be used when loop
     /// scheduling uses PrevLB and PrevUB (e.g.  in 'distribute parallel for'
     /// when ensuring that the UB is either the calculated UB by the runtime or
     /// the end of the assigned distribute chunk)
     /// expression UB = min (UB, PrevUB)
     Expr *PrevEUB;
-    /// \brief Counters Loop counters.
+    /// Counters Loop counters.
     SmallVector<Expr *, 4> Counters;
-    /// \brief PrivateCounters Loop counters.
+    /// PrivateCounters Loop counters.
     SmallVector<Expr *, 4> PrivateCounters;
-    /// \brief Expressions for loop counters inits for CodeGen.
+    /// Expressions for loop counters inits for CodeGen.
     SmallVector<Expr *, 4> Inits;
-    /// \brief Expressions for loop counters update for CodeGen.
+    /// Expressions for loop counters update for CodeGen.
     SmallVector<Expr *, 4> Updates;
-    /// \brief Final loop counter values for GodeGen.
+    /// Final loop counter values for GodeGen.
     SmallVector<Expr *, 4> Finals;
     /// Init statement for all captured expressions.
     Stmt *PreInits;
@@ -702,7 +702,7 @@
     /// Expressions used when combining OpenMP loop pragmas
     DistCombinedHelperExprs DistCombinedFields;
 
-    /// \brief Check if all the expressions are built (does not check the
+    /// Check if all the expressions are built (does not check the
     /// worksharing ones).
     bool builtAll() {
       return IterationVarRef != nullptr && LastIteration != nullptr &&
@@ -710,7 +710,7 @@
              Cond != nullptr && Init != nullptr && Inc != nullptr;
     }
 
-    /// \brief Initialize all the fields to null.
+    /// Initialize all the fields to null.
     /// \param Size Number of elements in the counters/finals/updates arrays.
     void clear(unsigned Size) {
       IterationVarRef = nullptr;
@@ -755,7 +755,7 @@
     }
   };
 
-  /// \brief Get number of collapsed loops.
+  /// Get number of collapsed loops.
   unsigned getCollapsedNumber() const { return CollapsedNum; }
 
   Expr *getIterationVariable() const {
@@ -991,7 +991,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp simd' directive.
+/// This represents '#pragma omp simd' directive.
 ///
 /// \code
 /// #pragma omp simd private(a,b) linear(i,j:s) reduction(+:c,d)
@@ -1002,7 +1002,7 @@
 ///
 class OMPSimdDirective : public OMPLoopDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1014,7 +1014,7 @@
       : OMPLoopDirective(this, OMPSimdDirectiveClass, OMPD_simd, StartLoc,
                          EndLoc, CollapsedNum, NumClauses) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -1025,7 +1025,7 @@
                          NumClauses) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1041,7 +1041,7 @@
                                   Stmt *AssociatedStmt,
                                   const HelperExprs &Exprs);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
@@ -1056,7 +1056,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp for' directive.
+/// This represents '#pragma omp for' directive.
 ///
 /// \code
 /// #pragma omp for private(a,b) reduction(+:c,d)
@@ -1068,10 +1068,10 @@
 class OMPForDirective : public OMPLoopDirective {
   friend class ASTStmtReader;
 
-  /// \brief true if current directive has inner cancel directive.
+  /// true if current directive has inner cancel directive.
   bool HasCancel;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1084,7 +1084,7 @@
                          CollapsedNum, NumClauses),
         HasCancel(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -1094,11 +1094,11 @@
                          SourceLocation(), CollapsedNum, NumClauses),
         HasCancel(false) {}
 
-  /// \brief Set cancel state.
+  /// Set cancel state.
   void setHasCancel(bool Has) { HasCancel = Has; }
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1115,7 +1115,7 @@
                                  Stmt *AssociatedStmt, const HelperExprs &Exprs,
                                  bool HasCancel);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
@@ -1125,7 +1125,7 @@
   static OMPForDirective *CreateEmpty(const ASTContext &C, unsigned NumClauses,
                                       unsigned CollapsedNum, EmptyShell);
 
-  /// \brief Return true if current directive has inner cancel directive.
+  /// Return true if current directive has inner cancel directive.
   bool hasCancel() const { return HasCancel; }
 
   static bool classof(const Stmt *T) {
@@ -1133,7 +1133,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp for simd' directive.
+/// This represents '#pragma omp for simd' directive.
 ///
 /// \code
 /// #pragma omp for simd private(a,b) linear(i,j:s) reduction(+:c,d)
@@ -1144,7 +1144,7 @@
 ///
 class OMPForSimdDirective : public OMPLoopDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1156,7 +1156,7 @@
       : OMPLoopDirective(this, OMPForSimdDirectiveClass, OMPD_for_simd,
                          StartLoc, EndLoc, CollapsedNum, NumClauses) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -1167,7 +1167,7 @@
                          NumClauses) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1182,7 +1182,7 @@
          unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
          Stmt *AssociatedStmt, const HelperExprs &Exprs);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
@@ -1198,7 +1198,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp sections' directive.
+/// This represents '#pragma omp sections' directive.
 ///
 /// \code
 /// #pragma omp sections private(a,b) reduction(+:c,d)
@@ -1210,10 +1210,10 @@
 class OMPSectionsDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
 
-  /// \brief true if current directive has inner cancel directive.
+  /// true if current directive has inner cancel directive.
   bool HasCancel;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1225,7 +1225,7 @@
                                StartLoc, EndLoc, NumClauses, 1),
         HasCancel(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -1235,11 +1235,11 @@
                                1),
         HasCancel(false) {}
 
-  /// \brief Set cancel state.
+  /// Set cancel state.
   void setHasCancel(bool Has) { HasCancel = Has; }
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1252,7 +1252,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, bool HasCancel);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -1261,7 +1261,7 @@
   static OMPSectionsDirective *CreateEmpty(const ASTContext &C,
                                            unsigned NumClauses, EmptyShell);
 
-  /// \brief Return true if current directive has inner cancel directive.
+  /// Return true if current directive has inner cancel directive.
   bool hasCancel() const { return HasCancel; }
 
   static bool classof(const Stmt *T) {
@@ -1269,7 +1269,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp section' directive.
+/// This represents '#pragma omp section' directive.
 ///
 /// \code
 /// #pragma omp section
@@ -1278,10 +1278,10 @@
 class OMPSectionDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
 
-  /// \brief true if current directive has inner cancel directive.
+  /// true if current directive has inner cancel directive.
   bool HasCancel;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1291,7 +1291,7 @@
                                StartLoc, EndLoc, 0, 1),
         HasCancel(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   explicit OMPSectionDirective()
       : OMPExecutableDirective(this, OMPSectionDirectiveClass, OMPD_section,
@@ -1299,7 +1299,7 @@
         HasCancel(false) {}
 
 public:
-  /// \brief Creates directive.
+  /// Creates directive.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1312,16 +1312,16 @@
                                      SourceLocation EndLoc,
                                      Stmt *AssociatedStmt, bool HasCancel);
 
-  /// \brief Creates an empty directive.
+  /// Creates an empty directive.
   ///
   /// \param C AST context.
   ///
   static OMPSectionDirective *CreateEmpty(const ASTContext &C, EmptyShell);
 
-  /// \brief Set cancel state.
+  /// Set cancel state.
   void setHasCancel(bool Has) { HasCancel = Has; }
 
-  /// \brief Return true if current directive has inner cancel directive.
+  /// Return true if current directive has inner cancel directive.
   bool hasCancel() const { return HasCancel; }
 
   static bool classof(const Stmt *T) {
@@ -1329,7 +1329,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp single' directive.
+/// This represents '#pragma omp single' directive.
 ///
 /// \code
 /// #pragma omp single private(a,b) copyprivate(c,d)
@@ -1339,7 +1339,7 @@
 ///
 class OMPSingleDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1350,7 +1350,7 @@
       : OMPExecutableDirective(this, OMPSingleDirectiveClass, OMPD_single,
                                StartLoc, EndLoc, NumClauses, 1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -1360,7 +1360,7 @@
                                1) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1372,7 +1372,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -1386,7 +1386,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp master' directive.
+/// This represents '#pragma omp master' directive.
 ///
 /// \code
 /// #pragma omp master
@@ -1394,7 +1394,7 @@
 ///
 class OMPMasterDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1403,14 +1403,14 @@
       : OMPExecutableDirective(this, OMPMasterDirectiveClass, OMPD_master,
                                StartLoc, EndLoc, 0, 1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   explicit OMPMasterDirective()
       : OMPExecutableDirective(this, OMPMasterDirectiveClass, OMPD_master,
                                SourceLocation(), SourceLocation(), 0, 1) {}
 
 public:
-  /// \brief Creates directive.
+  /// Creates directive.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1422,7 +1422,7 @@
                                     SourceLocation EndLoc,
                                     Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive.
+  /// Creates an empty directive.
   ///
   /// \param C AST context.
   ///
@@ -1433,7 +1433,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp critical' directive.
+/// This represents '#pragma omp critical' directive.
 ///
 /// \code
 /// #pragma omp critical
@@ -1441,9 +1441,9 @@
 ///
 class OMPCriticalDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Name of the directive.
+  /// Name of the directive.
   DeclarationNameInfo DirName;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param Name Name of the directive.
   /// \param StartLoc Starting location of the directive kind.
@@ -1456,7 +1456,7 @@
                                StartLoc, EndLoc, NumClauses, 1),
         DirName(Name) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -1466,14 +1466,14 @@
                                1),
         DirName() {}
 
-  /// \brief Set name of the directive.
+  /// Set name of the directive.
   ///
   /// \param Name Name of the directive.
   ///
   void setDirectiveName(const DeclarationNameInfo &Name) { DirName = Name; }
 
 public:
-  /// \brief Creates directive.
+  /// Creates directive.
   ///
   /// \param C AST context.
   /// \param Name Name of the directive.
@@ -1487,7 +1487,7 @@
          SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive.
+  /// Creates an empty directive.
   ///
   /// \param C AST context.
   /// \param NumClauses Number of clauses.
@@ -1495,7 +1495,7 @@
   static OMPCriticalDirective *CreateEmpty(const ASTContext &C,
                                            unsigned NumClauses, EmptyShell);
 
-  /// \brief Return name of the directive.
+  /// Return name of the directive.
   ///
   DeclarationNameInfo getDirectiveName() const { return DirName; }
 
@@ -1504,7 +1504,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp parallel for' directive.
+/// This represents '#pragma omp parallel for' directive.
 ///
 /// \code
 /// #pragma omp parallel for private(a,b) reduction(+:c,d)
@@ -1516,10 +1516,10 @@
 class OMPParallelForDirective : public OMPLoopDirective {
   friend class ASTStmtReader;
 
-  /// \brief true if current region has inner cancel directive.
+  /// true if current region has inner cancel directive.
   bool HasCancel;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1532,7 +1532,7 @@
                          StartLoc, EndLoc, CollapsedNum, NumClauses),
         HasCancel(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -1543,11 +1543,11 @@
                          NumClauses),
         HasCancel(false) {}
 
-  /// \brief Set cancel state.
+  /// Set cancel state.
   void setHasCancel(bool Has) { HasCancel = Has; }
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1563,7 +1563,7 @@
          unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
          Stmt *AssociatedStmt, const HelperExprs &Exprs, bool HasCancel);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
@@ -1575,7 +1575,7 @@
                                               unsigned CollapsedNum,
                                               EmptyShell);
 
-  /// \brief Return true if current directive has inner cancel directive.
+  /// Return true if current directive has inner cancel directive.
   bool hasCancel() const { return HasCancel; }
 
   static bool classof(const Stmt *T) {
@@ -1583,7 +1583,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp parallel for simd' directive.
+/// This represents '#pragma omp parallel for simd' directive.
 ///
 /// \code
 /// #pragma omp parallel for simd private(a,b) linear(i,j:s) reduction(+:c,d)
@@ -1595,7 +1595,7 @@
 ///
 class OMPParallelForSimdDirective : public OMPLoopDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1608,7 +1608,7 @@
                          OMPD_parallel_for_simd, StartLoc, EndLoc, CollapsedNum,
                          NumClauses) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -1620,7 +1620,7 @@
                          SourceLocation(), CollapsedNum, NumClauses) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1635,7 +1635,7 @@
          unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
          Stmt *AssociatedStmt, const HelperExprs &Exprs);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
@@ -1652,7 +1652,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp parallel sections' directive.
+/// This represents '#pragma omp parallel sections' directive.
 ///
 /// \code
 /// #pragma omp parallel sections private(a,b) reduction(+:c,d)
@@ -1664,10 +1664,10 @@
 class OMPParallelSectionsDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
 
-  /// \brief true if current directive has inner cancel directive.
+  /// true if current directive has inner cancel directive.
   bool HasCancel;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1680,7 +1680,7 @@
                                NumClauses, 1),
         HasCancel(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -1690,11 +1690,11 @@
                                SourceLocation(), NumClauses, 1),
         HasCancel(false) {}
 
-  /// \brief Set cancel state.
+  /// Set cancel state.
   void setHasCancel(bool Has) { HasCancel = Has; }
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1707,7 +1707,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, bool HasCancel);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -1716,7 +1716,7 @@
   static OMPParallelSectionsDirective *
   CreateEmpty(const ASTContext &C, unsigned NumClauses, EmptyShell);
 
-  /// \brief Return true if current directive has inner cancel directive.
+  /// Return true if current directive has inner cancel directive.
   bool hasCancel() const { return HasCancel; }
 
   static bool classof(const Stmt *T) {
@@ -1724,7 +1724,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp task' directive.
+/// This represents '#pragma omp task' directive.
 ///
 /// \code
 /// #pragma omp task private(a,b) final(d)
@@ -1734,10 +1734,10 @@
 ///
 class OMPTaskDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief true if this directive has inner cancel directive.
+  /// true if this directive has inner cancel directive.
   bool HasCancel;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1749,7 +1749,7 @@
                                EndLoc, NumClauses, 1),
         HasCancel(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -1759,11 +1759,11 @@
                                1),
         HasCancel(false) {}
 
-  /// \brief Set cancel state.
+  /// Set cancel state.
   void setHasCancel(bool Has) { HasCancel = Has; }
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1777,7 +1777,7 @@
                                   ArrayRef<OMPClause *> Clauses,
                                   Stmt *AssociatedStmt, bool HasCancel);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -1786,7 +1786,7 @@
   static OMPTaskDirective *CreateEmpty(const ASTContext &C, unsigned NumClauses,
                                        EmptyShell);
 
-  /// \brief Return true if current directive has inner cancel directive.
+  /// Return true if current directive has inner cancel directive.
   bool hasCancel() const { return HasCancel; }
 
   static bool classof(const Stmt *T) {
@@ -1794,7 +1794,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp taskyield' directive.
+/// This represents '#pragma omp taskyield' directive.
 ///
 /// \code
 /// #pragma omp taskyield
@@ -1802,7 +1802,7 @@
 ///
 class OMPTaskyieldDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1811,14 +1811,14 @@
       : OMPExecutableDirective(this, OMPTaskyieldDirectiveClass, OMPD_taskyield,
                                StartLoc, EndLoc, 0, 0) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   explicit OMPTaskyieldDirective()
       : OMPExecutableDirective(this, OMPTaskyieldDirectiveClass, OMPD_taskyield,
                                SourceLocation(), SourceLocation(), 0, 0) {}
 
 public:
-  /// \brief Creates directive.
+  /// Creates directive.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1827,7 +1827,7 @@
   static OMPTaskyieldDirective *
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc);
 
-  /// \brief Creates an empty directive.
+  /// Creates an empty directive.
   ///
   /// \param C AST context.
   ///
@@ -1838,7 +1838,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp barrier' directive.
+/// This represents '#pragma omp barrier' directive.
 ///
 /// \code
 /// #pragma omp barrier
@@ -1846,7 +1846,7 @@
 ///
 class OMPBarrierDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1855,14 +1855,14 @@
       : OMPExecutableDirective(this, OMPBarrierDirectiveClass, OMPD_barrier,
                                StartLoc, EndLoc, 0, 0) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   explicit OMPBarrierDirective()
       : OMPExecutableDirective(this, OMPBarrierDirectiveClass, OMPD_barrier,
                                SourceLocation(), SourceLocation(), 0, 0) {}
 
 public:
-  /// \brief Creates directive.
+  /// Creates directive.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1871,7 +1871,7 @@
   static OMPBarrierDirective *
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc);
 
-  /// \brief Creates an empty directive.
+  /// Creates an empty directive.
   ///
   /// \param C AST context.
   ///
@@ -1882,7 +1882,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp taskwait' directive.
+/// This represents '#pragma omp taskwait' directive.
 ///
 /// \code
 /// #pragma omp taskwait
@@ -1890,7 +1890,7 @@
 ///
 class OMPTaskwaitDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -1899,14 +1899,14 @@
       : OMPExecutableDirective(this, OMPTaskwaitDirectiveClass, OMPD_taskwait,
                                StartLoc, EndLoc, 0, 0) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   explicit OMPTaskwaitDirective()
       : OMPExecutableDirective(this, OMPTaskwaitDirectiveClass, OMPD_taskwait,
                                SourceLocation(), SourceLocation(), 0, 0) {}
 
 public:
-  /// \brief Creates directive.
+  /// Creates directive.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -1915,7 +1915,7 @@
   static OMPTaskwaitDirective *
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc);
 
-  /// \brief Creates an empty directive.
+  /// Creates an empty directive.
   ///
   /// \param C AST context.
   ///
@@ -1995,7 +1995,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp flush' directive.
+/// This represents '#pragma omp flush' directive.
 ///
 /// \code
 /// #pragma omp flush(a,b)
@@ -2007,7 +2007,7 @@
 /// FlushClause.
 class OMPFlushDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2018,7 +2018,7 @@
       : OMPExecutableDirective(this, OMPFlushDirectiveClass, OMPD_flush,
                                StartLoc, EndLoc, NumClauses, 0) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -2028,7 +2028,7 @@
                                0) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2040,7 +2040,7 @@
                                    SourceLocation EndLoc,
                                    ArrayRef<OMPClause *> Clauses);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -2054,7 +2054,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp ordered' directive.
+/// This represents '#pragma omp ordered' directive.
 ///
 /// \code
 /// #pragma omp ordered
@@ -2062,7 +2062,7 @@
 ///
 class OMPOrderedDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2073,7 +2073,7 @@
       : OMPExecutableDirective(this, OMPOrderedDirectiveClass, OMPD_ordered,
                                StartLoc, EndLoc, NumClauses, 1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -2083,7 +2083,7 @@
                                1) {}
 
 public:
-  /// \brief Creates directive.
+  /// Creates directive.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2095,7 +2095,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive.
+  /// Creates an empty directive.
   ///
   /// \param C AST context.
   /// \param NumClauses Number of clauses.
@@ -2108,7 +2108,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp atomic' directive.
+/// This represents '#pragma omp atomic' directive.
 ///
 /// \code
 /// #pragma omp atomic capture
@@ -2117,7 +2117,7 @@
 ///
 class OMPAtomicDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Used for 'atomic update' or 'atomic capture' constructs. They may
+  /// Used for 'atomic update' or 'atomic capture' constructs. They may
   /// have atomic expressions of forms
   /// \code
   /// x = x binop expr;
@@ -2127,7 +2127,7 @@
   /// second. Required for correct codegen of non-associative operations (like
   /// << or >>).
   bool IsXLHSInRHSPart;
-  /// \brief Used for 'atomic update' or 'atomic capture' constructs. They may
+  /// Used for 'atomic update' or 'atomic capture' constructs. They may
   /// have atomic expressions of forms
   /// \code
   /// v = x; <update x>;
@@ -2137,7 +2137,7 @@
   /// otherwise.
   bool IsPostfixUpdate;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2149,7 +2149,7 @@
                                StartLoc, EndLoc, NumClauses, 5),
         IsXLHSInRHSPart(false), IsPostfixUpdate(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -2159,19 +2159,19 @@
                                5),
         IsXLHSInRHSPart(false), IsPostfixUpdate(false) {}
 
-  /// \brief Set 'x' part of the associated expression/statement.
+  /// Set 'x' part of the associated expression/statement.
   void setX(Expr *X) { *std::next(child_begin()) = X; }
-  /// \brief Set helper expression of the form
+  /// Set helper expression of the form
   /// 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' or
   /// 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'.
   void setUpdateExpr(Expr *UE) { *std::next(child_begin(), 2) = UE; }
-  /// \brief Set 'v' part of the associated expression/statement.
+  /// Set 'v' part of the associated expression/statement.
   void setV(Expr *V) { *std::next(child_begin(), 3) = V; }
-  /// \brief Set 'expr' part of the associated expression/statement.
+  /// Set 'expr' part of the associated expression/statement.
   void setExpr(Expr *E) { *std::next(child_begin(), 4) = E; }
 
 public:
-  /// \brief Creates directive with a list of \a Clauses and 'x', 'v' and 'expr'
+  /// Creates directive with a list of \a Clauses and 'x', 'v' and 'expr'
   /// parts of the atomic construct (see Section 2.12.6, atomic Construct, for
   /// detailed description of 'x', 'v' and 'expr').
   ///
@@ -2195,7 +2195,7 @@
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, Expr *X, Expr *V,
          Expr *E, Expr *UE, bool IsXLHSInRHSPart, bool IsPostfixUpdate);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -2204,12 +2204,12 @@
   static OMPAtomicDirective *CreateEmpty(const ASTContext &C,
                                          unsigned NumClauses, EmptyShell);
 
-  /// \brief Get 'x' part of the associated expression/statement.
+  /// Get 'x' part of the associated expression/statement.
   Expr *getX() { return cast_or_null<Expr>(*std::next(child_begin())); }
   const Expr *getX() const {
     return cast_or_null<Expr>(*std::next(child_begin()));
   }
-  /// \brief Get helper expression of the form
+  /// Get helper expression of the form
   /// 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' or
   /// 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'.
   Expr *getUpdateExpr() {
@@ -2218,19 +2218,19 @@
   const Expr *getUpdateExpr() const {
     return cast_or_null<Expr>(*std::next(child_begin(), 2));
   }
-  /// \brief Return true if helper update expression has form
+  /// Return true if helper update expression has form
   /// 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' and false if it has form
   /// 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'.
   bool isXLHSInRHSPart() const { return IsXLHSInRHSPart; }
-  /// \brief Return true if 'v' expression must be updated to original value of
+  /// Return true if 'v' expression must be updated to original value of
   /// 'x', false if 'v' must be updated to the new value of 'x'.
   bool isPostfixUpdate() const { return IsPostfixUpdate; }
-  /// \brief Get 'v' part of the associated expression/statement.
+  /// Get 'v' part of the associated expression/statement.
   Expr *getV() { return cast_or_null<Expr>(*std::next(child_begin(), 3)); }
   const Expr *getV() const {
     return cast_or_null<Expr>(*std::next(child_begin(), 3));
   }
-  /// \brief Get 'expr' part of the associated expression/statement.
+  /// Get 'expr' part of the associated expression/statement.
   Expr *getExpr() { return cast_or_null<Expr>(*std::next(child_begin(), 4)); }
   const Expr *getExpr() const {
     return cast_or_null<Expr>(*std::next(child_begin(), 4));
@@ -2241,7 +2241,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp target' directive.
+/// This represents '#pragma omp target' directive.
 ///
 /// \code
 /// #pragma omp target if(a)
@@ -2251,7 +2251,7 @@
 ///
 class OMPTargetDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2262,7 +2262,7 @@
       : OMPExecutableDirective(this, OMPTargetDirectiveClass, OMPD_target,
                                StartLoc, EndLoc, NumClauses, 1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -2272,7 +2272,7 @@
                                1) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2284,7 +2284,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -2298,7 +2298,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp target data' directive.
+/// This represents '#pragma omp target data' directive.
 ///
 /// \code
 /// #pragma omp target data device(0) if(a) map(b[:])
@@ -2309,7 +2309,7 @@
 ///
 class OMPTargetDataDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending Location of the directive.
@@ -2321,7 +2321,7 @@
                                OMPD_target_data, StartLoc, EndLoc, NumClauses,
                                1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -2331,7 +2331,7 @@
                                SourceLocation(), NumClauses, 1) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2343,7 +2343,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive with the place for \a N clauses.
+  /// Creates an empty directive with the place for \a N clauses.
   ///
   /// \param C AST context.
   /// \param N The number of clauses.
@@ -2356,7 +2356,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp target enter data' directive.
+/// This represents '#pragma omp target enter data' directive.
 ///
 /// \code
 /// #pragma omp target enter data device(0) if(a) map(b[:])
@@ -2367,7 +2367,7 @@
 ///
 class OMPTargetEnterDataDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending Location of the directive.
@@ -2379,7 +2379,7 @@
                                OMPD_target_enter_data, StartLoc, EndLoc,
                                NumClauses, /*NumChildren=*/1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -2390,7 +2390,7 @@
                                /*NumChildren=*/1) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2402,7 +2402,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive with the place for \a N clauses.
+  /// Creates an empty directive with the place for \a N clauses.
   ///
   /// \param C AST context.
   /// \param N The number of clauses.
@@ -2415,7 +2415,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp target exit data' directive.
+/// This represents '#pragma omp target exit data' directive.
 ///
 /// \code
 /// #pragma omp target exit data device(0) if(a) map(b[:])
@@ -2426,7 +2426,7 @@
 ///
 class OMPTargetExitDataDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending Location of the directive.
@@ -2438,7 +2438,7 @@
                                OMPD_target_exit_data, StartLoc, EndLoc,
                                NumClauses, /*NumChildren=*/1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -2449,7 +2449,7 @@
                                /*NumChildren=*/1) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2461,7 +2461,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive with the place for \a N clauses.
+  /// Creates an empty directive with the place for \a N clauses.
   ///
   /// \param C AST context.
   /// \param N The number of clauses.
@@ -2474,7 +2474,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp target parallel' directive.
+/// This represents '#pragma omp target parallel' directive.
 ///
 /// \code
 /// #pragma omp target parallel if(a)
@@ -2484,7 +2484,7 @@
 ///
 class OMPTargetParallelDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2496,7 +2496,7 @@
                                OMPD_target_parallel, StartLoc, EndLoc,
                                NumClauses, /*NumChildren=*/1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -2507,7 +2507,7 @@
                                /*NumChildren=*/1) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2519,7 +2519,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -2533,7 +2533,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp target parallel for' directive.
+/// This represents '#pragma omp target parallel for' directive.
 ///
 /// \code
 /// #pragma omp target parallel for private(a,b) reduction(+:c,d)
@@ -2545,10 +2545,10 @@
 class OMPTargetParallelForDirective : public OMPLoopDirective {
   friend class ASTStmtReader;
 
-  /// \brief true if current region has inner cancel directive.
+  /// true if current region has inner cancel directive.
   bool HasCancel;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2562,7 +2562,7 @@
                          CollapsedNum, NumClauses),
         HasCancel(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -2574,11 +2574,11 @@
                          SourceLocation(), CollapsedNum, NumClauses),
         HasCancel(false) {}
 
-  /// \brief Set cancel state.
+  /// Set cancel state.
   void setHasCancel(bool Has) { HasCancel = Has; }
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2594,7 +2594,7 @@
          unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
          Stmt *AssociatedStmt, const HelperExprs &Exprs, bool HasCancel);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
@@ -2606,7 +2606,7 @@
                                                     unsigned CollapsedNum,
                                                     EmptyShell);
 
-  /// \brief Return true if current directive has inner cancel directive.
+  /// Return true if current directive has inner cancel directive.
   bool hasCancel() const { return HasCancel; }
 
   static bool classof(const Stmt *T) {
@@ -2614,7 +2614,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp teams' directive.
+/// This represents '#pragma omp teams' directive.
 ///
 /// \code
 /// #pragma omp teams if(a)
@@ -2624,7 +2624,7 @@
 ///
 class OMPTeamsDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2635,7 +2635,7 @@
       : OMPExecutableDirective(this, OMPTeamsDirectiveClass, OMPD_teams,
                                StartLoc, EndLoc, NumClauses, 1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -2645,7 +2645,7 @@
                                1) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2658,7 +2658,7 @@
                                    ArrayRef<OMPClause *> Clauses,
                                    Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -2672,7 +2672,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp cancellation point' directive.
+/// This represents '#pragma omp cancellation point' directive.
 ///
 /// \code
 /// #pragma omp cancellation point for
@@ -2682,7 +2682,7 @@
 class OMPCancellationPointDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
   OpenMPDirectiveKind CancelRegion;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2692,7 +2692,7 @@
                                OMPD_cancellation_point, StartLoc, EndLoc, 0, 0),
         CancelRegion(OMPD_unknown) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   explicit OMPCancellationPointDirective()
       : OMPExecutableDirective(this, OMPCancellationPointDirectiveClass,
@@ -2700,12 +2700,12 @@
                                SourceLocation(), 0, 0),
         CancelRegion(OMPD_unknown) {}
 
-  /// \brief Set cancel region for current cancellation point.
+  /// Set cancel region for current cancellation point.
   /// \param CR Cancellation region.
   void setCancelRegion(OpenMPDirectiveKind CR) { CancelRegion = CR; }
 
 public:
-  /// \brief Creates directive.
+  /// Creates directive.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2715,14 +2715,14 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          OpenMPDirectiveKind CancelRegion);
 
-  /// \brief Creates an empty directive.
+  /// Creates an empty directive.
   ///
   /// \param C AST context.
   ///
   static OMPCancellationPointDirective *CreateEmpty(const ASTContext &C,
                                                     EmptyShell);
 
-  /// \brief Get cancellation region for the current cancellation point.
+  /// Get cancellation region for the current cancellation point.
   OpenMPDirectiveKind getCancelRegion() const { return CancelRegion; }
 
   static bool classof(const Stmt *T) {
@@ -2730,7 +2730,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp cancel' directive.
+/// This represents '#pragma omp cancel' directive.
 ///
 /// \code
 /// #pragma omp cancel for
@@ -2740,7 +2740,7 @@
 class OMPCancelDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
   OpenMPDirectiveKind CancelRegion;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2752,7 +2752,7 @@
                                StartLoc, EndLoc, NumClauses, 0),
         CancelRegion(OMPD_unknown) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   explicit OMPCancelDirective(unsigned NumClauses)
@@ -2761,12 +2761,12 @@
                                0),
         CancelRegion(OMPD_unknown) {}
 
-  /// \brief Set cancel region for current cancellation point.
+  /// Set cancel region for current cancellation point.
   /// \param CR Cancellation region.
   void setCancelRegion(OpenMPDirectiveKind CR) { CancelRegion = CR; }
 
 public:
-  /// \brief Creates directive.
+  /// Creates directive.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2777,7 +2777,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, OpenMPDirectiveKind CancelRegion);
 
-  /// \brief Creates an empty directive.
+  /// Creates an empty directive.
   ///
   /// \param C AST context.
   /// \param NumClauses Number of clauses.
@@ -2785,7 +2785,7 @@
   static OMPCancelDirective *CreateEmpty(const ASTContext &C,
                                          unsigned NumClauses, EmptyShell);
 
-  /// \brief Get cancellation region for the current cancellation point.
+  /// Get cancellation region for the current cancellation point.
   OpenMPDirectiveKind getCancelRegion() const { return CancelRegion; }
 
   static bool classof(const Stmt *T) {
@@ -2793,7 +2793,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp taskloop' directive.
+/// This represents '#pragma omp taskloop' directive.
 ///
 /// \code
 /// #pragma omp taskloop private(a,b) grainsize(val) num_tasks(num)
@@ -2804,7 +2804,7 @@
 ///
 class OMPTaskLoopDirective : public OMPLoopDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2816,7 +2816,7 @@
       : OMPLoopDirective(this, OMPTaskLoopDirectiveClass, OMPD_taskloop,
                          StartLoc, EndLoc, CollapsedNum, NumClauses) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -2827,7 +2827,7 @@
                          NumClauses) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2842,7 +2842,7 @@
          unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
          Stmt *AssociatedStmt, const HelperExprs &Exprs);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
@@ -2858,7 +2858,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp taskloop simd' directive.
+/// This represents '#pragma omp taskloop simd' directive.
 ///
 /// \code
 /// #pragma omp taskloop simd private(a,b) grainsize(val) num_tasks(num)
@@ -2869,7 +2869,7 @@
 ///
 class OMPTaskLoopSimdDirective : public OMPLoopDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2882,7 +2882,7 @@
                          OMPD_taskloop_simd, StartLoc, EndLoc, CollapsedNum,
                          NumClauses) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -2893,7 +2893,7 @@
                          CollapsedNum, NumClauses) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2908,7 +2908,7 @@
          unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
          Stmt *AssociatedStmt, const HelperExprs &Exprs);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
@@ -2925,7 +2925,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp distribute' directive.
+/// This represents '#pragma omp distribute' directive.
 ///
 /// \code
 /// #pragma omp distribute private(a,b)
@@ -2936,7 +2936,7 @@
 class OMPDistributeDirective : public OMPLoopDirective {
   friend class ASTStmtReader;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -2949,7 +2949,7 @@
                          StartLoc, EndLoc, CollapsedNum, NumClauses)
         {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -2961,7 +2961,7 @@
         {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -2976,7 +2976,7 @@
          unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
          Stmt *AssociatedStmt, const HelperExprs &Exprs);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
@@ -2992,7 +2992,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp target update' directive.
+/// This represents '#pragma omp target update' directive.
 ///
 /// \code
 /// #pragma omp target update to(a) from(b) device(1)
@@ -3003,7 +3003,7 @@
 ///
 class OMPTargetUpdateDirective : public OMPExecutableDirective {
   friend class ASTStmtReader;
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending Location of the directive.
@@ -3015,7 +3015,7 @@
                                OMPD_target_update, StartLoc, EndLoc, NumClauses,
                                1) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param NumClauses Number of clauses.
   ///
@@ -3025,7 +3025,7 @@
                                SourceLocation(), NumClauses, 1) {}
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -3037,7 +3037,7 @@
   Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt);
 
-  /// \brief Creates an empty directive with the place for \a NumClauses
+  /// Creates an empty directive with the place for \a NumClauses
   /// clauses.
   ///
   /// \param C AST context.
@@ -3051,7 +3051,7 @@
   }
 };
 
-/// \brief This represents '#pragma omp distribute parallel for' composite
+/// This represents '#pragma omp distribute parallel for' composite
 ///  directive.
 ///
 /// \code
@@ -3065,7 +3065,7 @@
   /// true if the construct has inner cancel directive.
   bool HasCancel = false;
 
-  /// \brief Build directive with the given start and end location.
+  /// Build directive with the given start and end location.
   ///
   /// \param StartLoc Starting location of the directive kind.
   /// \param EndLoc Ending location of the directive.
@@ -3079,7 +3079,7 @@
                          OMPD_distribute_parallel_for, StartLoc, EndLoc,
                          CollapsedNum, NumClauses), HasCancel(false) {}
 
-  /// \brief Build an empty directive.
+  /// Build an empty directive.
   ///
   /// \param CollapsedNum Number of collapsed nested loops.
   /// \param NumClauses Number of clauses.
@@ -3095,7 +3095,7 @@
   void setHasCancel(bool Has) { HasCancel = Has; }
 
 public:
-  /// \brief Creates directive with a list of \a Clauses.
+  /// Creates directive with a list of \a Clauses.
   ///
   /// \param C AST context.
   /// \param StartLoc Starting location of the directive kind.
@@ -3111,7 +3111,7 @@
          unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses,
          Stmt *AssociatedStmt, const HelperExprs &Exprs, bool HasCancel);
 
-  /// \brief Creates an empty directive with the place
+  /// Creates an empty directive with the place
   /// for \a NumClauses clauses.
   ///
   /// \param C AST context.
Index: cfe/trunk/include/clang/AST/StmtVisitor.h
===================================================================
--- cfe/trunk/include/clang/AST/StmtVisitor.h
+++ cfe/trunk/include/clang/AST/StmtVisitor.h
@@ -195,7 +195,7 @@
 class ConstStmtVisitor
  : public StmtVisitorBase<make_const_ptr, ImplClass, RetTy, ParamTys...> {};
 
-/// \brief This class implements a simple visitor for OMPClause
+/// This class implements a simple visitor for OMPClause
 /// subclasses.
 template<class ImplClass, template <typename> class Ptr, typename RetTy>
 class OMPClauseVisitorBase {
Index: cfe/trunk/include/clang/AST/TemplateBase.h
===================================================================
--- cfe/trunk/include/clang/AST/TemplateBase.h
+++ cfe/trunk/include/clang/AST/TemplateBase.h
@@ -47,12 +47,12 @@
 class TypeSourceInfo;
 class ValueDecl;
 
-/// \brief Represents a template argument.
+/// Represents a template argument.
 class TemplateArgument {
 public:
-  /// \brief The kind of template argument we're storing.
+  /// The kind of template argument we're storing.
   enum ArgKind {
-    /// \brief Represents an empty template argument, e.g., one that has not
+    /// Represents an empty template argument, e.g., one that has not
     /// been deduced.
     Null = 0,
 
@@ -92,7 +92,7 @@
   };
 
 private:
-  /// \brief The kind of template argument we're storing.
+  /// The kind of template argument we're storing.
 
   struct DA {
     unsigned Kind;
@@ -138,16 +138,16 @@
   };
 
 public:
-  /// \brief Construct an empty, invalid template argument.
+  /// Construct an empty, invalid template argument.
   constexpr TemplateArgument() : TypeOrValue({Null, 0}) {}
 
-  /// \brief Construct a template type argument.
+  /// Construct a template type argument.
   TemplateArgument(QualType T, bool isNullPtr = false) {
     TypeOrValue.Kind = isNullPtr ? NullPtr : Type;
     TypeOrValue.V = reinterpret_cast<uintptr_t>(T.getAsOpaquePtr());
   }
 
-  /// \brief Construct a template argument that refers to a
+  /// Construct a template argument that refers to a
   /// declaration, which is either an external declaration or a
   /// template declaration.
   TemplateArgument(ValueDecl *D, QualType QT) {
@@ -157,18 +157,18 @@
     DeclArg.D = D;
   }
 
-  /// \brief Construct an integral constant template argument. The memory to
+  /// Construct an integral constant template argument. The memory to
   /// store the value is allocated with Ctx.
   TemplateArgument(ASTContext &Ctx, const llvm::APSInt &Value, QualType Type);
 
-  /// \brief Construct an integral constant template argument with the same
+  /// Construct an integral constant template argument with the same
   /// value as Other but a different type.
   TemplateArgument(const TemplateArgument &Other, QualType Type) {
     Integer = Other.Integer;
     Integer.Type = Type.getAsOpaquePtr();
   }
 
-  /// \brief Construct a template argument that is a template.
+  /// Construct a template argument that is a template.
   ///
   /// This form of template argument is generally used for template template
   /// parameters. However, the template name could be a dependent template
@@ -182,7 +182,7 @@
     TemplateArg.NumExpansions = 0;
   }
 
-  /// \brief Construct a template argument that is a template pack expansion.
+  /// Construct a template argument that is a template pack expansion.
   ///
   /// This form of template argument is generally used for template template
   /// parameters. However, the template name could be a dependent template
@@ -202,7 +202,7 @@
       TemplateArg.NumExpansions = 0;
   }
 
-  /// \brief Construct a template argument that is an expression.
+  /// Construct a template argument that is an expression.
   ///
   /// This form of template argument only occurs in template argument
   /// lists used for dependent types and for expression; it will not
@@ -212,7 +212,7 @@
     TypeOrValue.V = reinterpret_cast<uintptr_t>(E);
   }
 
-  /// \brief Construct a template argument that is a template argument pack.
+  /// Construct a template argument that is a template argument pack.
   ///
   /// We assume that storage for the template arguments provided
   /// outlives the TemplateArgument itself.
@@ -226,40 +226,40 @@
 
   static TemplateArgument getEmptyPack() { return TemplateArgument(None); }
 
-  /// \brief Create a new template argument pack by copying the given set of
+  /// Create a new template argument pack by copying the given set of
   /// template arguments.
   static TemplateArgument CreatePackCopy(ASTContext &Context,
                                          ArrayRef<TemplateArgument> Args);
 
-  /// \brief Return the kind of stored template argument.
+  /// Return the kind of stored template argument.
   ArgKind getKind() const { return (ArgKind)TypeOrValue.Kind; }
 
-  /// \brief Determine whether this template argument has no value.
+  /// Determine whether this template argument has no value.
   bool isNull() const { return getKind() == Null; }
 
-  /// \brief Whether this template argument is dependent on a template
+  /// Whether this template argument is dependent on a template
   /// parameter such that its result can change from one instantiation to
   /// another.
   bool isDependent() const;
 
-  /// \brief Whether this template argument is dependent on a template
+  /// Whether this template argument is dependent on a template
   /// parameter.
   bool isInstantiationDependent() const;
 
-  /// \brief Whether this template argument contains an unexpanded
+  /// Whether this template argument contains an unexpanded
   /// parameter pack.
   bool containsUnexpandedParameterPack() const;
 
-  /// \brief Determine whether this template argument is a pack expansion.
+  /// Determine whether this template argument is a pack expansion.
   bool isPackExpansion() const;
   
-  /// \brief Retrieve the type for a type template argument.
+  /// Retrieve the type for a type template argument.
   QualType getAsType() const {
     assert(getKind() == Type && "Unexpected kind");
     return QualType::getFromOpaquePtr(reinterpret_cast<void*>(TypeOrValue.V));
   }
 
-  /// \brief Retrieve the declaration for a declaration non-type
+  /// Retrieve the declaration for a declaration non-type
   /// template argument.
   ValueDecl *getAsDecl() const {
     assert(getKind() == Declaration && "Unexpected kind");
@@ -271,19 +271,19 @@
     return QualType::getFromOpaquePtr(DeclArg.QT);
   }
 
-  /// \brief Retrieve the type for null non-type template argument.
+  /// Retrieve the type for null non-type template argument.
   QualType getNullPtrType() const {
     assert(getKind() == NullPtr && "Unexpected kind");
     return QualType::getFromOpaquePtr(reinterpret_cast<void*>(TypeOrValue.V));
   }
 
-  /// \brief Retrieve the template name for a template name argument.
+  /// Retrieve the template name for a template name argument.
   TemplateName getAsTemplate() const {
     assert(getKind() == Template && "Unexpected kind");
     return TemplateName::getFromVoidPointer(TemplateArg.Name);
   }
 
-  /// \brief Retrieve the template argument as a template name; if the argument
+  /// Retrieve the template argument as a template name; if the argument
   /// is a pack expansion, return the pattern as a template name.
   TemplateName getAsTemplateOrTemplatePattern() const {
     assert((getKind() == Template || getKind() == TemplateExpansion) &&
@@ -292,11 +292,11 @@
     return TemplateName::getFromVoidPointer(TemplateArg.Name);
   }
 
-  /// \brief Retrieve the number of expansions that a template template argument
+  /// Retrieve the number of expansions that a template template argument
   /// expansion will produce, if known.
   Optional<unsigned> getNumTemplateExpansions() const;
   
-  /// \brief Retrieve the template argument as an integral value.
+  /// Retrieve the template argument as an integral value.
   // FIXME: Provide a way to read the integral data without copying the value.
   llvm::APSInt getAsIntegral() const {
     assert(getKind() == Integral && "Unexpected kind");
@@ -311,7 +311,7 @@
                   Integer.IsUnsigned);
   }
 
-  /// \brief Retrieve the type of the integral value.
+  /// Retrieve the type of the integral value.
   QualType getIntegralType() const {
     assert(getKind() == Integral && "Unexpected kind");
     return QualType::getFromOpaquePtr(Integer.Type);
@@ -322,70 +322,70 @@
     Integer.Type = T.getAsOpaquePtr();
   }
 
-  /// \brief If this is a non-type template argument, get its type. Otherwise,
+  /// If this is a non-type template argument, get its type. Otherwise,
   /// returns a null QualType.
   QualType getNonTypeTemplateArgumentType() const;
 
-  /// \brief Retrieve the template argument as an expression.
+  /// Retrieve the template argument as an expression.
   Expr *getAsExpr() const {
     assert(getKind() == Expression && "Unexpected kind");
     return reinterpret_cast<Expr *>(TypeOrValue.V);
   }
 
-  /// \brief Iterator that traverses the elements of a template argument pack.
+  /// Iterator that traverses the elements of a template argument pack.
   using pack_iterator = const TemplateArgument *;
 
-  /// \brief Iterator referencing the first argument of a template argument
+  /// Iterator referencing the first argument of a template argument
   /// pack.
   pack_iterator pack_begin() const {
     assert(getKind() == Pack);
     return Args.Args;
   }
 
-  /// \brief Iterator referencing one past the last argument of a template
+  /// Iterator referencing one past the last argument of a template
   /// argument pack.
   pack_iterator pack_end() const {
     assert(getKind() == Pack);
     return Args.Args + Args.NumArgs;
   }
 
-  /// \brief Iterator range referencing all of the elements of a template
+  /// Iterator range referencing all of the elements of a template
   /// argument pack.
   ArrayRef<TemplateArgument> pack_elements() const {
     return llvm::makeArrayRef(pack_begin(), pack_end());
   }
 
-  /// \brief The number of template arguments in the given template argument
+  /// The number of template arguments in the given template argument
   /// pack.
   unsigned pack_size() const {
     assert(getKind() == Pack);
     return Args.NumArgs;
   }
 
-  /// \brief Return the array of arguments in this template argument pack.
+  /// Return the array of arguments in this template argument pack.
   ArrayRef<TemplateArgument> getPackAsArray() const {
     assert(getKind() == Pack);
     return llvm::makeArrayRef(Args.Args, Args.NumArgs);
   }
 
-  /// \brief Determines whether two template arguments are superficially the
+  /// Determines whether two template arguments are superficially the
   /// same.
   bool structurallyEquals(const TemplateArgument &Other) const;
 
-  /// \brief When the template argument is a pack expansion, returns
+  /// When the template argument is a pack expansion, returns
   /// the pattern of the pack expansion.
   TemplateArgument getPackExpansionPattern() const;
 
-  /// \brief Print this template argument to the given output stream.
+  /// Print this template argument to the given output stream.
   void print(const PrintingPolicy &Policy, raw_ostream &Out) const;
              
-  /// \brief Debugging aid that dumps the template argument.
+  /// Debugging aid that dumps the template argument.
   void dump(raw_ostream &Out) const;
 
-  /// \brief Debugging aid that dumps the template argument to standard error.
+  /// Debugging aid that dumps the template argument to standard error.
   void dump() const;
              
-  /// \brief Used to insert TemplateArguments into FoldingSets.
+  /// Used to insert TemplateArguments into FoldingSets.
   void Profile(llvm::FoldingSetNodeID &ID, const ASTContext &Context) const;
 };
 
@@ -478,7 +478,7 @@
            Argument.getKind() == TemplateArgument::TemplateExpansion);
   }
   
-  /// \brief - Fetches the primary location of the argument.
+  /// - Fetches the primary location of the argument.
   SourceLocation getLocation() const {
     if (Argument.getKind() == TemplateArgument::Template ||
         Argument.getKind() == TemplateArgument::TemplateExpansion)
@@ -487,7 +487,7 @@
     return getSourceRange().getBegin();
   }
 
-  /// \brief - Fetches the full source range of the argument.
+  /// - Fetches the full source range of the argument.
   SourceRange getSourceRange() const LLVM_READONLY;
 
   const TemplateArgument &getArgument() const {
@@ -588,7 +588,7 @@
   }
 };
 
-/// \brief Represents an explicit template argument list in C++, e.g.,
+/// Represents an explicit template argument list in C++, e.g.,
 /// the "<int>" in "sort<int>".
 /// This is safe to be used inside an AST node, in contrast with
 /// TemplateArgumentListInfo.
@@ -602,16 +602,16 @@
   ASTTemplateArgumentListInfo(const TemplateArgumentListInfo &List);
 
 public:
-  /// \brief The source location of the left angle bracket ('<').
+  /// The source location of the left angle bracket ('<').
   SourceLocation LAngleLoc;
 
-  /// \brief The source location of the right angle bracket ('>').
+  /// The source location of the right angle bracket ('>').
   SourceLocation RAngleLoc;
 
-  /// \brief The number of template arguments in TemplateArgs.
+  /// The number of template arguments in TemplateArgs.
   unsigned NumTemplateArgs;
 
-  /// \brief Retrieve the template arguments
+  /// Retrieve the template arguments
   const TemplateArgumentLoc *getTemplateArgs() const {
     return getTrailingObjects<TemplateArgumentLoc>();
   }
@@ -628,7 +628,7 @@
   Create(ASTContext &C, const TemplateArgumentListInfo &List);
 };
 
-/// \brief Represents an explicit template argument list in C++, e.g.,
+/// Represents an explicit template argument list in C++, e.g.,
 /// the "<int>" in "sort<int>".
 ///
 /// It is intended to be used as a trailing object on AST nodes, and
@@ -636,19 +636,19 @@
 /// but expects the containing object to also provide storage for
 /// that.
 struct alignas(void *) ASTTemplateKWAndArgsInfo {
-  /// \brief The source location of the left angle bracket ('<').
+  /// The source location of the left angle bracket ('<').
   SourceLocation LAngleLoc;
 
-  /// \brief The source location of the right angle bracket ('>').
+  /// The source location of the right angle bracket ('>').
   SourceLocation RAngleLoc;
 
-  /// \brief The source location of the template keyword; this is used
+  /// The source location of the template keyword; this is used
   /// as part of the representation of qualified identifiers, such as
   /// S<T>::template apply<T>.  Will be empty if this expression does
   /// not have a template keyword.
   SourceLocation TemplateKWLoc;
 
-  /// \brief The number of template arguments in TemplateArgs.
+  /// The number of template arguments in TemplateArgs.
   unsigned NumTemplateArgs;
 
   void initializeFrom(SourceLocation TemplateKWLoc,
Index: cfe/trunk/include/clang/AST/TemplateName.h
===================================================================
--- cfe/trunk/include/clang/AST/TemplateName.h
+++ cfe/trunk/include/clang/AST/TemplateName.h
@@ -39,7 +39,7 @@
 class TemplateDecl;
 class TemplateTemplateParmDecl;
   
-/// \brief Implementation class used to describe either a set of overloaded
+/// Implementation class used to describe either a set of overloaded
 /// template names or an already-substituted template template parameter pack.
 class UncommonTemplateNameStorage {
 protected:
@@ -50,10 +50,10 @@
   };
 
   struct BitsTag {
-    /// \brief A Kind.
+    /// A Kind.
     unsigned Kind : 2;
     
-    /// \brief The number of stored templates or template arguments,
+    /// The number of stored templates or template arguments,
     /// depending on which subclass we have.
     unsigned Size : 30;
   };
@@ -90,7 +90,7 @@
   }
 };
   
-/// \brief A structure for storing the information associated with an
+/// A structure for storing the information associated with an
 /// overloaded template name.
 class OverloadedTemplateStorage : public UncommonTemplateNameStorage {
   friend class ASTContext;
@@ -112,7 +112,7 @@
   iterator end() const { return getStorage() + size(); }
 };
 
-/// \brief A structure for storing an already-substituted template template
+/// A structure for storing an already-substituted template template
 /// parameter pack.
 ///
 /// This kind of template names occurs when the parameter pack has been 
@@ -131,12 +131,12 @@
       : UncommonTemplateNameStorage(SubstTemplateTemplateParmPack, Size),
         Parameter(Parameter), Arguments(Arguments) {}
   
-  /// \brief Retrieve the template template parameter pack being substituted.
+  /// Retrieve the template template parameter pack being substituted.
   TemplateTemplateParmDecl *getParameterPack() const {
     return Parameter;
   }
   
-  /// \brief Retrieve the template template argument pack with which this
+  /// Retrieve the template template argument pack with which this
   /// parameter was substituted.
   TemplateArgument getArgumentPack() const;
   
@@ -148,7 +148,7 @@
                       const TemplateArgument &ArgPack);
 };
 
-/// \brief Represents a C++ template name within the type system.
+/// Represents a C++ template name within the type system.
 ///
 /// A C++ template name refers to a template within the C++ type
 /// system. In most cases, a template name is simply a reference to a
@@ -185,27 +185,27 @@
   explicit TemplateName(void *Ptr);
 
 public:
-  // \brief Kind of name that is actually stored.
+  // Kind of name that is actually stored.
   enum NameKind {
-    /// \brief A single template declaration.
+    /// A single template declaration.
     Template,
 
-    /// \brief A set of overloaded template declarations.
+    /// A set of overloaded template declarations.
     OverloadedTemplate,
 
-    /// \brief A qualified template name, where the qualification is kept 
+    /// A qualified template name, where the qualification is kept 
     /// to describe the source code as written.
     QualifiedTemplate,
 
-    /// \brief A dependent template name that has not been resolved to a 
+    /// A dependent template name that has not been resolved to a 
     /// template (or set of templates).
     DependentTemplate,
 
-    /// \brief A template template parameter that has been substituted
+    /// A template template parameter that has been substituted
     /// for some other template name.
     SubstTemplateTemplateParm,
 
-    /// \brief A template template parameter pack that has been substituted for 
+    /// A template template parameter pack that has been substituted for 
     /// a template template argument pack, but has not yet been expanded into
     /// individual arguments.
     SubstTemplateTemplateParmPack
@@ -219,13 +219,13 @@
   explicit TemplateName(QualifiedTemplateName *Qual);
   explicit TemplateName(DependentTemplateName *Dep);
 
-  /// \brief Determine whether this template name is NULL.
+  /// Determine whether this template name is NULL.
   bool isNull() const;
   
-  // \brief Get the kind of name that is actually stored.
+  // Get the kind of name that is actually stored.
   NameKind getKind() const;
 
-  /// \brief Retrieve the underlying template declaration that
+  /// Retrieve the underlying template declaration that
   /// this template name refers to, if known.
   ///
   /// \returns The template declaration that this template name refers
@@ -234,7 +234,7 @@
   /// set of function templates, returns NULL.
   TemplateDecl *getAsTemplateDecl() const;
 
-  /// \brief Retrieve the underlying, overloaded function template
+  /// Retrieve the underlying, overloaded function template
   // declarations that this template name refers to, if known.
   ///
   /// \returns The set of overloaded function templates that this template
@@ -243,14 +243,14 @@
   /// refers to a single template, returns NULL.
   OverloadedTemplateStorage *getAsOverloadedTemplate() const;
 
-  /// \brief Retrieve the substituted template template parameter, if 
+  /// Retrieve the substituted template template parameter, if 
   /// known.
   ///
   /// \returns The storage for the substituted template template parameter,
   /// if known. Otherwise, returns NULL.
   SubstTemplateTemplateParmStorage *getAsSubstTemplateTemplateParm() const;
 
-  /// \brief Retrieve the substituted template template parameter pack, if 
+  /// Retrieve the substituted template template parameter pack, if 
   /// known.
   ///
   /// \returns The storage for the substituted template template parameter pack,
@@ -258,11 +258,11 @@
   SubstTemplateTemplateParmPackStorage *
   getAsSubstTemplateTemplateParmPack() const;
 
-  /// \brief Retrieve the underlying qualified template name
+  /// Retrieve the underlying qualified template name
   /// structure, if any.
   QualifiedTemplateName *getAsQualifiedTemplateName() const;
 
-  /// \brief Retrieve the underlying dependent template name
+  /// Retrieve the underlying dependent template name
   /// structure, if any.
   DependentTemplateName *getAsDependentTemplateName() const;
 
@@ -273,18 +273,18 @@
   /// the template, including any default template arguments.
   TemplateName getNameToSubstitute() const;
 
-  /// \brief Determines whether this is a dependent template name.
+  /// Determines whether this is a dependent template name.
   bool isDependent() const;
 
-  /// \brief Determines whether this is a template name that somehow
+  /// Determines whether this is a template name that somehow
   /// depends on a template parameter.
   bool isInstantiationDependent() const;
 
-  /// \brief Determines whether this template name contains an
+  /// Determines whether this template name contains an
   /// unexpanded parameter pack (for C++0x variadic templates).
   bool containsUnexpandedParameterPack() const;
 
-  /// \brief Print the template name.
+  /// Print the template name.
   ///
   /// \param OS the output stream to which the template name will be
   /// printed.
@@ -295,10 +295,10 @@
   void print(raw_ostream &OS, const PrintingPolicy &Policy,
              bool SuppressNNS = false) const;
 
-  /// \brief Debugging aid that dumps the template name.
+  /// Debugging aid that dumps the template name.
   void dump(raw_ostream &OS) const;
 
-  /// \brief Debugging aid that dumps the template name to standard
+  /// Debugging aid that dumps the template name to standard
   /// error.
   void dump() const;
 
@@ -306,10 +306,10 @@
     ID.AddPointer(Storage.getOpaqueValue());
   }
 
-  /// \brief Retrieve the template name as a void pointer.
+  /// Retrieve the template name as a void pointer.
   void *getAsVoidPointer() const { return Storage.getOpaqueValue(); }
 
-  /// \brief Build a template name from a void pointer.
+  /// Build a template name from a void pointer.
   static TemplateName getFromVoidPointer(void *Ptr) {
     return TemplateName(Ptr);
   }
@@ -320,7 +320,7 @@
 const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,
                                     TemplateName N);
 
-/// \brief A structure for storing the information associated with a
+/// A structure for storing the information associated with a
 /// substituted template template parameter.
 class SubstTemplateTemplateParmStorage
   : public UncommonTemplateNameStorage, public llvm::FoldingSetNode {
@@ -352,7 +352,7 @@
   return *this;
 }
 
-/// \brief Represents a template name that was expressed as a
+/// Represents a template name that was expressed as a
 /// qualified name.
 ///
 /// This kind of template name refers to a template name that was
@@ -366,7 +366,7 @@
 class QualifiedTemplateName : public llvm::FoldingSetNode {
   friend class ASTContext;
 
-  /// \brief The nested name specifier that qualifies the template name.
+  /// The nested name specifier that qualifies the template name.
   ///
   /// The bit is used to indicate whether the "template" keyword was
   /// present before the template name itself. Note that the
@@ -375,7 +375,7 @@
   /// this name with DependentTemplateName).
   llvm::PointerIntPair<NestedNameSpecifier *, 1> Qualifier;
 
-  /// \brief The template declaration or set of overloaded function templates
+  /// The template declaration or set of overloaded function templates
   /// that this qualified name refers to.
   TemplateDecl *Template;
 
@@ -384,18 +384,18 @@
       : Qualifier(NNS, TemplateKeyword? 1 : 0), Template(Template) {}
 
 public:
-  /// \brief Return the nested name specifier that qualifies this name.
+  /// Return the nested name specifier that qualifies this name.
   NestedNameSpecifier *getQualifier() const { return Qualifier.getPointer(); }
 
-  /// \brief Whether the template name was prefixed by the "template"
+  /// Whether the template name was prefixed by the "template"
   /// keyword.
   bool hasTemplateKeyword() const { return Qualifier.getInt(); }
 
-  /// \brief The template declaration that this qualified name refers
+  /// The template declaration that this qualified name refers
   /// to.
   TemplateDecl *getDecl() const { return Template; }
 
-  /// \brief The template declaration to which this qualified name
+  /// The template declaration to which this qualified name
   /// refers.
   TemplateDecl *getTemplateDecl() const { return Template; }
 
@@ -411,7 +411,7 @@
   }
 };
 
-/// \brief Represents a dependent template name that cannot be
+/// Represents a dependent template name that cannot be
 /// resolved prior to template instantiation.
 ///
 /// This kind of template name refers to a dependent template name,
@@ -422,7 +422,7 @@
 class DependentTemplateName : public llvm::FoldingSetNode {
   friend class ASTContext;
 
-  /// \brief The nested name specifier that qualifies the template
+  /// The nested name specifier that qualifies the template
   /// name.
   ///
   /// The bit stored in this qualifier describes whether the \c Name field
@@ -430,20 +430,20 @@
   /// overloaded operator kind (when set).
   llvm::PointerIntPair<NestedNameSpecifier *, 1, bool> Qualifier;
 
-  /// \brief The dependent template name.
+  /// The dependent template name.
   union {
-    /// \brief The identifier template name.
+    /// The identifier template name.
     ///
     /// Only valid when the bit on \c Qualifier is clear.
     const IdentifierInfo *Identifier;
     
-    /// \brief The overloaded operator name.
+    /// The overloaded operator name.
     ///
     /// Only valid when the bit on \c Qualifier is set.
     OverloadedOperatorKind Operator;
   };
 
-  /// \brief The canonical template name to which this dependent
+  /// The canonical template name to which this dependent
   /// template name refers.
   ///
   /// The canonical template name for a dependent template name is
@@ -474,23 +474,23 @@
          CanonicalTemplateName(Canon) {}
   
 public:
-  /// \brief Return the nested name specifier that qualifies this name.
+  /// Return the nested name specifier that qualifies this name.
   NestedNameSpecifier *getQualifier() const { return Qualifier.getPointer(); }
 
-  /// \brief Determine whether this template name refers to an identifier.
+  /// Determine whether this template name refers to an identifier.
   bool isIdentifier() const { return !Qualifier.getInt(); }
 
-  /// \brief Returns the identifier to which this template name refers.
+  /// Returns the identifier to which this template name refers.
   const IdentifierInfo *getIdentifier() const { 
     assert(isIdentifier() && "Template name isn't an identifier?");
     return Identifier;
   }
   
-  /// \brief Determine whether this template name refers to an overloaded
+  /// Determine whether this template name refers to an overloaded
   /// operator.
   bool isOverloadedOperator() const { return Qualifier.getInt(); }
   
-  /// \brief Return the overloaded operator to which this template name refers.
+  /// Return the overloaded operator to which this template name refers.
   OverloadedOperatorKind getOperator() const { 
     assert(isOverloadedOperator() &&
            "Template name isn't an overloaded operator?");
@@ -523,7 +523,7 @@
 
 namespace llvm {
 
-/// \brief The clang::TemplateName class is effectively a pointer.
+/// The clang::TemplateName class is effectively a pointer.
 template<>
 struct PointerLikeTypeTraits<clang::TemplateName> {
   static inline void *getAsVoidPointer(clang::TemplateName TN) {
Index: cfe/trunk/include/clang/AST/Type.h
===================================================================
--- cfe/trunk/include/clang/AST/Type.h
+++ cfe/trunk/include/clang/AST/Type.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief C Language Family Type Representation
+/// C Language Family Type Representation
 ///
 /// This file defines the clang::Type interface and subclasses, used to
 /// represent types for languages in the C family.
@@ -445,7 +445,7 @@
     }
   }
 
-  /// \brief Remove the qualifiers from the given set from this set.
+  /// Remove the qualifiers from the given set from this set.
   void removeQualifiers(Qualifiers Q) {
     // If the other set doesn't have any non-boolean qualifiers, just
     // bit-and the inverse in.
@@ -508,7 +508,7 @@
            (!other.hasUnaligned() || hasUnaligned());
   }
 
-  /// \brief Determines if these qualifiers compatibly include another set of
+  /// Determines if these qualifiers compatibly include another set of
   /// qualifiers from the narrow perspective of Objective-C ARC lifetime.
   ///
   /// One set of Objective-C lifetime qualifiers compatibly includes the other
@@ -528,7 +528,7 @@
     return hasConst();
   }
 
-  /// \brief Determine whether this set of qualifiers is a strict superset of
+  /// Determine whether this set of qualifiers is a strict superset of
   /// another set of qualifiers, not considering qualifier compatibility.
   bool isStrictSupersetOf(Qualifiers Other) const;
 
@@ -554,7 +554,7 @@
     return *this;
   }
 
-  /// \brief Compute the difference between two qualifier sets.
+  /// Compute the difference between two qualifier sets.
   friend Qualifiers operator-(Qualifiers L, Qualifiers R) {
     L -= R;
     return L;
@@ -719,69 +719,69 @@
     return Value.getPointer().isNull();
   }
 
-  /// \brief Determine whether this particular QualType instance has the
+  /// Determine whether this particular QualType instance has the
   /// "const" qualifier set, without looking through typedefs that may have
   /// added "const" at a different level.
   bool isLocalConstQualified() const {
     return (getLocalFastQualifiers() & Qualifiers::Const);
   }
 
-  /// \brief Determine whether this type is const-qualified.
+  /// Determine whether this type is const-qualified.
   bool isConstQualified() const;
 
-  /// \brief Determine whether this particular QualType instance has the
+  /// Determine whether this particular QualType instance has the
   /// "restrict" qualifier set, without looking through typedefs that may have
   /// added "restrict" at a different level.
   bool isLocalRestrictQualified() const {
     return (getLocalFastQualifiers() & Qualifiers::Restrict);
   }
 
-  /// \brief Determine whether this type is restrict-qualified.
+  /// Determine whether this type is restrict-qualified.
   bool isRestrictQualified() const;
 
-  /// \brief Determine whether this particular QualType instance has the
+  /// Determine whether this particular QualType instance has the
   /// "volatile" qualifier set, without looking through typedefs that may have
   /// added "volatile" at a different level.
   bool isLocalVolatileQualified() const {
     return (getLocalFastQualifiers() & Qualifiers::Volatile);
   }
 
-  /// \brief Determine whether this type is volatile-qualified.
+  /// Determine whether this type is volatile-qualified.
   bool isVolatileQualified() const;
 
-  /// \brief Determine whether this particular QualType instance has any
+  /// Determine whether this particular QualType instance has any
   /// qualifiers, without looking through any typedefs that might add
   /// qualifiers at a different level.
   bool hasLocalQualifiers() const {
     return getLocalFastQualifiers() || hasLocalNonFastQualifiers();
   }
 
-  /// \brief Determine whether this type has any qualifiers.
+  /// Determine whether this type has any qualifiers.
   bool hasQualifiers() const;
 
-  /// \brief Determine whether this particular QualType instance has any
+  /// Determine whether this particular QualType instance has any
   /// "non-fast" qualifiers, e.g., those that are stored in an ExtQualType
   /// instance.
   bool hasLocalNonFastQualifiers() const {
     return Value.getPointer().is<const ExtQuals*>();
   }
 
-  /// \brief Retrieve the set of qualifiers local to this particular QualType
+  /// Retrieve the set of qualifiers local to this particular QualType
   /// instance, not including any qualifiers acquired through typedefs or
   /// other sugar.
   Qualifiers getLocalQualifiers() const;
 
-  /// \brief Retrieve the set of qualifiers applied to this type.
+  /// Retrieve the set of qualifiers applied to this type.
   Qualifiers getQualifiers() const;
 
-  /// \brief Retrieve the set of CVR (const-volatile-restrict) qualifiers
+  /// Retrieve the set of CVR (const-volatile-restrict) qualifiers
   /// local to this particular QualType instance, not including any qualifiers
   /// acquired through typedefs or other sugar.
   unsigned getLocalCVRQualifiers() const {
     return getLocalFastQualifiers();
   }
 
-  /// \brief Retrieve the set of CVR (const-volatile-restrict) qualifiers
+  /// Retrieve the set of CVR (const-volatile-restrict) qualifiers
   /// applied to this type.
   unsigned getCVRQualifiers() const;
 
@@ -789,7 +789,7 @@
     return QualType::isConstant(*this, Ctx);
   }
 
-  /// \brief Determine whether this is a Plain Old Data (POD) type (C++ 3.9p10).
+  /// Determine whether this is a Plain Old Data (POD) type (C++ 3.9p10).
   bool isPODType(const ASTContext &Context) const;
 
   /// Return true if this is a POD type according to the rules of the C++98
@@ -879,12 +879,12 @@
 
   QualType getCanonicalType() const;
 
-  /// \brief Return this type with all of the instance-specific qualifiers
+  /// Return this type with all of the instance-specific qualifiers
   /// removed, but without removing any qualifiers that may have been applied
   /// through typedefs.
   QualType getLocalUnqualifiedType() const { return QualType(getTypePtr(), 0); }
 
-  /// \brief Retrieve the unqualified variant of the given type,
+  /// Retrieve the unqualified variant of the given type,
   /// removing as little sugar as possible.
   ///
   /// This routine looks through various kinds of sugar to find the
@@ -915,17 +915,17 @@
   /// ASTContext::getUnqualifiedArrayType.
   inline SplitQualType getSplitUnqualifiedType() const;
 
-  /// \brief Determine whether this type is more qualified than the other
+  /// Determine whether this type is more qualified than the other
   /// given type, requiring exact equality for non-CVR qualifiers.
   bool isMoreQualifiedThan(QualType Other) const;
 
-  /// \brief Determine whether this type is at least as qualified as the other
+  /// Determine whether this type is at least as qualified as the other
   /// given type, requiring exact equality for non-CVR qualifiers.
   bool isAtLeastAsQualifiedAs(QualType Other) const;
 
   QualType getNonReferenceType() const;
 
-  /// \brief Determine the type of a (typically non-lvalue) expression with the
+  /// Determine the type of a (typically non-lvalue) expression with the
   /// specified result type.
   ///
   /// This routine should be used for expressions for which the return type is
@@ -951,7 +951,7 @@
     return getSplitDesugaredType(*this);
   }
 
-  /// \brief Return the specified type with one level of "sugar" removed from
+  /// Return the specified type with one level of "sugar" removed from
   /// the type.
   ///
   /// This routine takes off the first typedef, typeof, etc. If the outer level
@@ -1272,7 +1272,7 @@
 
 namespace clang {
 
-/// \brief Base class that is common to both the \c ExtQuals and \c Type
+/// Base class that is common to both the \c ExtQuals and \c Type
 /// classes, which allows \c QualType to access the common fields between the
 /// two.
 class ExtQualsTypeCommonBase {
@@ -1280,14 +1280,14 @@
   friend class QualType;
   friend class Type;
 
-  /// \brief The "base" type of an extended qualifiers type (\c ExtQuals) or
+  /// The "base" type of an extended qualifiers type (\c ExtQuals) or
   /// a self-referential pointer (for \c Type).
   ///
   /// This pointer allows an efficient mapping from a QualType to its
   /// underlying type pointer.
   const Type *const BaseType;
 
-  /// \brief The canonical type of this type.  A QualType.
+  /// The canonical type of this type.  A QualType.
   QualType CanonicalType;
 
   ExtQualsTypeCommonBase(const Type *baseType, QualType canon)
@@ -1368,25 +1368,25 @@
 /// This determines whether a member function's "this" object can be an
 /// lvalue, rvalue, or neither.
 enum RefQualifierKind {
-  /// \brief No ref-qualifier was provided.
+  /// No ref-qualifier was provided.
   RQ_None = 0,
 
-  /// \brief An lvalue ref-qualifier was provided (\c &).
+  /// An lvalue ref-qualifier was provided (\c &).
   RQ_LValue,
 
-  /// \brief An rvalue ref-qualifier was provided (\c &&).
+  /// An rvalue ref-qualifier was provided (\c &&).
   RQ_RValue
 };
 
 /// Which keyword(s) were used to create an AutoType.
 enum class AutoTypeKeyword {
-  /// \brief auto
+  /// auto
   Auto,
 
-  /// \brief decltype(auto)
+  /// decltype(auto)
   DecltypeAuto,
 
-  /// \brief __auto_type (GNU extension)
+  /// __auto_type (GNU extension)
   GNUAutoType
 };
 
@@ -1445,21 +1445,21 @@
     /// Whether this type is a variably-modified type (C99 6.7.5).
     unsigned VariablyModified : 1;
 
-    /// \brief Whether this type contains an unexpanded parameter pack
+    /// Whether this type contains an unexpanded parameter pack
     /// (for C++11 variadic templates).
     unsigned ContainsUnexpandedParameterPack : 1;
 
-    /// \brief True if the cache (i.e. the bitfields here starting with
+    /// True if the cache (i.e. the bitfields here starting with
     /// 'Cache') is valid.
     mutable unsigned CacheValid : 1;
 
-    /// \brief Linkage of this type.
+    /// Linkage of this type.
     mutable unsigned CachedLinkage : 3;
 
-    /// \brief Whether this type involves and local or unnamed types.
+    /// Whether this type involves and local or unnamed types.
     mutable unsigned CachedLocalOrUnnamed : 1;
 
-    /// \brief Whether this type comes from an AST file.
+    /// Whether this type comes from an AST file.
     mutable unsigned FromAST : 1;
 
     bool isCacheValid() const {
@@ -1524,7 +1524,7 @@
     /// cv-qualifier-seq, [...], are part of the function type.
     unsigned TypeQuals : 4;
 
-    /// \brief The ref-qualifier associated with a \c FunctionProtoType.
+    /// The ref-qualifier associated with a \c FunctionProtoType.
     ///
     /// This is a value of type \c RefQualifierKind.
     unsigned RefQualifier : 2;
@@ -1629,7 +1629,7 @@
 private:
   template <class T> friend class TypePropertyCache;
 
-  /// \brief Set whether this type comes from an AST file.
+  /// Set whether this type comes from an AST file.
   void setFromAST(bool V = true) const {
     TypeBits.FromAST = V;
   }
@@ -1680,10 +1680,10 @@
 
   TypeClass getTypeClass() const { return static_cast<TypeClass>(TypeBits.TC); }
 
-  /// \brief Whether this type comes from an AST file.
+  /// Whether this type comes from an AST file.
   bool isFromAST() const { return TypeBits.FromAST; }
 
-  /// \brief Whether this type is or contains an unexpanded parameter
+  /// Whether this type is or contains an unexpanded parameter
   /// pack, used to support C++0x variadic templates.
   ///
   /// A type that contains a parameter pack shall be expanded by the
@@ -1721,7 +1721,7 @@
   /// determine its size (e.g. void, or a fwd declared struct). Clients of this
   /// routine will need to determine if the size is actually required.
   ///
-  /// \brief Def If non-null, and the type refers to some kind of declaration
+  /// Def If non-null, and the type refers to some kind of declaration
   /// that can be completed (such as a C struct, C++ class, or Objective-C
   /// class), will be set to the declaration.
   bool isIncompleteType(NamedDecl **Def = nullptr) const;
@@ -1732,7 +1732,7 @@
     return !isFunctionType();
   }
 
-  /// \brief Determine whether this type is an object type.
+  /// Determine whether this type is an object type.
   bool isObjectType() const {
     // C++ [basic.types]p8:
     //   An object type is a (possibly cv-qualified) type that is not a
@@ -1927,7 +1927,7 @@
   /// somehow depends on a template parameter (C++ [temp.dep.type]).
   bool isDependentType() const { return TypeBits.Dependent; }
 
-  /// \brief Determine whether this type is an instantiation-dependent type,
+  /// Determine whether this type is an instantiation-dependent type,
   /// meaning that the type involves a template parameter (even if the
   /// definition does not actually depend on the type substituted for that
   /// template parameter).
@@ -1935,24 +1935,24 @@
     return TypeBits.InstantiationDependent;
   }
 
-  /// \brief Determine whether this type is an undeduced type, meaning that
+  /// Determine whether this type is an undeduced type, meaning that
   /// it somehow involves a C++11 'auto' type or similar which has not yet been
   /// deduced.
   bool isUndeducedType() const;
 
-  /// \brief Whether this type is a variably-modified type (C99 6.7.5).
+  /// Whether this type is a variably-modified type (C99 6.7.5).
   bool isVariablyModifiedType() const { return TypeBits.VariablyModified; }
 
-  /// \brief Whether this type involves a variable-length array type
+  /// Whether this type involves a variable-length array type
   /// with a definite size.
   bool hasSizedVLAType() const;
 
-  /// \brief Whether this type is or contains a local or unnamed type.
+  /// Whether this type is or contains a local or unnamed type.
   bool hasUnnamedOrLocalType() const;
 
   bool isOverloadableType() const;
 
-  /// \brief Determine wither this type is a C++ elaborated-type-specifier.
+  /// Determine wither this type is a C++ elaborated-type-specifier.
   bool isElaboratedTypeSpecifier() const;
 
   bool canDecayToPointerType() const;
@@ -1966,19 +1966,19 @@
   /// purpose of GC'ability
   bool hasObjCPointerRepresentation() const;
 
-  /// \brief Determine whether this type has an integer representation
+  /// Determine whether this type has an integer representation
   /// of some sort, e.g., it is an integer type or a vector.
   bool hasIntegerRepresentation() const;
 
-  /// \brief Determine whether this type has an signed integer representation
+  /// Determine whether this type has an signed integer representation
   /// of some sort, e.g., it is an signed integer type or a vector.
   bool hasSignedIntegerRepresentation() const;
 
-  /// \brief Determine whether this type has an unsigned integer representation
+  /// Determine whether this type has an unsigned integer representation
   /// of some sort, e.g., it is an unsigned integer type or a vector.
   bool hasUnsignedIntegerRepresentation() const;
 
-  /// \brief Determine whether this type has a floating-point representation
+  /// Determine whether this type has a floating-point representation
   /// of some sort, e.g., it is a floating-point type or a vector thereof.
   bool hasFloatingRepresentation() const;
 
@@ -1998,12 +1998,12 @@
   const ObjCObjectPointerType *getAsObjCQualifiedClassType() const;
   const ObjCObjectType *getAsObjCQualifiedInterfaceType() const;
 
-  /// \brief Retrieves the CXXRecordDecl that this type refers to, either
+  /// Retrieves the CXXRecordDecl that this type refers to, either
   /// because the type is a RecordType or because it is the injected-class-name
   /// type of a class template or class template partial specialization.
   CXXRecordDecl *getAsCXXRecordDecl() const;
 
-  /// \brief Retrieves the TagDecl that this type refers to, either
+  /// Retrieves the TagDecl that this type refers to, either
   /// because the type is a TagType or because it is the injected-class-name
   /// type of a class template or class template partial specialization.
   TagDecl *getAsTagDecl() const;
@@ -2183,16 +2183,16 @@
   void dump(llvm::raw_ostream &OS) const;
 };
 
-/// \brief This will check for a TypedefType by removing any existing sugar
+/// This will check for a TypedefType by removing any existing sugar
 /// until it reaches a TypedefType or a non-sugared type.
 template <> const TypedefType *Type::getAs() const;
 
-/// \brief This will check for a TemplateSpecializationType by removing any
+/// This will check for a TemplateSpecializationType by removing any
 /// existing sugar until it reaches a TemplateSpecializationType or a
 /// non-sugared type.
 template <> const TemplateSpecializationType *Type::getAs() const;
 
-/// \brief This will check for an AttributedType by removing any existing sugar
+/// This will check for an AttributedType by removing any existing sugar
 /// until it reaches an AttributedType or a non-sugared type.
 template <> const AttributedType *Type::getAs() const;
 
@@ -2707,13 +2707,13 @@
   bool isSugared() const { return false; }
   QualType desugar() const { return QualType(this, 0); }
 
-  /// \brief Determine the number of bits required to address a member of
+  /// Determine the number of bits required to address a member of
   // an array with the given element type and number of elements.
   static unsigned getNumAddressingBits(const ASTContext &Context,
                                        QualType ElementType,
                                        const llvm::APInt &NumElements);
 
-  /// \brief Determine the maximum number of active bits that an array's size
+  /// Determine the maximum number of active bits that an array's size
   /// can require, which limits the maximum size of the array.
   static unsigned getMaxSizeBits(const ASTContext &Context);
 
@@ -2844,7 +2844,7 @@
 
   const ASTContext &Context;
 
-  /// \brief An assignment expression that will instantiate to the
+  /// An assignment expression that will instantiate to the
   /// size of the array.
   ///
   /// The expression itself might be null, in which case the array
@@ -3293,7 +3293,7 @@
   bool isVolatile() const { return getTypeQuals() & Qualifiers::Volatile; }
   bool isRestrict() const { return getTypeQuals() & Qualifiers::Restrict; }
 
-  /// \brief Determine the type of an expression that calls a function of
+  /// Determine the type of an expression that calls a function of
   /// this type.
   QualType getCallResultType(const ASTContext &Context) const {
     return getReturnType().getNonLValueExprType(Context);
@@ -3488,7 +3488,7 @@
 private:
   friend class ASTContext; // ASTContext creates these.
 
-  /// \brief Determine whether there are any argument types that
+  /// Determine whether there are any argument types that
   /// contain an unexpanded parameter pack.
   static bool containsAnyUnexpandedParameterPack(const QualType *ArgArray,
                                                  unsigned numArgs) {
@@ -3653,7 +3653,7 @@
     return *reinterpret_cast<Expr *const *>(param_type_end());
   }
 
-  /// \brief If this function type has an exception specification which hasn't
+  /// If this function type has an exception specification which hasn't
   /// been determined yet (either because it has not been evaluated or because
   /// it has not been instantiated), this is the function whose exception
   /// specification is represented by this type.
@@ -3664,7 +3664,7 @@
     return reinterpret_cast<FunctionDecl *const *>(param_type_end())[0];
   }
 
-  /// \brief If this function type has an uninstantiated exception
+  /// If this function type has an uninstantiated exception
   /// specification, this is the function whose exception specification
   /// should be instantiated to find the exception specification for
   /// this type.
@@ -3793,7 +3793,7 @@
                       bool Canonical);
 };
 
-/// \brief Represents the dependent type named by a dependently-scoped
+/// Represents the dependent type named by a dependently-scoped
 /// typename using declaration, e.g.
 ///   using typename Base<T>::foo;
 ///
@@ -3864,16 +3864,16 @@
 public:
   Expr *getUnderlyingExpr() const { return TOExpr; }
 
-  /// \brief Remove a single level of sugar.
+  /// Remove a single level of sugar.
   QualType desugar() const;
 
-  /// \brief Returns whether this type directly provides sugar.
+  /// Returns whether this type directly provides sugar.
   bool isSugared() const;
 
   static bool classof(const Type *T) { return T->getTypeClass() == TypeOfExpr; }
 };
 
-/// \brief Internal representation of canonical, dependent
+/// Internal representation of canonical, dependent
 /// `typeof(expr)` types.
 ///
 /// This class is used internally by the ASTContext to manage
@@ -3913,10 +3913,10 @@
 public:
   QualType getUnderlyingType() const { return TOType; }
 
-  /// \brief Remove a single level of sugar.
+  /// Remove a single level of sugar.
   QualType desugar() const { return getUnderlyingType(); }
 
-  /// \brief Returns whether this type directly provides sugar.
+  /// Returns whether this type directly provides sugar.
   bool isSugared() const { return true; }
 
   static bool classof(const Type *T) { return T->getTypeClass() == TypeOf; }
@@ -3936,16 +3936,16 @@
   Expr *getUnderlyingExpr() const { return E; }
   QualType getUnderlyingType() const { return UnderlyingType; }
 
-  /// \brief Remove a single level of sugar.
+  /// Remove a single level of sugar.
   QualType desugar() const;
 
-  /// \brief Returns whether this type directly provides sugar.
+  /// Returns whether this type directly provides sugar.
   bool isSugared() const;
 
   static bool classof(const Type *T) { return T->getTypeClass() == Decltype; }
 };
 
-/// \brief Internal representation of canonical, dependent
+/// Internal representation of canonical, dependent
 /// decltype(expr) types.
 ///
 /// This class is used internally by the ASTContext to manage
@@ -4001,7 +4001,7 @@
   }
 };
 
-/// \brief Internal representation of canonical, dependent
+/// Internal representation of canonical, dependent
 /// __underlying_type(type) types.
 ///
 /// This class is used internally by the ASTContext to manage
@@ -4321,7 +4321,7 @@
   }
 };
 
-/// \brief Represents the result of substituting a type for a template
+/// Represents the result of substituting a type for a template
 /// type parameter.
 ///
 /// Within an instantiated template, all template type parameters have
@@ -4372,7 +4372,7 @@
   }
 };
 
-/// \brief Represents the result of substituting a set of types for a template
+/// Represents the result of substituting a set of types for a template
 /// type parameter pack.
 ///
 /// When a pack expansion in the source code contains multiple parameter packs
@@ -4387,14 +4387,14 @@
 class SubstTemplateTypeParmPackType : public Type, public llvm::FoldingSetNode {
   friend class ASTContext;
 
-  /// \brief The original type parameter.
+  /// The original type parameter.
   const TemplateTypeParmType *Replaced;
 
-  /// \brief A pointer to the set of template arguments that this
+  /// A pointer to the set of template arguments that this
   /// parameter pack is instantiated with.
   const TemplateArgument *Arguments;
 
-  /// \brief The number of template arguments in \c Arguments.
+  /// The number of template arguments in \c Arguments.
   unsigned NumArguments;
 
   SubstTemplateTypeParmPackType(const TemplateTypeParmType *Param,
@@ -4424,7 +4424,7 @@
   }
 };
 
-/// \brief Common base class for placeholders for types that get replaced by
+/// Common base class for placeholders for types that get replaced by
 /// placeholder type deduction: C++11 auto, C++14 decltype(auto), C++17 deduced
 /// class template types, and (eventually) constrained type names from the C++
 /// Concepts TS.
@@ -4457,7 +4457,7 @@
   bool isSugared() const { return !isCanonicalUnqualified(); }
   QualType desugar() const { return getCanonicalTypeInternal(); }
 
-  /// \brief Get the type deduced for this placeholder type, or null if it's
+  /// Get the type deduced for this placeholder type, or null if it's
   /// either not been deduced or was deduced to a dependent type.
   QualType getDeducedType() const {
     return !isCanonicalUnqualified() ? getCanonicalTypeInternal() : QualType();
@@ -4472,7 +4472,7 @@
   }
 };
 
-/// \brief Represents a C++11 auto or C++14 decltype(auto) type.
+/// Represents a C++11 auto or C++14 decltype(auto) type.
 class AutoType : public DeducedType, public llvm::FoldingSetNode {
   friend class ASTContext; // ASTContext creates these
 
@@ -4508,7 +4508,7 @@
   }
 };
 
-/// \brief Represents a C++17 deduced template specialization type.
+/// Represents a C++17 deduced template specialization type.
 class DeducedTemplateSpecializationType : public DeducedType,
                                           public llvm::FoldingSetNode {
   friend class ASTContext; // ASTContext creates these
@@ -4545,7 +4545,7 @@
   }
 };
 
-/// \brief Represents a type template specialization; the template
+/// Represents a type template specialization; the template
 /// must be a class template, a type alias template, or a template
 /// template parameter.  A template which cannot be resolved to one of
 /// these, e.g. because it is written with a dependent scope
@@ -4605,7 +4605,7 @@
     return isa<InjectedClassNameType>(getCanonicalTypeInternal());
   }
 
-  /// \brief Determine if this template specialization type is for a type alias
+  /// Determine if this template specialization type is for a type alias
   /// template that has been substituted.
   ///
   /// Nearly every template specialization type whose template is an alias
@@ -4674,7 +4674,7 @@
   }
 };
 
-/// \brief Print a template argument list, including the '<' and '>'
+/// Print a template argument list, including the '<' and '>'
 /// enclosing the template arguments.
 void printTemplateArgumentList(raw_ostream &OS,
                                ArrayRef<TemplateArgument> Args,
@@ -4757,47 +4757,47 @@
   }
 };
 
-/// \brief The kind of a tag type.
+/// The kind of a tag type.
 enum TagTypeKind {
-  /// \brief The "struct" keyword.
+  /// The "struct" keyword.
   TTK_Struct,
 
-  /// \brief The "__interface" keyword.
+  /// The "__interface" keyword.
   TTK_Interface,
 
-  /// \brief The "union" keyword.
+  /// The "union" keyword.
   TTK_Union,
 
-  /// \brief The "class" keyword.
+  /// The "class" keyword.
   TTK_Class,
 
-  /// \brief The "enum" keyword.
+  /// The "enum" keyword.
   TTK_Enum
 };
 
-/// \brief The elaboration keyword that precedes a qualified type name or
+/// The elaboration keyword that precedes a qualified type name or
 /// introduces an elaborated-type-specifier.
 enum ElaboratedTypeKeyword {
-  /// \brief The "struct" keyword introduces the elaborated-type-specifier.
+  /// The "struct" keyword introduces the elaborated-type-specifier.
   ETK_Struct,
 
-  /// \brief The "__interface" keyword introduces the elaborated-type-specifier.
+  /// The "__interface" keyword introduces the elaborated-type-specifier.
   ETK_Interface,
 
-  /// \brief The "union" keyword introduces the elaborated-type-specifier.
+  /// The "union" keyword introduces the elaborated-type-specifier.
   ETK_Union,
 
-  /// \brief The "class" keyword introduces the elaborated-type-specifier.
+  /// The "class" keyword introduces the elaborated-type-specifier.
   ETK_Class,
 
-  /// \brief The "enum" keyword introduces the elaborated-type-specifier.
+  /// The "enum" keyword introduces the elaborated-type-specifier.
   ETK_Enum,
 
-  /// \brief The "typename" keyword precedes the qualified type name, e.g.,
+  /// The "typename" keyword precedes the qualified type name, e.g.,
   /// \c typename T::type.
   ETK_Typename,
 
-  /// \brief No keyword precedes the qualified type name.
+  /// No keyword precedes the qualified type name.
   ETK_None
 };
 
@@ -4848,7 +4848,7 @@
   static CannotCastToThisType classof(const Type *);
 };
 
-/// \brief Represents a type that was referred to using an elaborated type
+/// Represents a type that was referred to using an elaborated type
 /// keyword, e.g., struct S, or via a qualified name, e.g., N::M::type,
 /// or both.
 ///
@@ -4909,7 +4909,7 @@
   }
 };
 
-/// \brief Represents a qualified type name for which the type name is
+/// Represents a qualified type name for which the type name is
 /// dependent.
 ///
 /// DependentNameType represents a class of dependent types that involve a
@@ -4924,10 +4924,10 @@
 class DependentNameType : public TypeWithKeyword, public llvm::FoldingSetNode {
   friend class ASTContext; // ASTContext creates these
 
-  /// \brief The nested name specifier containing the qualifier.
+  /// The nested name specifier containing the qualifier.
   NestedNameSpecifier *NNS;
 
-  /// \brief The type that this typename specifier refers to.
+  /// The type that this typename specifier refers to.
   const IdentifierInfo *Name;
 
   DependentNameType(ElaboratedTypeKeyword Keyword, NestedNameSpecifier *NNS,
@@ -4984,7 +4984,7 @@
   /// The identifier of the template.
   const IdentifierInfo *Name;
 
-  /// \brief The number of template arguments named in this class template
+  /// The number of template arguments named in this class template
   /// specialization.
   unsigned NumArgs;
 
@@ -5006,12 +5006,12 @@
   NestedNameSpecifier *getQualifier() const { return NNS; }
   const IdentifierInfo *getIdentifier() const { return Name; }
 
-  /// \brief Retrieve the template arguments.
+  /// Retrieve the template arguments.
   const TemplateArgument *getArgs() const {
     return getArgBuffer();
   }
 
-  /// \brief Retrieve the number of template arguments.
+  /// Retrieve the number of template arguments.
   unsigned getNumArgs() const { return NumArgs; }
 
   const TemplateArgument &getArg(unsigned Idx) const; // in TemplateBase.h
@@ -5044,7 +5044,7 @@
   }
 };
 
-/// \brief Represents a pack expansion of types.
+/// Represents a pack expansion of types.
 ///
 /// Pack expansions are part of C++11 variadic templates. A pack
 /// expansion contains a pattern, which itself contains one or more
@@ -5069,10 +5069,10 @@
 class PackExpansionType : public Type, public llvm::FoldingSetNode {
   friend class ASTContext; // ASTContext creates these
 
-  /// \brief The pattern of the pack expansion.
+  /// The pattern of the pack expansion.
   QualType Pattern;
 
-  /// \brief The number of expansions that this pack expansion will
+  /// The number of expansions that this pack expansion will
   /// generate when substituted (+1), or indicates that
   ///
   /// This field will only have a non-zero value when some of the parameter
@@ -5090,12 +5090,12 @@
         NumExpansions(NumExpansions ? *NumExpansions + 1 : 0) {}
 
 public:
-  /// \brief Retrieve the pattern of this pack expansion, which is the
+  /// Retrieve the pattern of this pack expansion, which is the
   /// type that will be repeatedly instantiated when instantiating the
   /// pack expansion itself.
   QualType getPattern() const { return Pattern; }
 
-  /// \brief Retrieve the number of expansions that this pack expansion will
+  /// Retrieve the number of expansions that this pack expansion will
   /// generate, if known.
   Optional<unsigned> getNumExpansions() const {
     if (NumExpansions)
@@ -6321,13 +6321,13 @@
   return DT && !DT->isDeduced();
 }
 
-/// \brief Determines whether this is a type for which one can define
+/// Determines whether this is a type for which one can define
 /// an overloaded operator.
 inline bool Type::isOverloadableType() const {
   return isDependentType() || isRecordType() || isEnumeralType();
 }
 
-/// \brief Determines whether this type can decay to a pointer type.
+/// Determines whether this type can decay to a pointer type.
 inline bool Type::canDecayToPointerType() const {
   return isFunctionType() || isArrayType();
 }
Index: cfe/trunk/include/clang/AST/TypeLoc.h
===================================================================
--- cfe/trunk/include/clang/AST/TypeLoc.h
+++ cfe/trunk/include/clang/AST/TypeLoc.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::TypeLoc interface and its subclasses.
+/// Defines the clang::TypeLoc interface and its subclasses.
 //
 //===----------------------------------------------------------------------===//
 
@@ -49,7 +49,7 @@
   class Class##TypeLoc;
 #include "clang/AST/TypeLocNodes.def"
 
-/// \brief Base wrapper for a particular "section" of type source info.
+/// Base wrapper for a particular "section" of type source info.
 ///
 /// A client should use the TypeLoc subclasses through castAs()/getAs()
 /// in order to get at the actual information.
@@ -67,7 +67,7 @@
   TypeLoc(const Type *ty, void *opaqueData)
       : Ty(ty), Data(opaqueData) {}
 
-  /// \brief Convert to the specified TypeLoc type, asserting that this TypeLoc
+  /// Convert to the specified TypeLoc type, asserting that this TypeLoc
   /// is of the desired type.
   ///
   /// \pre T::isKind(*this)
@@ -80,7 +80,7 @@
     return t;
   }
 
-  /// \brief Convert to the specified TypeLoc type, returning a null TypeLoc if
+  /// Convert to the specified TypeLoc type, returning a null TypeLoc if
   /// this TypeLoc is not of the desired type.
   template<typename T>
   T getAs() const {
@@ -92,7 +92,7 @@
     return t;
   }
 
-  /// \brief Convert to the specified TypeLoc type, returning a null TypeLoc if
+  /// Convert to the specified TypeLoc type, returning a null TypeLoc if
   /// this TypeLock is not of the desired type. It will consider type
   /// adjustments from a type that wad written as a T to another type that is
   /// still canonically a T (ignores parens, attributes, elaborated types, etc).
@@ -118,14 +118,14 @@
   bool isNull() const { return !Ty; }
   explicit operator bool() const { return Ty; }
 
-  /// \brief Returns the size of type source info data block for the given type.
+  /// Returns the size of type source info data block for the given type.
   static unsigned getFullDataSizeForType(QualType Ty);
 
-  /// \brief Returns the alignment of type source info data block for
+  /// Returns the alignment of type source info data block for
   /// the given type.
   static unsigned getLocalAlignmentForType(QualType Ty);
 
-  /// \brief Get the type for which this source info wrapper provides
+  /// Get the type for which this source info wrapper provides
   /// information.
   QualType getType() const {
     return QualType::getFromOpaquePtr(Ty);
@@ -135,18 +135,18 @@
     return QualType::getFromOpaquePtr(Ty).getTypePtr();
   }
 
-  /// \brief Get the pointer where source information is stored.
+  /// Get the pointer where source information is stored.
   void *getOpaqueData() const {
     return Data;
   }
 
-  /// \brief Get the begin source location.
+  /// Get the begin source location.
   SourceLocation getBeginLoc() const;
 
-  /// \brief Get the end source location.
+  /// Get the end source location.
   SourceLocation getEndLoc() const;
 
-  /// \brief Get the full source range.
+  /// Get the full source range.
   SourceRange getSourceRange() const LLVM_READONLY {
     return SourceRange(getBeginLoc(), getEndLoc());
   }
@@ -154,28 +154,28 @@
   SourceLocation getLocStart() const LLVM_READONLY { return getBeginLoc(); }
   SourceLocation getLocEnd() const LLVM_READONLY { return getEndLoc(); }
 
-  /// \brief Get the local source range.
+  /// Get the local source range.
   SourceRange getLocalSourceRange() const {
     return getLocalSourceRangeImpl(*this);
   }
 
-  /// \brief Returns the size of the type source info data block.
+  /// Returns the size of the type source info data block.
   unsigned getFullDataSize() const {
     return getFullDataSizeForType(getType());
   }
 
-  /// \brief Get the next TypeLoc pointed by this TypeLoc, e.g for "int*" the
+  /// Get the next TypeLoc pointed by this TypeLoc, e.g for "int*" the
   /// TypeLoc is a PointerLoc and next TypeLoc is for "int".
   TypeLoc getNextTypeLoc() const {
     return getNextTypeLocImpl(*this);
   }
 
-  /// \brief Skips past any qualifiers, if this is qualified.
+  /// Skips past any qualifiers, if this is qualified.
   UnqualTypeLoc getUnqualifiedLoc() const; // implemented in this header
 
   TypeLoc IgnoreParens() const;
 
-  /// \brief Find a type with the location of an explicit type qualifier.
+  /// Find a type with the location of an explicit type qualifier.
   ///
   /// The result, if non-null, will be one of:
   ///   QualifiedTypeLoc
@@ -183,7 +183,7 @@
   ///   AttributedTypeLoc, for those type attributes that behave as qualifiers
   TypeLoc findExplicitQualifierLoc() const;
 
-  /// \brief Initializes this to state that every location in this
+  /// Initializes this to state that every location in this
   /// type is the given location.
   ///
   /// This method exists to provide a simple transition for code that
@@ -192,14 +192,14 @@
     initializeImpl(Context, *this, Loc);
   }
 
-  /// \brief Initializes this by copying its information from another
+  /// Initializes this by copying its information from another
   /// TypeLoc of the same type.
   void initializeFullCopy(TypeLoc Other) {
     assert(getType() == Other.getType());
     copy(Other);
   }
 
-  /// \brief Initializes this by copying its information from another
+  /// Initializes this by copying its information from another
   /// TypeLoc of the same type.  The given size must be the full data
   /// size.
   void initializeFullCopy(TypeLoc Other, unsigned Size) {
@@ -235,13 +235,13 @@
   static SourceRange getLocalSourceRangeImpl(TypeLoc TL);
 };
 
-/// \brief Return the TypeLoc for a type source info.
+/// Return the TypeLoc for a type source info.
 inline TypeLoc TypeSourceInfo::getTypeLoc() const {
   // TODO: is this alignment already sufficient?
   return TypeLoc(Ty, const_cast<void*>(static_cast<const void*>(this + 1)));
 }
 
-/// \brief Wrapper of type source information for a type with
+/// Wrapper of type source information for a type with
 /// no direct qualifiers.
 class UnqualTypeLoc : public TypeLoc {
 public:
@@ -264,7 +264,7 @@
   }
 };
 
-/// \brief Wrapper of type source information for a type with
+/// Wrapper of type source information for a type with
 /// non-trivial direct qualifiers.
 ///
 /// Currently, we intentionally do not provide source location for
@@ -295,7 +295,7 @@
     return getUnqualifiedLoc();
   }
 
-  /// \brief Returns the size of the type source info data block that is
+  /// Returns the size of the type source info data block that is
   /// specific to this type.
   unsigned getLocalDataSize() const {
     // In fact, we don't currently preserve any location information
@@ -303,7 +303,7 @@
     return 0;
   }
 
-  /// \brief Returns the alignment of the type source info data block that is
+  /// Returns the alignment of the type source info data block that is
   /// specific to this type.
   unsigned getLocalDataAlignment() const {
     // We don't preserve any location information.
@@ -503,7 +503,7 @@
   SourceLocation NameLoc;
 };
 
-/// \brief A reasonable base class for TypeLocs that correspond to
+/// A reasonable base class for TypeLocs that correspond to
 /// types that are written as a type-specifier.
 class TypeSpecTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
                                                TypeSpecTypeLoc,
@@ -541,7 +541,7 @@
   SourceRange BuiltinRange;
 };
 
-/// \brief Wrapper for source info for builtin types.
+/// Wrapper for source info for builtin types.
 class BuiltinTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
                                               BuiltinTypeLoc,
                                               BuiltinType,
@@ -661,7 +661,7 @@
   }
 };
 
-/// \brief Wrapper for source info for typedefs.
+/// Wrapper for source info for typedefs.
 class TypedefTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
                                                         TypedefTypeLoc,
                                                         TypedefType> {
@@ -671,7 +671,7 @@
   }
 };
 
-/// \brief Wrapper for source info for injected class names of class
+/// Wrapper for source info for injected class names of class
 /// templates.
 class InjectedClassNameTypeLoc :
     public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
@@ -683,7 +683,7 @@
   }
 };
 
-/// \brief Wrapper for source info for unresolved typename using decls.
+/// Wrapper for source info for unresolved typename using decls.
 class UnresolvedUsingTypeLoc :
     public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
                                      UnresolvedUsingTypeLoc,
@@ -694,7 +694,7 @@
   }
 };
 
-/// \brief Wrapper for source info for tag types.  Note that this only
+/// Wrapper for source info for tag types.  Note that this only
 /// records source info for the name itself; a type written 'struct foo'
 /// should be represented as an ElaboratedTypeLoc.  We currently
 /// only do that when C++ is enabled because of the expense of
@@ -705,7 +705,7 @@
 public:
   TagDecl *getDecl() const { return getTypePtr()->getDecl(); }
 
-  /// \brief True if the tag was defined in this type specifier.
+  /// True if the tag was defined in this type specifier.
   bool isDefinition() const {
     TagDecl *D = getDecl();
     return D->isCompleteDefinition() &&
@@ -713,7 +713,7 @@
   }
 };
 
-/// \brief Wrapper for source info for record types.
+/// Wrapper for source info for record types.
 class RecordTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc,
                                                        RecordTypeLoc,
                                                        RecordType> {
@@ -721,7 +721,7 @@
   RecordDecl *getDecl() const { return getTypePtr()->getDecl(); }
 };
 
-/// \brief Wrapper for source info for enum types.
+/// Wrapper for source info for enum types.
 class EnumTypeLoc : public InheritingConcreteTypeLoc<TagTypeLoc,
                                                      EnumTypeLoc,
                                                      EnumType> {
@@ -729,7 +729,7 @@
   EnumDecl *getDecl() const { return getTypePtr()->getDecl(); }
 };
 
-/// \brief Wrapper for template type parameters.
+/// Wrapper for template type parameters.
 class TemplateTypeParmTypeLoc :
     public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
                                      TemplateTypeParmTypeLoc,
@@ -828,14 +828,14 @@
   }
 };
 
-/// \brief Wrapper for substituted template type parameters.
+/// Wrapper for substituted template type parameters.
 class SubstTemplateTypeParmTypeLoc :
     public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
                                      SubstTemplateTypeParmTypeLoc,
                                      SubstTemplateTypeParmType> {
 };
 
-  /// \brief Wrapper for substituted template type parameters.
+  /// Wrapper for substituted template type parameters.
 class SubstTemplateTypeParmPackTypeLoc :
     public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
                                      SubstTemplateTypeParmPackTypeLoc,
@@ -855,7 +855,7 @@
   SourceLocation AttrLoc;
 };
 
-/// \brief Type source information for an attributed type.
+/// Type source information for an attributed type.
 class AttributedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
                                                  AttributedTypeLoc,
                                                  AttributedType,
@@ -1114,7 +1114,7 @@
   SourceLocation NameEndLoc;
 };
 
-/// \brief Wrapper for source info for ObjC interfaces.
+/// Wrapper for source info for ObjC interfaces.
 class ObjCInterfaceTypeLoc : public ConcreteTypeLoc<ObjCObjectTypeLoc,
                                                     ObjCInterfaceTypeLoc,
                                                     ObjCInterfaceType,
@@ -1227,7 +1227,7 @@
   }
 };
 
-/// \brief Wrapper for source info for pointers decayed from arrays and
+/// Wrapper for source info for pointers decayed from arrays and
 /// functions.
 class DecayedTypeLoc : public InheritingConcreteTypeLoc<
                            AdjustedTypeLoc, DecayedTypeLoc, DecayedType> {
@@ -1267,7 +1267,7 @@
   }
 };
 
-/// \brief Wrapper for source info for pointers.
+/// Wrapper for source info for pointers.
 class PointerTypeLoc : public PointerLikeTypeLoc<PointerTypeLoc,
                                                  PointerType> {
 public:
@@ -1280,7 +1280,7 @@
   }
 };
 
-/// \brief Wrapper for source info for block pointers.
+/// Wrapper for source info for block pointers.
 class BlockPointerTypeLoc : public PointerLikeTypeLoc<BlockPointerTypeLoc,
                                                       BlockPointerType> {
 public:
@@ -1297,7 +1297,7 @@
   TypeSourceInfo *ClassTInfo;
 };
 
-/// \brief Wrapper for source info for member pointers.
+/// Wrapper for source info for member pointers.
 class MemberPointerTypeLoc : public PointerLikeTypeLoc<MemberPointerTypeLoc,
                                                        MemberPointerType,
                                                        MemberPointerLocInfo> {
@@ -1392,7 +1392,7 @@
   SourceLocation LocalRangeEnd;
 };
 
-/// \brief Wrapper for source info for functions.
+/// Wrapper for source info for functions.
 class FunctionTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
                                                FunctionTypeLoc,
                                                FunctionType,
@@ -1496,7 +1496,7 @@
       setExceptionSpecRange(Loc);
   }
 
-  /// \brief Returns the size of the type source info data block that is
+  /// Returns the size of the type source info data block that is
   /// specific to this type.
   unsigned getExtraLocalDataSize() const {
     unsigned ExceptSpecSize = hasExceptionSpec() ? sizeof(SourceRange) : 0;
@@ -1525,7 +1525,7 @@
   Expr *Size;
 };
 
-/// \brief Wrapper for source info for arrays.
+/// Wrapper for source info for arrays.
 class ArrayTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
                                             ArrayTypeLoc,
                                             ArrayType,
@@ -1670,7 +1670,7 @@
     getLocalData()->NameLoc = Loc;
   }
 
-  /// \brief - Copy the location information from the given info.
+  /// - Copy the location information from the given info.
   void copy(TemplateSpecializationTypeLoc Loc) {
     unsigned size = getFullDataSize();
     assert(size == Loc.getFullDataSize());
@@ -1989,7 +1989,7 @@
 struct ElaboratedLocInfo {
   SourceLocation ElaboratedKWLoc;
 
-  /// \brief Data associated with the nested-name-specifier location.
+  /// Data associated with the nested-name-specifier location.
   void *QualifierData;
 };
 
Index: cfe/trunk/include/clang/AST/TypeOrdering.h
===================================================================
--- cfe/trunk/include/clang/AST/TypeOrdering.h
+++ cfe/trunk/include/clang/AST/TypeOrdering.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Allows QualTypes to be sorted and hence used in maps and sets.
+/// Allows QualTypes to be sorted and hence used in maps and sets.
 ///
 /// Defines clang::QualTypeOrdering, a total ordering on clang::QualType,
 /// and hence enables QualType values to be sorted and to be used in
@@ -25,7 +25,7 @@
 
 namespace clang {
 
-/// \brief Function object that provides a total ordering on QualType values.
+/// Function object that provides a total ordering on QualType values.
 struct QualTypeOrdering {
   bool operator()(QualType T1, QualType T2) const {
     return std::less<void*>()(T1.getAsOpaquePtr(), T2.getAsOpaquePtr());
Index: cfe/trunk/include/clang/AST/TypeVisitor.h
===================================================================
--- cfe/trunk/include/clang/AST/TypeVisitor.h
+++ cfe/trunk/include/clang/AST/TypeVisitor.h
@@ -22,7 +22,7 @@
   return static_cast<ImplClass*>(this)-> \
            Visit##CLASS(static_cast<const CLASS*>(T))
 
-/// \brief An operation on a type.
+/// An operation on a type.
 ///
 /// \tparam ImplClass Class implementing the operation. Must be inherited from
 ///         TypeVisitor.
@@ -65,7 +65,7 @@
 class TypeVisitor {
 public:
 
-  /// \brief Performs the operation associated with this visitor object.
+  /// Performs the operation associated with this visitor object.
   RetTy Visit(const Type *T) {
     // Top switch stmt: dispatch to VisitFooType for each FooType.
     switch (T->getTypeClass()) {
@@ -83,7 +83,7 @@
 }
 #include "clang/AST/TypeNodes.def"
 
-  /// \brief Method called if \c ImpClass doesn't provide specific handler
+  /// Method called if \c ImpClass doesn't provide specific handler
   /// for some type class.
   RetTy VisitType(const Type*) { return RetTy(); }
 };
Index: cfe/trunk/include/clang/AST/UnresolvedSet.h
===================================================================
--- cfe/trunk/include/clang/AST/UnresolvedSet.h
+++ cfe/trunk/include/clang/AST/UnresolvedSet.h
@@ -57,7 +57,7 @@
   NamedDecl *operator->() const { return **this; }
 };
 
-/// \brief A set of unresolved declarations.
+/// A set of unresolved declarations.
 class UnresolvedSetImpl {
   using DeclsTy = SmallVectorImpl<DeclAccessPair>;
 
@@ -140,7 +140,7 @@
   }
 };
 
-/// \brief A set of unresolved declarations.
+/// A set of unresolved declarations.
 template <unsigned InlineCapacity> class UnresolvedSet :
     public UnresolvedSetImpl {
   SmallVector<DeclAccessPair, InlineCapacity> Decls;
Index: cfe/trunk/include/clang/AST/VTTBuilder.h
===================================================================
--- cfe/trunk/include/clang/AST/VTTBuilder.h
+++ cfe/trunk/include/clang/AST/VTTBuilder.h
@@ -68,48 +68,48 @@
      : VTableIndex(VTableIndex), VTableBase(VTableBase) {}
 };
 
-/// \brief Class for building VTT layout information.
+/// Class for building VTT layout information.
 class VTTBuilder {
   ASTContext &Ctx;
 
-  /// \brief The most derived class for which we're building this vtable.
+  /// The most derived class for which we're building this vtable.
   const CXXRecordDecl *MostDerivedClass;
 
   using VTTVTablesVectorTy = SmallVector<VTTVTable, 64>;
   
-  /// \brief The VTT vtables.
+  /// The VTT vtables.
   VTTVTablesVectorTy VTTVTables;
   
   using VTTComponentsVectorTy = SmallVector<VTTComponent, 64>;
   
-  /// \brief The VTT components.
+  /// The VTT components.
   VTTComponentsVectorTy VTTComponents;
   
-  /// \brief The AST record layout of the most derived class.
+  /// The AST record layout of the most derived class.
   const ASTRecordLayout &MostDerivedClassLayout;
 
   using VisitedVirtualBasesSetTy = llvm::SmallPtrSet<const CXXRecordDecl *, 4>;
 
   using AddressPointsMapTy = llvm::DenseMap<BaseSubobject, uint64_t>;
 
-  /// \brief The sub-VTT indices for the bases of the most derived class.
+  /// The sub-VTT indices for the bases of the most derived class.
   llvm::DenseMap<BaseSubobject, uint64_t> SubVTTIndicies;
 
-  /// \brief The secondary virtual pointer indices of all subobjects of
+  /// The secondary virtual pointer indices of all subobjects of
   /// the most derived class.
   llvm::DenseMap<BaseSubobject, uint64_t> SecondaryVirtualPointerIndices;
 
-  /// \brief Whether the VTT builder should generate LLVM IR for the VTT.
+  /// Whether the VTT builder should generate LLVM IR for the VTT.
   bool GenerateDefinition;
 
-  /// \brief Add a vtable pointer to the VTT currently being built.
+  /// Add a vtable pointer to the VTT currently being built.
   void AddVTablePointer(BaseSubobject Base, uint64_t VTableIndex,
                         const CXXRecordDecl *VTableClass);
                         
-  /// \brief Lay out the secondary VTTs of the given base subobject.
+  /// Lay out the secondary VTTs of the given base subobject.
   void LayoutSecondaryVTTs(BaseSubobject Base);
   
-  /// \brief Lay out the secondary virtual pointers for the given base
+  /// Lay out the secondary virtual pointers for the given base
   /// subobject.
   ///
   /// \param BaseIsMorallyVirtual whether the base subobject is a virtual base
@@ -120,17 +120,17 @@
                                       const CXXRecordDecl *VTableClass,
                                       VisitedVirtualBasesSetTy &VBases);
   
-  /// \brief Lay out the secondary virtual pointers for the given base
+  /// Lay out the secondary virtual pointers for the given base
   /// subobject.
   void LayoutSecondaryVirtualPointers(BaseSubobject Base, 
                                       uint64_t VTableIndex);
 
-  /// \brief Lay out the VTTs for the virtual base classes of the given
+  /// Lay out the VTTs for the virtual base classes of the given
   /// record declaration.
   void LayoutVirtualVTTs(const CXXRecordDecl *RD,
                          VisitedVirtualBasesSetTy &VBases);
   
-  /// \brief Lay out the VTT for the given subobject, including any
+  /// Lay out the VTT for the given subobject, including any
   /// secondary VTTs, secondary virtual pointers and virtual VTTs.
   void LayoutVTT(BaseSubobject Base, bool BaseIsVirtual);
   
@@ -138,22 +138,22 @@
   VTTBuilder(ASTContext &Ctx, const CXXRecordDecl *MostDerivedClass,
              bool GenerateDefinition);
 
-  // \brief Returns a reference to the VTT components.
+  // Returns a reference to the VTT components.
   const VTTComponentsVectorTy &getVTTComponents() const {
     return VTTComponents;
   }
   
-  // \brief Returns a reference to the VTT vtables.
+  // Returns a reference to the VTT vtables.
   const VTTVTablesVectorTy &getVTTVTables() const {
     return VTTVTables;
   }
   
-  /// \brief Returns a reference to the sub-VTT indices.
+  /// Returns a reference to the sub-VTT indices.
   const llvm::DenseMap<BaseSubobject, uint64_t> &getSubVTTIndicies() const {
     return SubVTTIndicies;
   }
   
-  /// \brief Returns a reference to the secondary virtual pointer indices.
+  /// Returns a reference to the secondary virtual pointer indices.
   const llvm::DenseMap<BaseSubobject, uint64_t> &
   getSecondaryVirtualPointerIndices() const {
     return SecondaryVirtualPointerIndices;
Index: cfe/trunk/include/clang/AST/VTableBuilder.h
===================================================================
--- cfe/trunk/include/clang/AST/VTableBuilder.h
+++ cfe/trunk/include/clang/AST/VTableBuilder.h
@@ -26,7 +26,7 @@
 namespace clang {
   class CXXRecordDecl;
 
-/// \brief Represents a single component in a vtable.
+/// Represents a single component in a vtable.
 class VTableComponent {
 public:
   enum Kind {
@@ -36,13 +36,13 @@
     CK_RTTI,
     CK_FunctionPointer,
 
-    /// \brief A pointer to the complete destructor.
+    /// A pointer to the complete destructor.
     CK_CompleteDtorPointer,
 
-    /// \brief A pointer to the deleting destructor.
+    /// A pointer to the deleting destructor.
     CK_DeletingDtorPointer,
 
-    /// \brief An entry that is never used.
+    /// An entry that is never used.
     ///
     /// In some cases, a vtable function pointer will end up never being
     /// called. Such vtable function pointers are represented as a
@@ -97,7 +97,7 @@
     return VTableComponent(I);
   }
 
-  /// \brief Get the kind of this vtable component.
+  /// Get the kind of this vtable component.
   Kind getKind() const {
     return (Kind)(Value & 0x7);
   }
@@ -255,10 +255,10 @@
 
   OwningArrayRef<VTableComponent> VTableComponents;
 
-  /// \brief Contains thunks needed by vtables, sorted by indices.
+  /// Contains thunks needed by vtables, sorted by indices.
   OwningArrayRef<VTableThunkTy> VTableThunks;
 
-  /// \brief Address points for all vtables.
+  /// Address points for all vtables.
   AddressPointsMapTy AddressPoints;
 
 public:
@@ -324,7 +324,7 @@
 protected:
   typedef llvm::DenseMap<const CXXMethodDecl *, ThunkInfoVectorTy> ThunksMapTy;
 
-  /// \brief Contains all thunks that a given method decl will need.
+  /// Contains all thunks that a given method decl will need.
   ThunksMapTy Thunks;
 
   /// Compute and store all vtable related information (vtable layout, vbase
@@ -355,7 +355,7 @@
 class ItaniumVTableContext : public VTableContextBase {
 private:
 
-  /// \brief Contains the index (relative to the vtable address point)
+  /// Contains the index (relative to the vtable address point)
   /// where the function pointer for a virtual function is stored.
   typedef llvm::DenseMap<GlobalDecl, int64_t> MethodVTableIndicesTy;
   MethodVTableIndicesTy MethodVTableIndices;
@@ -368,7 +368,7 @@
   typedef std::pair<const CXXRecordDecl *,
                     const CXXRecordDecl *> ClassPairTy;
 
-  /// \brief vtable offsets for offsets of virtual bases of a class.
+  /// vtable offsets for offsets of virtual bases of a class.
   ///
   /// Contains the vtable offset (relative to the address point) in chars
   /// where the offsets for virtual bases of a class are stored.
@@ -393,7 +393,7 @@
       const CXXRecordDecl *MostDerivedClass, CharUnits MostDerivedClassOffset,
       bool MostDerivedClassIsVirtual, const CXXRecordDecl *LayoutClass);
 
-  /// \brief Locate a virtual function in the vtable.
+  /// Locate a virtual function in the vtable.
   ///
   /// Return the index (relative to the vtable address point) where the
   /// function pointer for the given virtual function is stored.
@@ -570,7 +570,7 @@
     return VTableContextBase::getThunkInfo(GD);
   }
 
-  /// \brief Returns the index of VBase in the vbtable of Derived.
+  /// Returns the index of VBase in the vbtable of Derived.
   /// VBase must be a morally virtual base of Derived.
   /// The vbtable is an array of i32 offsets.  The first entry is a self entry,
   /// and the rest are offsets from the vbptr to virtual bases.
Index: cfe/trunk/include/clang/ASTMatchers/ASTMatchFinder.h
===================================================================
--- cfe/trunk/include/clang/ASTMatchers/ASTMatchFinder.h
+++ cfe/trunk/include/clang/ASTMatchers/ASTMatchFinder.h
@@ -50,7 +50,7 @@
 
 namespace ast_matchers {
 
-/// \brief A class to allow finding matches over the Clang AST.
+/// A class to allow finding matches over the Clang AST.
 ///
 /// After creation, you can add multiple matchers to the MatchFinder via
 /// calls to addMatcher(...).
@@ -68,52 +68,52 @@
 /// Not intended to be subclassed.
 class MatchFinder {
 public:
-  /// \brief Contains all information for a given match.
+  /// Contains all information for a given match.
   ///
   /// Every time a match is found, the MatchFinder will invoke the registered
   /// MatchCallback with a MatchResult containing information about the match.
   struct MatchResult {
     MatchResult(const BoundNodes &Nodes, clang::ASTContext *Context);
 
-    /// \brief Contains the nodes bound on the current match.
+    /// Contains the nodes bound on the current match.
     ///
     /// This allows user code to easily extract matched AST nodes.
     const BoundNodes Nodes;
 
-    /// \brief Utilities for interpreting the matched AST structures.
+    /// Utilities for interpreting the matched AST structures.
     /// @{
     clang::ASTContext * const Context;
     clang::SourceManager * const SourceManager;
     /// @}
   };
 
-  /// \brief Called when the Match registered for it was successfully found
+  /// Called when the Match registered for it was successfully found
   /// in the AST.
   class MatchCallback {
   public:
     virtual ~MatchCallback();
 
-    /// \brief Called on every match by the \c MatchFinder.
+    /// Called on every match by the \c MatchFinder.
     virtual void run(const MatchResult &Result) = 0;
 
-    /// \brief Called at the start of each translation unit.
+    /// Called at the start of each translation unit.
     ///
     /// Optionally override to do per translation unit tasks.
     virtual void onStartOfTranslationUnit() {}
 
-    /// \brief Called at the end of each translation unit.
+    /// Called at the end of each translation unit.
     ///
     /// Optionally override to do per translation unit tasks.
     virtual void onEndOfTranslationUnit() {}
 
-    /// \brief An id used to group the matchers.
+    /// An id used to group the matchers.
     ///
     /// This id is used, for example, for the profiling output.
     /// It defaults to "<unknown>".
     virtual StringRef getID() const;
   };
 
-  /// \brief Called when parsing is finished. Intended for testing only.
+  /// Called when parsing is finished. Intended for testing only.
   class ParsingDoneTestCallback {
   public:
     virtual ~ParsingDoneTestCallback();
@@ -125,11 +125,11 @@
       Profiling(llvm::StringMap<llvm::TimeRecord> &Records)
           : Records(Records) {}
 
-      /// \brief Per bucket timing information.
+      /// Per bucket timing information.
       llvm::StringMap<llvm::TimeRecord> &Records;
     };
 
-    /// \brief Enables per-check timers.
+    /// Enables per-check timers.
     ///
     /// It prints a report after match.
     llvm::Optional<Profiling> CheckProfiling;
@@ -138,7 +138,7 @@
   MatchFinder(MatchFinderOptions Options = MatchFinderOptions());
   ~MatchFinder();
 
-  /// \brief Adds a matcher to execute when running over the AST.
+  /// Adds a matcher to execute when running over the AST.
   ///
   /// Calls 'Action' with the BoundNodes on every match.
   /// Adding more than one 'NodeMatch' allows finding different matches in a
@@ -162,7 +162,7 @@
                   MatchCallback *Action);
   /// @}
 
-  /// \brief Adds a matcher to execute when running over the AST.
+  /// Adds a matcher to execute when running over the AST.
   ///
   /// This is similar to \c addMatcher(), but it uses the dynamic interface. It
   /// is more flexible, but the lost type information enables a caller to pass
@@ -173,10 +173,10 @@
   bool addDynamicMatcher(const internal::DynTypedMatcher &NodeMatch,
                          MatchCallback *Action);
 
-  /// \brief Creates a clang ASTConsumer that finds all matches.
+  /// Creates a clang ASTConsumer that finds all matches.
   std::unique_ptr<clang::ASTConsumer> newASTConsumer();
 
-  /// \brief Calls the registered callbacks on all matches on the given \p Node.
+  /// Calls the registered callbacks on all matches on the given \p Node.
   ///
   /// Note that there can be multiple matches on a single node, for
   /// example when using decl(forEachDescendant(stmt())).
@@ -189,17 +189,17 @@
              ASTContext &Context);
   /// @}
 
-  /// \brief Finds all matches in the given AST.
+  /// Finds all matches in the given AST.
   void matchAST(ASTContext &Context);
 
-  /// \brief Registers a callback to notify the end of parsing.
+  /// Registers a callback to notify the end of parsing.
   ///
   /// The provided closure is called after parsing is done, before the AST is
   /// traversed. Useful for benchmarking.
   /// Each call to FindAll(...) will call the closure once.
   void registerTestCallbackAfterParsing(ParsingDoneTestCallback *ParsingDone);
 
-  /// \brief For each \c Matcher<> a \c MatchCallback that will be called
+  /// For each \c Matcher<> a \c MatchCallback that will be called
   /// when it matches.
   struct MatchersByType {
     std::vector<std::pair<internal::DynTypedMatcher, MatchCallback *>>
@@ -211,7 +211,7 @@
         NestedNameSpecifierLoc;
     std::vector<std::pair<TypeLocMatcher, MatchCallback *>> TypeLoc;
     std::vector<std::pair<CXXCtorInitializerMatcher, MatchCallback *>> CtorInit;
-    /// \brief All the callbacks in one container to simplify iteration.
+    /// All the callbacks in one container to simplify iteration.
     llvm::SmallPtrSet<MatchCallback *, 16> AllCallbacks;
   };
 
@@ -220,11 +220,11 @@
 
   MatchFinderOptions Options;
 
-  /// \brief Called when parsing is done.
+  /// Called when parsing is done.
   ParsingDoneTestCallback *ParsingDone;
 };
 
-/// \brief Returns the results of matching \p Matcher on \p Node.
+/// Returns the results of matching \p Matcher on \p Node.
 ///
 /// Collects the \c BoundNodes of all callback invocations when matching
 /// \p Matcher on \p Node and returns the collected results.
@@ -248,12 +248,12 @@
       ASTContext &Context);
 /// @}
 
-/// \brief Returns the results of matching \p Matcher on the translation unit of
+/// Returns the results of matching \p Matcher on the translation unit of
 /// \p Context and collects the \c BoundNodes of all callback invocations.
 template <typename MatcherT>
 SmallVector<BoundNodes, 1> match(MatcherT Matcher, ASTContext &Context);
 
-/// \brief Returns the first result of type \c NodeT bound to \p BoundTo.
+/// Returns the first result of type \c NodeT bound to \p BoundTo.
 ///
 /// Returns \c NULL if there is no match, or if the matching node cannot be
 /// casted to \c NodeT.
Index: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h
===================================================================
--- cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h
+++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h
@@ -92,7 +92,7 @@
 namespace clang {
 namespace ast_matchers {
 
-/// \brief Maps string IDs to AST nodes matched by parts of a matcher.
+/// Maps string IDs to AST nodes matched by parts of a matcher.
 ///
 /// The bound nodes are generated by calling \c bind("id") on the node matchers
 /// of the nodes we want to access later.
@@ -101,7 +101,7 @@
 /// callbacks are executed every time a match is found.
 class BoundNodes {
 public:
-  /// \brief Returns the AST node bound to \c ID.
+  /// Returns the AST node bound to \c ID.
   ///
   /// Returns NULL if there was no node bound to \c ID or if there is a node but
   /// it cannot be converted to the specified type.
@@ -110,12 +110,12 @@
     return MyBoundNodes.getNodeAs<T>(ID);
   }
 
-  /// \brief Type of mapping from binding identifiers to bound nodes. This type
+  /// Type of mapping from binding identifiers to bound nodes. This type
   /// is an associative container with a key type of \c std::string and a value
   /// type of \c clang::ast_type_traits::DynTypedNode
   using IDToNodeMap = internal::BoundNodesMap::IDToNodeMap;
 
-  /// \brief Retrieve mapping from binding identifiers to bound nodes.
+  /// Retrieve mapping from binding identifiers to bound nodes.
   const IDToNodeMap &getMap() const {
     return MyBoundNodes.getMap();
   }
@@ -123,14 +123,14 @@
 private:
   friend class internal::BoundNodesTreeBuilder;
 
-  /// \brief Create BoundNodes from a pre-filled map of bindings.
+  /// Create BoundNodes from a pre-filled map of bindings.
   BoundNodes(internal::BoundNodesMap &MyBoundNodes)
       : MyBoundNodes(MyBoundNodes) {}
 
   internal::BoundNodesMap MyBoundNodes;
 };
 
-/// \brief If the provided matcher matches a node, binds the node to \c ID.
+/// If the provided matcher matches a node, binds the node to \c ID.
 ///
 /// FIXME: Do we want to support this now that we have bind()?
 template <typename T>
@@ -139,7 +139,7 @@
   return InnerMatcher.bind(ID);
 }
 
-/// \brief Types of matchers for the top-level classes in the AST class
+/// Types of matchers for the top-level classes in the AST class
 /// hierarchy.
 /// @{
 using DeclarationMatcher = internal::Matcher<Decl>;
@@ -151,7 +151,7 @@
 using CXXCtorInitializerMatcher = internal::Matcher<CXXCtorInitializer>;
 /// @}
 
-/// \brief Matches any node.
+/// Matches any node.
 ///
 /// Useful when another matcher requires a child matcher, but there's no
 /// additional constraint. This will often be used with an explicit conversion
@@ -167,7 +167,7 @@
 /// Usable as: Any Matcher
 inline internal::TrueMatcher anything() { return internal::TrueMatcher(); }
 
-/// \brief Matches the top declaration context.
+/// Matches the top declaration context.
 ///
 /// Given
 /// \code
@@ -181,7 +181,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, TranslationUnitDecl>
     translationUnitDecl;
 
-/// \brief Matches typedef declarations.
+/// Matches typedef declarations.
 ///
 /// Given
 /// \code
@@ -193,7 +193,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, TypedefDecl>
     typedefDecl;
 
-/// \brief Matches typedef name declarations.
+/// Matches typedef name declarations.
 ///
 /// Given
 /// \code
@@ -205,7 +205,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, TypedefNameDecl>
     typedefNameDecl;
 
-/// \brief Matches type alias declarations.
+/// Matches type alias declarations.
 ///
 /// Given
 /// \code
@@ -217,7 +217,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, TypeAliasDecl>
     typeAliasDecl;
 
-/// \brief Matches type alias template declarations.
+/// Matches type alias template declarations.
 ///
 /// typeAliasTemplateDecl() matches
 /// \code
@@ -227,7 +227,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, TypeAliasTemplateDecl>
     typeAliasTemplateDecl;
 
-/// \brief Matches AST nodes that were expanded within the main-file.
+/// Matches AST nodes that were expanded within the main-file.
 ///
 /// Example matches X but not Y
 ///   (matcher = cxxRecordDecl(isExpansionInMainFile())
@@ -248,7 +248,7 @@
       SourceManager.getExpansionLoc(Node.getLocStart()));
 }
 
-/// \brief Matches AST nodes that were expanded within system-header-files.
+/// Matches AST nodes that were expanded within system-header-files.
 ///
 /// Example matches Y but not X
 ///     (matcher = cxxRecordDecl(isExpansionInSystemHeader())
@@ -272,7 +272,7 @@
   return SourceManager.isInSystemHeader(ExpansionLoc);
 }
 
-/// \brief Matches AST nodes that were expanded within files whose name is
+/// Matches AST nodes that were expanded within files whose name is
 /// partially matching a given regex.
 ///
 /// Example matches Y but not X
@@ -306,7 +306,7 @@
   return RE.match(Filename);
 }
 
-/// \brief Matches declarations.
+/// Matches declarations.
 ///
 /// Examples matches \c X, \c C, and the friend declaration inside \c C;
 /// \code
@@ -317,7 +317,7 @@
 /// \endcode
 extern const internal::VariadicAllOfMatcher<Decl> decl;
 
-/// \brief Matches a declaration of a linkage specification.
+/// Matches a declaration of a linkage specification.
 ///
 /// Given
 /// \code
@@ -328,7 +328,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, LinkageSpecDecl>
     linkageSpecDecl;
 
-/// \brief Matches a declaration of anything that could have a name.
+/// Matches a declaration of anything that could have a name.
 ///
 /// Example matches \c X, \c S, the anonymous union type, \c i, and \c U;
 /// \code
@@ -341,7 +341,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Decl, NamedDecl> namedDecl;
 
-/// \brief Matches a declaration of label.
+/// Matches a declaration of label.
 ///
 /// Given
 /// \code
@@ -352,7 +352,7 @@
 ///   matches 'FOO:'
 extern const internal::VariadicDynCastAllOfMatcher<Decl, LabelDecl> labelDecl;
 
-/// \brief Matches a declaration of a namespace.
+/// Matches a declaration of a namespace.
 ///
 /// Given
 /// \code
@@ -364,7 +364,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, NamespaceDecl>
     namespaceDecl;
 
-/// \brief Matches a declaration of a namespace alias.
+/// Matches a declaration of a namespace alias.
 ///
 /// Given
 /// \code
@@ -376,7 +376,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, NamespaceAliasDecl>
     namespaceAliasDecl;
 
-/// \brief Matches class, struct, and union declarations.
+/// Matches class, struct, and union declarations.
 ///
 /// Example matches \c X, \c Z, \c U, and \c S
 /// \code
@@ -387,7 +387,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Decl, RecordDecl> recordDecl;
 
-/// \brief Matches C++ class declarations.
+/// Matches C++ class declarations.
 ///
 /// Example matches \c X, \c Z
 /// \code
@@ -397,7 +397,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, CXXRecordDecl>
     cxxRecordDecl;
 
-/// \brief Matches C++ class template declarations.
+/// Matches C++ class template declarations.
 ///
 /// Example matches \c Z
 /// \code
@@ -406,7 +406,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ClassTemplateDecl>
     classTemplateDecl;
 
-/// \brief Matches C++ class template specializations.
+/// Matches C++ class template specializations.
 ///
 /// Given
 /// \code
@@ -420,7 +420,7 @@
     Decl, ClassTemplateSpecializationDecl>
     classTemplateSpecializationDecl;
 
-/// \brief Matches declarator declarations (field, variable, function
+/// Matches declarator declarations (field, variable, function
 /// and non-type template parameter declarations).
 ///
 /// Given
@@ -432,7 +432,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, DeclaratorDecl>
     declaratorDecl;
 
-/// \brief Matches parameter variable declarations.
+/// Matches parameter variable declarations.
 ///
 /// Given
 /// \code
@@ -443,7 +443,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ParmVarDecl>
     parmVarDecl;
 
-/// \brief Matches C++ access specifier declarations.
+/// Matches C++ access specifier declarations.
 ///
 /// Given
 /// \code
@@ -457,7 +457,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, AccessSpecDecl>
     accessSpecDecl;
 
-/// \brief Matches constructor initializers.
+/// Matches constructor initializers.
 ///
 /// Examples matches \c i(42).
 /// \code
@@ -469,7 +469,7 @@
 extern const internal::VariadicAllOfMatcher<CXXCtorInitializer>
     cxxCtorInitializer;
 
-/// \brief Matches template arguments.
+/// Matches template arguments.
 ///
 /// Given
 /// \code
@@ -480,7 +480,7 @@
 ///   matches 'int' in C<int>.
 extern const internal::VariadicAllOfMatcher<TemplateArgument> templateArgument;
 
-/// \brief Matches template name.
+/// Matches template name.
 ///
 /// Given
 /// \code
@@ -491,7 +491,7 @@
 ///   matches 'X' in X<int>.
 extern const internal::VariadicAllOfMatcher<TemplateName> templateName;
 
-/// \brief Matches non-type template parameter declarations.
+/// Matches non-type template parameter declarations.
 ///
 /// Given
 /// \code
@@ -503,7 +503,7 @@
                                                    NonTypeTemplateParmDecl>
     nonTypeTemplateParmDecl;
 
-/// \brief Matches template type parameter declarations.
+/// Matches template type parameter declarations.
 ///
 /// Given
 /// \code
@@ -514,7 +514,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, TemplateTypeParmDecl>
     templateTypeParmDecl;
 
-/// \brief Matches public C++ declarations.
+/// Matches public C++ declarations.
 ///
 /// Given
 /// \code
@@ -530,7 +530,7 @@
   return Node.getAccess() == AS_public;
 }
 
-/// \brief Matches protected C++ declarations.
+/// Matches protected C++ declarations.
 ///
 /// Given
 /// \code
@@ -546,7 +546,7 @@
   return Node.getAccess() == AS_protected;
 }
 
-/// \brief Matches private C++ declarations.
+/// Matches private C++ declarations.
 ///
 /// Given
 /// \code
@@ -562,7 +562,7 @@
   return Node.getAccess() == AS_private;
 }
 
-/// \brief Matches non-static data members that are bit-fields.
+/// Matches non-static data members that are bit-fields.
 ///
 /// Given
 /// \code
@@ -577,7 +577,7 @@
   return Node.isBitField();
 }
 
-/// \brief Matches non-static data members that are bit-fields of the specified
+/// Matches non-static data members that are bit-fields of the specified
 /// bit width.
 ///
 /// Given
@@ -595,7 +595,7 @@
          Node.getBitWidthValue(Finder->getASTContext()) == Width;
 }
 
-/// \brief Matches non-static data members that have an in-class initializer.
+/// Matches non-static data members that have an in-class initializer.
 ///
 /// Given
 /// \code
@@ -616,7 +616,7 @@
           InnerMatcher.matches(*Initializer, Finder, Builder));
 }
 
-/// \brief Matches the specialized template of a specialization declaration.
+/// Matches the specialized template of a specialization declaration.
 ///
 /// Given
 /// \code
@@ -633,13 +633,13 @@
           InnerMatcher.matches(*Decl, Finder, Builder));
 }
 
-/// \brief Matches a declaration that has been implicitly added
+/// Matches a declaration that has been implicitly added
 /// by the compiler (eg. implicit default/copy constructors).
 AST_MATCHER(Decl, isImplicit) {
   return Node.isImplicit();
 }
 
-/// \brief Matches classTemplateSpecializations, templateSpecializationType and
+/// Matches classTemplateSpecializations, templateSpecializationType and
 /// functionDecl that have at least one TemplateArgument matching the given
 /// InnerMatcher.
 ///
@@ -672,7 +672,7 @@
                              Builder);
 }
 
-/// \brief Matches expressions that match InnerMatcher after any implicit AST
+/// Matches expressions that match InnerMatcher after any implicit AST
 /// nodes are stripped off.
 ///
 /// Parentheses and explicit casts are not discarded.
@@ -698,7 +698,7 @@
   return InnerMatcher.matches(*Node.IgnoreImplicit(), Finder, Builder);
 }
 
-/// \brief Matches expressions that match InnerMatcher after any implicit casts
+/// Matches expressions that match InnerMatcher after any implicit casts
 /// are stripped off.
 ///
 /// Parentheses and explicit casts are not discarded.
@@ -728,7 +728,7 @@
   return InnerMatcher.matches(*Node.IgnoreImpCasts(), Finder, Builder);
 }
 
-/// \brief Matches expressions that match InnerMatcher after parentheses and
+/// Matches expressions that match InnerMatcher after parentheses and
 /// casts are stripped off.
 ///
 /// Implicit and non-C Style casts are also discarded.
@@ -749,7 +749,7 @@
   return InnerMatcher.matches(*Node.IgnoreParenCasts(), Finder, Builder);
 }
 
-/// \brief Matches expressions that match InnerMatcher after implicit casts and
+/// Matches expressions that match InnerMatcher after implicit casts and
 /// parentheses are stripped off.
 ///
 /// Explicit casts are not discarded.
@@ -775,7 +775,7 @@
   return InnerMatcher.matches(*Node.IgnoreParenImpCasts(), Finder, Builder);
 }
 
-/// \brief Matches types that match InnerMatcher after any parens are stripped.
+/// Matches types that match InnerMatcher after any parens are stripped.
 ///
 /// Given
 /// \code
@@ -791,7 +791,7 @@
   return InnerMatcher.matches(Node.IgnoreParens(), Finder, Builder);
 }
 
-/// \brief Matches classTemplateSpecializations, templateSpecializationType and
+/// Matches classTemplateSpecializations, templateSpecializationType and
 /// functionDecl where the n'th TemplateArgument matches the given InnerMatcher.
 ///
 /// Given
@@ -822,7 +822,7 @@
   return InnerMatcher.matches(List[N], Finder, Builder);
 }
 
-/// \brief Matches if the number of template arguments equals \p N.
+/// Matches if the number of template arguments equals \p N.
 ///
 /// Given
 /// \code
@@ -839,7 +839,7 @@
   return internal::getTemplateSpecializationArgs(Node).size() == N;
 }
 
-/// \brief Matches a TemplateArgument that refers to a certain type.
+/// Matches a TemplateArgument that refers to a certain type.
 ///
 /// Given
 /// \code
@@ -857,7 +857,7 @@
   return InnerMatcher.matches(Node.getAsType(), Finder, Builder);
 }
 
-/// \brief Matches a TemplateArgument that refers to a certain template.
+/// Matches a TemplateArgument that refers to a certain template.
 ///
 /// Given
 /// \code
@@ -875,7 +875,7 @@
   return InnerMatcher.matches(Node.getAsTemplate(), Finder, Builder);
 }
 
-/// \brief Matches a canonical TemplateArgument that refers to a certain
+/// Matches a canonical TemplateArgument that refers to a certain
 /// declaration.
 ///
 /// Given
@@ -895,7 +895,7 @@
   return false;
 }
 
-/// \brief Matches a sugar TemplateArgument that refers to a certain expression.
+/// Matches a sugar TemplateArgument that refers to a certain expression.
 ///
 /// Given
 /// \code
@@ -913,7 +913,7 @@
   return false;
 }
 
-/// \brief Matches a TemplateArgument that is an integral value.
+/// Matches a TemplateArgument that is an integral value.
 ///
 /// Given
 /// \code
@@ -928,7 +928,7 @@
   return Node.getKind() == TemplateArgument::Integral;
 }
 
-/// \brief Matches a TemplateArgument that referes to an integral type.
+/// Matches a TemplateArgument that referes to an integral type.
 ///
 /// Given
 /// \code
@@ -945,7 +945,7 @@
   return InnerMatcher.matches(Node.getIntegralType(), Finder, Builder);
 }
 
-/// \brief Matches a TemplateArgument of integral type with a given value.
+/// Matches a TemplateArgument of integral type with a given value.
 ///
 /// Note that 'Value' is a string as the template argument's value is
 /// an arbitrary precision integer. 'Value' must be euqal to the canonical
@@ -966,7 +966,7 @@
   return Node.getAsIntegral().toString(10) == Value;
 }
 
-/// \brief Matches any value declaration.
+/// Matches any value declaration.
 ///
 /// Example matches A, B, C and F
 /// \code
@@ -975,7 +975,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ValueDecl> valueDecl;
 
-/// \brief Matches C++ constructor declarations.
+/// Matches C++ constructor declarations.
 ///
 /// Example matches Foo::Foo() and Foo::Foo(int)
 /// \code
@@ -989,7 +989,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, CXXConstructorDecl>
     cxxConstructorDecl;
 
-/// \brief Matches explicit C++ destructor declarations.
+/// Matches explicit C++ destructor declarations.
 ///
 /// Example matches Foo::~Foo()
 /// \code
@@ -1001,7 +1001,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, CXXDestructorDecl>
     cxxDestructorDecl;
 
-/// \brief Matches enum declarations.
+/// Matches enum declarations.
 ///
 /// Example matches X
 /// \code
@@ -1011,7 +1011,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Decl, EnumDecl> enumDecl;
 
-/// \brief Matches enum constants.
+/// Matches enum constants.
 ///
 /// Example matches A, B, C
 /// \code
@@ -1022,7 +1022,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, EnumConstantDecl>
     enumConstantDecl;
 
-/// \brief Matches method declarations.
+/// Matches method declarations.
 ///
 /// Example matches y
 /// \code
@@ -1031,7 +1031,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, CXXMethodDecl>
     cxxMethodDecl;
 
-/// \brief Matches conversion operator declarations.
+/// Matches conversion operator declarations.
 ///
 /// Example matches the operator.
 /// \code
@@ -1040,7 +1040,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, CXXConversionDecl>
     cxxConversionDecl;
 
-/// \brief Matches variable declarations.
+/// Matches variable declarations.
 ///
 /// Note: this does not match declarations of member variables, which are
 /// "field" declarations in Clang parlance.
@@ -1051,7 +1051,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Decl, VarDecl> varDecl;
 
-/// \brief Matches field declarations.
+/// Matches field declarations.
 ///
 /// Given
 /// \code
@@ -1061,7 +1061,7 @@
 ///   matches 'm'.
 extern const internal::VariadicDynCastAllOfMatcher<Decl, FieldDecl> fieldDecl;
 
-/// \brief Matches function declarations.
+/// Matches function declarations.
 ///
 /// Example matches f
 /// \code
@@ -1070,7 +1070,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, FunctionDecl>
     functionDecl;
 
-/// \brief Matches C++ function template declarations.
+/// Matches C++ function template declarations.
 ///
 /// Example matches f
 /// \code
@@ -1079,7 +1079,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, FunctionTemplateDecl>
     functionTemplateDecl;
 
-/// \brief Matches friend declarations.
+/// Matches friend declarations.
 ///
 /// Given
 /// \code
@@ -1089,7 +1089,7 @@
 ///   matches 'friend void foo()'.
 extern const internal::VariadicDynCastAllOfMatcher<Decl, FriendDecl> friendDecl;
 
-/// \brief Matches statements.
+/// Matches statements.
 ///
 /// Given
 /// \code
@@ -1099,7 +1099,7 @@
 ///   matches both the compound statement '{ ++a; }' and '++a'.
 extern const internal::VariadicAllOfMatcher<Stmt> stmt;
 
-/// \brief Matches declaration statements.
+/// Matches declaration statements.
 ///
 /// Given
 /// \code
@@ -1109,7 +1109,7 @@
 ///   matches 'int a'.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, DeclStmt> declStmt;
 
-/// \brief Matches member expressions.
+/// Matches member expressions.
 ///
 /// Given
 /// \code
@@ -1122,7 +1122,7 @@
 ///   matches this->x, x, y.x, a, this->b
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, MemberExpr> memberExpr;
 
-/// \brief Matches call expressions.
+/// Matches call expressions.
 ///
 /// Example matches x.y() and y()
 /// \code
@@ -1132,7 +1132,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CallExpr> callExpr;
 
-/// \brief Matches lambda expressions.
+/// Matches lambda expressions.
 ///
 /// Example matches [&](){return 5;}
 /// \code
@@ -1140,7 +1140,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, LambdaExpr> lambdaExpr;
 
-/// \brief Matches member call expressions.
+/// Matches member call expressions.
 ///
 /// Example matches x.y()
 /// \code
@@ -1150,7 +1150,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXMemberCallExpr>
     cxxMemberCallExpr;
 
-/// \brief Matches ObjectiveC Message invocation expressions.
+/// Matches ObjectiveC Message invocation expressions.
 ///
 /// The innermost message send invokes the "alloc" class method on the
 /// NSString class, while the outermost message send invokes the
@@ -1162,7 +1162,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ObjCMessageExpr>
     objcMessageExpr;
 
-/// \brief Matches Objective-C interface declarations.
+/// Matches Objective-C interface declarations.
 ///
 /// Example matches Foo
 /// \code
@@ -1172,7 +1172,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ObjCInterfaceDecl>
     objcInterfaceDecl;
 
-/// \brief Matches Objective-C implementation declarations.
+/// Matches Objective-C implementation declarations.
 ///
 /// Example matches Foo
 /// \code
@@ -1182,7 +1182,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ObjCImplementationDecl>
     objcImplementationDecl;
 
-/// \brief Matches Objective-C protocol declarations.
+/// Matches Objective-C protocol declarations.
 ///
 /// Example matches FooDelegate
 /// \code
@@ -1192,7 +1192,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ObjCProtocolDecl>
     objcProtocolDecl;
 
-/// \brief Matches Objective-C category declarations.
+/// Matches Objective-C category declarations.
 ///
 /// Example matches Foo (Additions)
 /// \code
@@ -1202,7 +1202,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ObjCCategoryDecl>
     objcCategoryDecl;
 
-/// \brief Matches Objective-C category definitions.
+/// Matches Objective-C category definitions.
 ///
 /// Example matches Foo (Additions)
 /// \code
@@ -1212,7 +1212,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ObjCCategoryImplDecl>
     objcCategoryImplDecl;
 
-/// \brief Matches Objective-C method declarations.
+/// Matches Objective-C method declarations.
 ///
 /// Example matches both declaration and definition of -[Foo method]
 /// \code
@@ -1227,7 +1227,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ObjCMethodDecl>
     objcMethodDecl;
 
-/// \brief Matches Objective-C instance variable declarations.
+/// Matches Objective-C instance variable declarations.
 ///
 /// Example matches _enabled
 /// \code
@@ -1239,7 +1239,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ObjCIvarDecl>
     objcIvarDecl;
 
-/// \brief Matches Objective-C property declarations.
+/// Matches Objective-C property declarations.
 ///
 /// Example matches enabled
 /// \code
@@ -1250,7 +1250,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, ObjCPropertyDecl>
     objcPropertyDecl;
 
-/// \brief Matches Objective-C \@throw statements.
+/// Matches Objective-C \@throw statements.
 ///
 /// Example matches \@throw
 /// \code
@@ -1259,7 +1259,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ObjCAtThrowStmt>
     objcThrowStmt;
 
-/// \brief Matches Objective-C @try statements.
+/// Matches Objective-C @try statements.
 ///
 /// Example matches @try
 /// \code
@@ -1269,7 +1269,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ObjCAtTryStmt>
     objcTryStmt;
 
-/// \brief Matches Objective-C @catch statements.
+/// Matches Objective-C @catch statements.
 ///
 /// Example matches @catch
 /// \code
@@ -1279,7 +1279,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ObjCAtCatchStmt>
     objcCatchStmt;
 
-/// \brief Matches Objective-C @finally statements.
+/// Matches Objective-C @finally statements.
 ///
 /// Example matches @finally
 /// \code
@@ -1289,7 +1289,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ObjCAtFinallyStmt>
     objcFinallyStmt;
 
-/// \brief Matches expressions that introduce cleanups to be run at the end
+/// Matches expressions that introduce cleanups to be run at the end
 /// of the sub-expression's evaluation.
 ///
 /// Example matches std::string()
@@ -1299,7 +1299,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ExprWithCleanups>
     exprWithCleanups;
 
-/// \brief Matches init list expressions.
+/// Matches init list expressions.
 ///
 /// Given
 /// \code
@@ -1312,7 +1312,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, InitListExpr>
     initListExpr;
 
-/// \brief Matches the syntactic form of init list expressions
+/// Matches the syntactic form of init list expressions
 /// (if expression have it).
 AST_MATCHER_P(InitListExpr, hasSyntacticForm,
               internal::Matcher<Expr>, InnerMatcher) {
@@ -1321,7 +1321,7 @@
           InnerMatcher.matches(*SyntForm, Finder, Builder));
 }
 
-/// \brief Matches C++ initializer list expressions.
+/// Matches C++ initializer list expressions.
 ///
 /// Given
 /// \code
@@ -1336,7 +1336,7 @@
                                                    CXXStdInitializerListExpr>
     cxxStdInitializerListExpr;
 
-/// \brief Matches implicit initializers of init list expressions.
+/// Matches implicit initializers of init list expressions.
 ///
 /// Given
 /// \code
@@ -1347,7 +1347,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ImplicitValueInitExpr>
     implicitValueInitExpr;
 
-/// \brief Matches paren list expressions.
+/// Matches paren list expressions.
 /// ParenListExprs don't have a predefined type and are used for late parsing.
 /// In the final AST, they can be met in template declarations.
 ///
@@ -1365,7 +1365,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ParenListExpr>
     parenListExpr;
 
-/// \brief Matches substitutions of non-type template parameters.
+/// Matches substitutions of non-type template parameters.
 ///
 /// Given
 /// \code
@@ -1379,7 +1379,7 @@
                                                    SubstNonTypeTemplateParmExpr>
     substNonTypeTemplateParmExpr;
 
-/// \brief Matches using declarations.
+/// Matches using declarations.
 ///
 /// Given
 /// \code
@@ -1390,7 +1390,7 @@
 ///   matches \code using X::x \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Decl, UsingDecl> usingDecl;
 
-/// \brief Matches using namespace declarations.
+/// Matches using namespace declarations.
 ///
 /// Given
 /// \code
@@ -1402,7 +1402,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, UsingDirectiveDecl>
     usingDirectiveDecl;
 
-/// \brief Matches reference to a name that can be looked up during parsing
+/// Matches reference to a name that can be looked up during parsing
 /// but could not be resolved to a specific declaration.
 ///
 /// Given
@@ -1419,7 +1419,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, UnresolvedLookupExpr>
     unresolvedLookupExpr;
 
-/// \brief Matches unresolved using value declarations.
+/// Matches unresolved using value declarations.
 ///
 /// Given
 /// \code
@@ -1434,7 +1434,7 @@
                                                    UnresolvedUsingValueDecl>
     unresolvedUsingValueDecl;
 
-/// \brief Matches unresolved using value declarations that involve the
+/// Matches unresolved using value declarations that involve the
 /// typename.
 ///
 /// Given
@@ -1453,7 +1453,7 @@
                                                    UnresolvedUsingTypenameDecl>
     unresolvedUsingTypenameDecl;
 
-/// \brief Matches parentheses used in expressions.
+/// Matches parentheses used in expressions.
 ///
 /// Example matches (foo() + 1)
 /// \code
@@ -1462,7 +1462,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ParenExpr> parenExpr;
 
-/// \brief Matches constructor call expressions (including implicit ones).
+/// Matches constructor call expressions (including implicit ones).
 ///
 /// Example matches string(ptr, n) and ptr within arguments of f
 ///     (matcher = cxxConstructExpr())
@@ -1475,7 +1475,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXConstructExpr>
     cxxConstructExpr;
 
-/// \brief Matches unresolved constructor call expressions.
+/// Matches unresolved constructor call expressions.
 ///
 /// Example matches T(t) in return statement of f
 ///     (matcher = cxxUnresolvedConstructExpr())
@@ -1487,7 +1487,7 @@
                                                    CXXUnresolvedConstructExpr>
     cxxUnresolvedConstructExpr;
 
-/// \brief Matches implicit and explicit this expressions.
+/// Matches implicit and explicit this expressions.
 ///
 /// Example matches the implicit this expression in "return i".
 ///     (matcher = cxxThisExpr())
@@ -1500,7 +1500,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXThisExpr>
     cxxThisExpr;
 
-/// \brief Matches nodes where temporaries are created.
+/// Matches nodes where temporaries are created.
 ///
 /// Example matches FunctionTakesString(GetStringByValue())
 ///     (matcher = cxxBindTemporaryExpr())
@@ -1511,7 +1511,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXBindTemporaryExpr>
     cxxBindTemporaryExpr;
 
-/// \brief Matches nodes where temporaries are materialized.
+/// Matches nodes where temporaries are materialized.
 ///
 /// Example: Given
 /// \code
@@ -1533,7 +1533,7 @@
                                                    MaterializeTemporaryExpr>
     materializeTemporaryExpr;
 
-/// \brief Matches new expressions.
+/// Matches new expressions.
 ///
 /// Given
 /// \code
@@ -1543,7 +1543,7 @@
 ///   matches 'new X'.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXNewExpr> cxxNewExpr;
 
-/// \brief Matches delete expressions.
+/// Matches delete expressions.
 ///
 /// Given
 /// \code
@@ -1554,7 +1554,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXDeleteExpr>
     cxxDeleteExpr;
 
-/// \brief Matches array subscript expressions.
+/// Matches array subscript expressions.
 ///
 /// Given
 /// \code
@@ -1565,7 +1565,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ArraySubscriptExpr>
     arraySubscriptExpr;
 
-/// \brief Matches the value of a default argument at the call site.
+/// Matches the value of a default argument at the call site.
 ///
 /// Example matches the CXXDefaultArgExpr placeholder inserted for the
 ///     default value of the second parameter in the call expression f(42)
@@ -1577,7 +1577,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXDefaultArgExpr>
     cxxDefaultArgExpr;
 
-/// \brief Matches overloaded operator calls.
+/// Matches overloaded operator calls.
 ///
 /// Note that if an operator isn't overloaded, it won't match. Instead, use
 /// binaryOperator matcher.
@@ -1594,7 +1594,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXOperatorCallExpr>
     cxxOperatorCallExpr;
 
-/// \brief Matches expressions.
+/// Matches expressions.
 ///
 /// Example matches x()
 /// \code
@@ -1602,7 +1602,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, Expr> expr;
 
-/// \brief Matches expressions that refer to declarations.
+/// Matches expressions that refer to declarations.
 ///
 /// Example matches x in if (x)
 /// \code
@@ -1612,7 +1612,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, DeclRefExpr>
     declRefExpr;
 
-/// \brief Matches if statements.
+/// Matches if statements.
 ///
 /// Example matches 'if (x) {}'
 /// \code
@@ -1620,7 +1620,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, IfStmt> ifStmt;
 
-/// \brief Matches for statements.
+/// Matches for statements.
 ///
 /// Example matches 'for (;;) {}'
 /// \code
@@ -1629,7 +1629,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ForStmt> forStmt;
 
-/// \brief Matches the increment statement of a for loop.
+/// Matches the increment statement of a for loop.
 ///
 /// Example:
 ///     forStmt(hasIncrement(unaryOperator(hasOperatorName("++"))))
@@ -1644,7 +1644,7 @@
           InnerMatcher.matches(*Increment, Finder, Builder));
 }
 
-/// \brief Matches the initialization statement of a for loop.
+/// Matches the initialization statement of a for loop.
 ///
 /// Example:
 ///     forStmt(hasLoopInit(declStmt()))
@@ -1658,7 +1658,7 @@
   return (Init != nullptr && InnerMatcher.matches(*Init, Finder, Builder));
 }
 
-/// \brief Matches range-based for statements.
+/// Matches range-based for statements.
 ///
 /// cxxForRangeStmt() matches 'for (auto a : i)'
 /// \code
@@ -1668,7 +1668,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXForRangeStmt>
     cxxForRangeStmt;
 
-/// \brief Matches the initialization statement of a for loop.
+/// Matches the initialization statement of a for loop.
 ///
 /// Example:
 ///     forStmt(hasLoopVariable(anything()))
@@ -1682,7 +1682,7 @@
   return (Var != nullptr && InnerMatcher.matches(*Var, Finder, Builder));
 }
 
-/// \brief Matches the range initialization statement of a for loop.
+/// Matches the range initialization statement of a for loop.
 ///
 /// Example:
 ///     forStmt(hasRangeInit(anything()))
@@ -1696,7 +1696,7 @@
   return (Init != nullptr && InnerMatcher.matches(*Init, Finder, Builder));
 }
 
-/// \brief Matches while statements.
+/// Matches while statements.
 ///
 /// Given
 /// \code
@@ -1706,7 +1706,7 @@
 ///   matches 'while (true) {}'.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, WhileStmt> whileStmt;
 
-/// \brief Matches do statements.
+/// Matches do statements.
 ///
 /// Given
 /// \code
@@ -1716,7 +1716,7 @@
 ///   matches 'do {} while(true)'
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, DoStmt> doStmt;
 
-/// \brief Matches break statements.
+/// Matches break statements.
 ///
 /// Given
 /// \code
@@ -1726,7 +1726,7 @@
 ///   matches 'break'
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, BreakStmt> breakStmt;
 
-/// \brief Matches continue statements.
+/// Matches continue statements.
 ///
 /// Given
 /// \code
@@ -1737,7 +1737,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ContinueStmt>
     continueStmt;
 
-/// \brief Matches return statements.
+/// Matches return statements.
 ///
 /// Given
 /// \code
@@ -1747,7 +1747,7 @@
 ///   matches 'return 1'
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ReturnStmt> returnStmt;
 
-/// \brief Matches goto statements.
+/// Matches goto statements.
 ///
 /// Given
 /// \code
@@ -1758,7 +1758,7 @@
 ///   matches 'goto FOO'
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, GotoStmt> gotoStmt;
 
-/// \brief Matches label statements.
+/// Matches label statements.
 ///
 /// Given
 /// \code
@@ -1769,7 +1769,7 @@
 ///   matches 'FOO:'
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, LabelStmt> labelStmt;
 
-/// \brief Matches address of label statements (GNU extension).
+/// Matches address of label statements (GNU extension).
 ///
 /// Given
 /// \code
@@ -1782,7 +1782,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, AddrLabelExpr>
     addrLabelExpr;
 
-/// \brief Matches switch statements.
+/// Matches switch statements.
 ///
 /// Given
 /// \code
@@ -1792,7 +1792,7 @@
 ///   matches 'switch(a)'.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, SwitchStmt> switchStmt;
 
-/// \brief Matches case and default statements inside switch statements.
+/// Matches case and default statements inside switch statements.
 ///
 /// Given
 /// \code
@@ -1802,7 +1802,7 @@
 ///   matches 'case 42:' and 'default:'.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, SwitchCase> switchCase;
 
-/// \brief Matches case statements inside switch statements.
+/// Matches case statements inside switch statements.
 ///
 /// Given
 /// \code
@@ -1812,7 +1812,7 @@
 ///   matches 'case 42:'.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CaseStmt> caseStmt;
 
-/// \brief Matches default statements inside switch statements.
+/// Matches default statements inside switch statements.
 ///
 /// Given
 /// \code
@@ -1823,7 +1823,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, DefaultStmt>
     defaultStmt;
 
-/// \brief Matches compound statements.
+/// Matches compound statements.
 ///
 /// Example matches '{}' and '{{}}' in 'for (;;) {{}}'
 /// \code
@@ -1832,7 +1832,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CompoundStmt>
     compoundStmt;
 
-/// \brief Matches catch statements.
+/// Matches catch statements.
 ///
 /// \code
 ///   try {} catch(int i) {}
@@ -1842,7 +1842,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXCatchStmt>
     cxxCatchStmt;
 
-/// \brief Matches try statements.
+/// Matches try statements.
 ///
 /// \code
 ///   try {} catch(int i) {}
@@ -1851,7 +1851,7 @@
 ///   matches 'try {}'
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXTryStmt> cxxTryStmt;
 
-/// \brief Matches throw expressions.
+/// Matches throw expressions.
 ///
 /// \code
 ///   try { throw 5; } catch(int i) {}
@@ -1861,7 +1861,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXThrowExpr>
     cxxThrowExpr;
 
-/// \brief Matches null statements.
+/// Matches null statements.
 ///
 /// \code
 ///   foo();;
@@ -1870,7 +1870,7 @@
 ///   matches the second ';'
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, NullStmt> nullStmt;
 
-/// \brief Matches asm statements.
+/// Matches asm statements.
 ///
 /// \code
 ///  int i = 100;
@@ -1880,7 +1880,7 @@
 ///   matches '__asm("mov al, 2")'
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, AsmStmt> asmStmt;
 
-/// \brief Matches bool literals.
+/// Matches bool literals.
 ///
 /// Example matches true
 /// \code
@@ -1889,7 +1889,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXBoolLiteralExpr>
     cxxBoolLiteral;
 
-/// \brief Matches string literals (also matches wide string literals).
+/// Matches string literals (also matches wide string literals).
 ///
 /// Example matches "abcd", L"abcd"
 /// \code
@@ -1899,7 +1899,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, StringLiteral>
     stringLiteral;
 
-/// \brief Matches character literals (also matches wchar_t).
+/// Matches character literals (also matches wchar_t).
 ///
 /// Not matching Hex-encoded chars (e.g. 0x1234, which is a IntegerLiteral),
 /// though.
@@ -1912,14 +1912,14 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CharacterLiteral>
     characterLiteral;
 
-/// \brief Matches integer literals of all sizes / encodings, e.g.
+/// Matches integer literals of all sizes / encodings, e.g.
 /// 1, 1L, 0x1 and 1U.
 ///
 /// Does not match character-encoded integers such as L'a'.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, IntegerLiteral>
     integerLiteral;
 
-/// \brief Matches float literals of all sizes / encodings, e.g.
+/// Matches float literals of all sizes / encodings, e.g.
 /// 1.0, 1.0f, 1.0L and 1e10.
 ///
 /// Does not match implicit conversions such as
@@ -1929,13 +1929,13 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, FloatingLiteral>
     floatLiteral;
 
-/// \brief Matches user defined literal operator call.
+/// Matches user defined literal operator call.
 ///
 /// Example match: "foo"_suffix
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, UserDefinedLiteral>
     userDefinedLiteral;
 
-/// \brief Matches compound (i.e. non-scalar) literals
+/// Matches compound (i.e. non-scalar) literals
 ///
 /// Example match: {1}, (1, 2)
 /// \code
@@ -1945,22 +1945,22 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CompoundLiteralExpr>
     compoundLiteralExpr;
 
-/// \brief Matches nullptr literal.
+/// Matches nullptr literal.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXNullPtrLiteralExpr>
     cxxNullPtrLiteralExpr;
 
-/// \brief Matches GNU __null expression.
+/// Matches GNU __null expression.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, GNUNullExpr>
     gnuNullExpr;
 
-/// \brief Matches atomic builtins.
+/// Matches atomic builtins.
 /// Example matches __atomic_load_n(ptr, 1)
 /// \code
 ///   void foo() { int *ptr; __atomic_load_n(ptr, 1); }
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, AtomicExpr> atomicExpr;
 
-/// \brief Matches statement expression (GNU extension).
+/// Matches statement expression (GNU extension).
 ///
 /// Example match: ({ int X = 4; X; })
 /// \code
@@ -1968,7 +1968,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, StmtExpr> stmtExpr;
 
-/// \brief Matches binary operator expressions.
+/// Matches binary operator expressions.
 ///
 /// Example matches a || b
 /// \code
@@ -1977,7 +1977,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, BinaryOperator>
     binaryOperator;
 
-/// \brief Matches unary operator expressions.
+/// Matches unary operator expressions.
 ///
 /// Example matches !a
 /// \code
@@ -1986,7 +1986,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, UnaryOperator>
     unaryOperator;
 
-/// \brief Matches conditional operator expressions.
+/// Matches conditional operator expressions.
 ///
 /// Example matches a ? b : c
 /// \code
@@ -1995,7 +1995,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ConditionalOperator>
     conditionalOperator;
 
-/// \brief Matches binary conditional operator expressions (GNU extension).
+/// Matches binary conditional operator expressions (GNU extension).
 ///
 /// Example matches a ?: b
 /// \code
@@ -2005,7 +2005,7 @@
                                                    BinaryConditionalOperator>
     binaryConditionalOperator;
 
-/// \brief Matches opaque value expressions. They are used as helpers
+/// Matches opaque value expressions. They are used as helpers
 /// to reference another expressions and can be met
 /// in BinaryConditionalOperators, for example.
 ///
@@ -2016,7 +2016,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, OpaqueValueExpr>
     opaqueValueExpr;
 
-/// \brief Matches a C++ static_assert declaration.
+/// Matches a C++ static_assert declaration.
 ///
 /// Example:
 ///   staticAssertExpr()
@@ -2032,7 +2032,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Decl, StaticAssertDecl>
     staticAssertDecl;
 
-/// \brief Matches a reinterpret_cast expression.
+/// Matches a reinterpret_cast expression.
 ///
 /// Either the source expression or the destination type can be matched
 /// using has(), but hasDestinationType() is more specific and can be
@@ -2045,7 +2045,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXReinterpretCastExpr>
     cxxReinterpretCastExpr;
 
-/// \brief Matches a C++ static_cast expression.
+/// Matches a C++ static_cast expression.
 ///
 /// \see hasDestinationType
 /// \see reinterpretCast
@@ -2061,7 +2061,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXStaticCastExpr>
     cxxStaticCastExpr;
 
-/// \brief Matches a dynamic_cast expression.
+/// Matches a dynamic_cast expression.
 ///
 /// Example:
 ///   cxxDynamicCastExpr()
@@ -2076,7 +2076,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXDynamicCastExpr>
     cxxDynamicCastExpr;
 
-/// \brief Matches a const_cast expression.
+/// Matches a const_cast expression.
 ///
 /// Example: Matches const_cast<int*>(&r) in
 /// \code
@@ -2087,7 +2087,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXConstCastExpr>
     cxxConstCastExpr;
 
-/// \brief Matches a C-style cast expression.
+/// Matches a C-style cast expression.
 ///
 /// Example: Matches (int) 2.2f in
 /// \code
@@ -2096,7 +2096,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CStyleCastExpr>
     cStyleCastExpr;
 
-/// \brief Matches explicit cast expressions.
+/// Matches explicit cast expressions.
 ///
 /// Matches any cast expression written in user code, whether it be a
 /// C-style cast, a functional-style cast, or a keyword cast.
@@ -2120,14 +2120,14 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ExplicitCastExpr>
     explicitCastExpr;
 
-/// \brief Matches the implicit cast nodes of Clang's AST.
+/// Matches the implicit cast nodes of Clang's AST.
 ///
 /// This matches many different places, including function call return value
 /// eliding, as well as any type conversions.
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, ImplicitCastExpr>
     implicitCastExpr;
 
-/// \brief Matches any cast nodes of Clang's AST.
+/// Matches any cast nodes of Clang's AST.
 ///
 /// Example: castExpr() matches each of the following:
 /// \code
@@ -2142,7 +2142,7 @@
 /// \endcode
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CastExpr> castExpr;
 
-/// \brief Matches functional cast expressions
+/// Matches functional cast expressions
 ///
 /// Example: Matches Foo(bar);
 /// \code
@@ -2153,7 +2153,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXFunctionalCastExpr>
     cxxFunctionalCastExpr;
 
-/// \brief Matches functional cast expressions having N != 1 arguments
+/// Matches functional cast expressions having N != 1 arguments
 ///
 /// Example: Matches Foo(bar, bar)
 /// \code
@@ -2162,7 +2162,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CXXTemporaryObjectExpr>
     cxxTemporaryObjectExpr;
 
-/// \brief Matches predefined identifier expressions [C99 6.4.2.2].
+/// Matches predefined identifier expressions [C99 6.4.2.2].
 ///
 /// Example: Matches __func__
 /// \code
@@ -2171,7 +2171,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, PredefinedExpr>
     predefinedExpr;
 
-/// \brief Matches C99 designated initializer expressions [C99 6.7.8].
+/// Matches C99 designated initializer expressions [C99 6.7.8].
 ///
 /// Example: Matches { [2].y = 1.0, [0].x = 1.0 }
 /// \code
@@ -2180,7 +2180,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, DesignatedInitExpr>
     designatedInitExpr;
 
-/// \brief Matches designated initializer expressions that contain
+/// Matches designated initializer expressions that contain
 /// a specific number of designators.
 ///
 /// Example: Given
@@ -2195,16 +2195,16 @@
   return Node.size() == N;
 }
 
-/// \brief Matches \c QualTypes in the clang AST.
+/// Matches \c QualTypes in the clang AST.
 extern const internal::VariadicAllOfMatcher<QualType> qualType;
 
-/// \brief Matches \c Types in the clang AST.
+/// Matches \c Types in the clang AST.
 extern const internal::VariadicAllOfMatcher<Type> type;
 
-/// \brief Matches \c TypeLocs in the clang AST.
+/// Matches \c TypeLocs in the clang AST.
 extern const internal::VariadicAllOfMatcher<TypeLoc> typeLoc;
 
-/// \brief Matches if any of the given matchers matches.
+/// Matches if any of the given matchers matches.
 ///
 /// Unlike \c anyOf, \c eachOf will generate a match result for each
 /// matching submatcher.
@@ -2227,21 +2227,21 @@
     2, std::numeric_limits<unsigned>::max()>
     eachOf;
 
-/// \brief Matches if any of the given matchers matches.
+/// Matches if any of the given matchers matches.
 ///
 /// Usable as: Any Matcher
 extern const internal::VariadicOperatorMatcherFunc<
     2, std::numeric_limits<unsigned>::max()>
     anyOf;
 
-/// \brief Matches if all given matchers match.
+/// Matches if all given matchers match.
 ///
 /// Usable as: Any Matcher
 extern const internal::VariadicOperatorMatcherFunc<
     2, std::numeric_limits<unsigned>::max()>
     allOf;
 
-/// \brief Matches sizeof (C99), alignof (C++11) and vec_step (OpenCL)
+/// Matches sizeof (C99), alignof (C++11) and vec_step (OpenCL)
 ///
 /// Given
 /// \code
@@ -2254,7 +2254,7 @@
                                                    UnaryExprOrTypeTraitExpr>
     unaryExprOrTypeTraitExpr;
 
-/// \brief Matches unary expressions that have a specific type of argument.
+/// Matches unary expressions that have a specific type of argument.
 ///
 /// Given
 /// \code
@@ -2268,7 +2268,7 @@
   return InnerMatcher.matches(ArgumentType, Finder, Builder);
 }
 
-/// \brief Matches unary expressions of a certain kind.
+/// Matches unary expressions of a certain kind.
 ///
 /// Given
 /// \code
@@ -2281,7 +2281,7 @@
   return Node.getKind() == Kind;
 }
 
-/// \brief Same as unaryExprOrTypeTraitExpr, but only matching
+/// Same as unaryExprOrTypeTraitExpr, but only matching
 /// alignof.
 inline internal::Matcher<Stmt> alignOfExpr(
     const internal::Matcher<UnaryExprOrTypeTraitExpr> &InnerMatcher) {
@@ -2289,7 +2289,7 @@
       ofKind(UETT_AlignOf), InnerMatcher)));
 }
 
-/// \brief Same as unaryExprOrTypeTraitExpr, but only matching
+/// Same as unaryExprOrTypeTraitExpr, but only matching
 /// sizeof.
 inline internal::Matcher<Stmt> sizeOfExpr(
     const internal::Matcher<UnaryExprOrTypeTraitExpr> &InnerMatcher) {
@@ -2297,7 +2297,7 @@
       allOf(ofKind(UETT_SizeOf), InnerMatcher)));
 }
 
-/// \brief Matches NamedDecl nodes that have the specified name.
+/// Matches NamedDecl nodes that have the specified name.
 ///
 /// Supports specifying enclosing namespaces or classes by prefixing the name
 /// with '<enclosing>::'.
@@ -2316,7 +2316,7 @@
   return internal::Matcher<NamedDecl>(new internal::HasNameMatcher({Name}));
 }
 
-/// \brief Matches NamedDecl nodes that have any of the specified names.
+/// Matches NamedDecl nodes that have any of the specified names.
 ///
 /// This matcher is only provided as a performance optimization of hasName.
 /// \code
@@ -2330,7 +2330,7 @@
                                         internal::hasAnyNameFunc>
     hasAnyName;
 
-/// \brief Matches NamedDecl nodes whose fully qualified names contain
+/// Matches NamedDecl nodes whose fully qualified names contain
 /// a substring matched by the given RegExp.
 ///
 /// Supports specifying enclosing namespaces or classes by
@@ -2353,7 +2353,7 @@
   return RE.match(FullNameString);
 }
 
-/// \brief Matches overloaded operator names.
+/// Matches overloaded operator names.
 ///
 /// Matches overloaded operator names specified in strings without the
 /// "operator" prefix: e.g. "<<".
@@ -2381,7 +2381,7 @@
       AST_POLYMORPHIC_SUPPORTED_TYPES(CXXOperatorCallExpr, FunctionDecl)>(Name);
 }
 
-/// \brief Matches C++ classes that are directly or indirectly derived from
+/// Matches C++ classes that are directly or indirectly derived from
 /// a class matching \c Base.
 ///
 /// Note that a class is not considered to be derived from itself.
@@ -2407,13 +2407,13 @@
   return Finder->classIsDerivedFrom(&Node, Base, Builder);
 }
 
-/// \brief Overloaded method as shortcut for \c isDerivedFrom(hasName(...)).
+/// Overloaded method as shortcut for \c isDerivedFrom(hasName(...)).
 AST_MATCHER_P_OVERLOAD(CXXRecordDecl, isDerivedFrom, std::string, BaseName, 1) {
   assert(!BaseName.empty());
   return isDerivedFrom(hasName(BaseName)).matches(Node, Finder, Builder);
 }
 
-/// \brief Similar to \c isDerivedFrom(), but also matches classes that directly
+/// Similar to \c isDerivedFrom(), but also matches classes that directly
 /// match \c Base.
 AST_MATCHER_P_OVERLOAD(CXXRecordDecl, isSameOrDerivedFrom,
                        internal::Matcher<NamedDecl>, Base, 0) {
@@ -2421,7 +2421,7 @@
       .matches(Node, Finder, Builder);
 }
 
-/// \brief Overloaded method as shortcut for
+/// Overloaded method as shortcut for
 /// \c isSameOrDerivedFrom(hasName(...)).
 AST_MATCHER_P_OVERLOAD(CXXRecordDecl, isSameOrDerivedFrom, std::string,
                        BaseName, 1) {
@@ -2429,7 +2429,7 @@
   return isSameOrDerivedFrom(hasName(BaseName)).matches(Node, Finder, Builder);
 }
 
-/// \brief Matches the first method of a class or struct that satisfies \c
+/// Matches the first method of a class or struct that satisfies \c
 /// InnerMatcher.
 ///
 /// Given:
@@ -2446,7 +2446,7 @@
                                     Node.method_end(), Finder, Builder);
 }
 
-/// \brief Matches the generated class of lambda expressions.
+/// Matches the generated class of lambda expressions.
 ///
 /// Given:
 /// \code
@@ -2459,7 +2459,7 @@
   return Node.isLambda();
 }
 
-/// \brief Matches AST nodes that have child AST nodes that match the
+/// Matches AST nodes that have child AST nodes that match the
 /// provided matcher.
 ///
 /// Example matches X, Y
@@ -2479,7 +2479,7 @@
 /// has(ignoringParenImpCasts(expr())).
 extern const internal::ArgumentAdaptingMatcherFunc<internal::HasMatcher> has;
 
-/// \brief Matches AST nodes that have descendant AST nodes that match the
+/// Matches AST nodes that have descendant AST nodes that match the
 /// provided matcher.
 ///
 /// Example matches X, Y, Z
@@ -2497,7 +2497,7 @@
     internal::HasDescendantMatcher>
     hasDescendant;
 
-/// \brief Matches AST nodes that have child AST nodes that match the
+/// Matches AST nodes that have child AST nodes that match the
 /// provided matcher.
 ///
 /// Example matches X, Y, Y::X, Z::Y, Z::Y::X
@@ -2518,7 +2518,7 @@
 extern const internal::ArgumentAdaptingMatcherFunc<internal::ForEachMatcher>
     forEach;
 
-/// \brief Matches AST nodes that have descendant AST nodes that match the
+/// Matches AST nodes that have descendant AST nodes that match the
 /// provided matcher.
 ///
 /// Example matches X, A, A::X, B, B::C, B::C::X
@@ -2549,7 +2549,7 @@
     internal::ForEachDescendantMatcher>
     forEachDescendant;
 
-/// \brief Matches if the node or any descendant matches.
+/// Matches if the node or any descendant matches.
 ///
 /// Generates results for each match.
 ///
@@ -2570,7 +2570,7 @@
   return eachOf(Matcher, forEachDescendant(Matcher));
 }
 
-/// \brief Matches AST nodes that have a parent that matches the provided
+/// Matches AST nodes that have a parent that matches the provided
 /// matcher.
 ///
 /// Given
@@ -2586,7 +2586,7 @@
     internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc>>
     hasParent;
 
-/// \brief Matches AST nodes that have an ancestor that matches the provided
+/// Matches AST nodes that have an ancestor that matches the provided
 /// matcher.
 ///
 /// Given
@@ -2603,7 +2603,7 @@
     internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc>>
     hasAncestor;
 
-/// \brief Matches if the provided matcher does not match.
+/// Matches if the provided matcher does not match.
 ///
 /// Example matches Y (matcher = cxxRecordDecl(unless(hasName("X"))))
 /// \code
@@ -2614,7 +2614,7 @@
 /// Usable as: Any Matcher
 extern const internal::VariadicOperatorMatcherFunc<1, 1> unless;
 
-/// \brief Matches a node if the declaration associated with that node
+/// Matches a node if the declaration associated with that node
 /// matches the given matcher.
 ///
 /// The associated declaration is:
@@ -2656,7 +2656,7 @@
       void(internal::HasDeclarationSupportedTypes)>(InnerMatcher);
 }
 
-/// \brief Matches a \c NamedDecl whose underlying declaration matches the given
+/// Matches a \c NamedDecl whose underlying declaration matches the given
 /// matcher.
 ///
 /// Given
@@ -2675,7 +2675,7 @@
          InnerMatcher.matches(*UnderlyingDecl, Finder, Builder);
 }
 
-/// \brief Matches on the implicit object argument of a member call expression.
+/// Matches on the implicit object argument of a member call expression.
 ///
 /// Example matches y.x()
 ///   (matcher = cxxMemberCallExpr(on(hasType(cxxRecordDecl(hasName("Y"))))))
@@ -2694,7 +2694,7 @@
 }
 
 
-/// \brief Matches on the receiver of an ObjectiveC Message expression.
+/// Matches on the receiver of an ObjectiveC Message expression.
 ///
 /// Example
 /// matcher = objCMessageExpr(hasReceiverType(asString("UIWebView *")));
@@ -2710,7 +2710,7 @@
   return InnerMatcher.matches(TypeDecl, Finder, Builder);
 }
 
-/// \brief Matches when BaseName == Selector.getAsString()
+/// Matches when BaseName == Selector.getAsString()
 ///
 ///  matcher = objCMessageExpr(hasSelector("loadHTMLString:baseURL:"));
 ///  matches the outer message expr in the code below, but NOT the message
@@ -2724,7 +2724,7 @@
 }
 
 
-/// \brief Matches when at least one of the supplied string equals to the
+/// Matches when at least one of the supplied string equals to the
 /// Selector.getAsString()
 ///
 ///  matcher = objCMessageExpr(hasSelector("methodA:", "methodB:"));
@@ -2738,7 +2738,7 @@
                                         internal::hasAnySelectorFunc>
                                         hasAnySelector;
 
-/// \brief Matches ObjC selectors whose name contains
+/// Matches ObjC selectors whose name contains
 /// a substring matched by the given RegExp.
 ///  matcher = objCMessageExpr(matchesSelector("loadHTMLString\:baseURL?"));
 ///  matches the outer message expr in the code below, but NOT the message
@@ -2753,7 +2753,7 @@
   return RE.match(SelectorString);
 }
 
-/// \brief Matches when the selector is the empty selector
+/// Matches when the selector is the empty selector
 ///
 /// Matches only when the selector of the objCMessageExpr is NULL. This may
 /// represent an error condition in the tree!
@@ -2761,7 +2761,7 @@
   return Node.getSelector().isNull();
 }
 
-/// \brief Matches when the selector is a Unary Selector
+/// Matches when the selector is a Unary Selector
 ///
 ///  matcher = objCMessageExpr(matchesSelector(hasUnarySelector());
 ///  matches self.bodyView in the code below, but NOT the outer message
@@ -2773,7 +2773,7 @@
   return Node.getSelector().isUnarySelector();
 }
 
-/// \brief Matches when the selector is a keyword selector
+/// Matches when the selector is a keyword selector
 ///
 /// objCMessageExpr(hasKeywordSelector()) matches the generated setFrame
 /// message expression in
@@ -2789,7 +2789,7 @@
   return Node.getSelector().isKeywordSelector();
 }
 
-/// \brief Matches when the selector has the specified number of arguments
+/// Matches when the selector has the specified number of arguments
 ///
 ///  matcher = objCMessageExpr(numSelectorArgs(0));
 ///  matches self.bodyView in the code below
@@ -2804,7 +2804,7 @@
   return Node.getSelector().getNumArgs() == N;
 }
    
-/// \brief Matches if the call expression's callee expression matches.
+/// Matches if the call expression's callee expression matches.
 ///
 /// Given
 /// \code
@@ -2827,7 +2827,7 @@
           InnerMatcher.matches(*ExprNode, Finder, Builder));
 }
 
-/// \brief Matches if the call expression's callee's declaration matches the
+/// Matches if the call expression's callee's declaration matches the
 /// given matcher.
 ///
 /// Example matches y.x() (matcher = callExpr(callee(
@@ -2841,7 +2841,7 @@
   return callExpr(hasDeclaration(InnerMatcher)).matches(Node, Finder, Builder);
 }
 
-/// \brief Matches if the expression's or declaration's type matches a type
+/// Matches if the expression's or declaration's type matches a type
 /// matcher.
 ///
 /// Example matches x (matcher = expr(hasType(cxxRecordDecl(hasName("X")))))
@@ -2861,7 +2861,7 @@
   return false;
 }
 
-/// \brief Overloaded to match the declaration of the expression's or value
+/// Overloaded to match the declaration of the expression's or value
 /// declaration's type.
 ///
 /// In case of a value declaration (for example a variable declaration),
@@ -2886,7 +2886,7 @@
       .matches(Node.getType(), Finder, Builder);
 }
 
-/// \brief Matches if the type location of the declarator decl's type matches
+/// Matches if the type location of the declarator decl's type matches
 /// the inner matcher.
 ///
 /// Given
@@ -2902,7 +2902,7 @@
   return Inner.matches(Node.getTypeSourceInfo()->getTypeLoc(), Finder, Builder);
 }
 
-/// \brief Matches if the matched type is represented by the given string.
+/// Matches if the matched type is represented by the given string.
 ///
 /// Given
 /// \code
@@ -2915,7 +2915,7 @@
   return Name == Node.getAsString();
 }
 
-/// \brief Matches if the matched type is a pointer type and the pointee type
+/// Matches if the matched type is a pointer type and the pointee type
 /// matches the specified matcher.
 ///
 /// Example matches y->x()
@@ -2932,14 +2932,14 @@
           InnerMatcher.matches(Node->getPointeeType(), Finder, Builder));
 }
 
-/// \brief Overloaded to match the pointee type's declaration.
+/// Overloaded to match the pointee type's declaration.
 AST_MATCHER_P_OVERLOAD(QualType, pointsTo, internal::Matcher<Decl>,
                        InnerMatcher, 1) {
   return pointsTo(qualType(hasDeclaration(InnerMatcher)))
       .matches(Node, Finder, Builder);
 }
 
-/// \brief Matches if the matched type matches the unqualified desugared
+/// Matches if the matched type matches the unqualified desugared
 /// type of the matched node.
 ///
 /// For example, in:
@@ -2955,7 +2955,7 @@
                               Builder);
 }
 
-/// \brief Matches if the matched type is a reference type and the referenced
+/// Matches if the matched type is a reference type and the referenced
 /// type matches the specified matcher.
 ///
 /// Example matches X &x and const X &y
@@ -2974,7 +2974,7 @@
           InnerMatcher.matches(Node->getPointeeType(), Finder, Builder));
 }
 
-/// \brief Matches QualTypes whose canonical type matches InnerMatcher.
+/// Matches QualTypes whose canonical type matches InnerMatcher.
 ///
 /// Given:
 /// \code
@@ -2993,7 +2993,7 @@
   return InnerMatcher.matches(Node.getCanonicalType(), Finder, Builder);
 }
 
-/// \brief Overloaded to match the referenced type's declaration.
+/// Overloaded to match the referenced type's declaration.
 AST_MATCHER_P_OVERLOAD(QualType, references, internal::Matcher<Decl>,
                        InnerMatcher, 1) {
   return references(qualType(hasDeclaration(InnerMatcher)))
@@ -3007,7 +3007,7 @@
           InnerMatcher.matches(*ExprNode, Finder, Builder));
 }
 
-/// \brief Matches if the expression's type either matches the specified
+/// Matches if the expression's type either matches the specified
 /// matcher, or is a pointer to a type that matches the InnerMatcher.
 AST_MATCHER_P_OVERLOAD(CXXMemberCallExpr, thisPointerType,
                        internal::Matcher<QualType>, InnerMatcher, 0) {
@@ -3016,7 +3016,7 @@
       .matches(Node, Finder, Builder);
 }
 
-/// \brief Overloaded to match the type's declaration.
+/// Overloaded to match the type's declaration.
 AST_MATCHER_P_OVERLOAD(CXXMemberCallExpr, thisPointerType,
                        internal::Matcher<Decl>, InnerMatcher, 1) {
   return onImplicitObjectArgument(
@@ -3024,7 +3024,7 @@
       .matches(Node, Finder, Builder);
 }
 
-/// \brief Matches a DeclRefExpr that refers to a declaration that matches the
+/// Matches a DeclRefExpr that refers to a declaration that matches the
 /// specified matcher.
 ///
 /// Example matches x in if(x)
@@ -3040,7 +3040,7 @@
           InnerMatcher.matches(*DeclNode, Finder, Builder));
 }
 
-/// \brief Matches a \c DeclRefExpr that refers to a declaration through a
+/// Matches a \c DeclRefExpr that refers to a declaration through a
 /// specific using shadow declaration.
 ///
 /// Given
@@ -3062,7 +3062,7 @@
   return false;
 }
 
-/// \brief Matches an \c OverloadExpr if any of the declarations in the set of
+/// Matches an \c OverloadExpr if any of the declarations in the set of
 /// overloads matches the given matcher.
 ///
 /// Given
@@ -3083,7 +3083,7 @@
                                     Node.decls_end(), Finder, Builder);
 }
 
-/// \brief Matches the Decl of a DeclStmt which has a single declaration.
+/// Matches the Decl of a DeclStmt which has a single declaration.
 ///
 /// Given
 /// \code
@@ -3100,7 +3100,7 @@
   return false;
 }
 
-/// \brief Matches a variable declaration that has an initializer expression
+/// Matches a variable declaration that has an initializer expression
 /// that matches the given matcher.
 ///
 /// Example matches x (matcher = varDecl(hasInitializer(callExpr())))
@@ -3116,7 +3116,7 @@
           InnerMatcher.matches(*Initializer, Finder, Builder));
 }
 
-/// \brief Matches a variable declaration that has function scope and is a
+/// Matches a variable declaration that has function scope and is a
 /// non-static local variable.
 ///
 /// Example matches x (matcher = varDecl(hasLocalStorage())
@@ -3131,7 +3131,7 @@
   return Node.hasLocalStorage();
 }
 
-/// \brief Matches a variable declaration that does not have local storage.
+/// Matches a variable declaration that does not have local storage.
 ///
 /// Example matches y and z (matcher = varDecl(hasGlobalStorage())
 /// \code
@@ -3145,7 +3145,7 @@
   return Node.hasGlobalStorage();
 }
 
-/// \brief Matches a variable declaration that has automatic storage duration.
+/// Matches a variable declaration that has automatic storage duration.
 ///
 /// Example matches x, but not y, z, or a.
 /// (matcher = varDecl(hasAutomaticStorageDuration())
@@ -3161,7 +3161,7 @@
   return Node.getStorageDuration() == SD_Automatic;
 }
 
-/// \brief Matches a variable declaration that has static storage duration.
+/// Matches a variable declaration that has static storage duration.
 /// It includes the variable declared at namespace scope and those declared
 /// with "static" and "extern" storage class specifiers.
 ///
@@ -3181,7 +3181,7 @@
   return Node.getStorageDuration() == SD_Static;
 }
 
-/// \brief Matches a variable declaration that has thread storage duration.
+/// Matches a variable declaration that has thread storage duration.
 ///
 /// Example matches z, but not x, z, or a.
 /// (matcher = varDecl(hasThreadStorageDuration())
@@ -3197,7 +3197,7 @@
   return Node.getStorageDuration() == SD_Thread;
 }
 
-/// \brief Matches a variable declaration that is an exception variable from
+/// Matches a variable declaration that is an exception variable from
 /// a C++ catch block, or an Objective-C \@catch statement.
 ///
 /// Example matches x (matcher = varDecl(isExceptionVariable())
@@ -3212,7 +3212,7 @@
   return Node.isExceptionVariable();
 }
 
-/// \brief Checks that a call expression or a constructor call expression has
+/// Checks that a call expression or a constructor call expression has
 /// a specific number of arguments (including absent default arguments).
 ///
 /// Example matches f(0, 0) (matcher = callExpr(argumentCountIs(2)))
@@ -3228,7 +3228,7 @@
   return Node.getNumArgs() == N;
 }
 
-/// \brief Matches the n'th argument of a call expression or a constructor
+/// Matches the n'th argument of a call expression or a constructor
 /// call expression.
 ///
 /// Example matches y in x(y)
@@ -3246,7 +3246,7 @@
               *Node.getArg(N)->IgnoreParenImpCasts(), Finder, Builder));
 }
 
-/// \brief Matches declaration statements that contain a specific number of
+/// Matches declaration statements that contain a specific number of
 /// declarations.
 ///
 /// Example: Given
@@ -3261,7 +3261,7 @@
   return std::distance(Node.decl_begin(), Node.decl_end()) == (ptrdiff_t)N;
 }
 
-/// \brief Matches the n'th declaration of a declaration statement.
+/// Matches the n'th declaration of a declaration statement.
 ///
 /// Note that this does not work for global declarations because the AST
 /// breaks up multiple-declaration DeclStmt's into multiple single-declaration
@@ -3290,7 +3290,7 @@
   return InnerMatcher.matches(**Iterator, Finder, Builder);
 }
 
-/// \brief Matches a C++ catch statement that has a catch-all handler.
+/// Matches a C++ catch statement that has a catch-all handler.
 ///
 /// Given
 /// \code
@@ -3307,7 +3307,7 @@
   return Node.getExceptionDecl() == nullptr;
 }
 
-/// \brief Matches a constructor initializer.
+/// Matches a constructor initializer.
 ///
 /// Given
 /// \code
@@ -3326,7 +3326,7 @@
                                     Node.init_end(), Finder, Builder);
 }
 
-/// \brief Matches the field declaration of a constructor initializer.
+/// Matches the field declaration of a constructor initializer.
 ///
 /// Given
 /// \code
@@ -3346,7 +3346,7 @@
       InnerMatcher.matches(*NodeAsDecl, Finder, Builder));
 }
 
-/// \brief Matches the initializer expression of a constructor initializer.
+/// Matches the initializer expression of a constructor initializer.
 ///
 /// Given
 /// \code
@@ -3366,7 +3366,7 @@
       InnerMatcher.matches(*NodeAsExpr, Finder, Builder));
 }
 
-/// \brief Matches a constructor initializer if it is explicitly written in
+/// Matches a constructor initializer if it is explicitly written in
 /// code (as opposed to implicitly added by the compiler).
 ///
 /// Given
@@ -3383,7 +3383,7 @@
   return Node.isWritten();
 }
 
-/// \brief Matches a constructor initializer if it is initializing a base, as
+/// Matches a constructor initializer if it is initializing a base, as
 /// opposed to a member.
 ///
 /// Given
@@ -3403,7 +3403,7 @@
   return Node.isBaseInitializer();
 }
 
-/// \brief Matches a constructor initializer if it is initializing a member, as
+/// Matches a constructor initializer if it is initializing a member, as
 /// opposed to a base.
 ///
 /// Given
@@ -3423,7 +3423,7 @@
   return Node.isMemberInitializer();
 }
 
-/// \brief Matches any argument of a call expression or a constructor call
+/// Matches any argument of a call expression or a constructor call
 /// expression, or an ObjC-message-send expression.
 ///
 /// Given
@@ -3457,12 +3457,12 @@
   return false;
 }
 
-/// \brief Matches a constructor call expression which uses list initialization.
+/// Matches a constructor call expression which uses list initialization.
 AST_MATCHER(CXXConstructExpr, isListInitialization) {
   return Node.isListInitialization();
 }
 
-/// \brief Matches a constructor call expression which requires
+/// Matches a constructor call expression which requires
 /// zero initialization.
 ///
 /// Given
@@ -3478,7 +3478,7 @@
   return Node.requiresZeroInitialization();
 }
 
-/// \brief Matches the n'th parameter of a function or an ObjC method
+/// Matches the n'th parameter of a function or an ObjC method
 /// declaration.
 ///
 /// Given
@@ -3507,7 +3507,7 @@
           && InnerMatcher.matches(*Node.parameters()[N], Finder, Builder));
 }
 
-/// \brief Matches all arguments and their respective ParmVarDecl.
+/// Matches all arguments and their respective ParmVarDecl.
 ///
 /// Given
 /// \code
@@ -3561,7 +3561,7 @@
   return Matched;
 }
 
-/// \brief Matches any parameter of a function or ObjC method declaration.
+/// Matches any parameter of a function or ObjC method declaration.
 ///
 /// Does not match the 'this' parameter of a method.
 ///
@@ -3591,7 +3591,7 @@
                                     Node.param_end(), Finder, Builder);
 }
 
-/// \brief Matches \c FunctionDecls and \c FunctionProtoTypes that have a
+/// Matches \c FunctionDecls and \c FunctionProtoTypes that have a
 /// specific parameter count.
 ///
 /// Given
@@ -3615,7 +3615,7 @@
   return Node.getNumParams() == N;
 }
 
-/// \brief Matches \c FunctionDecls that have a noreturn attribute.
+/// Matches \c FunctionDecls that have a noreturn attribute.
 ///
 /// Given
 /// \code
@@ -3631,7 +3631,7 @@
 /// \endcode
 AST_MATCHER(FunctionDecl, isNoReturn) { return Node.isNoReturn(); }
 
-/// \brief Matches the return type of a function declaration.
+/// Matches the return type of a function declaration.
 ///
 /// Given:
 /// \code
@@ -3644,7 +3644,7 @@
   return InnerMatcher.matches(Node.getReturnType(), Finder, Builder);
 }
 
-/// \brief Matches extern "C" function or variable declarations.
+/// Matches extern "C" function or variable declarations.
 ///
 /// Given:
 /// \code
@@ -3664,7 +3664,7 @@
   return Node.isExternC();
 }
 
-/// \brief Matches variable/function declarations that have "static" storage
+/// Matches variable/function declarations that have "static" storage
 /// class specifier ("static" keyword) written in the source.
 ///
 /// Given:
@@ -3684,7 +3684,7 @@
   return Node.getStorageClass() == SC_Static;
 }
 
-/// \brief Matches deleted function declarations.
+/// Matches deleted function declarations.
 ///
 /// Given:
 /// \code
@@ -3697,7 +3697,7 @@
   return Node.isDeleted();
 }
 
-/// \brief Matches defaulted function declarations.
+/// Matches defaulted function declarations.
 ///
 /// Given:
 /// \code
@@ -3710,7 +3710,7 @@
   return Node.isDefaulted();
 }
 
-/// \brief Matches functions that have a dynamic exception specification.
+/// Matches functions that have a dynamic exception specification.
 ///
 /// Given:
 /// \code
@@ -3733,7 +3733,7 @@
   return false;
 }
 
-/// \brief Matches functions that have a non-throwing exception specification.
+/// Matches functions that have a non-throwing exception specification.
 ///
 /// Given:
 /// \code
@@ -3763,7 +3763,7 @@
   return FnTy->isNothrow();
 }
 
-/// \brief Matches constexpr variable and function declarations,
+/// Matches constexpr variable and function declarations,
 ///        and if constexpr.
 ///
 /// Given:
@@ -3785,7 +3785,7 @@
   return Node.isConstexpr();
 }
 
-/// \brief Matches the condition expression of an if statement, for loop,
+/// Matches the condition expression of an if statement, for loop,
 /// switch statement or conditional operator.
 ///
 /// Example matches true (matcher = hasCondition(cxxBoolLiteral(equals(true))))
@@ -3802,7 +3802,7 @@
           InnerMatcher.matches(*Condition, Finder, Builder));
 }
 
-/// \brief Matches the then-statement of an if statement.
+/// Matches the then-statement of an if statement.
 ///
 /// Examples matches the if statement
 ///   (matcher = ifStmt(hasThen(cxxBoolLiteral(equals(true)))))
@@ -3814,7 +3814,7 @@
   return (Then != nullptr && InnerMatcher.matches(*Then, Finder, Builder));
 }
 
-/// \brief Matches the else-statement of an if statement.
+/// Matches the else-statement of an if statement.
 ///
 /// Examples matches the if statement
 ///   (matcher = ifStmt(hasElse(cxxBoolLiteral(equals(true)))))
@@ -3826,7 +3826,7 @@
   return (Else != nullptr && InnerMatcher.matches(*Else, Finder, Builder));
 }
 
-/// \brief Matches if a node equals a previously bound node.
+/// Matches if a node equals a previously bound node.
 ///
 /// Matches a node if it equals the node previously bound to \p ID.
 ///
@@ -3863,7 +3863,7 @@
   return Builder->removeBindings(Predicate);
 }
 
-/// \brief Matches the condition variable statement in an if statement.
+/// Matches the condition variable statement in an if statement.
 ///
 /// Given
 /// \code
@@ -3879,7 +3879,7 @@
          InnerMatcher.matches(*DeclarationStatement, Finder, Builder);
 }
 
-/// \brief Matches the index expression of an array subscript expression.
+/// Matches the index expression of an array subscript expression.
 ///
 /// Given
 /// \code
@@ -3895,7 +3895,7 @@
   return false;
 }
 
-/// \brief Matches the base expression of an array subscript expression.
+/// Matches the base expression of an array subscript expression.
 ///
 /// Given
 /// \code
@@ -3912,7 +3912,7 @@
   return false;
 }
 
-/// \brief Matches a 'for', 'while', 'do while' statement or a function
+/// Matches a 'for', 'while', 'do while' statement or a function
 /// definition that has a given body.
 ///
 /// Given
@@ -3934,7 +3934,7 @@
           InnerMatcher.matches(*Statement, Finder, Builder));
 }
 
-/// \brief Matches compound statements where at least one substatement matches
+/// Matches compound statements where at least one substatement matches
 /// a given matcher. Also matches StmtExprs that have CompoundStmt as children.
 ///
 /// Given
@@ -3954,7 +3954,7 @@
                                           CS->body_end(), Finder, Builder);
 }
 
-/// \brief Checks that a compound statement contains a specific number of
+/// Checks that a compound statement contains a specific number of
 /// child statements.
 ///
 /// Example: Given
@@ -3968,7 +3968,7 @@
   return Node.size() == N;
 }
 
-/// \brief Matches literals that are equal to the given value of type ValueT.
+/// Matches literals that are equal to the given value of type ValueT.
 ///
 /// Given
 /// \code
@@ -4029,7 +4029,7 @@
     .matchesNode(Node);
 }
 
-/// \brief Matches the operator Name of operator expressions (binary or
+/// Matches the operator Name of operator expressions (binary or
 /// unary).
 ///
 /// Example matches a || b (matcher = binaryOperator(hasOperatorName("||")))
@@ -4043,7 +4043,7 @@
   return Name == Node.getOpcodeStr(Node.getOpcode());
 }
 
-/// \brief Matches all kinds of assignment operators.
+/// Matches all kinds of assignment operators.
 ///
 /// Example 1: matches a += b (matcher = binaryOperator(isAssignmentOperator()))
 /// \code
@@ -4063,7 +4063,7 @@
   return Node.isAssignmentOp();
 }
 
-/// \brief Matches the left hand side of binary operator expressions.
+/// Matches the left hand side of binary operator expressions.
 ///
 /// Example matches a (matcher = binaryOperator(hasLHS()))
 /// \code
@@ -4078,7 +4078,7 @@
           InnerMatcher.matches(*LeftHandSide, Finder, Builder));
 }
 
-/// \brief Matches the right hand side of binary operator expressions.
+/// Matches the right hand side of binary operator expressions.
 ///
 /// Example matches b (matcher = binaryOperator(hasRHS()))
 /// \code
@@ -4093,14 +4093,14 @@
           InnerMatcher.matches(*RightHandSide, Finder, Builder));
 }
 
-/// \brief Matches if either the left hand side or the right hand side of a
+/// Matches if either the left hand side or the right hand side of a
 /// binary operator matches.
 inline internal::Matcher<BinaryOperator> hasEitherOperand(
     const internal::Matcher<Expr> &InnerMatcher) {
   return anyOf(hasLHS(InnerMatcher), hasRHS(InnerMatcher));
 }
 
-/// \brief Matches if the operand of a unary operator matches.
+/// Matches if the operand of a unary operator matches.
 ///
 /// Example matches true (matcher = hasUnaryOperand(
 ///                                   cxxBoolLiteral(equals(true))))
@@ -4114,7 +4114,7 @@
           InnerMatcher.matches(*Operand, Finder, Builder));
 }
 
-/// \brief Matches if the cast's source expression
+/// Matches if the cast's source expression
 /// or opaque value's source expression matches the given matcher.
 ///
 /// Example 1: matches "a string"
@@ -4139,7 +4139,7 @@
           InnerMatcher.matches(*SubExpression, Finder, Builder));
 }
 
-/// \brief Matches casts that has a given cast kind.
+/// Matches casts that has a given cast kind.
 ///
 /// Example: matches the implicit cast around \c 0
 /// (matcher = castExpr(hasCastKind(CK_NullToPointer)))
@@ -4150,7 +4150,7 @@
   return Node.getCastKind() == Kind;
 }
 
-/// \brief Matches casts whose destination type matches a given matcher.
+/// Matches casts whose destination type matches a given matcher.
 ///
 /// (Note: Clang's AST refers to other conversions as "casts" too, and calls
 /// actual casts "explicit" casts.)
@@ -4160,7 +4160,7 @@
   return InnerMatcher.matches(NodeType, Finder, Builder);
 }
 
-/// \brief Matches implicit casts whose destination type matches a given
+/// Matches implicit casts whose destination type matches a given
 /// matcher.
 ///
 /// FIXME: Unit test this matcher
@@ -4169,7 +4169,7 @@
   return InnerMatcher.matches(Node.getType(), Finder, Builder);
 }
 
-/// \brief Matches RecordDecl object that are spelled with "struct."
+/// Matches RecordDecl object that are spelled with "struct."
 ///
 /// Example matches S, but not C or U.
 /// \code
@@ -4181,7 +4181,7 @@
   return Node.isStruct();
 }
 
-/// \brief Matches RecordDecl object that are spelled with "union."
+/// Matches RecordDecl object that are spelled with "union."
 ///
 /// Example matches U, but not C or S.
 /// \code
@@ -4193,7 +4193,7 @@
   return Node.isUnion();
 }
 
-/// \brief Matches RecordDecl object that are spelled with "class."
+/// Matches RecordDecl object that are spelled with "class."
 ///
 /// Example matches C, but not S or U.
 /// \code
@@ -4205,7 +4205,7 @@
   return Node.isClass();
 }
 
-/// \brief Matches the true branch expression of a conditional operator.
+/// Matches the true branch expression of a conditional operator.
 ///
 /// Example 1 (conditional ternary operator): matches a
 /// \code
@@ -4223,7 +4223,7 @@
           InnerMatcher.matches(*Expression, Finder, Builder));
 }
 
-/// \brief Matches the false branch expression of a conditional operator
+/// Matches the false branch expression of a conditional operator
 /// (binary or ternary).
 ///
 /// Example matches b
@@ -4238,7 +4238,7 @@
           InnerMatcher.matches(*Expression, Finder, Builder));
 }
 
-/// \brief Matches if a declaration has a body attached.
+/// Matches if a declaration has a body attached.
 ///
 /// Example matches A, va, fa
 /// \code
@@ -4265,7 +4265,7 @@
   return Node.isThisDeclarationADefinition();
 }
 
-/// \brief Matches if a function declaration is variadic.
+/// Matches if a function declaration is variadic.
 ///
 /// Example matches f, but not g or h. The function i will not match, even when
 /// compiled in C mode.
@@ -4279,7 +4279,7 @@
   return Node.isVariadic();
 }
 
-/// \brief Matches the class declaration that the given method declaration
+/// Matches the class declaration that the given method declaration
 /// belongs to.
 ///
 /// FIXME: Generalize this for other kinds of declarations.
@@ -4303,7 +4303,7 @@
           InnerMatcher.matches(*Parent, Finder, Builder));
 }
 
-/// \brief Matches each method overridden by the given method. This matcher may
+/// Matches each method overridden by the given method. This matcher may
 /// produce multiple matches.
 ///
 /// Given
@@ -4344,7 +4344,7 @@
   return Matched;
 }
 
-/// \brief Matches if the given method declaration is virtual.
+/// Matches if the given method declaration is virtual.
 ///
 /// Given
 /// \code
@@ -4358,7 +4358,7 @@
   return Node.isVirtual();
 }
 
-/// \brief Matches if the given method declaration has an explicit "virtual".
+/// Matches if the given method declaration has an explicit "virtual".
 ///
 /// Given
 /// \code
@@ -4376,7 +4376,7 @@
   return Node.isVirtualAsWritten();
 }
 
-/// \brief Matches if the given method or class declaration is final.
+/// Matches if the given method or class declaration is final.
 ///
 /// Given:
 /// \code
@@ -4397,7 +4397,7 @@
   return Node.template hasAttr<FinalAttr>();
 }
 
-/// \brief Matches if the given method declaration is pure.
+/// Matches if the given method declaration is pure.
 ///
 /// Given
 /// \code
@@ -4411,7 +4411,7 @@
   return Node.isPure();
 }
 
-/// \brief Matches if the given method declaration is const.
+/// Matches if the given method declaration is const.
 ///
 /// Given
 /// \code
@@ -4426,7 +4426,7 @@
   return Node.isConst();
 }
 
-/// \brief Matches if the given method declaration declares a copy assignment
+/// Matches if the given method declaration declares a copy assignment
 /// operator.
 ///
 /// Given
@@ -4443,7 +4443,7 @@
   return Node.isCopyAssignmentOperator();
 }
 
-/// \brief Matches if the given method declaration declares a move assignment
+/// Matches if the given method declaration declares a move assignment
 /// operator.
 ///
 /// Given
@@ -4460,7 +4460,7 @@
   return Node.isMoveAssignmentOperator();
 }
 
-/// \brief Matches if the given method declaration overrides another method.
+/// Matches if the given method declaration overrides another method.
 ///
 /// Given
 /// \code
@@ -4478,7 +4478,7 @@
   return Node.size_overridden_methods() > 0 || Node.hasAttr<OverrideAttr>();
 }
 
-/// \brief Matches method declarations that are user-provided.
+/// Matches method declarations that are user-provided.
 ///
 /// Given
 /// \code
@@ -4493,7 +4493,7 @@
   return Node.isUserProvided();
 }
 
-/// \brief Matches member expressions that are called with '->' as opposed
+/// Matches member expressions that are called with '->' as opposed
 /// to '.'.
 ///
 /// Member calls on the implicit this pointer match as called with '->'.
@@ -4512,7 +4512,7 @@
   return Node.isArrow();
 }
 
-/// \brief Matches QualType nodes that are of integer type.
+/// Matches QualType nodes that are of integer type.
 ///
 /// Given
 /// \code
@@ -4526,7 +4526,7 @@
     return Node->isIntegerType();
 }
 
-/// \brief Matches QualType nodes that are of unsigned integer type.
+/// Matches QualType nodes that are of unsigned integer type.
 ///
 /// Given
 /// \code
@@ -4540,7 +4540,7 @@
     return Node->isUnsignedIntegerType();
 }
 
-/// \brief Matches QualType nodes that are of signed integer type.
+/// Matches QualType nodes that are of signed integer type.
 ///
 /// Given
 /// \code
@@ -4554,7 +4554,7 @@
     return Node->isSignedIntegerType();
 }
 
-/// \brief Matches QualType nodes that are of character type.
+/// Matches QualType nodes that are of character type.
 ///
 /// Given
 /// \code
@@ -4568,7 +4568,7 @@
     return Node->isAnyCharacterType();
 }
 
-/// \brief Matches QualType nodes that are of any pointer type; this includes
+/// Matches QualType nodes that are of any pointer type; this includes
 /// the Objective-C object pointer type, which is different despite being
 /// syntactically similar.
 ///
@@ -4588,7 +4588,7 @@
   return Node->isAnyPointerType();
 }
 
-/// \brief Matches QualType nodes that are const-qualified, i.e., that
+/// Matches QualType nodes that are const-qualified, i.e., that
 /// include "top-level" const.
 ///
 /// Given
@@ -4607,7 +4607,7 @@
   return Node.isConstQualified();
 }
 
-/// \brief Matches QualType nodes that are volatile-qualified, i.e., that
+/// Matches QualType nodes that are volatile-qualified, i.e., that
 /// include "top-level" volatile.
 ///
 /// Given
@@ -4626,7 +4626,7 @@
   return Node.isVolatileQualified();
 }
 
-/// \brief Matches QualType nodes that have local CV-qualifiers attached to
+/// Matches QualType nodes that have local CV-qualifiers attached to
 /// the node, not hidden within a typedef.
 ///
 /// Given
@@ -4643,7 +4643,7 @@
   return Node.hasLocalQualifiers();
 }
 
-/// \brief Matches a member expression where the member is matched by a
+/// Matches a member expression where the member is matched by a
 /// given matcher.
 ///
 /// Given
@@ -4660,7 +4660,7 @@
   return InnerMatcher.matches(*Node.getMemberDecl(), Finder, Builder);
 }
 
-/// \brief Matches a member expression where the object expression is
+/// Matches a member expression where the object expression is
 /// matched by a given matcher.
 ///
 /// Given
@@ -4677,7 +4677,7 @@
   return InnerMatcher.matches(*Node.getBase(), Finder, Builder);
 }
 
-/// \brief Matches any using shadow declaration.
+/// Matches any using shadow declaration.
 ///
 /// Given
 /// \code
@@ -4692,7 +4692,7 @@
                                     Node.shadow_end(), Finder, Builder);
 }
 
-/// \brief Matches a using shadow declaration where the target declaration is
+/// Matches a using shadow declaration where the target declaration is
 /// matched by the given matcher.
 ///
 /// Given
@@ -4709,7 +4709,7 @@
   return InnerMatcher.matches(*Node.getTargetDecl(), Finder, Builder);
 }
 
-/// \brief Matches template instantiations of function, class, or static
+/// Matches template instantiations of function, class, or static
 /// member variable template instantiations.
 ///
 /// Given
@@ -4746,7 +4746,7 @@
               TSK_ExplicitInstantiationDeclaration);
 }
 
-/// \brief Matches declarations that are template instantiations or are inside
+/// Matches declarations that are template instantiations or are inside
 /// template instantiations.
 ///
 /// Given
@@ -4763,7 +4763,7 @@
   return decl(anyOf(IsInstantiation, hasAncestor(IsInstantiation)));
 }
 
-/// \brief Matches statements inside of a template instantiation.
+/// Matches statements inside of a template instantiation.
 ///
 /// Given
 /// \code
@@ -4783,7 +4783,7 @@
                              functionDecl(isTemplateInstantiation())))));
 }
 
-/// \brief Matches explicit template specializations of function, class, or
+/// Matches explicit template specializations of function, class, or
 /// static member variable template instantiations.
 ///
 /// Given
@@ -4801,7 +4801,7 @@
   return (Node.getTemplateSpecializationKind() == TSK_ExplicitSpecialization);
 }
 
-/// \brief Matches \c TypeLocs for which the given inner
+/// Matches \c TypeLocs for which the given inner
 /// QualType-matcher matches.
 AST_MATCHER_FUNCTION_P_OVERLOAD(internal::BindableMatcher<TypeLoc>, loc,
                                 internal::Matcher<QualType>, InnerMatcher, 0) {
@@ -4809,7 +4809,7 @@
       new internal::TypeLocTypeMatcher(InnerMatcher));
 }
 
-/// \brief Matches type \c bool.
+/// Matches type \c bool.
 ///
 /// Given
 /// \code
@@ -4821,7 +4821,7 @@
   return Node.isBooleanType();
 }
 
-/// \brief Matches type \c void.
+/// Matches type \c void.
 ///
 /// Given
 /// \code
@@ -4836,7 +4836,7 @@
 template <typename NodeType>
 using AstTypeMatcher = internal::VariadicDynCastAllOfMatcher<Type, NodeType>;
 
-/// \brief Matches builtin Types.
+/// Matches builtin Types.
 ///
 /// Given
 /// \code
@@ -4850,7 +4850,7 @@
 ///   matches "int b", "float c" and "bool d"
 extern const AstTypeMatcher<BuiltinType> builtinType;
 
-/// \brief Matches all kinds of arrays.
+/// Matches all kinds of arrays.
 ///
 /// Given
 /// \code
@@ -4862,7 +4862,7 @@
 ///   matches "int a[]", "int b[4]" and "int c[a[0]]";
 extern const AstTypeMatcher<ArrayType> arrayType;
 
-/// \brief Matches C99 complex types.
+/// Matches C99 complex types.
 ///
 /// Given
 /// \code
@@ -4872,7 +4872,7 @@
 ///   matches "_Complex float f"
 extern const AstTypeMatcher<ComplexType> complexType;
 
-/// \brief Matches any real floating-point type (float, double, long double).
+/// Matches any real floating-point type (float, double, long double).
 ///
 /// Given
 /// \code
@@ -4885,7 +4885,7 @@
   return Node.isRealFloatingType();
 }
 
-/// \brief Matches arrays and C99 complex types that have a specific element
+/// Matches arrays and C99 complex types that have a specific element
 /// type.
 ///
 /// Given
@@ -4902,7 +4902,7 @@
                                   AST_POLYMORPHIC_SUPPORTED_TYPES(ArrayType,
                                                                   ComplexType));
 
-/// \brief Matches C arrays with a specified constant size.
+/// Matches C arrays with a specified constant size.
 ///
 /// Given
 /// \code
@@ -4916,7 +4916,7 @@
 ///   matches "int a[2]"
 extern const AstTypeMatcher<ConstantArrayType> constantArrayType;
 
-/// \brief Matches nodes that have the specified size.
+/// Matches nodes that have the specified size.
 ///
 /// Given
 /// \code
@@ -4938,7 +4938,7 @@
   return internal::HasSizeMatcher<NodeType>::hasSize(Node, N);
 }
 
-/// \brief Matches C++ arrays whose size is a value-dependent expression.
+/// Matches C++ arrays whose size is a value-dependent expression.
 ///
 /// Given
 /// \code
@@ -4951,7 +4951,7 @@
 ///   matches "T data[Size]"
 extern const AstTypeMatcher<DependentSizedArrayType> dependentSizedArrayType;
 
-/// \brief Matches C arrays with unspecified size.
+/// Matches C arrays with unspecified size.
 ///
 /// Given
 /// \code
@@ -4963,7 +4963,7 @@
 ///   matches "int a[]" and "int c[]"
 extern const AstTypeMatcher<IncompleteArrayType> incompleteArrayType;
 
-/// \brief Matches C arrays with a specified size that is not an
+/// Matches C arrays with a specified size that is not an
 /// integer-constant-expression.
 ///
 /// Given
@@ -4978,7 +4978,7 @@
 ///   matches "int c[a[0]]"
 extern const AstTypeMatcher<VariableArrayType> variableArrayType;
 
-/// \brief Matches \c VariableArrayType nodes that have a specific size
+/// Matches \c VariableArrayType nodes that have a specific size
 /// expression.
 ///
 /// Given
@@ -4995,7 +4995,7 @@
   return InnerMatcher.matches(*Node.getSizeExpr(), Finder, Builder);
 }
 
-/// \brief Matches atomic types.
+/// Matches atomic types.
 ///
 /// Given
 /// \code
@@ -5005,7 +5005,7 @@
 ///   matches "_Atomic(int) i"
 extern const AstTypeMatcher<AtomicType> atomicType;
 
-/// \brief Matches atomic types with a specific value type.
+/// Matches atomic types with a specific value type.
 ///
 /// Given
 /// \code
@@ -5019,7 +5019,7 @@
 AST_TYPELOC_TRAVERSE_MATCHER_DECL(hasValueType, getValue,
                                   AST_POLYMORPHIC_SUPPORTED_TYPES(AtomicType));
 
-/// \brief Matches types nodes representing C++11 auto types.
+/// Matches types nodes representing C++11 auto types.
 ///
 /// Given:
 /// \code
@@ -5031,7 +5031,7 @@
 ///   matches "auto n" and "auto i"
 extern const AstTypeMatcher<AutoType> autoType;
 
-/// \brief Matches \c AutoType nodes where the deduced type is a specific type.
+/// Matches \c AutoType nodes where the deduced type is a specific type.
 ///
 /// Note: There is no \c TypeLoc for the deduced type and thus no
 /// \c getDeducedLoc() matcher.
@@ -5048,7 +5048,7 @@
 AST_TYPE_TRAVERSE_MATCHER(hasDeducedType, getDeducedType,
                           AST_POLYMORPHIC_SUPPORTED_TYPES(AutoType));
 
-/// \brief Matches \c FunctionType nodes.
+/// Matches \c FunctionType nodes.
 ///
 /// Given
 /// \code
@@ -5059,7 +5059,7 @@
 ///   matches "int (*f)(int)" and the type of "g".
 extern const AstTypeMatcher<FunctionType> functionType;
 
-/// \brief Matches \c FunctionProtoType nodes.
+/// Matches \c FunctionProtoType nodes.
 ///
 /// Given
 /// \code
@@ -5071,7 +5071,7 @@
 ///   In C mode, "g" is not matched because it does not contain a prototype.
 extern const AstTypeMatcher<FunctionProtoType> functionProtoType;
 
-/// \brief Matches \c ParenType nodes.
+/// Matches \c ParenType nodes.
 ///
 /// Given
 /// \code
@@ -5083,7 +5083,7 @@
 /// \c array_of_ptrs.
 extern const AstTypeMatcher<ParenType> parenType;
 
-/// \brief Matches \c ParenType nodes where the inner type is a specific type.
+/// Matches \c ParenType nodes where the inner type is a specific type.
 ///
 /// Given
 /// \code
@@ -5098,13 +5098,13 @@
 AST_TYPE_TRAVERSE_MATCHER(innerType, getInnerType,
                           AST_POLYMORPHIC_SUPPORTED_TYPES(ParenType));
 
-/// \brief Matches block pointer types, i.e. types syntactically represented as
+/// Matches block pointer types, i.e. types syntactically represented as
 /// "void (^)(int)".
 ///
 /// The \c pointee is always required to be a \c FunctionType.
 extern const AstTypeMatcher<BlockPointerType> blockPointerType;
 
-/// \brief Matches member pointer types.
+/// Matches member pointer types.
 /// Given
 /// \code
 ///   struct A { int i; }
@@ -5114,7 +5114,7 @@
 ///   matches "A::* ptr"
 extern const AstTypeMatcher<MemberPointerType> memberPointerType;
 
-/// \brief Matches pointer types, but does not match Objective-C object pointer
+/// Matches pointer types, but does not match Objective-C object pointer
 /// types.
 ///
 /// Given
@@ -5131,7 +5131,7 @@
 ///   matches "int *a", but does not match "Foo *f".
 extern const AstTypeMatcher<PointerType> pointerType;
 
-/// \brief Matches an Objective-C object pointer type, which is different from
+/// Matches an Objective-C object pointer type, which is different from
 /// a pointer type, despite being syntactically similar.
 ///
 /// Given
@@ -5146,7 +5146,7 @@
 ///   matches "Foo *f", but does not match "int *a".
 extern const AstTypeMatcher<ObjCObjectPointerType> objcObjectPointerType;
 
-/// \brief Matches both lvalue and rvalue reference types.
+/// Matches both lvalue and rvalue reference types.
 ///
 /// Given
 /// \code
@@ -5162,7 +5162,7 @@
 /// \c referenceType() matches the types of \c b, \c c, \c d, \c e, and \c f.
 extern const AstTypeMatcher<ReferenceType> referenceType;
 
-/// \brief Matches lvalue reference types.
+/// Matches lvalue reference types.
 ///
 /// Given:
 /// \code
@@ -5179,7 +5179,7 @@
 /// matched since the type is deduced as int& by reference collapsing rules.
 extern const AstTypeMatcher<LValueReferenceType> lValueReferenceType;
 
-/// \brief Matches rvalue reference types.
+/// Matches rvalue reference types.
 ///
 /// Given:
 /// \code
@@ -5196,7 +5196,7 @@
 /// matched as it is deduced to int& by reference collapsing rules.
 extern const AstTypeMatcher<RValueReferenceType> rValueReferenceType;
 
-/// \brief Narrows PointerType (and similar) matchers to those where the
+/// Narrows PointerType (and similar) matchers to those where the
 /// \c pointee matches a given matcher.
 ///
 /// Given
@@ -5215,7 +5215,7 @@
     AST_POLYMORPHIC_SUPPORTED_TYPES(BlockPointerType, MemberPointerType,
                                     PointerType, ReferenceType));
 
-/// \brief Matches typedef types.
+/// Matches typedef types.
 ///
 /// Given
 /// \code
@@ -5225,7 +5225,7 @@
 ///   matches "typedef int X"
 extern const AstTypeMatcher<TypedefType> typedefType;
 
-/// \brief Matches enum types.
+/// Matches enum types.
 ///
 /// Given
 /// \code
@@ -5240,7 +5240,7 @@
 /// \c s.
 extern const AstTypeMatcher<EnumType> enumType;
 
-/// \brief Matches template specialization types.
+/// Matches template specialization types.
 ///
 /// Given
 /// \code
@@ -5256,7 +5256,7 @@
 extern const AstTypeMatcher<TemplateSpecializationType>
     templateSpecializationType;
 
-/// \brief Matches types nodes representing unary type transformations.
+/// Matches types nodes representing unary type transformations.
 ///
 /// Given:
 /// \code
@@ -5266,7 +5266,7 @@
 ///   matches "__underlying_type(T)"
 extern const AstTypeMatcher<UnaryTransformType> unaryTransformType;
 
-/// \brief Matches record types (e.g. structs, classes).
+/// Matches record types (e.g. structs, classes).
 ///
 /// Given
 /// \code
@@ -5281,7 +5281,7 @@
 /// and \c s.
 extern const AstTypeMatcher<RecordType> recordType;
 
-/// \brief Matches tag types (record and enum types).
+/// Matches tag types (record and enum types).
 ///
 /// Given
 /// \code
@@ -5296,7 +5296,7 @@
 /// and \c c.
 extern const AstTypeMatcher<TagType> tagType;
 
-/// \brief Matches types specified with an elaborated type keyword or with a
+/// Matches types specified with an elaborated type keyword or with a
 /// qualified name.
 ///
 /// Given
@@ -5316,7 +5316,7 @@
 /// \c c and \c d.
 extern const AstTypeMatcher<ElaboratedType> elaboratedType;
 
-/// \brief Matches ElaboratedTypes whose qualifier, a NestedNameSpecifier,
+/// Matches ElaboratedTypes whose qualifier, a NestedNameSpecifier,
 /// matches \c InnerMatcher if the qualifier exists.
 ///
 /// Given
@@ -5339,7 +5339,7 @@
   return false;
 }
 
-/// \brief Matches ElaboratedTypes whose named type matches \c InnerMatcher.
+/// Matches ElaboratedTypes whose named type matches \c InnerMatcher.
 ///
 /// Given
 /// \code
@@ -5359,7 +5359,7 @@
   return InnerMatcher.matches(Node.getNamedType(), Finder, Builder);
 }
 
-/// \brief Matches types that represent the result of substituting a type for a
+/// Matches types that represent the result of substituting a type for a
 /// template type parameter.
 ///
 /// Given
@@ -5374,7 +5374,7 @@
 extern const AstTypeMatcher<SubstTemplateTypeParmType>
     substTemplateTypeParmType;
 
-/// \brief Matches template type parameter substitutions that have a replacement
+/// Matches template type parameter substitutions that have a replacement
 /// type that matches the provided matcher.
 ///
 /// Given
@@ -5390,7 +5390,7 @@
     hasReplacementType, getReplacementType,
     AST_POLYMORPHIC_SUPPORTED_TYPES(SubstTemplateTypeParmType));
 
-/// \brief Matches template type parameter types.
+/// Matches template type parameter types.
 ///
 /// Example matches T, but not int.
 ///     (matcher = templateTypeParmType())
@@ -5399,7 +5399,7 @@
 /// \endcode
 extern const AstTypeMatcher<TemplateTypeParmType> templateTypeParmType;
 
-/// \brief Matches injected class name types.
+/// Matches injected class name types.
 ///
 /// Example matches S s, but not S<T> s.
 ///     (matcher = parmVarDecl(hasType(injectedClassNameType())))
@@ -5411,7 +5411,7 @@
 /// \endcode
 extern const AstTypeMatcher<InjectedClassNameType> injectedClassNameType;
 
-/// \brief Matches decayed type
+/// Matches decayed type
 /// Example matches i[] in declaration of f.
 ///     (matcher = valueDecl(hasType(decayedType(hasDecayedType(pointerType())))))
 /// Example matches i[1].
@@ -5423,13 +5423,13 @@
 /// \endcode
 extern const AstTypeMatcher<DecayedType> decayedType;
 
-/// \brief Matches the decayed type, whos decayed type matches \c InnerMatcher
+/// Matches the decayed type, whos decayed type matches \c InnerMatcher
 AST_MATCHER_P(DecayedType, hasDecayedType, internal::Matcher<QualType>,
               InnerType) {
   return InnerType.matches(Node.getDecayedType(), Finder, Builder);
 }
 
-/// \brief Matches declarations whose declaration context, interpreted as a
+/// Matches declarations whose declaration context, interpreted as a
 /// Decl, matches \c InnerMatcher.
 ///
 /// Given
@@ -5449,7 +5449,7 @@
   return InnerMatcher.matches(*Decl::castFromDeclContext(DC), Finder, Builder);
 }
 
-/// \brief Matches nested name specifiers.
+/// Matches nested name specifiers.
 ///
 /// Given
 /// \code
@@ -5465,11 +5465,11 @@
 extern const internal::VariadicAllOfMatcher<NestedNameSpecifier>
     nestedNameSpecifier;
 
-/// \brief Same as \c nestedNameSpecifier but matches \c NestedNameSpecifierLoc.
+/// Same as \c nestedNameSpecifier but matches \c NestedNameSpecifierLoc.
 extern const internal::VariadicAllOfMatcher<NestedNameSpecifierLoc>
     nestedNameSpecifierLoc;
 
-/// \brief Matches \c NestedNameSpecifierLocs for which the given inner
+/// Matches \c NestedNameSpecifierLocs for which the given inner
 /// NestedNameSpecifier-matcher matches.
 AST_MATCHER_FUNCTION_P_OVERLOAD(
     internal::BindableMatcher<NestedNameSpecifierLoc>, loc,
@@ -5479,7 +5479,7 @@
           InnerMatcher));
 }
 
-/// \brief Matches nested name specifiers that specify a type matching the
+/// Matches nested name specifiers that specify a type matching the
 /// given \c QualType matcher without qualifiers.
 ///
 /// Given
@@ -5498,7 +5498,7 @@
   return InnerMatcher.matches(QualType(Node.getAsType(), 0), Finder, Builder);
 }
 
-/// \brief Matches nested name specifier locs that specify a type matching the
+/// Matches nested name specifier locs that specify a type matching the
 /// given \c TypeLoc.
 ///
 /// Given
@@ -5514,7 +5514,7 @@
   return Node && InnerMatcher.matches(Node.getTypeLoc(), Finder, Builder);
 }
 
-/// \brief Matches on the prefix of a \c NestedNameSpecifier.
+/// Matches on the prefix of a \c NestedNameSpecifier.
 ///
 /// Given
 /// \code
@@ -5532,7 +5532,7 @@
   return InnerMatcher.matches(*NextNode, Finder, Builder);
 }
 
-/// \brief Matches on the prefix of a \c NestedNameSpecifierLoc.
+/// Matches on the prefix of a \c NestedNameSpecifierLoc.
 ///
 /// Given
 /// \code
@@ -5550,7 +5550,7 @@
   return InnerMatcher.matches(NextNode, Finder, Builder);
 }
 
-/// \brief Matches nested name specifiers that specify a namespace matching the
+/// Matches nested name specifiers that specify a namespace matching the
 /// given namespace matcher.
 ///
 /// Given
@@ -5567,23 +5567,23 @@
   return InnerMatcher.matches(*Node.getAsNamespace(), Finder, Builder);
 }
 
-/// \brief Overloads for the \c equalsNode matcher.
+/// Overloads for the \c equalsNode matcher.
 /// FIXME: Implement for other node types.
 /// @{
 
-/// \brief Matches if a node equals another node.
+/// Matches if a node equals another node.
 ///
 /// \c Decl has pointer identity in the AST.
 AST_MATCHER_P_OVERLOAD(Decl, equalsNode, const Decl*, Other, 0) {
   return &Node == Other;
 }
-/// \brief Matches if a node equals another node.
+/// Matches if a node equals another node.
 ///
 /// \c Stmt has pointer identity in the AST.
 AST_MATCHER_P_OVERLOAD(Stmt, equalsNode, const Stmt*, Other, 1) {
   return &Node == Other;
 }
-/// \brief Matches if a node equals another node.
+/// Matches if a node equals another node.
 ///
 /// \c Type has pointer identity in the AST.
 AST_MATCHER_P_OVERLOAD(Type, equalsNode, const Type*, Other, 2) {
@@ -5592,7 +5592,7 @@
 
 /// @}
 
-/// \brief Matches each case or default statement belonging to the given switch
+/// Matches each case or default statement belonging to the given switch
 /// statement. This matcher may produce multiple matches.
 ///
 /// Given
@@ -5624,7 +5624,7 @@
   return Matched;
 }
 
-/// \brief Matches each constructor initializer in a constructor definition.
+/// Matches each constructor initializer in a constructor definition.
 ///
 /// Given
 /// \code
@@ -5649,7 +5649,7 @@
   return Matched;
 }
 
-/// \brief Matches constructor declarations that are copy constructors.
+/// Matches constructor declarations that are copy constructors.
 ///
 /// Given
 /// \code
@@ -5664,7 +5664,7 @@
   return Node.isCopyConstructor();
 }
 
-/// \brief Matches constructor declarations that are move constructors.
+/// Matches constructor declarations that are move constructors.
 ///
 /// Given
 /// \code
@@ -5679,7 +5679,7 @@
   return Node.isMoveConstructor();
 }
 
-/// \brief Matches constructor declarations that are default constructors.
+/// Matches constructor declarations that are default constructors.
 ///
 /// Given
 /// \code
@@ -5694,7 +5694,7 @@
   return Node.isDefaultConstructor();
 }
 
-/// \brief Matches constructors that delegate to another constructor.
+/// Matches constructors that delegate to another constructor.
 ///
 /// Given
 /// \code
@@ -5711,7 +5711,7 @@
   return Node.isDelegatingConstructor();
 }
 
-/// \brief Matches constructor and conversion declarations that are marked with
+/// Matches constructor and conversion declarations that are marked with
 /// the explicit keyword.
 ///
 /// Given
@@ -5731,7 +5731,7 @@
   return Node.isExplicit();
 }
 
-/// \brief Matches function and namespace declarations that are marked with
+/// Matches function and namespace declarations that are marked with
 /// the inline keyword.
 ///
 /// Given
@@ -5756,7 +5756,7 @@
   llvm_unreachable("Not a valid polymorphic type");
 }
 
-/// \brief Matches anonymous namespace declarations.
+/// Matches anonymous namespace declarations.
 ///
 /// Given
 /// \code
@@ -5769,7 +5769,7 @@
   return Node.isAnonymousNamespace();
 }
 
-/// \brief If the given case statement does not use the GNU case range
+/// If the given case statement does not use the GNU case range
 /// extension, matches the constant given in the statement.
 ///
 /// Given
@@ -5786,7 +5786,7 @@
   return InnerMatcher.matches(*Node.getLHS(), Finder, Builder);
 }
 
-/// \brief Matches declaration that has a given attribute.
+/// Matches declaration that has a given attribute.
 ///
 /// Given
 /// \code
@@ -5803,7 +5803,7 @@
   return false;
 }
 
-/// \brief Matches the return value expression of a return statement
+/// Matches the return value expression of a return statement
 ///
 /// Given
 /// \code
@@ -5820,7 +5820,7 @@
   return false;
 }
 
-/// \brief Matches CUDA kernel call expression.
+/// Matches CUDA kernel call expression.
 ///
 /// Example matches,
 /// \code
@@ -5829,7 +5829,7 @@
 extern const internal::VariadicDynCastAllOfMatcher<Stmt, CUDAKernelCallExpr>
     cudaKernelCallExpr;
 
-/// \brief Matches expressions that resolve to a null pointer constant, such as
+/// Matches expressions that resolve to a null pointer constant, such as
 /// GNU's __null, C++11's nullptr, or C's NULL macro.
 ///
 /// Given:
@@ -5850,7 +5850,7 @@
       integerLiteral(equals(0), hasParent(expr(hasType(pointerType())))));
 }
 
-/// \brief Matches declaration of the function the statement belongs to
+/// Matches declaration of the function the statement belongs to
 ///
 /// Given:
 /// \code
@@ -5888,7 +5888,7 @@
   return false;
 }
 
-/// \brief Matches a declaration that has external formal linkage.
+/// Matches a declaration that has external formal linkage.
 ///
 /// Example matches only z (matcher = varDecl(hasExternalFormalLinkage()))
 /// \code
@@ -5912,7 +5912,7 @@
   return Node.hasExternalFormalLinkage();
 }
 
-/// \brief Matches a declaration that has default arguments.
+/// Matches a declaration that has default arguments.
 ///
 /// Example matches y (matcher = parmVarDecl(hasDefaultArgument()))
 /// \code
@@ -5923,7 +5923,7 @@
   return Node.hasDefaultArg(); 
 }
 
-/// \brief Matches array new expressions.
+/// Matches array new expressions.
 ///
 /// Given:
 /// \code
@@ -5935,7 +5935,7 @@
   return Node.isArray();
 }
 
-/// \brief Matches array new expressions with a given array size.
+/// Matches array new expressions with a given array size.
 ///
 /// Given:
 /// \code
@@ -5948,7 +5948,7 @@
     InnerMatcher.matches(*Node.getArraySize(), Finder, Builder);
 }
 
-/// \brief Matches a class declaration that is defined.
+/// Matches a class declaration that is defined.
 ///
 /// Example matches x (matcher = cxxRecordDecl(hasDefinition()))
 /// \code
@@ -5959,7 +5959,7 @@
   return Node.hasDefinition();
 }
 
-/// \brief Matches C++11 scoped enum declaration.
+/// Matches C++11 scoped enum declaration.
 ///
 /// Example matches Y (matcher = enumDecl(isScoped()))
 /// \code
@@ -5970,7 +5970,7 @@
   return Node.isScoped();
 }
 
-/// \brief Matches a function declared with a trailing return type.
+/// Matches a function declared with a trailing return type.
 ///
 /// Example matches Y (matcher = functionDecl(hasTrailingReturn()))
 /// \code
Index: cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h
===================================================================
--- cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h
+++ cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h
@@ -80,7 +80,7 @@
 
 namespace internal {
 
-/// \brief Variadic function object.
+/// Variadic function object.
 ///
 /// Most of the functions below that use VariadicFunction could be implemented
 /// using plain C++11 variadic functions, but the function object allows us to
@@ -113,7 +113,7 @@
   }
 };
 
-/// \brief Unifies obtaining the underlying type of a regular node through
+/// Unifies obtaining the underlying type of a regular node through
 /// `getType` and a TypedefNameDecl node through `getUnderlyingType`.
 inline QualType getUnderlyingType(const Expr &Node) { return Node.getType(); }
 
@@ -125,7 +125,7 @@
   return Node.getUnderlyingType();
 }
 
-/// \brief Unifies obtaining the FunctionProtoType pointer from both
+/// Unifies obtaining the FunctionProtoType pointer from both
 /// FunctionProtoType and FunctionDecl nodes..
 inline const FunctionProtoType *
 getFunctionProtoType(const FunctionProtoType &Node) {
@@ -136,17 +136,17 @@
   return Node.getType()->getAs<FunctionProtoType>();
 }
 
-/// \brief Internal version of BoundNodes. Holds all the bound nodes.
+/// Internal version of BoundNodes. Holds all the bound nodes.
 class BoundNodesMap {
 public:
-  /// \brief Adds \c Node to the map with key \c ID.
+  /// Adds \c Node to the map with key \c ID.
   ///
   /// The node's base type should be in NodeBaseType or it will be unaccessible.
   void addNode(StringRef ID, const ast_type_traits::DynTypedNode& DynNode) {
     NodeMap[ID] = DynNode;
   }
 
-  /// \brief Returns the AST node bound to \c ID.
+  /// Returns the AST node bound to \c ID.
   ///
   /// Returns NULL if there was no node bound to \c ID or if there is a node but
   /// it cannot be converted to the specified type.
@@ -167,12 +167,12 @@
     return It->second;
   }
 
-  /// \brief Imposes an order on BoundNodesMaps.
+  /// Imposes an order on BoundNodesMaps.
   bool operator<(const BoundNodesMap &Other) const {
     return NodeMap < Other.NodeMap;
   }
 
-  /// \brief A map from IDs to the bound nodes.
+  /// A map from IDs to the bound nodes.
   ///
   /// Note that we're using std::map here, as for memoization:
   /// - we need a comparison operator
@@ -183,7 +183,7 @@
     return NodeMap;
   }
 
-  /// \brief Returns \c true if this \c BoundNodesMap can be compared, i.e. all
+  /// Returns \c true if this \c BoundNodesMap can be compared, i.e. all
   /// stored nodes have memoization data.
   bool isComparable() const {
     for (const auto &IDAndNode : NodeMap) {
@@ -197,25 +197,25 @@
   IDToNodeMap NodeMap;
 };
 
-/// \brief Creates BoundNodesTree objects.
+/// Creates BoundNodesTree objects.
 ///
 /// The tree builder is used during the matching process to insert the bound
 /// nodes from the Id matcher.
 class BoundNodesTreeBuilder {
 public:
-  /// \brief A visitor interface to visit all BoundNodes results for a
+  /// A visitor interface to visit all BoundNodes results for a
   /// BoundNodesTree.
   class Visitor {
   public:
     virtual ~Visitor() = default;
 
-    /// \brief Called multiple times during a single call to VisitMatches(...).
+    /// Called multiple times during a single call to VisitMatches(...).
     ///
     /// 'BoundNodesView' contains the bound nodes for a single match.
     virtual void visitMatch(const BoundNodes& BoundNodesView) = 0;
   };
 
-  /// \brief Add a binding from an id to a node.
+  /// Add a binding from an id to a node.
   void setBinding(StringRef Id, const ast_type_traits::DynTypedNode &DynNode) {
     if (Bindings.empty())
       Bindings.emplace_back();
@@ -223,10 +223,10 @@
       Binding.addNode(Id, DynNode);
   }
 
-  /// \brief Adds a branch in the tree.
+  /// Adds a branch in the tree.
   void addMatch(const BoundNodesTreeBuilder &Bindings);
 
-  /// \brief Visits all matches that this BoundNodesTree represents.
+  /// Visits all matches that this BoundNodesTree represents.
   ///
   /// The ownership of 'ResultVisitor' remains at the caller.
   void visitMatches(Visitor* ResultVisitor);
@@ -238,12 +238,12 @@
     return !Bindings.empty();
   }
 
-  /// \brief Imposes an order on BoundNodesTreeBuilders.
+  /// Imposes an order on BoundNodesTreeBuilders.
   bool operator<(const BoundNodesTreeBuilder &Other) const {
     return Bindings < Other.Bindings;
   }
 
-  /// \brief Returns \c true if this \c BoundNodesTreeBuilder can be compared,
+  /// Returns \c true if this \c BoundNodesTreeBuilder can be compared,
   /// i.e. all stored node maps have memoization data.
   bool isComparable() const {
     for (const BoundNodesMap &NodesMap : Bindings) {
@@ -259,7 +259,7 @@
 
 class ASTMatchFinder;
 
-/// \brief Generic interface for all matchers.
+/// Generic interface for all matchers.
 ///
 /// Used by the implementation of Matcher<T> and DynTypedMatcher.
 /// In general, implement MatcherInterface<T> or SingleNodeMatcherInterface<T>
@@ -269,7 +269,7 @@
 public:
   virtual ~DynMatcherInterface() = default;
 
-  /// \brief Returns true if \p DynNode can be matched.
+  /// Returns true if \p DynNode can be matched.
   ///
   /// May bind \p DynNode to an ID via \p Builder, or recurse into
   /// the AST via \p Finder.
@@ -278,7 +278,7 @@
                           BoundNodesTreeBuilder *Builder) const = 0;
 };
 
-/// \brief Generic interface for matchers on an AST node of type T.
+/// Generic interface for matchers on an AST node of type T.
 ///
 /// Implement this if your matcher may need to inspect the children or
 /// descendants of the node or bind matched nodes to names. If you are
@@ -288,7 +288,7 @@
 template <typename T>
 class MatcherInterface : public DynMatcherInterface {
 public:
-  /// \brief Returns true if 'Node' can be matched.
+  /// Returns true if 'Node' can be matched.
   ///
   /// May bind 'Node' to an ID via 'Builder', or recurse into
   /// the AST via 'Finder'.
@@ -303,12 +303,12 @@
   }
 };
 
-/// \brief Interface for matchers that only evaluate properties on a single
+/// Interface for matchers that only evaluate properties on a single
 /// node.
 template <typename T>
 class SingleNodeMatcherInterface : public MatcherInterface<T> {
 public:
-  /// \brief Returns true if the matcher matches the provided node.
+  /// Returns true if the matcher matches the provided node.
   ///
   /// A subclass must implement this instead of Matches().
   virtual bool matchesNode(const T &Node) const = 0;
@@ -324,7 +324,7 @@
 
 template <typename> class Matcher;
 
-/// \brief Matcher that works on a \c DynTypedNode.
+/// Matcher that works on a \c DynTypedNode.
 ///
 /// It is constructed from a \c Matcher<T> object and redirects most calls to
 /// underlying matcher.
@@ -333,26 +333,26 @@
 /// return false if it is not convertible.
 class DynTypedMatcher {
 public:
-  /// \brief Takes ownership of the provided implementation pointer.
+  /// Takes ownership of the provided implementation pointer.
   template <typename T>
   DynTypedMatcher(MatcherInterface<T> *Implementation)
       : SupportedKind(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()),
         RestrictKind(SupportedKind), Implementation(Implementation) {}
 
-  /// \brief Construct from a variadic function.
+  /// Construct from a variadic function.
   enum VariadicOperator {
-    /// \brief Matches nodes for which all provided matchers match.
+    /// Matches nodes for which all provided matchers match.
     VO_AllOf,
 
-    /// \brief Matches nodes for which at least one of the provided matchers
+    /// Matches nodes for which at least one of the provided matchers
     /// matches.
     VO_AnyOf,
 
-    /// \brief Matches nodes for which at least one of the provided matchers
+    /// Matches nodes for which at least one of the provided matchers
     /// matches, but doesn't stop at the first match.
     VO_EachOf,
 
-    /// \brief Matches nodes that do not match the provided matcher.
+    /// Matches nodes that do not match the provided matcher.
     ///
     /// Uses the variadic matcher interface, but fails if
     /// InnerMatchers.size() != 1.
@@ -364,27 +364,27 @@
                     ast_type_traits::ASTNodeKind SupportedKind,
                     std::vector<DynTypedMatcher> InnerMatchers);
 
-  /// \brief Get a "true" matcher for \p NodeKind.
+  /// Get a "true" matcher for \p NodeKind.
   ///
   /// It only checks that the node is of the right kind.
   static DynTypedMatcher trueMatcher(ast_type_traits::ASTNodeKind NodeKind);
 
   void setAllowBind(bool AB) { AllowBind = AB; }
 
-  /// \brief Check whether this matcher could ever match a node of kind \p Kind.
+  /// Check whether this matcher could ever match a node of kind \p Kind.
   /// \return \c false if this matcher will never match such a node. Otherwise,
   /// return \c true.
   bool canMatchNodesOfKind(ast_type_traits::ASTNodeKind Kind) const;
 
-  /// \brief Return a matcher that points to the same implementation, but
+  /// Return a matcher that points to the same implementation, but
   ///   restricts the node types for \p Kind.
   DynTypedMatcher dynCastTo(const ast_type_traits::ASTNodeKind Kind) const;
 
-  /// \brief Returns true if the matcher matches the given \c DynNode.
+  /// Returns true if the matcher matches the given \c DynNode.
   bool matches(const ast_type_traits::DynTypedNode &DynNode,
                ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder) const;
 
-  /// \brief Same as matches(), but skips the kind check.
+  /// Same as matches(), but skips the kind check.
   ///
   /// It is faster, but the caller must ensure the node is valid for the
   /// kind of this matcher.
@@ -392,12 +392,12 @@
                           ASTMatchFinder *Finder,
                           BoundNodesTreeBuilder *Builder) const;
 
-  /// \brief Bind the specified \p ID to the matcher.
+  /// Bind the specified \p ID to the matcher.
   /// \return A new matcher with the \p ID bound to it if this matcher supports
   ///   binding. Otherwise, returns an empty \c Optional<>.
   llvm::Optional<DynTypedMatcher> tryBind(StringRef ID) const;
 
-  /// \brief Returns a unique \p ID for the matcher.
+  /// Returns a unique \p ID for the matcher.
   ///
   /// Casting a Matcher<T> to Matcher<U> creates a matcher that has the
   /// same \c Implementation pointer, but different \c RestrictKind. We need to
@@ -412,7 +412,7 @@
                           reinterpret_cast<uint64_t>(Implementation.get()));
   }
 
-  /// \brief Returns the type this matcher works on.
+  /// Returns the type this matcher works on.
   ///
   /// \c matches() will always return false unless the node passed is of this
   /// or a derived type.
@@ -420,7 +420,7 @@
     return SupportedKind;
   }
 
-  /// \brief Returns \c true if the passed \c DynTypedMatcher can be converted
+  /// Returns \c true if the passed \c DynTypedMatcher can be converted
   ///   to a \c Matcher<T>.
   ///
   /// This method verifies that the underlying matcher in \c Other can process
@@ -430,7 +430,7 @@
   }
   bool canConvertTo(ast_type_traits::ASTNodeKind To) const;
 
-  /// \brief Construct a \c Matcher<T> interface around the dynamic matcher.
+  /// Construct a \c Matcher<T> interface around the dynamic matcher.
   ///
   /// This method asserts that \c canConvertTo() is \c true. Callers
   /// should call \c canConvertTo() first to make sure that \c this is
@@ -440,7 +440,7 @@
     return unconditionalConvertTo<T>();
   }
 
-  /// \brief Same as \c convertTo(), but does not check that the underlying
+  /// Same as \c convertTo(), but does not check that the underlying
   ///   matcher can handle a value of T.
   ///
   /// If it is not compatible, then this matcher will never match anything.
@@ -456,7 +456,7 @@
   bool AllowBind = false;
   ast_type_traits::ASTNodeKind SupportedKind;
 
-  /// \brief A potentially stricter node kind.
+  /// A potentially stricter node kind.
   ///
   /// It allows to perform implicit and dynamic cast of matchers without
   /// needing to change \c Implementation.
@@ -464,7 +464,7 @@
   IntrusiveRefCntPtr<DynMatcherInterface> Implementation;
 };
 
-/// \brief Wrapper base class for a wrapping matcher.
+/// Wrapper base class for a wrapping matcher.
 ///
 /// This is just a container for a DynTypedMatcher that can be used as a base
 /// class for another matcher.
@@ -477,7 +477,7 @@
   const DynTypedMatcher InnerMatcher;
 };
 
-/// \brief Wrapper of a MatcherInterface<T> *that allows copying.
+/// Wrapper of a MatcherInterface<T> *that allows copying.
 ///
 /// A Matcher<Base> can be used anywhere a Matcher<Derived> is
 /// required. This establishes an is-a relationship which is reverse
@@ -488,11 +488,11 @@
 template <typename T>
 class Matcher {
 public:
-  /// \brief Takes ownership of the provided implementation pointer.
+  /// Takes ownership of the provided implementation pointer.
   explicit Matcher(MatcherInterface<T> *Implementation)
       : Implementation(Implementation) {}
 
-  /// \brief Implicitly converts \c Other to a Matcher<T>.
+  /// Implicitly converts \c Other to a Matcher<T>.
   ///
   /// Requires \c T to be derived from \c From.
   template <typename From>
@@ -504,7 +504,7 @@
         ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
   }
 
-  /// \brief Implicitly converts \c Matcher<Type> to \c Matcher<QualType>.
+  /// Implicitly converts \c Matcher<Type> to \c Matcher<QualType>.
   ///
   /// The resulting matcher is not strict, i.e. ignores qualifiers.
   template <typename TypeT>
@@ -514,7 +514,7 @@
             std::is_same<TypeT, Type>::value>::type* = nullptr)
       : Implementation(new TypeToQualType<TypeT>(Other)) {}
 
-  /// \brief Convert \c this into a \c Matcher<T> by applying dyn_cast<> to the
+  /// Convert \c this into a \c Matcher<T> by applying dyn_cast<> to the
   /// argument.
   /// \c To must be a base class of \c T.
   template <typename To>
@@ -523,7 +523,7 @@
     return Matcher<To>(Implementation);
   }
 
-  /// \brief Forwards the call to the underlying MatcherInterface<T> pointer.
+  /// Forwards the call to the underlying MatcherInterface<T> pointer.
   bool matches(const T &Node,
                ASTMatchFinder *Finder,
                BoundNodesTreeBuilder *Builder) const {
@@ -531,18 +531,18 @@
                                   Finder, Builder);
   }
 
-  /// \brief Returns an ID that uniquely identifies the matcher.
+  /// Returns an ID that uniquely identifies the matcher.
   DynTypedMatcher::MatcherIDType getID() const {
     return Implementation.getID();
   }
 
-  /// \brief Extract the dynamic matcher.
+  /// Extract the dynamic matcher.
   ///
   /// The returned matcher keeps the same restrictions as \c this and remembers
   /// that it is meant to support nodes of type \c T.
   operator DynTypedMatcher() const { return Implementation; }
 
-  /// \brief Allows the conversion of a \c Matcher<Type> to a \c
+  /// Allows the conversion of a \c Matcher<Type> to a \c
   /// Matcher<QualType>.
   ///
   /// Depending on the constructor argument, the matcher is either strict, i.e.
@@ -583,14 +583,14 @@
   DynTypedMatcher Implementation;
 };  // class Matcher
 
-/// \brief A convenient helper for creating a Matcher<T> without specifying
+/// A convenient helper for creating a Matcher<T> without specifying
 /// the template type argument.
 template <typename T>
 inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
   return Matcher<T>(Implementation);
 }
 
-/// \brief Specialization of the conversion functions for QualType.
+/// Specialization of the conversion functions for QualType.
 ///
 /// This specialization provides the Matcher<Type>->Matcher<QualType>
 /// conversion that the static API does.
@@ -606,7 +606,7 @@
   return unconditionalConvertTo<QualType>();
 }
 
-/// \brief Finds the first node in a range that matches the given matcher.
+/// Finds the first node in a range that matches the given matcher.
 template <typename MatcherT, typename IteratorT>
 bool matchesFirstInRange(const MatcherT &Matcher, IteratorT Start,
                          IteratorT End, ASTMatchFinder *Finder,
@@ -621,7 +621,7 @@
   return false;
 }
 
-/// \brief Finds the first node in a pointer range that matches the given
+/// Finds the first node in a pointer range that matches the given
 /// matcher.
 template <typename MatcherT, typename IteratorT>
 bool matchesFirstInPointerRange(const MatcherT &Matcher, IteratorT Start,
@@ -653,7 +653,7 @@
   static const bool value = sizeof(test<Ty>(nullptr)) == sizeof(yes);
 };
 
-/// \brief Matches overloaded operators with a specific name.
+/// Matches overloaded operators with a specific name.
 ///
 /// The type argument ArgT is not used by this matcher but is used by
 /// PolymorphicMatcherWithParam1 and should be StringRef.
@@ -675,14 +675,14 @@
 
 private:
 
-  /// \brief CXXOperatorCallExpr exist only for calls to overloaded operators
+  /// CXXOperatorCallExpr exist only for calls to overloaded operators
   /// so this function returns true if the call is to an operator of the given
   /// name.
   bool matchesSpecialized(const CXXOperatorCallExpr &Node) const {
     return getOperatorSpelling(Node.getOperator()) == Name;
   }
 
-  /// \brief Returns true only if CXXMethodDecl represents an overloaded
+  /// Returns true only if CXXMethodDecl represents an overloaded
   /// operator and has the given operator name.
   bool matchesSpecialized(const FunctionDecl &Node) const {
     return Node.isOverloadedOperator() &&
@@ -692,7 +692,7 @@
   std::string Name;
 };
 
-/// \brief Matches named declarations with a specific name.
+/// Matches named declarations with a specific name.
 ///
 /// See \c hasName() and \c hasAnyName() in ASTMatchers.h for details.
 class HasNameMatcher : public SingleNodeMatcherInterface<NamedDecl> {
@@ -702,13 +702,13 @@
   bool matchesNode(const NamedDecl &Node) const override;
 
  private:
-  /// \brief Unqualified match routine.
+  /// Unqualified match routine.
   ///
   /// It is much faster than the full match, but it only works for unqualified
   /// matches.
   bool matchesNodeUnqualified(const NamedDecl &Node) const;
 
-  /// \brief Full match routine
+  /// Full match routine
   ///
   /// Fast implementation for the simple case of a named declaration at
   /// namespace or RecordDecl scope.
@@ -716,7 +716,7 @@
   /// matchesNodeFullSlow.
   bool matchesNodeFullFast(const NamedDecl &Node) const;
 
-  /// \brief Full match routine
+  /// Full match routine
   ///
   /// It generates the fully qualified name of the declaration (which is
   /// expensive) before trying to match.
@@ -727,16 +727,16 @@
   const std::vector<std::string> Names;
 };
 
-/// \brief Trampoline function to use VariadicFunction<> to construct a
+/// Trampoline function to use VariadicFunction<> to construct a
 ///        HasNameMatcher.
 Matcher<NamedDecl> hasAnyNameFunc(ArrayRef<const StringRef *> NameRefs);
 
-/// \brief Trampoline function to use VariadicFunction<> to construct a
+/// Trampoline function to use VariadicFunction<> to construct a
 ///        hasAnySelector matcher.
 Matcher<ObjCMessageExpr> hasAnySelectorFunc(
     ArrayRef<const StringRef *> NameRefs);
 
-/// \brief Matches declarations for QualType and CallExpr.
+/// Matches declarations for QualType and CallExpr.
 ///
 /// Type argument DeclMatcherT is required by PolymorphicMatcherWithParam1 but
 /// not actually used.
@@ -755,7 +755,7 @@
   }
 
 private:
-  /// \brief Forwards to matching on the underlying type of the QualType.
+  /// Forwards to matching on the underlying type of the QualType.
   bool matchesSpecialized(const QualType &Node, ASTMatchFinder *Finder,
                           BoundNodesTreeBuilder *Builder) const {
     if (Node.isNull())
@@ -764,7 +764,7 @@
     return matchesSpecialized(*Node, Finder, Builder);
   }
 
-  /// \brief Finds the best declaration for a type and returns whether the inner
+  /// Finds the best declaration for a type and returns whether the inner
   /// matcher matches on it.
   bool matchesSpecialized(const Type &Node, ASTMatchFinder *Finder,
                           BoundNodesTreeBuilder *Builder) const {
@@ -838,21 +838,21 @@
     return false;
   }
 
-  /// \brief Extracts the Decl the DeclRefExpr references and returns whether
+  /// Extracts the Decl the DeclRefExpr references and returns whether
   /// the inner matcher matches on it.
   bool matchesSpecialized(const DeclRefExpr &Node, ASTMatchFinder *Finder,
                           BoundNodesTreeBuilder *Builder) const {
     return matchesDecl(Node.getDecl(), Finder, Builder);
   }
 
-  /// \brief Extracts the Decl of the callee of a CallExpr and returns whether
+  /// Extracts the Decl of the callee of a CallExpr and returns whether
   /// the inner matcher matches on it.
   bool matchesSpecialized(const CallExpr &Node, ASTMatchFinder *Finder,
                           BoundNodesTreeBuilder *Builder) const {
     return matchesDecl(Node.getCalleeDecl(), Finder, Builder);
   }
 
-  /// \brief Extracts the Decl of the constructor call and returns whether the
+  /// Extracts the Decl of the constructor call and returns whether the
   /// inner matcher matches on it.
   bool matchesSpecialized(const CXXConstructExpr &Node,
                           ASTMatchFinder *Finder,
@@ -860,7 +860,7 @@
     return matchesDecl(Node.getConstructor(), Finder, Builder);
   }
 
-  /// \brief Extracts the operator new of the new call and returns whether the
+  /// Extracts the operator new of the new call and returns whether the
   /// inner matcher matches on it.
   bool matchesSpecialized(const CXXNewExpr &Node,
                           ASTMatchFinder *Finder,
@@ -868,7 +868,7 @@
     return matchesDecl(Node.getOperatorNew(), Finder, Builder);
   }
 
-  /// \brief Extracts the \c ValueDecl a \c MemberExpr refers to and returns
+  /// Extracts the \c ValueDecl a \c MemberExpr refers to and returns
   /// whether the inner matcher matches on it.
   bool matchesSpecialized(const MemberExpr &Node,
                           ASTMatchFinder *Finder,
@@ -876,7 +876,7 @@
     return matchesDecl(Node.getMemberDecl(), Finder, Builder);
   }
 
-  /// \brief Extracts the \c LabelDecl a \c AddrLabelExpr refers to and returns
+  /// Extracts the \c LabelDecl a \c AddrLabelExpr refers to and returns
   /// whether the inner matcher matches on it.
   bool matchesSpecialized(const AddrLabelExpr &Node,
                           ASTMatchFinder *Finder,
@@ -884,14 +884,14 @@
     return matchesDecl(Node.getLabel(), Finder, Builder);
   }
 
-  /// \brief Extracts the declaration of a LabelStmt and returns whether the
+  /// Extracts the declaration of a LabelStmt and returns whether the
   /// inner matcher matches on it.
   bool matchesSpecialized(const LabelStmt &Node, ASTMatchFinder *Finder,
                           BoundNodesTreeBuilder *Builder) const {
     return matchesDecl(Node.getDecl(), Finder, Builder);
   }
 
-  /// \brief Returns whether the inner matcher \c Node. Returns false if \c Node
+  /// Returns whether the inner matcher \c Node. Returns false if \c Node
   /// is \c NULL.
   bool matchesDecl(const Decl *Node, ASTMatchFinder *Finder,
                    BoundNodesTreeBuilder *Builder) const {
@@ -901,7 +901,7 @@
   }
 };
 
-/// \brief IsBaseType<T>::value is true if T is a "base" type in the AST
+/// IsBaseType<T>::value is true if T is a "base" type in the AST
 /// node class hierarchies.
 template <typename T>
 struct IsBaseType {
@@ -918,7 +918,7 @@
 template <typename T>
 const bool IsBaseType<T>::value;
 
-/// \brief Interface that allows matchers to traverse the AST.
+/// Interface that allows matchers to traverse the AST.
 /// FIXME: Find a better name.
 ///
 /// This provides three entry methods for each base node type in the AST:
@@ -938,7 +938,7 @@
 /// all nodes, as all nodes have ancestors.
 class ASTMatchFinder {
 public:
-  /// \brief Defines how we descend a level in the AST when we pass
+  /// Defines how we descend a level in the AST when we pass
   /// through expressions.
   enum TraversalKind {
     /// Will traverse any child nodes.
@@ -948,7 +948,7 @@
     TK_IgnoreImplicitCastsAndParentheses
   };
 
-  /// \brief Defines how bindings are processed on recursive matches.
+  /// Defines how bindings are processed on recursive matches.
   enum BindKind {
     /// Stop at the first match and only bind the first match.
     BK_First,
@@ -957,7 +957,7 @@
     BK_All
   };
 
-  /// \brief Defines which ancestors are considered for a match.
+  /// Defines which ancestors are considered for a match.
   enum AncestorMatchMode {
     /// All ancestors.
     AMM_All,
@@ -968,7 +968,7 @@
 
   virtual ~ASTMatchFinder() = default;
 
-  /// \brief Returns true if the given class is directly or indirectly derived
+  /// Returns true if the given class is directly or indirectly derived
   /// from a base type matching \c base.
   ///
   /// A class is considered to be also derived from itself.
@@ -1044,27 +1044,27 @@
                                  AncestorMatchMode MatchMode) = 0;
 };
 
-/// \brief A type-list implementation.
+/// A type-list implementation.
 ///
 /// A "linked list" of types, accessible by using the ::head and ::tail
 /// typedefs.
 template <typename... Ts> struct TypeList {}; // Empty sentinel type list.
 
 template <typename T1, typename... Ts> struct TypeList<T1, Ts...> {
-  /// \brief The first type on the list.
+  /// The first type on the list.
   using head = T1;
 
-  /// \brief A sublist with the tail. ie everything but the head.
+  /// A sublist with the tail. ie everything but the head.
   ///
   /// This type is used to do recursion. TypeList<>/EmptyTypeList indicates the
   /// end of the list.
   using tail = TypeList<Ts...>;
 };
 
-/// \brief The empty type list.
+/// The empty type list.
 using EmptyTypeList = TypeList<>;
 
-/// \brief Helper meta-function to determine if some type \c T is present or
+/// Helper meta-function to determine if some type \c T is present or
 ///   a parent type in the list.
 template <typename AnyTypeList, typename T>
 struct TypeListContainsSuperOf {
@@ -1077,14 +1077,14 @@
   static const bool value = false;
 };
 
-/// \brief A "type list" that contains all types.
+/// A "type list" that contains all types.
 ///
 /// Useful for matchers like \c anything and \c unless.
 using AllNodeBaseTypes =
     TypeList<Decl, Stmt, NestedNameSpecifier, NestedNameSpecifierLoc, QualType,
              Type, TypeLoc, CXXCtorInitializer>;
 
-/// \brief Helper meta-function to extract the argument out of a function of
+/// Helper meta-function to extract the argument out of a function of
 ///   type void(Arg).
 ///
 /// See AST_POLYMORPHIC_SUPPORTED_TYPES for details.
@@ -1093,13 +1093,13 @@
   using type = T;
 };
 
-/// \brief Default type lists for ArgumentAdaptingMatcher matchers.
+/// Default type lists for ArgumentAdaptingMatcher matchers.
 using AdaptativeDefaultFromTypes = AllNodeBaseTypes;
 using AdaptativeDefaultToTypes =
     TypeList<Decl, Stmt, NestedNameSpecifier, NestedNameSpecifierLoc, TypeLoc,
              QualType>;
 
-/// \brief All types that are supported by HasDeclarationMatcher above.
+/// All types that are supported by HasDeclarationMatcher above.
 using HasDeclarationSupportedTypes =
     TypeList<CallExpr, CXXConstructExpr, CXXNewExpr, DeclRefExpr, EnumType,
              ElaboratedType, InjectedClassNameType, LabelStmt, AddrLabelExpr,
@@ -1107,7 +1107,7 @@
              TemplateSpecializationType, TemplateTypeParmType, TypedefType,
              UnresolvedUsingType>;
 
-/// \brief Converts a \c Matcher<T> to a matcher of desired type \c To by
+/// Converts a \c Matcher<T> to a matcher of desired type \c To by
 /// "adapting" a \c To into a \c T.
 ///
 /// The \c ArgumentAdapterT argument specifies how the adaptation is done.
@@ -1150,7 +1150,7 @@
   }
 };
 
-/// \brief A PolymorphicMatcherWithParamN<MatcherT, P1, ..., PN> object can be
+/// A PolymorphicMatcherWithParamN<MatcherT, P1, ..., PN> object can be
 /// created from N parameters p1, ..., pN (of type P1, ..., PN) and
 /// used as a Matcher<T> where a MatcherT<T, P1, ..., PN>(p1, ..., pN)
 /// can be constructed.
@@ -1219,7 +1219,7 @@
   const P2 Param2;
 };
 
-/// \brief Matches any instance of the given NodeType.
+/// Matches any instance of the given NodeType.
 ///
 /// This is useful when a matcher syntactically requires a child matcher,
 /// but the context doesn't care. See for example: anything().
@@ -1235,7 +1235,7 @@
   }
 };
 
-/// \brief A Matcher that allows binding the node it matches to an id.
+/// A Matcher that allows binding the node it matches to an id.
 ///
 /// BindableMatcher provides a \a bind() method that allows binding the
 /// matched node to an id if the match was successful.
@@ -1246,7 +1246,7 @@
   explicit BindableMatcher(MatcherInterface<T> *Implementation)
     : Matcher<T>(Implementation) {}
 
-  /// \brief Returns a matcher that will bind the matched node on a match.
+  /// Returns a matcher that will bind the matched node on a match.
   ///
   /// The returned matcher is equivalent to this matcher, but will
   /// bind the matched node on a match.
@@ -1256,7 +1256,7 @@
         ->template unconditionalConvertTo<T>();
   }
 
-  /// \brief Same as Matcher<T>'s conversion operator, but enables binding on
+  /// Same as Matcher<T>'s conversion operator, but enables binding on
   /// the returned matcher.
   operator DynTypedMatcher() const {
     DynTypedMatcher Result = static_cast<const Matcher<T>&>(*this);
@@ -1265,7 +1265,7 @@
   }
 };
 
-/// \brief Matches nodes of type T that have child nodes of type ChildT for
+/// Matches nodes of type T that have child nodes of type ChildT for
 /// which a specified child matcher matches.
 ///
 /// ChildT must be an AST base type.
@@ -1283,7 +1283,7 @@
   }
 };
 
-/// \brief Matches nodes of type T that have child nodes of type ChildT for
+/// Matches nodes of type T that have child nodes of type ChildT for
 /// which a specified child matcher matches. ChildT must be an AST base
 /// type.
 /// As opposed to the HasMatcher, the ForEachMatcher will produce a match
@@ -1306,10 +1306,10 @@
   }
 };
 
-/// \brief VariadicOperatorMatcher related types.
+/// VariadicOperatorMatcher related types.
 /// @{
 
-/// \brief Polymorphic matcher object that uses a \c
+/// Polymorphic matcher object that uses a \c
 /// DynTypedMatcher::VariadicOperator operator.
 ///
 /// Input matchers can have any type (including other polymorphic matcher
@@ -1338,7 +1338,7 @@
   std::tuple<Ps...> Params;
 };
 
-/// \brief Overloaded function object to generate VariadicOperatorMatcher
+/// Overloaded function object to generate VariadicOperatorMatcher
 ///   objects from arbitrary matchers.
 template <unsigned MinCount, unsigned MaxCount>
 struct VariadicOperatorMatcherFunc {
@@ -1359,7 +1359,7 @@
   return Matcher<T>(*this);
 }
 
-/// \brief Creates a Matcher<T> that matches if all inner matchers match.
+/// Creates a Matcher<T> that matches if all inner matchers match.
 template<typename T>
 BindableMatcher<T> makeAllOfComposite(
     ArrayRef<const Matcher<T> *> InnerMatchers) {
@@ -1385,7 +1385,7 @@
           .template unconditionalConvertTo<T>());
 }
 
-/// \brief Creates a Matcher<T> that matches if
+/// Creates a Matcher<T> that matches if
 /// T is dyn_cast'able into InnerT and all inner matchers match.
 ///
 /// Returns BindableMatcher, as matchers that use dyn_cast have
@@ -1398,7 +1398,7 @@
       makeAllOfComposite(InnerMatchers).template dynCastTo<T>());
 }
 
-/// \brief Matches nodes of type T that have at least one descendant node of
+/// Matches nodes of type T that have at least one descendant node of
 /// type DescendantT for which the given inner matcher matches.
 ///
 /// DescendantT must be an AST base type.
@@ -1418,7 +1418,7 @@
   }
 };
 
-/// \brief Matches nodes of type \c T that have a parent node of type \c ParentT
+/// Matches nodes of type \c T that have a parent node of type \c ParentT
 /// for which the given inner matcher matches.
 ///
 /// \c ParentT must be an AST base type.
@@ -1438,7 +1438,7 @@
   }
 };
 
-/// \brief Matches nodes of type \c T that have at least one ancestor node of
+/// Matches nodes of type \c T that have at least one ancestor node of
 /// type \c AncestorT for which the given inner matcher matches.
 ///
 /// \c AncestorT must be an AST base type.
@@ -1458,7 +1458,7 @@
   }
 };
 
-/// \brief Matches nodes of type T that have at least one descendant node of
+/// Matches nodes of type T that have at least one descendant node of
 /// type DescendantT for which the given inner matcher matches.
 ///
 /// DescendantT must be an AST base type.
@@ -1481,7 +1481,7 @@
   }
 };
 
-/// \brief Matches on nodes that have a getValue() method if getValue() equals
+/// Matches on nodes that have a getValue() method if getValue() equals
 /// the value the ValueEqualsMatcher was constructed with.
 template <typename T, typename ValueT>
 class ValueEqualsMatcher : public SingleNodeMatcherInterface<T> {
@@ -1503,7 +1503,7 @@
   const ValueT ExpectedValue;
 };
 
-/// \brief Template specializations to easily write matchers for floating point
+/// Template specializations to easily write matchers for floating point
 /// literals.
 template <>
 inline bool ValueEqualsMatcher<FloatingLiteral, double>::matchesNode(
@@ -1529,7 +1529,7 @@
   return ExpectedValue.compare(Node.getValue()) == llvm::APFloat::cmpEqual;
 }
 
-/// \brief A VariadicDynCastAllOfMatcher<SourceT, TargetT> object is a
+/// A VariadicDynCastAllOfMatcher<SourceT, TargetT> object is a
 /// variadic functor that takes a number of Matcher<TargetT> and returns a
 /// Matcher<SourceT> that matches TargetT nodes that are matched by all of the
 /// given matchers, if SourceT can be dynamically casted into TargetT.
@@ -1549,7 +1549,7 @@
   VariadicDynCastAllOfMatcher() {}
 };
 
-/// \brief A \c VariadicAllOfMatcher<T> object is a variadic functor that takes
+/// A \c VariadicAllOfMatcher<T> object is a variadic functor that takes
 /// a number of \c Matcher<T> and returns a \c Matcher<T> that matches \c T
 /// nodes that are matched by all of the given matchers.
 ///
@@ -1567,7 +1567,7 @@
   VariadicAllOfMatcher() {}
 };
 
-/// \brief Matches nodes of type \c TLoc for which the inner
+/// Matches nodes of type \c TLoc for which the inner
 /// \c Matcher<T> matches.
 template <typename TLoc, typename T>
 class LocMatcher : public WrapperMatcherInterface<TLoc> {
@@ -1589,7 +1589,7 @@
   }
 };
 
-/// \brief Matches \c TypeLocs based on an inner matcher matching a certain
+/// Matches \c TypeLocs based on an inner matcher matching a certain
 /// \c QualType.
 ///
 /// Used to implement the \c loc() matcher.
@@ -1607,7 +1607,7 @@
   }
 };
 
-/// \brief Matches nodes of type \c T for which the inner matcher matches on a
+/// Matches nodes of type \c T for which the inner matcher matches on a
 /// another node of type \c T that can be reached using a given traverse
 /// function.
 template <typename T>
@@ -1631,7 +1631,7 @@
   QualType (T::*TraverseFunction)() const;
 };
 
-/// \brief Matches nodes of type \c T in a ..Loc hierarchy, for which the inner
+/// Matches nodes of type \c T in a ..Loc hierarchy, for which the inner
 /// matcher matches on a another node of type \c T that can be reached using a
 /// given traverse function.
 template <typename T>
@@ -1655,7 +1655,7 @@
   TypeLoc (T::*TraverseFunction)() const;
 };
 
-/// \brief Converts a \c Matcher<InnerT> to a \c Matcher<OuterT>, where
+/// Converts a \c Matcher<InnerT> to a \c Matcher<OuterT>, where
 /// \c OuterT is any type that is supported by \c Getter.
 ///
 /// \code Getter<OuterT>::value() \endcode returns a
@@ -1693,7 +1693,7 @@
   const Matcher<InnerTBase> InnerMatcher;
 };
 
-/// \brief A simple memoizer of T(*)() functions.
+/// A simple memoizer of T(*)() functions.
 ///
 /// It will call the passed 'Func' template parameter at most once.
 /// Used to support AST_MATCHER_FUNCTION() macro.
Index: cfe/trunk/include/clang/ASTMatchers/ASTMatchersMacros.h
===================================================================
--- cfe/trunk/include/clang/ASTMatchers/ASTMatchersMacros.h
+++ cfe/trunk/include/clang/ASTMatchers/ASTMatchersMacros.h
@@ -50,7 +50,7 @@
 #ifndef LLVM_CLANG_ASTMATCHERS_ASTMATCHERSMACROS_H
 #define LLVM_CLANG_ASTMATCHERS_ASTMATCHERSMACROS_H
 
-/// \brief AST_MATCHER_FUNCTION(ReturnType, DefineMatcher) { ... }
+/// AST_MATCHER_FUNCTION(ReturnType, DefineMatcher) { ... }
 /// defines a zero parameter function named DefineMatcher() that returns a
 /// ReturnType object.
 #define AST_MATCHER_FUNCTION(ReturnType, DefineMatcher)                        \
@@ -61,7 +61,7 @@
   }                                                                            \
   inline ReturnType DefineMatcher##_getInstance()
 
-/// \brief AST_MATCHER_FUNCTION_P(ReturnType, DefineMatcher, ParamType, Param) {
+/// AST_MATCHER_FUNCTION_P(ReturnType, DefineMatcher, ParamType, Param) {
 /// ... }
 /// defines a single-parameter function named DefineMatcher() that returns a
 /// ReturnType object.
@@ -81,7 +81,7 @@
   typedef ReturnType (&DefineMatcher##_Type##OverloadId)(ParamType const &);   \
   inline ReturnType DefineMatcher(ParamType const &Param)
 
-/// \brief AST_MATCHER(Type, DefineMatcher) { ... }
+/// AST_MATCHER(Type, DefineMatcher) { ... }
 /// defines a zero parameter function named DefineMatcher() that returns a
 /// Matcher<Type> object.
 ///
@@ -113,7 +113,7 @@
       ::clang::ast_matchers::internal::ASTMatchFinder *Finder,                 \
       ::clang::ast_matchers::internal::BoundNodesTreeBuilder *Builder) const
 
-/// \brief AST_MATCHER_P(Type, DefineMatcher, ParamType, Param) { ... }
+/// AST_MATCHER_P(Type, DefineMatcher, ParamType, Param) { ... }
 /// defines a single-parameter function named DefineMatcher() that returns a
 /// Matcher<Type> object.
 ///
@@ -159,7 +159,7 @@
       ::clang::ast_matchers::internal::ASTMatchFinder *Finder,                 \
       ::clang::ast_matchers::internal::BoundNodesTreeBuilder *Builder) const
 
-/// \brief AST_MATCHER_P2(
+/// AST_MATCHER_P2(
 ///     Type, DefineMatcher, ParamType1, Param1, ParamType2, Param2) { ... }
 /// defines a two-parameter function named DefineMatcher() that returns a
 /// Matcher<Type> object.
@@ -211,7 +211,7 @@
       ::clang::ast_matchers::internal::ASTMatchFinder *Finder,                 \
       ::clang::ast_matchers::internal::BoundNodesTreeBuilder *Builder) const
 
-/// \brief Construct a type-list to be passed to the AST_POLYMORPHIC_MATCHER*
+/// Construct a type-list to be passed to the AST_POLYMORPHIC_MATCHER*
 ///   macros.
 ///
 /// You can't pass something like \c TypeList<Foo, Bar> to a macro, because it
@@ -222,7 +222,7 @@
 #define AST_POLYMORPHIC_SUPPORTED_TYPES(...)                                   \
   void(::clang::ast_matchers::internal::TypeList<__VA_ARGS__>)
 
-/// \brief AST_POLYMORPHIC_MATCHER(DefineMatcher) { ... }
+/// AST_POLYMORPHIC_MATCHER(DefineMatcher) { ... }
 /// defines a single-parameter function named DefineMatcher() that is
 /// polymorphic in the return type.
 ///
@@ -252,7 +252,7 @@
       ::clang::ast_matchers::internal::ASTMatchFinder *Finder,                 \
       ::clang::ast_matchers::internal::BoundNodesTreeBuilder *Builder) const
 
-/// \brief AST_POLYMORPHIC_MATCHER_P(DefineMatcher, ParamType, Param) { ... }
+/// AST_POLYMORPHIC_MATCHER_P(DefineMatcher, ParamType, Param) { ... }
 /// defines a single-parameter function named DefineMatcher() that is
 /// polymorphic in the return type.
 ///
@@ -305,7 +305,7 @@
           ::clang::ast_matchers::internal::BoundNodesTreeBuilder *Builder)     \
           const
 
-/// \brief AST_POLYMORPHIC_MATCHER_P2(
+/// AST_POLYMORPHIC_MATCHER_P2(
 ///     DefineMatcher, ParamType1, Param1, ParamType2, Param2) { ... }
 /// defines a two-parameter function named matcher() that is polymorphic in
 /// the return type.
@@ -383,7 +383,7 @@
       ::clang::ast_matchers::internal::TypeTraverseMatcher,                    \
       ReturnTypesF>::Func MatcherName
 
-/// \brief AST_TYPE_TRAVERSE_MATCHER(MatcherName, FunctionName) defines
+/// AST_TYPE_TRAVERSE_MATCHER(MatcherName, FunctionName) defines
 /// the matcher \c MatcherName that can be used to traverse from one \c Type
 /// to another.
 ///
@@ -426,7 +426,7 @@
       ReturnTypesF>::Func MatcherName##Loc;                                    \
   AST_TYPE_TRAVERSE_MATCHER_DEF(MatcherName, ReturnTypesF)
 
-/// \brief AST_TYPELOC_TRAVERSE_MATCHER(MatcherName, FunctionName) works
+/// AST_TYPELOC_TRAVERSE_MATCHER(MatcherName, FunctionName) works
 /// identical to \c AST_TYPE_TRAVERSE_MATCHER but operates on \c TypeLocs.
 #define AST_TYPELOC_TRAVERSE_MATCHER(MatcherName, FunctionName, ReturnTypesF)  \
   namespace internal {                                                         \
Index: cfe/trunk/include/clang/ASTMatchers/Dynamic/Diagnostics.h
===================================================================
--- cfe/trunk/include/clang/ASTMatchers/Dynamic/Diagnostics.h
+++ cfe/trunk/include/clang/ASTMatchers/Dynamic/Diagnostics.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Diagnostics class to manage error messages.
+/// Diagnostics class to manage error messages.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -39,7 +39,7 @@
   SourceLocation End;
 };
 
-/// \brief A VariantValue instance annotated with its parser context.
+/// A VariantValue instance annotated with its parser context.
 struct ParserValue {
   ParserValue() : Text(), Range(), Value() {}
   StringRef Text;
@@ -47,16 +47,16 @@
   VariantValue Value;
 };
 
-/// \brief Helper class to manage error messages.
+/// Helper class to manage error messages.
 class Diagnostics {
 public:
-  /// \brief Parser context types.
+  /// Parser context types.
   enum ContextType {
     CT_MatcherArg = 0,
     CT_MatcherConstruct = 1
   };
 
-  /// \brief All errors from the system.
+  /// All errors from the system.
   enum ErrorType {
     ET_None = 0,
 
@@ -80,7 +80,7 @@
     ET_ParserOverloadedType = 110
   };
 
-  /// \brief Helper stream class.
+  /// Helper stream class.
   class ArgStream {
   public:
     ArgStream(std::vector<std::string> *Out) : Out(Out) {}
@@ -93,7 +93,7 @@
     std::vector<std::string> *Out;
   };
 
-  /// \brief Class defining a parser context.
+  /// Class defining a parser context.
   ///
   /// Used by the parser to specify (possibly recursive) contexts where the
   /// parsing/construction can fail. Any error triggered within a context will
@@ -101,11 +101,11 @@
   /// This class should be used as a RAII instance in the stack.
   struct Context {
   public:
-    /// \brief About to call the constructor for a matcher.
+    /// About to call the constructor for a matcher.
     enum ConstructMatcherEnum { ConstructMatcher };
     Context(ConstructMatcherEnum, Diagnostics *Error, StringRef MatcherName,
             SourceRange MatcherRange);
-    /// \brief About to recurse into parsing one argument for a matcher.
+    /// About to recurse into parsing one argument for a matcher.
     enum MatcherArgEnum { MatcherArg };
     Context(MatcherArgEnum, Diagnostics *Error, StringRef MatcherName,
             SourceRange MatcherRange, unsigned ArgNumber);
@@ -115,7 +115,7 @@
     Diagnostics *const Error;
   };
 
-  /// \brief Context for overloaded matcher construction.
+  /// Context for overloaded matcher construction.
   ///
   /// This context will take care of merging all errors that happen within it
   /// as "candidate" overloads for the same matcher.
@@ -124,7 +124,7 @@
    OverloadContext(Diagnostics* Error);
    ~OverloadContext();
 
-   /// \brief Revert all errors that happened within this context.
+   /// Revert all errors that happened within this context.
    void revertErrors();
 
   private:
@@ -132,21 +132,21 @@
     unsigned BeginIndex;
   };
 
-  /// \brief Add an error to the diagnostics.
+  /// Add an error to the diagnostics.
   ///
   /// All the context information will be kept on the error message.
   /// \return a helper class to allow the caller to pass the arguments for the
   /// error message, using the << operator.
   ArgStream addError(SourceRange Range, ErrorType Error);
 
-  /// \brief Information stored for one frame of the context.
+  /// Information stored for one frame of the context.
   struct ContextFrame {
     ContextType Type;
     SourceRange Range;
     std::vector<std::string> Args;
   };
 
-  /// \brief Information stored for each error found.
+  /// Information stored for each error found.
   struct ErrorContent {
     std::vector<ContextFrame> ContextStack;
     struct Message {
@@ -158,20 +158,20 @@
   };
   ArrayRef<ErrorContent> errors() const { return Errors; }
 
-  /// \brief Returns a simple string representation of each error.
+  /// Returns a simple string representation of each error.
   ///
   /// Each error only shows the error message without any context.
   void printToStream(llvm::raw_ostream &OS) const;
   std::string toString() const;
 
-  /// \brief Returns the full string representation of each error.
+  /// Returns the full string representation of each error.
   ///
   /// Each error message contains the full context.
   void printToStreamFull(llvm::raw_ostream &OS) const;
   std::string toStringFull() const;
 
 private:
-  /// \brief Helper function used by the constructors of ContextFrame.
+  /// Helper function used by the constructors of ContextFrame.
   ArgStream pushContextFrame(ContextType Type, SourceRange Range);
 
   std::vector<ContextFrame> ContextStack;
Index: cfe/trunk/include/clang/ASTMatchers/Dynamic/Parser.h
===================================================================
--- cfe/trunk/include/clang/ASTMatchers/Dynamic/Parser.h
+++ cfe/trunk/include/clang/ASTMatchers/Dynamic/Parser.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Simple matcher expression parser.
+/// Simple matcher expression parser.
 ///
 /// The parser understands matcher expressions of the form:
 ///   MatcherName(Arg0, Arg1, ..., ArgN)
@@ -52,10 +52,10 @@
 
 class Diagnostics;
 
-/// \brief Matcher expression parser.
+/// Matcher expression parser.
 class Parser {
 public:
-  /// \brief Interface to connect the parser with the registry and more.
+  /// Interface to connect the parser with the registry and more.
   ///
   /// The parser uses the Sema instance passed into
   /// parseMatcherExpression() to handle all matcher tokens. The simplest
@@ -69,7 +69,7 @@
   public:
     virtual ~Sema();
 
-    /// \brief Process a matcher expression.
+    /// Process a matcher expression.
     ///
     /// All the arguments passed here have already been processed.
     ///
@@ -92,7 +92,7 @@
                                                   ArrayRef<ParserValue> Args,
                                                   Diagnostics *Error) = 0;
 
-    /// \brief Look up a matcher by name.
+    /// Look up a matcher by name.
     ///
     /// \param MatcherName The matcher name found by the parser.
     ///
@@ -101,7 +101,7 @@
     virtual llvm::Optional<MatcherCtor>
     lookupMatcherCtor(StringRef MatcherName) = 0;
 
-    /// \brief Compute the list of completion types for \p Context.
+    /// Compute the list of completion types for \p Context.
     ///
     /// Each element of \p Context represents a matcher invocation, going from
     /// outermost to innermost. Elements are pairs consisting of a reference to
@@ -112,7 +112,7 @@
     virtual std::vector<ArgKind> getAcceptedCompletionTypes(
         llvm::ArrayRef<std::pair<MatcherCtor, unsigned>> Context);
 
-    /// \brief Compute the list of completions that match any of
+    /// Compute the list of completions that match any of
     /// \p AcceptedTypes.
     ///
     /// \param AcceptedTypes All types accepted for this completion.
@@ -125,7 +125,7 @@
     getMatcherCompletions(llvm::ArrayRef<ArgKind> AcceptedTypes);
   };
 
-  /// \brief Sema implementation that uses the matcher registry to process the
+  /// Sema implementation that uses the matcher registry to process the
   ///   tokens.
   class RegistrySema : public Parser::Sema {
   public:
@@ -149,7 +149,7 @@
 
   using NamedValueMap = llvm::StringMap<VariantValue>;
 
-  /// \brief Parse a matcher expression.
+  /// Parse a matcher expression.
   ///
   /// \param MatcherCode The matcher expression to parse.
   ///
@@ -178,7 +178,7 @@
     return parseMatcherExpression(MatcherCode, nullptr, Error);
   }
 
-  /// \brief Parse an expression.
+  /// Parse an expression.
   ///
   /// Parses any expression supported by this parser. In general, the
   /// \c parseMatcherExpression function is a better approach to get a matcher
@@ -202,7 +202,7 @@
     return parseExpression(Code, nullptr, Value, Error);
   }
 
-  /// \brief Complete an expression at the given offset.
+  /// Complete an expression at the given offset.
   ///
   /// \param S The Sema instance that will help the parser
   ///   construct the matchers. If null, it uses the default registry.
Index: cfe/trunk/include/clang/ASTMatchers/Dynamic/Registry.h
===================================================================
--- cfe/trunk/include/clang/ASTMatchers/Dynamic/Registry.h
+++ cfe/trunk/include/clang/ASTMatchers/Dynamic/Registry.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Registry of all known matchers.
+/// Registry of all known matchers.
 ///
 /// The registry provides a generic interface to construct any matcher by name.
 //
@@ -49,13 +49,13 @@
     return TypedText == Other.TypedText && MatcherDecl == Other.MatcherDecl;
   }
 
-  /// \brief The text to type to select this matcher.
+  /// The text to type to select this matcher.
   std::string TypedText;
 
-  /// \brief The "declaration" of the matcher, with type information.
+  /// The "declaration" of the matcher, with type information.
   std::string MatcherDecl;
 
-  /// \brief Value corresponding to the "specificity" of the converted matcher.
+  /// Value corresponding to the "specificity" of the converted matcher.
   ///
   /// Zero specificity indicates that this conversion would produce a trivial
   /// matcher that will either always or never match.
@@ -67,13 +67,13 @@
 public:
   Registry() = delete;
 
-  /// \brief Look up a matcher in the registry by name,
+  /// Look up a matcher in the registry by name,
   ///
   /// \return An opaque value which may be used to refer to the matcher
   /// constructor, or Optional<MatcherCtor>() if not found.
   static llvm::Optional<MatcherCtor> lookupMatcherCtor(StringRef MatcherName);
 
-  /// \brief Compute the list of completion types for \p Context.
+  /// Compute the list of completion types for \p Context.
   ///
   /// Each element of \p Context represents a matcher invocation, going from
   /// outermost to innermost. Elements are pairs consisting of a reference to
@@ -84,7 +84,7 @@
   static std::vector<ArgKind> getAcceptedCompletionTypes(
       llvm::ArrayRef<std::pair<MatcherCtor, unsigned>> Context);
 
-  /// \brief Compute the list of completions that match any of
+  /// Compute the list of completions that match any of
   /// \p AcceptedTypes.
   ///
   /// \param AcceptedTypes All types accepted for this completion.
@@ -96,7 +96,7 @@
   static std::vector<MatcherCompletion>
   getMatcherCompletions(ArrayRef<ArgKind> AcceptedTypes);
 
-  /// \brief Construct a matcher from the registry.
+  /// Construct a matcher from the registry.
   ///
   /// \param Ctor The matcher constructor to instantiate.
   ///
@@ -116,7 +116,7 @@
                                          ArrayRef<ParserValue> Args,
                                          Diagnostics *Error);
 
-  /// \brief Construct a matcher from the registry and bind it.
+  /// Construct a matcher from the registry and bind it.
   ///
   /// Similar the \c constructMatcher() above, but it then tries to bind the
   /// matcher to the specified \c BindID.
Index: cfe/trunk/include/clang/ASTMatchers/Dynamic/VariantValue.h
===================================================================
--- cfe/trunk/include/clang/ASTMatchers/Dynamic/VariantValue.h
+++ cfe/trunk/include/clang/ASTMatchers/Dynamic/VariantValue.h
@@ -7,7 +7,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Polymorphic value type.
+/// Polymorphic value type.
 ///
 /// Supports all the types required for dynamic Matcher construction.
 ///  Used by the registry to construct matchers in a generic way.
@@ -28,7 +28,7 @@
 namespace ast_matchers {
 namespace dynamic {
 
-/// \brief Kind identifier.
+/// Kind identifier.
 ///
 /// It supports all types that VariantValue can contain.
 class ArgKind {
@@ -40,10 +40,10 @@
     AK_Unsigned,
     AK_String
   };
-  /// \brief Constructor for non-matcher types.
+  /// Constructor for non-matcher types.
   ArgKind(Kind K) : K(K) { assert(K != AK_Matcher); }
 
-  /// \brief Constructor for matcher types.
+  /// Constructor for matcher types.
   ArgKind(ast_type_traits::ASTNodeKind MatcherKind)
       : K(AK_Matcher), MatcherKind(MatcherKind) {}
 
@@ -53,7 +53,7 @@
     return MatcherKind;
   }
 
-  /// \brief Determines if this type can be converted to \p To.
+  /// Determines if this type can be converted to \p To.
   ///
   /// \param To the requested destination type.
   ///
@@ -67,7 +67,7 @@
     return K < Other.K;
   }
 
-  /// \brief String representation of the type.
+  /// String representation of the type.
   std::string asString() const;
 
 private:
@@ -77,7 +77,7 @@
 
 using ast_matchers::internal::DynTypedMatcher;
 
-/// \brief A variant matcher object.
+/// A variant matcher object.
 ///
 /// The purpose of this object is to abstract simple and polymorphic matchers
 /// into a single object type.
@@ -91,7 +91,7 @@
 ///  - hasTypedMatcher<T>()/getTypedMatcher<T>(): These calls will determine if
 ///    the underlying matcher(s) can unambiguously return a Matcher<T>.
 class VariantMatcher {
-  /// \brief Methods that depend on T from hasTypedMatcher/getTypedMatcher.
+  /// Methods that depend on T from hasTypedMatcher/getTypedMatcher.
   class MatcherOps {
   public:
     MatcherOps(ast_type_traits::ASTNodeKind NodeKind) : NodeKind(NodeKind) {}
@@ -99,12 +99,12 @@
     bool canConstructFrom(const DynTypedMatcher &Matcher,
                           bool &IsExactMatch) const;
 
-    /// \brief Convert \p Matcher the destination type and return it as a new
+    /// Convert \p Matcher the destination type and return it as a new
     /// DynTypedMatcher.
     virtual DynTypedMatcher
     convertMatcher(const DynTypedMatcher &Matcher) const = 0;
 
-    /// \brief Constructs a variadic typed matcher from \p InnerMatchers.
+    /// Constructs a variadic typed matcher from \p InnerMatchers.
     /// Will try to convert each inner matcher to the destination type and
     /// return llvm::None if it fails to do so.
     llvm::Optional<DynTypedMatcher>
@@ -118,7 +118,7 @@
     ast_type_traits::ASTNodeKind NodeKind;
   };
 
-  /// \brief Payload interface to be specialized by each matcher type.
+  /// Payload interface to be specialized by each matcher type.
   ///
   /// It follows a similar interface as VariantMatcher itself.
   class Payload {
@@ -133,39 +133,39 @@
   };
 
 public:
-  /// \brief A null matcher.
+  /// A null matcher.
   VariantMatcher();
 
-  /// \brief Clones the provided matcher.
+  /// Clones the provided matcher.
   static VariantMatcher SingleMatcher(const DynTypedMatcher &Matcher);
 
-  /// \brief Clones the provided matchers.
+  /// Clones the provided matchers.
   ///
   /// They should be the result of a polymorphic matcher.
   static VariantMatcher
   PolymorphicMatcher(std::vector<DynTypedMatcher> Matchers);
 
-  /// \brief Creates a 'variadic' operator matcher.
+  /// Creates a 'variadic' operator matcher.
   ///
   /// It will bind to the appropriate type on getTypedMatcher<T>().
   static VariantMatcher
   VariadicOperatorMatcher(DynTypedMatcher::VariadicOperator Op,
                           std::vector<VariantMatcher> Args);
 
-  /// \brief Makes the matcher the "null" matcher.
+  /// Makes the matcher the "null" matcher.
   void reset();
 
-  /// \brief Whether the matcher is null.
+  /// Whether the matcher is null.
   bool isNull() const { return !Value; }
 
-  /// \brief Return a single matcher, if there is no ambiguity.
+  /// Return a single matcher, if there is no ambiguity.
   ///
   /// \returns the matcher, if there is only one matcher. An empty Optional, if
   /// the underlying matcher is a polymorphic matcher with more than one
   /// representation.
   llvm::Optional<DynTypedMatcher> getSingleMatcher() const;
 
-  /// \brief Determines if the contained matcher can be converted to
+  /// Determines if the contained matcher can be converted to
   ///   \c Matcher<T>.
   ///
   /// For the Single case, it returns true if it can be converted to
@@ -179,7 +179,7 @@
     return Value->getTypedMatcher(TypedMatcherOps<T>()).hasValue();
   }
 
-  /// \brief Determines if the contained matcher can be converted to \p Kind.
+  /// Determines if the contained matcher can be converted to \p Kind.
   ///
   /// \param Kind the requested destination type.
   ///
@@ -192,7 +192,7 @@
     return false;
   }
 
-  /// \brief Return this matcher as a \c Matcher<T>.
+  /// Return this matcher as a \c Matcher<T>.
   ///
   /// Handles the different types (Single, Polymorphic) accordingly.
   /// Asserts that \c hasTypedMatcher<T>() is true.
@@ -203,7 +203,7 @@
         ->template convertTo<T>();
   }
 
-  /// \brief String representation of the type of the value.
+  /// String representation of the type of the value.
   ///
   /// If the underlying matcher is a polymorphic one, the string will show all
   /// the types.
@@ -234,7 +234,7 @@
   }
 };
 
-/// \brief Variant value class.
+/// Variant value class.
 ///
 /// Basically, a tagged union with value type semantics.
 /// It is used by the registry as the return value and argument type for the
@@ -256,46 +256,46 @@
   ~VariantValue();
   VariantValue &operator=(const VariantValue &Other);
 
-  /// \brief Specific constructors for each supported type.
+  /// Specific constructors for each supported type.
   VariantValue(bool Boolean);
   VariantValue(double Double);
   VariantValue(unsigned Unsigned);
   VariantValue(StringRef String);
   VariantValue(const VariantMatcher &Matchers);
 
-  /// \brief Constructs an \c unsigned value (disambiguation from bool).
+  /// Constructs an \c unsigned value (disambiguation from bool).
   VariantValue(int Signed) : VariantValue(static_cast<unsigned>(Signed)) {}
 
-  /// \brief Returns true iff this is not an empty value.
+  /// Returns true iff this is not an empty value.
   explicit operator bool() const { return hasValue(); }
   bool hasValue() const { return Type != VT_Nothing; }
 
-  /// \brief Boolean value functions.
+  /// Boolean value functions.
   bool isBoolean() const;
   bool getBoolean() const;
   void setBoolean(bool Boolean);
 
-  /// \brief Double value functions.
+  /// Double value functions.
   bool isDouble() const;
   double getDouble() const;
   void setDouble(double Double);
 
-  /// \brief Unsigned value functions.
+  /// Unsigned value functions.
   bool isUnsigned() const;
   unsigned getUnsigned() const;
   void setUnsigned(unsigned Unsigned);
 
-  /// \brief String value functions.
+  /// String value functions.
   bool isString() const;
   const std::string &getString() const;
   void setString(StringRef String);
 
-  /// \brief Matcher value functions.
+  /// Matcher value functions.
   bool isMatcher() const;
   const VariantMatcher &getMatcher() const;
   void setMatcher(const VariantMatcher &Matcher);
 
-  /// \brief Determines if the contained value can be converted to \p Kind.
+  /// Determines if the contained value can be converted to \p Kind.
   ///
   /// \param Kind the requested destination type.
   ///
@@ -303,7 +303,7 @@
   ///   conversion.
   bool isConvertibleTo(ArgKind Kind, unsigned* Specificity) const;
 
-  /// \brief Determines if the contained value can be converted to any kind
+  /// Determines if the contained value can be converted to any kind
   /// in \p Kinds.
   ///
   /// \param Kinds the requested destination types.
@@ -313,13 +313,13 @@
   ///   conversions.
   bool isConvertibleTo(ArrayRef<ArgKind> Kinds, unsigned *Specificity) const;
 
-  /// \brief String representation of the type of the value.
+  /// String representation of the type of the value.
   std::string getTypeAsString() const;
 
 private:
   void reset();
 
-  /// \brief All supported value types.
+  /// All supported value types.
   enum ValueType {
     VT_Nothing,
     VT_Boolean,
@@ -329,7 +329,7 @@
     VT_Matcher
   };
 
-  /// \brief All supported value types.
+  /// All supported value types.
   union AllValues {
     unsigned Unsigned;
     double Double;
Index: cfe/trunk/include/clang/Analysis/Analyses/Consumed.h
===================================================================
--- cfe/trunk/include/clang/Analysis/Analyses/Consumed.h
+++ cfe/trunk/include/clang/Analysis/Analyses/Consumed.h
@@ -58,10 +58,10 @@
   public:
     virtual ~ConsumedWarningsHandlerBase();
 
-    /// \brief Emit the warnings and notes left by the analysis.
+    /// Emit the warnings and notes left by the analysis.
     virtual void emitDiagnostics() {}
     
-    /// \brief Warn that a variable's state doesn't match at the entry and exit
+    /// Warn that a variable's state doesn't match at the entry and exit
     /// of a loop.
     ///
     /// \param Loc -- The location of the end of the loop.
@@ -71,7 +71,7 @@
     virtual void warnLoopStateMismatch(SourceLocation Loc,
                                        StringRef VariableName) {}
     
-    /// \brief Warn about parameter typestate mismatches upon return.
+    /// Warn about parameter typestate mismatches upon return.
     ///
     /// \param Loc -- The SourceLocation of the return statement.
     ///
@@ -92,7 +92,7 @@
     
     // FIXME: This can be removed when the attr propagation fix for templated
     //        classes lands.
-    /// \brief Warn about return typestates set for unconsumable types.
+    /// Warn about return typestates set for unconsumable types.
     /// 
     /// \param Loc -- The location of the attributes.
     ///
@@ -100,7 +100,7 @@
     virtual void warnReturnTypestateForUnconsumableType(SourceLocation Loc,
                                                         StringRef TypeName) {}
     
-    /// \brief Warn about return typestate mismatches.
+    /// Warn about return typestate mismatches.
     ///
     /// \param Loc -- The SourceLocation of the return statement.
     ///
@@ -113,7 +113,7 @@
                                              StringRef ExpectedState,
                                              StringRef ObservedState) {}
 
-    /// \brief Warn about use-while-consumed errors.
+    /// Warn about use-while-consumed errors.
     /// \param MethodName -- The name of the method that was incorrectly
     /// invoked.
     ///
@@ -124,7 +124,7 @@
                                              StringRef State,
                                              SourceLocation Loc) {}
 
-    /// \brief Warn about use-while-consumed errors.
+    /// Warn about use-while-consumed errors.
     /// \param MethodName -- The name of the method that was incorrectly
     /// invoked.
     ///
@@ -157,48 +157,48 @@
         : Reachable(Other.Reachable), From(Other.From), VarMap(Other.VarMap),
           TmpMap() {}
     
-    /// \brief Warn if any of the parameters being tracked are not in the state
+    /// Warn if any of the parameters being tracked are not in the state
     /// they were declared to be in upon return from a function.
     void checkParamsForReturnTypestate(SourceLocation BlameLoc,
       ConsumedWarningsHandlerBase &WarningsHandler) const;
     
-    /// \brief Clear the TmpMap.
+    /// Clear the TmpMap.
     void clearTemporaries();
     
-    /// \brief Get the consumed state of a given variable.
+    /// Get the consumed state of a given variable.
     ConsumedState getState(const VarDecl *Var) const;
     
-    /// \brief Get the consumed state of a given temporary value.
+    /// Get the consumed state of a given temporary value.
     ConsumedState getState(const CXXBindTemporaryExpr *Tmp) const;
     
-    /// \brief Merge this state map with another map.
+    /// Merge this state map with another map.
     void intersect(const ConsumedStateMap &Other);
 
     void intersectAtLoopHead(const CFGBlock *LoopHead, const CFGBlock *LoopBack,
       const ConsumedStateMap *LoopBackStates,
       ConsumedWarningsHandlerBase &WarningsHandler);
     
-    /// \brief Return true if this block is reachable.
+    /// Return true if this block is reachable.
     bool isReachable() const { return Reachable; }
     
-    /// \brief Mark the block as unreachable.
+    /// Mark the block as unreachable.
     void markUnreachable();
     
-    /// \brief Set the source for a decision about the branching of states.
+    /// Set the source for a decision about the branching of states.
     /// \param Source -- The statement that was the origin of a branching
     /// decision.
     void setSource(const Stmt *Source) { this->From = Source; }
     
-    /// \brief Set the consumed state of a given variable.
+    /// Set the consumed state of a given variable.
     void setState(const VarDecl *Var, ConsumedState State);
     
-    /// \brief Set the consumed state of a given temporary value.
+    /// Set the consumed state of a given temporary value.
     void setState(const CXXBindTemporaryExpr *Tmp, ConsumedState State);
     
-    /// \brief Remove the temporary value from our state map.
+    /// Remove the temporary value from our state map.
     void remove(const CXXBindTemporaryExpr *Tmp);
     
-    /// \brief Tests to see if there is a mismatch in the states stored in two
+    /// Tests to see if there is a mismatch in the states stored in two
     /// maps.
     ///
     /// \param Other -- The second map to compare against.
@@ -257,7 +257,7 @@
 
     ConsumedState getExpectedReturnState() const { return ExpectedReturnState; }
     
-    /// \brief Check a function's CFG for consumed violations.
+    /// Check a function's CFG for consumed violations.
     ///
     /// We traverse the blocks in the CFG, keeping track of the state of each
     /// value who's type has uniquness annotations.  If methods are invoked in
Index: cfe/trunk/include/clang/Analysis/Analyses/Dominators.h
===================================================================
--- cfe/trunk/include/clang/Analysis/Analyses/Dominators.h
+++ cfe/trunk/include/clang/Analysis/Analyses/Dominators.h
@@ -37,7 +37,7 @@
 
 using DomTreeNode = llvm::DomTreeNodeBase<CFGBlock>;
 
-/// \brief Concrete subclass of DominatorTreeBase for Clang
+/// Concrete subclass of DominatorTreeBase for Clang
 /// This class implements the dominators tree functionality given a Clang CFG.
 ///
 class DominatorTree : public ManagedAnalysis {
@@ -54,18 +54,18 @@
 
   llvm::DomTreeBase<CFGBlock>& getBase() { return *DT; }
 
-  /// \brief This method returns the root CFGBlock of the dominators tree.
+  /// This method returns the root CFGBlock of the dominators tree.
   CFGBlock *getRoot() const {
     return DT->getRoot();
   }
 
-  /// \brief This method returns the root DomTreeNode, which is the wrapper
+  /// This method returns the root DomTreeNode, which is the wrapper
   /// for CFGBlock.
   DomTreeNode *getRootNode() const {
     return DT->getRootNode();
   }
 
-  /// \brief This method compares two dominator trees.
+  /// This method compares two dominator trees.
   /// The method returns false if the other dominator tree matches this
   /// dominator tree, otherwise returns true.
   bool compare(DominatorTree &Other) const {
@@ -81,14 +81,14 @@
     return false;
   }
 
-  /// \brief This method builds the dominator tree for a given CFG
+  /// This method builds the dominator tree for a given CFG
   /// The CFG information is passed via AnalysisDeclContext
   void buildDominatorTree(AnalysisDeclContext &AC) {
     cfg = AC.getCFG();
     DT->recalculate(*cfg);
   }
 
-  /// \brief This method dumps immediate dominators for each block,
+  /// This method dumps immediate dominators for each block,
   /// mainly used for debug purposes.
   void dump() {
     llvm::errs() << "Immediate dominance tree (Node#,IDom#):\n";
@@ -104,20 +104,20 @@
     }
   }
 
-  /// \brief This method tests if one CFGBlock dominates the other.
+  /// This method tests if one CFGBlock dominates the other.
   /// The method return true if A dominates B, false otherwise.
   /// Note a block always dominates itself.
   bool dominates(const CFGBlock *A, const CFGBlock *B) const {
     return DT->dominates(A, B);
   }
 
-  /// \brief This method tests if one CFGBlock properly dominates the other.
+  /// This method tests if one CFGBlock properly dominates the other.
   /// The method return true if A properly dominates B, false otherwise.
   bool properlyDominates(const CFGBlock *A, const CFGBlock *B) const {
     return DT->properlyDominates(A, B);
   }
 
-  /// \brief This method finds the nearest common dominator CFG block
+  /// This method finds the nearest common dominator CFG block
   /// for CFG block A and B. If there is no such block then return NULL.
   CFGBlock *findNearestCommonDominator(CFGBlock *A, CFGBlock *B) {
     return DT->findNearestCommonDominator(A, B);
@@ -128,24 +128,24 @@
     return DT->findNearestCommonDominator(A, B);
   }
 
-  /// \brief This method is used to update the dominator
+  /// This method is used to update the dominator
   /// tree information when a node's immediate dominator changes.
   void changeImmediateDominator(CFGBlock *N, CFGBlock *NewIDom) {
     DT->changeImmediateDominator(N, NewIDom);
   }
 
-  /// \brief This method tests if the given CFGBlock can be reachable from root.
+  /// This method tests if the given CFGBlock can be reachable from root.
   /// Returns true if reachable, false otherwise.
   bool isReachableFromEntry(const CFGBlock *A) {
     return DT->isReachableFromEntry(A);
   }
 
-  /// \brief This method releases the memory held by the dominator tree.
+  /// This method releases the memory held by the dominator tree.
   virtual void releaseMemory() {
     DT->releaseMemory();
   }
 
-  /// \brief This method converts the dominator tree to human readable form.
+  /// This method converts the dominator tree to human readable form.
   virtual void print(raw_ostream &OS, const llvm::Module* M= nullptr) const {
     DT->print(OS);
   }
Index: cfe/trunk/include/clang/Analysis/Analyses/FormatString.h
===================================================================
--- cfe/trunk/include/clang/Analysis/Analyses/FormatString.h
+++ cfe/trunk/include/clang/Analysis/Analyses/FormatString.h
@@ -510,7 +510,7 @@
     return getConversionSpecifier().consumesDataArgument();
   }
 
-  /// \brief Returns the builtin type that a data argument
+  /// Returns the builtin type that a data argument
   /// paired with this format specifier should have.  This method
   /// will return null if the format specifier does not have
   /// a matching data argument or the matching argument matches
Index: cfe/trunk/include/clang/Analysis/Analyses/PostOrderCFGView.h
===================================================================
--- cfe/trunk/include/clang/Analysis/Analyses/PostOrderCFGView.h
+++ cfe/trunk/include/clang/Analysis/Analyses/PostOrderCFGView.h
@@ -30,7 +30,7 @@
   virtual void anchor();
 
 public:
-  /// \brief Implements a set of CFGBlocks using a BitVector.
+  /// Implements a set of CFGBlocks using a BitVector.
   ///
   /// This class contains a minimal interface, primarily dictated by the SetType
   /// template parameter of the llvm::po_iterator template, as used with
@@ -47,7 +47,7 @@
     CFGBlockSet() = default;
     CFGBlockSet(const CFG *G) : VisitedBlockIDs(G->getNumBlockIDs(), false) {}
 
-    /// \brief Set the bit associated with a particular CFGBlock.
+    /// Set the bit associated with a particular CFGBlock.
     /// This is the important method for the SetType template parameter.
     std::pair<llvm::NoneType, bool> insert(const CFGBlock *Block) {
       // Note that insert() is called by po_iterator, which doesn't check to
@@ -62,7 +62,7 @@
       return std::make_pair(None, true);
     }
 
-    /// \brief Check if the bit for a CFGBlock has been already set.
+    /// Check if the bit for a CFGBlock has been already set.
     /// This method is for tracking visited blocks in the main threadsafety
     /// loop. Block must not be null.
     bool alreadySet(const CFGBlock *Block) {
Index: cfe/trunk/include/clang/Analysis/Analyses/ThreadSafety.h
===================================================================
--- cfe/trunk/include/clang/Analysis/Analyses/ThreadSafety.h
+++ cfe/trunk/include/clang/Analysis/Analyses/ThreadSafety.h
@@ -228,7 +228,7 @@
   bool IssueBetaWarnings = false;
 };
 
-/// \brief Check a function's CFG for thread-safety violations.
+/// Check a function's CFG for thread-safety violations.
 ///
 /// We traverse the blocks in the CFG, compute the set of mutexes that are held
 /// at the end of each block, and issue warnings for thread safety violations.
@@ -239,7 +239,7 @@
 
 void threadSafetyCleanup(BeforeSet *Cache);
 
-/// \brief Helper function that returns a LockKind required for the given level
+/// Helper function that returns a LockKind required for the given level
 /// of access.
 LockKind getLockKindFromAccessKind(AccessKind AK);
 
Index: cfe/trunk/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
===================================================================
--- cfe/trunk/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
+++ cfe/trunk/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
@@ -329,7 +329,7 @@
 // Translate clang::Expr to til::SExpr.
 class SExprBuilder {
 public:
-  /// \brief Encapsulates the lexical context of a function call.  The lexical
+  /// Encapsulates the lexical context of a function call.  The lexical
   /// context includes the arguments to the call, including the implicit object
   /// argument.  When an attribute containing a mutex expression is attached to
   /// a method, the expression may refer to formal parameters of the method.
Index: cfe/trunk/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
===================================================================
--- cfe/trunk/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
+++ cfe/trunk/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
@@ -29,7 +29,7 @@
   };
   Opcode kind() const { return Kind; }
 
-  /// \brief Logical implication. Returns true if the LExpr implies RHS, i.e. if
+  /// Logical implication. Returns true if the LExpr implies RHS, i.e. if
   /// the LExpr holds, then RHS must hold. For example, (A & B) implies A.
   inline bool implies(const LExpr *RHS) const;
 
@@ -92,7 +92,7 @@
   static bool classof(const LExpr *E) { return E->kind() == LExpr::Not; }
 };
 
-/// \brief Logical implication. Returns true if LHS implies RHS, i.e. if LHS
+/// Logical implication. Returns true if LHS implies RHS, i.e. if LHS
 /// holds, then RHS must hold. For example, (A & B) implies A.
 bool implies(const LExpr *LHS, const LExpr *RHS);
 
Index: cfe/trunk/include/clang/Analysis/AnalysisDeclContext.h
===================================================================
--- cfe/trunk/include/clang/Analysis/AnalysisDeclContext.h
+++ cfe/trunk/include/clang/Analysis/AnalysisDeclContext.h
@@ -135,22 +135,22 @@
   void registerForcedBlockExpression(const Stmt *stmt);
   const CFGBlock *getBlockForRegisteredExpression(const Stmt *stmt);
 
-  /// \brief Get the body of the Declaration.
+  /// Get the body of the Declaration.
   Stmt *getBody() const;
 
-  /// \brief Get the body of the Declaration.
+  /// Get the body of the Declaration.
   /// \param[out] IsAutosynthesized Specifies if the body is auto-generated
   ///             by the BodyFarm.
   Stmt *getBody(bool &IsAutosynthesized) const;
 
-  /// \brief Checks if the body of the Decl is generated by the BodyFarm.
+  /// Checks if the body of the Decl is generated by the BodyFarm.
   ///
   /// Note, the lookup is not free. We are going to call getBody behind
   /// the scenes.
   /// \sa getBody
   bool isBodyAutosynthesized() const;
 
-  /// \brief Checks if the body of the Decl is generated by the BodyFarm from a
+  /// Checks if the body of the Decl is generated by the BodyFarm from a
   /// model file.
   ///
   /// Note, the lookup is not free. We are going to call getBody behind
@@ -169,7 +169,7 @@
 
   void dumpCFG(bool ShowColors);
 
-  /// \brief Returns true if we have built a CFG for this analysis context.
+  /// Returns true if we have built a CFG for this analysis context.
   /// Note that this doesn't correspond to whether or not a valid CFG exists, it
   /// corresponds to whether we *attempted* to build one.
   bool isCFGBuilt() const { return builtCFG; }
Index: cfe/trunk/include/clang/Analysis/CFG.h
===================================================================
--- cfe/trunk/include/clang/Analysis/CFG.h
+++ cfe/trunk/include/clang/Analysis/CFG.h
@@ -92,7 +92,7 @@
   CFGElement() = default;
 
 public:
-  /// \brief Convert to the specified CFGElement type, asserting that this
+  /// Convert to the specified CFGElement type, asserting that this
   /// CFGElement is of the desired type.
   template<typename T>
   T castAs() const {
@@ -103,7 +103,7 @@
     return t;
   }
 
-  /// \brief Convert to the specified CFGElement type, returning None if this
+  /// Convert to the specified CFGElement type, returning None if this
   /// CFGElement is not of the desired type.
   template<typename T>
   Optional<T> getAs() const {
@@ -980,7 +980,7 @@
 
 };
 
-/// \brief CFGCallback defines methods that should be called when a logical
+/// CFGCallback defines methods that should be called when a logical
 /// operator error is found when building the CFG.
 class CFGCallback {
 public:
Index: cfe/trunk/include/clang/Analysis/CallGraph.h
===================================================================
--- cfe/trunk/include/clang/Analysis/CallGraph.h
+++ cfe/trunk/include/clang/Analysis/CallGraph.h
@@ -34,7 +34,7 @@
 class DeclContext;
 class Stmt;
 
-/// \brief The AST-based call graph.
+/// The AST-based call graph.
 ///
 /// The call graph extends itself with the given declarations by implementing
 /// the recursive AST visitor, which constructs the graph by visiting the given
@@ -55,7 +55,7 @@
   CallGraph();
   ~CallGraph();
 
-  /// \brief Populate the call graph with the functions in the given
+  /// Populate the call graph with the functions in the given
   /// declaration.
   ///
   /// Recursively walks the declaration to find all the dependent Decls as well.
@@ -63,13 +63,13 @@
     TraverseDecl(D);
   }
 
-  /// \brief Determine if a declaration should be included in the graph.
+  /// Determine if a declaration should be included in the graph.
   static bool includeInGraph(const Decl *D);
 
-  /// \brief Lookup the node for the given declaration.
+  /// Lookup the node for the given declaration.
   CallGraphNode *getNode(const Decl *) const;
 
-  /// \brief Lookup the node for the given declaration. If none found, insert
+  /// Lookup the node for the given declaration. If none found, insert
   /// one into the graph.
   CallGraphNode *getOrInsertNode(Decl *);
 
@@ -83,7 +83,7 @@
   const_iterator begin() const { return FunctionMap.begin(); }
   const_iterator end()   const { return FunctionMap.end();   }
 
-  /// \brief Get the number of nodes in the graph.
+  /// Get the number of nodes in the graph.
   unsigned size() const { return FunctionMap.size(); }
 
   /// \ brief Get the virtual root of the graph, all the functions available
@@ -133,10 +133,10 @@
   bool shouldWalkTypesOfTypeLocs() const { return false; }
 
 private:
-  /// \brief Add the given declaration to the call graph.
+  /// Add the given declaration to the call graph.
   void addNodeForDecl(Decl *D, bool IsGlobal);
 
-  /// \brief Allocate a new node in the graph.
+  /// Allocate a new node in the graph.
   CallGraphNode *allocateNewNode(Decl *);
 };
 
@@ -145,10 +145,10 @@
   using CallRecord = CallGraphNode *;
 
 private:
-  /// \brief The function/method declaration.
+  /// The function/method declaration.
   Decl *FD;
 
-  /// \brief The list of functions called from this node.
+  /// The list of functions called from this node.
   SmallVector<CallRecord, 5> CalledFunctions;
 
 public:
Index: cfe/trunk/include/clang/Analysis/CodeInjector.h
===================================================================
--- cfe/trunk/include/clang/Analysis/CodeInjector.h
+++ cfe/trunk/include/clang/Analysis/CodeInjector.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::CodeInjector interface which is responsible for
+/// Defines the clang::CodeInjector interface which is responsible for
 /// injecting AST of function definitions that may not be available in the
 /// original source.
 ///
@@ -23,7 +23,7 @@
 class FunctionDecl;
 class ObjCMethodDecl;
 
-/// \brief CodeInjector is an interface which is responsible for injecting AST
+/// CodeInjector is an interface which is responsible for injecting AST
 /// of function definitions that may not be available in the original source.
 ///
 /// The getBody function will be called each time the static analyzer examines a
Index: cfe/trunk/include/clang/Analysis/ProgramPoint.h
===================================================================
--- cfe/trunk/include/clang/Analysis/ProgramPoint.h
+++ cfe/trunk/include/clang/Analysis/ProgramPoint.h
@@ -135,7 +135,7 @@
                         getLocationContext(), tag);
   }
 
-  /// \brief Convert to the specified ProgramPoint type, asserting that this
+  /// Convert to the specified ProgramPoint type, asserting that this
   /// ProgramPoint is of the desired type.
   template<typename T>
   T castAs() const {
@@ -146,7 +146,7 @@
     return t;
   }
 
-  /// \brief Convert to the specified ProgramPoint type, returning None if this
+  /// Convert to the specified ProgramPoint type, returning None if this
   /// ProgramPoint is not of the desired type.
   template<typename T>
   Optional<T> getAs() const {
@@ -167,7 +167,7 @@
     return (Kind) x;
   }
 
-  /// \brief Is this a program point corresponding to purge/removal of dead
+  /// Is this a program point corresponding to purge/removal of dead
   /// symbols and bindings.
   bool isPurgeKind() {
     Kind K = getKind();
@@ -397,7 +397,7 @@
   }
 };
 
-/// \brief Represents a program point after a store evaluation.
+/// Represents a program point after a store evaluation.
 class PostStore : public PostStmt {
 public:
   /// Construct the post store point.
@@ -410,7 +410,7 @@
     setData2(Loc);
   }
 
-  /// \brief Returns the information about the location used in the store,
+  /// Returns the information about the location used in the store,
   /// how it was uttered in the code.
   const void *getLocationValue() const {
     return getData2();
@@ -496,7 +496,7 @@
 
 class PostInitializer : public ProgramPoint {
 public:
-  /// \brief Construct a PostInitializer point that represents a location after
+  /// Construct a PostInitializer point that represents a location after
   ///   CXXCtorInitializer expression evaluation.
   ///
   /// \param I The initializer.
@@ -510,7 +510,7 @@
     return static_cast<const CXXCtorInitializer *>(getData1());
   }
 
-  /// \brief Returns the location of the field.
+  /// Returns the location of the field.
   const void *getLocationValue() const {
     return getData2();
   }
Index: cfe/trunk/include/clang/Basic/ABI.h
===================================================================
--- cfe/trunk/include/clang/Basic/ABI.h
+++ cfe/trunk/include/clang/Basic/ABI.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Enums/classes describing ABI related information about constructors,
+/// Enums/classes describing ABI related information about constructors,
 /// destructors and thunks.
 ///
 //===----------------------------------------------------------------------===//
@@ -21,7 +21,7 @@
 
 namespace clang {
 
-/// \brief C++ constructor types.
+/// C++ constructor types.
 enum CXXCtorType {
   Ctor_Complete,       ///< Complete object ctor
   Ctor_Base,           ///< Base object ctor
@@ -30,7 +30,7 @@
   Ctor_DefaultClosure, ///< Default closure variant of a ctor
 };
 
-/// \brief C++ destructor types.
+/// C++ destructor types.
 enum CXXDtorType {
     Dtor_Deleting, ///< Deleting dtor
     Dtor_Complete, ///< Complete object dtor
@@ -38,29 +38,29 @@
     Dtor_Comdat    ///< The COMDAT used for dtors
 };
 
-/// \brief A return adjustment.
+/// A return adjustment.
 struct ReturnAdjustment {
-  /// \brief The non-virtual adjustment from the derived object to its
+  /// The non-virtual adjustment from the derived object to its
   /// nearest virtual base.
   int64_t NonVirtual;
 
-  /// \brief Holds the ABI-specific information about the virtual return
+  /// Holds the ABI-specific information about the virtual return
   /// adjustment, if needed.
   union VirtualAdjustment {
     // Itanium ABI
     struct {
-      /// \brief The offset (in bytes), relative to the address point
+      /// The offset (in bytes), relative to the address point
       /// of the virtual base class offset.
       int64_t VBaseOffsetOffset;
     } Itanium;
 
     // Microsoft ABI
     struct {
-      /// \brief The offset (in bytes) of the vbptr, relative to the beginning
+      /// The offset (in bytes) of the vbptr, relative to the beginning
       /// of the derived class.
       uint32_t VBPtrOffset;
 
-      /// \brief Index of the virtual base in the vbtable.
+      /// Index of the virtual base in the vbtable.
       uint32_t VBIndex;
     } Microsoft;
 
@@ -104,31 +104,31 @@
   }
 };
   
-/// \brief A \c this pointer adjustment.
+/// A \c this pointer adjustment.
 struct ThisAdjustment {
-  /// \brief The non-virtual adjustment from the derived object to its
+  /// The non-virtual adjustment from the derived object to its
   /// nearest virtual base.
   int64_t NonVirtual;
 
-  /// \brief Holds the ABI-specific information about the virtual this
+  /// Holds the ABI-specific information about the virtual this
   /// adjustment, if needed.
   union VirtualAdjustment {
     // Itanium ABI
     struct {
-      /// \brief The offset (in bytes), relative to the address point,
+      /// The offset (in bytes), relative to the address point,
       /// of the virtual call offset.
       int64_t VCallOffsetOffset;
     } Itanium;
 
     struct {
-      /// \brief The offset of the vtordisp (in bytes), relative to the ECX.
+      /// The offset of the vtordisp (in bytes), relative to the ECX.
       int32_t VtordispOffset;
 
-      /// \brief The offset of the vbptr of the derived class (in bytes),
+      /// The offset of the vbptr of the derived class (in bytes),
       /// relative to the ECX after vtordisp adjustment.
       int32_t VBPtrOffset;
 
-      /// \brief The offset (in bytes) of the vbase offset in the vbtable.
+      /// The offset (in bytes) of the vbase offset in the vbtable.
       int32_t VBOffsetOffset;
     } Microsoft;
 
@@ -174,16 +174,16 @@
 
 class CXXMethodDecl;
 
-/// \brief The \c this pointer adjustment as well as an optional return
+/// The \c this pointer adjustment as well as an optional return
 /// adjustment for a thunk.
 struct ThunkInfo {
-  /// \brief The \c this pointer adjustment.
+  /// The \c this pointer adjustment.
   ThisAdjustment This;
     
-  /// \brief The return adjustment.
+  /// The return adjustment.
   ReturnAdjustment Return;
 
-  /// \brief Holds a pointer to the overridden method this thunk is for,
+  /// Holds a pointer to the overridden method this thunk is for,
   /// if needed by the ABI to distinguish different thunks with equal
   /// adjustments. Otherwise, null.
   /// CAUTION: In the unlikely event you need to sort ThunkInfos, consider using
Index: cfe/trunk/include/clang/Basic/AddressSpaces.h
===================================================================
--- cfe/trunk/include/clang/Basic/AddressSpaces.h
+++ cfe/trunk/include/clang/Basic/AddressSpaces.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Provides definitions for the various language-specific address
+/// Provides definitions for the various language-specific address
 /// spaces.
 //
 //===----------------------------------------------------------------------===//
@@ -20,7 +20,7 @@
 
 namespace clang {
 
-/// \brief Defines the address space values used by the address space qualifier
+/// Defines the address space values used by the address space qualifier
 /// of QualType.
 ///
 enum class LangAS : unsigned {
Index: cfe/trunk/include/clang/Basic/AlignedAllocation.h
===================================================================
--- cfe/trunk/include/clang/Basic/AlignedAllocation.h
+++ cfe/trunk/include/clang/Basic/AlignedAllocation.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines a function that returns the minimum OS versions supporting
+/// Defines a function that returns the minimum OS versions supporting
 /// C++17's aligned allocation functions.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/include/clang/Basic/AllDiagnostics.h
===================================================================
--- cfe/trunk/include/clang/Basic/AllDiagnostics.h
+++ cfe/trunk/include/clang/Basic/AllDiagnostics.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Includes all the separate Diagnostic headers & some related helpers.
+/// Includes all the separate Diagnostic headers & some related helpers.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/include/clang/Basic/AttrKinds.h
===================================================================
--- cfe/trunk/include/clang/Basic/AttrKinds.h
+++ cfe/trunk/include/clang/Basic/AttrKinds.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::attr::Kind enum.
+/// Defines the clang::attr::Kind enum.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -19,7 +19,7 @@
 
 namespace attr {
 
-// \brief A list of all the recognized kinds of attributes.
+// A list of all the recognized kinds of attributes.
 enum Kind {
 #define ATTR(X) X,
 #define ATTR_RANGE(CLASS, FIRST_NAME, LAST_NAME) \
Index: cfe/trunk/include/clang/Basic/AttrSubjectMatchRules.h
===================================================================
--- cfe/trunk/include/clang/Basic/AttrSubjectMatchRules.h
+++ cfe/trunk/include/clang/Basic/AttrSubjectMatchRules.h
@@ -16,7 +16,7 @@
 namespace clang {
 namespace attr {
 
-/// \brief A list of all the recognized kinds of attributes.
+/// A list of all the recognized kinds of attributes.
 enum SubjectMatchRule {
 #define ATTR_MATCH_RULE(X, Spelling, IsAbstract) X,
 #include "clang/Basic/AttrSubMatchRulesList.inc"
Index: cfe/trunk/include/clang/Basic/Attributes.h
===================================================================
--- cfe/trunk/include/clang/Basic/Attributes.h
+++ cfe/trunk/include/clang/Basic/Attributes.h
@@ -32,7 +32,7 @@
   Pragma
 };
 
-/// \brief Return the version number associated with the attribute if we
+/// Return the version number associated with the attribute if we
 /// recognize and implement the attribute specified by the given information.
 int hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope,
                  const IdentifierInfo *Attr, const TargetInfo &Target,
Index: cfe/trunk/include/clang/Basic/Builtins.h
===================================================================
--- cfe/trunk/include/clang/Basic/Builtins.h
+++ cfe/trunk/include/clang/Basic/Builtins.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines enum values for all the target-independent builtin
+/// Defines enum values for all the target-independent builtin
 /// functions.
 ///
 //===----------------------------------------------------------------------===//
@@ -59,7 +59,7 @@
   const char *Features;
 };
 
-/// \brief Holds information about both target-independent and
+/// Holds information about both target-independent and
 /// target-specific builtins, allowing easy queries by clients.
 ///
 /// Builtins from an optional auxiliary target are stored in
@@ -72,129 +72,129 @@
 public:
   Context() {}
 
-  /// \brief Perform target-specific initialization
+  /// Perform target-specific initialization
   /// \param AuxTarget Target info to incorporate builtins from. May be nullptr.
   void InitializeTarget(const TargetInfo &Target, const TargetInfo *AuxTarget);
 
-  /// \brief Mark the identifiers for all the builtins with their
+  /// Mark the identifiers for all the builtins with their
   /// appropriate builtin ID # and mark any non-portable builtin identifiers as
   /// such.
   void initializeBuiltins(IdentifierTable &Table, const LangOptions& LangOpts);
 
-  /// \brief Return the identifier name for the specified builtin,
+  /// Return the identifier name for the specified builtin,
   /// e.g. "__builtin_abs".
   const char *getName(unsigned ID) const {
     return getRecord(ID).Name;
   }
 
-  /// \brief Get the type descriptor string for the specified builtin.
+  /// Get the type descriptor string for the specified builtin.
   const char *getTypeString(unsigned ID) const {
     return getRecord(ID).Type;
   }
 
-  /// \brief Return true if this function is a target-specific builtin.
+  /// Return true if this function is a target-specific builtin.
   bool isTSBuiltin(unsigned ID) const {
     return ID >= Builtin::FirstTSBuiltin;
   }
 
-  /// \brief Return true if this function has no side effects.
+  /// Return true if this function has no side effects.
   bool isPure(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'U') != nullptr;
   }
 
-  /// \brief Return true if this function has no side effects and doesn't
+  /// Return true if this function has no side effects and doesn't
   /// read memory.
   bool isConst(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'c') != nullptr;
   }
 
-  /// \brief Return true if we know this builtin never throws an exception.
+  /// Return true if we know this builtin never throws an exception.
   bool isNoThrow(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'n') != nullptr;
   }
 
-  /// \brief Return true if we know this builtin never returns.
+  /// Return true if we know this builtin never returns.
   bool isNoReturn(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'r') != nullptr;
   }
 
-  /// \brief Return true if we know this builtin can return twice.
+  /// Return true if we know this builtin can return twice.
   bool isReturnsTwice(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'j') != nullptr;
   }
 
-  /// \brief Returns true if this builtin does not perform the side-effects
+  /// Returns true if this builtin does not perform the side-effects
   /// of its arguments.
   bool isUnevaluated(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'u') != nullptr;
   }
 
-  /// \brief Return true if this is a builtin for a libc/libm function,
+  /// Return true if this is a builtin for a libc/libm function,
   /// with a "__builtin_" prefix (e.g. __builtin_abs).
   bool isLibFunction(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'F') != nullptr;
   }
 
-  /// \brief Determines whether this builtin is a predefined libc/libm
+  /// Determines whether this builtin is a predefined libc/libm
   /// function, such as "malloc", where we know the signature a
   /// priori.
   bool isPredefinedLibFunction(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'f') != nullptr;
   }
 
-  /// \brief Returns true if this builtin requires appropriate header in other
+  /// Returns true if this builtin requires appropriate header in other
   /// compilers. In Clang it will work even without including it, but we can emit
   /// a warning about missing header.
   bool isHeaderDependentFunction(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'h') != nullptr;
   }
 
-  /// \brief Determines whether this builtin is a predefined compiler-rt/libgcc
+  /// Determines whether this builtin is a predefined compiler-rt/libgcc
   /// function, such as "__clear_cache", where we know the signature a
   /// priori.
   bool isPredefinedRuntimeFunction(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 'i') != nullptr;
   }
 
-  /// \brief Determines whether this builtin has custom typechecking.
+  /// Determines whether this builtin has custom typechecking.
   bool hasCustomTypechecking(unsigned ID) const {
     return strchr(getRecord(ID).Attributes, 't') != nullptr;
   }
 
-  /// \brief Determines whether this builtin has a result or any arguments which
+  /// Determines whether this builtin has a result or any arguments which
   /// are pointer types.
   bool hasPtrArgsOrResult(unsigned ID) const {
     return strchr(getRecord(ID).Type, '*') != nullptr;
   }
 
-  /// \brief Return true if this builtin has a result or any arguments which are
+  /// Return true if this builtin has a result or any arguments which are
   /// reference types.
   bool hasReferenceArgsOrResult(unsigned ID) const {
     return strchr(getRecord(ID).Type, '&') != nullptr ||
            strchr(getRecord(ID).Type, 'A') != nullptr;
   }
 
-  /// \brief Completely forget that the given ID was ever considered a builtin,
+  /// Completely forget that the given ID was ever considered a builtin,
   /// e.g., because the user provided a conflicting signature.
   void forgetBuiltin(unsigned ID, IdentifierTable &Table);
 
-  /// \brief If this is a library function that comes from a specific
+  /// If this is a library function that comes from a specific
   /// header, retrieve that header name.
   const char *getHeaderName(unsigned ID) const {
     return getRecord(ID).HeaderName;
   }
 
-  /// \brief Determine whether this builtin is like printf in its
+  /// Determine whether this builtin is like printf in its
   /// formatting rules and, if so, set the index to the format string
   /// argument and whether this function as a va_list argument.
   bool isPrintfLike(unsigned ID, unsigned &FormatIdx, bool &HasVAListArg);
 
-  /// \brief Determine whether this builtin is like scanf in its
+  /// Determine whether this builtin is like scanf in its
   /// formatting rules and, if so, set the index to the format string
   /// argument and whether this function as a va_list argument.
   bool isScanfLike(unsigned ID, unsigned &FormatIdx, bool &HasVAListArg);
 
-  /// \brief Return true if this function has no side effects and doesn't
+  /// Return true if this function has no side effects and doesn't
   /// read memory, except for possibly errno.
   ///
   /// Such functions can be const when the MathErrno lang option is disabled.
@@ -206,7 +206,7 @@
     return getRecord(ID).Features;
   }
 
-  /// \brief Return true if builtin ID belongs to AuxTarget.
+  /// Return true if builtin ID belongs to AuxTarget.
   bool isAuxBuiltinID(unsigned ID) const {
     return ID >= (Builtin::FirstTSBuiltin + TSRecords.size());
   }
@@ -226,23 +226,23 @@
 private:
   const Info &getRecord(unsigned ID) const;
 
-  /// \brief Is this builtin supported according to the given language options?
+  /// Is this builtin supported according to the given language options?
   bool builtinIsSupported(const Builtin::Info &BuiltinInfo,
                           const LangOptions &LangOpts);
 
-  /// \brief Helper function for isPrintfLike and isScanfLike.
+  /// Helper function for isPrintfLike and isScanfLike.
   bool isLike(unsigned ID, unsigned &FormatIdx, bool &HasVAListArg,
               const char *Fmt) const;
 };
 
 }
 
-/// \brief Kinds of BuiltinTemplateDecl.
+/// Kinds of BuiltinTemplateDecl.
 enum BuiltinTemplateKind : int {
-  /// \brief This names the __make_integer_seq BuiltinTemplateDecl.
+  /// This names the __make_integer_seq BuiltinTemplateDecl.
   BTK__make_integer_seq,
 
-  /// \brief This names the __type_pack_element BuiltinTemplateDecl.
+  /// This names the __type_pack_element BuiltinTemplateDecl.
   BTK__type_pack_element
 };
 
Index: cfe/trunk/include/clang/Basic/BuiltinsWebAssembly.def
===================================================================
--- cfe/trunk/include/clang/Basic/BuiltinsWebAssembly.def
+++ cfe/trunk/include/clang/Basic/BuiltinsWebAssembly.def
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file defines the WebAssembly-specific builtin function database.
+/// This file defines the WebAssembly-specific builtin function database.
 /// Users of this file must define the BUILTIN macro to make use of this
 /// information.
 ///
Index: cfe/trunk/include/clang/Basic/CapturedStmt.h
===================================================================
--- cfe/trunk/include/clang/Basic/CapturedStmt.h
+++ cfe/trunk/include/clang/Basic/CapturedStmt.h
@@ -13,7 +13,7 @@
 
 namespace clang {
 
-/// \brief The different kinds of captured statement.
+/// The different kinds of captured statement.
 enum CapturedRegionKind {
   CR_Default,
   CR_OpenMP
Index: cfe/trunk/include/clang/Basic/CommentOptions.h
===================================================================
--- cfe/trunk/include/clang/Basic/CommentOptions.h
+++ cfe/trunk/include/clang/Basic/CommentOptions.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::CommentOptions interface.
+/// Defines the clang::CommentOptions interface.
 //
 //===----------------------------------------------------------------------===//
 
@@ -20,15 +20,15 @@
 
 namespace clang {
 
-/// \brief Options for controlling comment parsing.
+/// Options for controlling comment parsing.
 struct CommentOptions {
   using BlockCommandNamesTy = std::vector<std::string>;
 
-  /// \brief Command names to treat as block commands in comments.
+  /// Command names to treat as block commands in comments.
   /// Should not include the leading backslash.
   BlockCommandNamesTy BlockCommandNames;
 
-  /// \brief Treat ordinary comments as documentation comments.
+  /// Treat ordinary comments as documentation comments.
   bool ParseAllComments = false;
 
   CommentOptions() = default;
Index: cfe/trunk/include/clang/Basic/Diagnostic.h
===================================================================
--- cfe/trunk/include/clang/Basic/Diagnostic.h
+++ cfe/trunk/include/clang/Basic/Diagnostic.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the Diagnostic-related interfaces.
+/// Defines the Diagnostic-related interfaces.
 //
 //===----------------------------------------------------------------------===//
 
@@ -54,7 +54,7 @@
 
 } // namespace tok
 
-/// \brief Annotates a diagnostic with some code that should be
+/// Annotates a diagnostic with some code that should be
 /// inserted, removed, or replaced to fix the problem.
 ///
 /// This kind of hint should be used when we are certain that the
@@ -65,21 +65,21 @@
 /// compilation.
 class FixItHint {
 public:
-  /// \brief Code that should be replaced to correct the error. Empty for an
+  /// Code that should be replaced to correct the error. Empty for an
   /// insertion hint.
   CharSourceRange RemoveRange;
 
-  /// \brief Code in the specific range that should be inserted in the insertion
+  /// Code in the specific range that should be inserted in the insertion
   /// location.
   CharSourceRange InsertFromRange;
 
-  /// \brief The actual code to insert at the insertion location, as a
+  /// The actual code to insert at the insertion location, as a
   /// string.
   std::string CodeToInsert;
 
   bool BeforePreviousInsertions = false;
 
-  /// \brief Empty code modification hint, indicating that no code
+  /// Empty code modification hint, indicating that no code
   /// modification is known.
   FixItHint() = default;
 
@@ -87,7 +87,7 @@
     return !RemoveRange.isValid();
   }
   
-  /// \brief Create a code modification hint that inserts the given
+  /// Create a code modification hint that inserts the given
   /// code string at a specific location.
   static FixItHint CreateInsertion(SourceLocation InsertionLoc,
                                    StringRef Code,
@@ -100,7 +100,7 @@
     return Hint;
   }
   
-  /// \brief Create a code modification hint that inserts the given
+  /// Create a code modification hint that inserts the given
   /// code from \p FromRange at a specific location.
   static FixItHint CreateInsertionFromRange(SourceLocation InsertionLoc,
                                             CharSourceRange FromRange,
@@ -113,7 +113,7 @@
     return Hint;
   }
 
-  /// \brief Create a code modification hint that removes the given
+  /// Create a code modification hint that removes the given
   /// source range.
   static FixItHint CreateRemoval(CharSourceRange RemoveRange) {
     FixItHint Hint;
@@ -124,7 +124,7 @@
     return CreateRemoval(CharSourceRange::getTokenRange(RemoveRange));
   }
   
-  /// \brief Create a code modification hint that replaces the given
+  /// Create a code modification hint that replaces the given
   /// source range with the given code string.
   static FixItHint CreateReplacement(CharSourceRange RemoveRange,
                                      StringRef Code) {
@@ -140,7 +140,7 @@
   }
 };
 
-/// \brief Concrete class used by the front-end to report problems and issues.
+/// Concrete class used by the front-end to report problems and issues.
 ///
 /// This massages the diagnostics (e.g. handling things like "report warnings
 /// as errors" and passes them off to the DiagnosticConsumer for reporting to
@@ -148,7 +148,7 @@
 /// SourceManager.
 class DiagnosticsEngine : public RefCountedBase<DiagnosticsEngine> {
 public:
-  /// \brief The level of the diagnostic, after it has been through mapping.
+  /// The level of the diagnostic, after it has been through mapping.
   enum Level {
     Ignored = DiagnosticIDs::Ignored,
     Note = DiagnosticIDs::Note,
@@ -199,7 +199,7 @@
     ak_attr
   };
 
-  /// \brief Represents on argument value, which is a union discriminated
+  /// Represents on argument value, which is a union discriminated
   /// by ArgumentKind, with a value.
   using ArgumentValue = std::pair<ArgumentKind, intptr_t>;
 
@@ -240,7 +240,7 @@
   std::unique_ptr<DiagnosticConsumer> Owner;
   SourceManager *SourceMgr = nullptr;
 
-  /// \brief Mapping information for diagnostics.
+  /// Mapping information for diagnostics.
   ///
   /// Mapping info is packed into four bits per diagnostic.  The low three
   /// bits are the mapping (an instance of diag::Severity), or zero if unset.
@@ -298,7 +298,7 @@
     const_iterator end() const { return DiagMap.end(); }
   };
 
-  /// \brief Keeps and automatically disposes all DiagStates that we create.
+  /// Keeps and automatically disposes all DiagStates that we create.
   std::list<DiagState> DiagStates;
 
   /// A mapping from files to the diagnostic states for those files. Lazily
@@ -338,7 +338,7 @@
     friend class ASTReader;
     friend class ASTWriter;
 
-    /// \brief Represents a point in source where the diagnostic state was
+    /// Represents a point in source where the diagnostic state was
     /// modified because of a pragma.
     ///
     /// 'Loc' can be null if the point represents the diagnostic state
@@ -391,7 +391,7 @@
 
   DiagStateMap DiagStatesByLoc;
 
-  /// \brief Keeps the DiagState that was active during each diagnostic 'push'
+  /// Keeps the DiagState that was active during each diagnostic 'push'
   /// so we can get back at it when we 'pop'.
   std::vector<DiagState *> DiagStateOnPushStack;
 
@@ -401,32 +401,32 @@
 
   void PushDiagStatePoint(DiagState *State, SourceLocation L);
 
-  /// \brief Finds the DiagStatePoint that contains the diagnostic state of
+  /// Finds the DiagStatePoint that contains the diagnostic state of
   /// the given source location.
   DiagState *GetDiagStateForLoc(SourceLocation Loc) const {
     return SourceMgr ? DiagStatesByLoc.lookup(*SourceMgr, Loc)
                      : DiagStatesByLoc.getCurDiagState();
   }
 
-  /// \brief Sticky flag set to \c true when an error is emitted.
+  /// Sticky flag set to \c true when an error is emitted.
   bool ErrorOccurred;
 
-  /// \brief Sticky flag set to \c true when an "uncompilable error" occurs.
+  /// Sticky flag set to \c true when an "uncompilable error" occurs.
   /// I.e. an error that was not upgraded from a warning by -Werror.
   bool UncompilableErrorOccurred;
 
-  /// \brief Sticky flag set to \c true when a fatal error is emitted.
+  /// Sticky flag set to \c true when a fatal error is emitted.
   bool FatalErrorOccurred;
 
-  /// \brief Indicates that an unrecoverable error has occurred.
+  /// Indicates that an unrecoverable error has occurred.
   bool UnrecoverableErrorOccurred;
   
-  /// \brief Counts for DiagnosticErrorTrap to check whether an error occurred
+  /// Counts for DiagnosticErrorTrap to check whether an error occurred
   /// during a parsing section, e.g. during parsing a function.
   unsigned TrapNumErrorsOccurred;
   unsigned TrapNumUnrecoverableErrorsOccurred;
 
-  /// \brief The level of the last diagnostic emitted.
+  /// The level of the last diagnostic emitted.
   ///
   /// This is used to emit continuation diagnostics with the same level as the
   /// diagnostic that they follow.
@@ -438,7 +438,7 @@
   /// Number of errors reported
   unsigned NumErrors;
 
-  /// \brief A function pointer that converts an opaque diagnostic
+  /// A function pointer that converts an opaque diagnostic
   /// argument to a strings.
   ///
   /// This takes the modifiers and argument that was present in the diagnostic.
@@ -459,18 +459,18 @@
   void *ArgToStringCookie = nullptr;
   ArgToStringFnTy ArgToStringFn;
 
-  /// \brief ID of the "delayed" diagnostic, which is a (typically
+  /// ID of the "delayed" diagnostic, which is a (typically
   /// fatal) diagnostic that had to be delayed because it was found
   /// while emitting another diagnostic.
   unsigned DelayedDiagID;
 
-  /// \brief First string argument for the delayed diagnostic.
+  /// First string argument for the delayed diagnostic.
   std::string DelayedDiagArg1;
 
-  /// \brief Second string argument for the delayed diagnostic.
+  /// Second string argument for the delayed diagnostic.
   std::string DelayedDiagArg2;
 
-  /// \brief Optional flag value.
+  /// Optional flag value.
   ///
   /// Some flags accept values, for instance: -Wframe-larger-than=<value> and
   /// -Rpass=<value>. The content of this string is emitted after the flag name
@@ -495,12 +495,12 @@
     return Diags;
   }
 
-  /// \brief Retrieve the diagnostic options.
+  /// Retrieve the diagnostic options.
   DiagnosticOptions &getDiagnosticOptions() const { return *DiagOpts; }
 
   using diag_mapping_range = llvm::iterator_range<DiagState::const_iterator>;
 
-  /// \brief Get the current set of diagnostic mappings.
+  /// Get the current set of diagnostic mappings.
   diag_mapping_range getDiagnosticMappings() const {
     const DiagState &DS = *GetCurDiagState();
     return diag_mapping_range(DS.begin(), DS.end());
@@ -509,10 +509,10 @@
   DiagnosticConsumer *getClient() { return Client; }
   const DiagnosticConsumer *getClient() const { return Client; }
 
-  /// \brief Determine whether this \c DiagnosticsEngine object own its client.
+  /// Determine whether this \c DiagnosticsEngine object own its client.
   bool ownsClient() const { return Owner != nullptr; }
 
-  /// \brief Return the current diagnostic client along with ownership of that
+  /// Return the current diagnostic client along with ownership of that
   /// client.
   std::unique_ptr<DiagnosticConsumer> takeClient() { return std::move(Owner); }
 
@@ -534,54 +534,54 @@
   //  how diagnostics are emitted.
   //
 
-  /// \brief Copies the current DiagMappings and pushes the new copy
+  /// Copies the current DiagMappings and pushes the new copy
   /// onto the top of the stack.
   void pushMappings(SourceLocation Loc);
 
-  /// \brief Pops the current DiagMappings off the top of the stack,
+  /// Pops the current DiagMappings off the top of the stack,
   /// causing the new top of the stack to be the active mappings.
   ///
   /// \returns \c true if the pop happens, \c false if there is only one
   /// DiagMapping on the stack.
   bool popMappings(SourceLocation Loc);
 
-  /// \brief Set the diagnostic client associated with this diagnostic object.
+  /// Set the diagnostic client associated with this diagnostic object.
   ///
   /// \param ShouldOwnClient true if the diagnostic object should take
   /// ownership of \c client.
   void setClient(DiagnosticConsumer *client, bool ShouldOwnClient = true);
 
-  /// \brief Specify a limit for the number of errors we should
+  /// Specify a limit for the number of errors we should
   /// emit before giving up.
   ///
   /// Zero disables the limit.
   void setErrorLimit(unsigned Limit) { ErrorLimit = Limit; }
   
-  /// \brief Specify the maximum number of template instantiation
+  /// Specify the maximum number of template instantiation
   /// notes to emit along with a given diagnostic.
   void setTemplateBacktraceLimit(unsigned Limit) {
     TemplateBacktraceLimit = Limit;
   }
 
-  /// \brief Retrieve the maximum number of template instantiation
+  /// Retrieve the maximum number of template instantiation
   /// notes to emit along with a given diagnostic.
   unsigned getTemplateBacktraceLimit() const {
     return TemplateBacktraceLimit;
   }
 
-  /// \brief Specify the maximum number of constexpr evaluation
+  /// Specify the maximum number of constexpr evaluation
   /// notes to emit along with a given diagnostic.
   void setConstexprBacktraceLimit(unsigned Limit) {
     ConstexprBacktraceLimit = Limit;
   }
 
-  /// \brief Retrieve the maximum number of constexpr evaluation
+  /// Retrieve the maximum number of constexpr evaluation
   /// notes to emit along with a given diagnostic.
   unsigned getConstexprBacktraceLimit() const {
     return ConstexprBacktraceLimit;
   }
 
-  /// \brief When set to true, any unmapped warnings are ignored.
+  /// When set to true, any unmapped warnings are ignored.
   ///
   /// If this and WarningsAsErrors are both set, then this one wins.
   void setIgnoreAllWarnings(bool Val) {
@@ -591,7 +591,7 @@
     return GetCurDiagState()->IgnoreAllWarnings;
   }
 
-  /// \brief When set to true, any unmapped ignored warnings are no longer
+  /// When set to true, any unmapped ignored warnings are no longer
   /// ignored.
   ///
   /// If this and IgnoreAllWarnings are both set, then that one wins.
@@ -602,7 +602,7 @@
     return GetCurDiagState()->EnableAllWarnings;
   }
 
-  /// \brief When set to true, any warnings reported are issued as errors.
+  /// When set to true, any warnings reported are issued as errors.
   void setWarningsAsErrors(bool Val) {
     GetCurDiagState()->WarningsAsErrors = Val;
   }
@@ -610,15 +610,15 @@
     return GetCurDiagState()->WarningsAsErrors;
   }
 
-  /// \brief When set to true, any error reported is made a fatal error.
+  /// When set to true, any error reported is made a fatal error.
   void setErrorsAsFatal(bool Val) { GetCurDiagState()->ErrorsAsFatal = Val; }
   bool getErrorsAsFatal() const { return GetCurDiagState()->ErrorsAsFatal; }
 
-  /// \brief When set to true (the default), suppress further diagnostics after
+  /// When set to true (the default), suppress further diagnostics after
   /// a fatal error.
   void setSuppressAfterFatalError(bool Val) { SuppressAfterFatalError = Val; }
 
-  /// \brief When set to true mask warnings that come from system headers.
+  /// When set to true mask warnings that come from system headers.
   void setSuppressSystemWarnings(bool Val) {
     GetCurDiagState()->SuppressSystemWarnings = Val;
   }
@@ -626,7 +626,7 @@
     return GetCurDiagState()->SuppressSystemWarnings;
   }
 
-  /// \brief Suppress all diagnostics, to silence the front end when we 
+  /// Suppress all diagnostics, to silence the front end when we 
   /// know that we don't want any more diagnostics to be passed along to the
   /// client
   void setSuppressAllDiagnostics(bool Val = true) { 
@@ -634,22 +634,22 @@
   }
   bool getSuppressAllDiagnostics() const { return SuppressAllDiagnostics; }
 
-  /// \brief Set type eliding, to skip outputting same types occurring in
+  /// Set type eliding, to skip outputting same types occurring in
   /// template types.
   void setElideType(bool Val = true) { ElideType = Val; }
   bool getElideType() { return ElideType; }
  
-  /// \brief Set tree printing, to outputting the template difference in a
+  /// Set tree printing, to outputting the template difference in a
   /// tree format.
   void setPrintTemplateTree(bool Val = false) { PrintTemplateTree = Val; }
   bool getPrintTemplateTree() { return PrintTemplateTree; }
  
-  /// \brief Set color printing, so the type diffing will inject color markers
+  /// Set color printing, so the type diffing will inject color markers
   /// into the output.
   void setShowColors(bool Val = false) { ShowColors = Val; }
   bool getShowColors() { return ShowColors; }
 
-  /// \brief Specify which overload candidates to show when overload resolution
+  /// Specify which overload candidates to show when overload resolution
   /// fails.
   ///
   /// By default, we show all candidates.
@@ -658,7 +658,7 @@
   }
   OverloadsShown getShowOverloads() const { return ShowOverloads; }
   
-  /// \brief Pretend that the last diagnostic issued was ignored, so any
+  /// Pretend that the last diagnostic issued was ignored, so any
   /// subsequent notes will be suppressed, or restore a prior ignoring
   /// state after ignoring some diagnostics and their notes, possibly in
   /// the middle of another diagnostic.
@@ -670,14 +670,14 @@
     LastDiagLevel = Ignored ? DiagnosticIDs::Ignored : DiagnosticIDs::Warning;
   }
 
-  /// \brief Determine whether the previous diagnostic was ignored. This can
+  /// Determine whether the previous diagnostic was ignored. This can
   /// be used by clients that want to determine whether notes attached to a
   /// diagnostic will be suppressed.
   bool isLastDiagnosticIgnored() const {
     return LastDiagLevel == DiagnosticIDs::Ignored;
   }
 
-  /// \brief Controls whether otherwise-unmapped extension diagnostics are
+  /// Controls whether otherwise-unmapped extension diagnostics are
   /// mapped onto ignore/warning/error.
   ///
   /// This corresponds to the GCC -pedantic and -pedantic-errors option.
@@ -688,7 +688,7 @@
     return GetCurDiagState()->ExtBehavior;
   }
 
-  /// \brief Counter bumped when an __extension__  block is/ encountered.
+  /// Counter bumped when an __extension__  block is/ encountered.
   ///
   /// When non-zero, all extension diagnostics are entirely silenced, no
   /// matter how they are mapped.
@@ -696,7 +696,7 @@
   void DecrementAllExtensionsSilenced() { --AllExtensionsSilenced; }
   bool hasAllExtensionsSilenced() { return AllExtensionsSilenced != 0; }
 
-  /// \brief This allows the client to specify that certain warnings are
+  /// This allows the client to specify that certain warnings are
   /// ignored.
   ///
   /// Notes can never be mapped, errors can only be mapped to fatal, and
@@ -706,7 +706,7 @@
   /// take affect. It can be null if we are setting the latest state.
   void setSeverity(diag::kind Diag, diag::Severity Map, SourceLocation Loc);
 
-  /// \brief Change an entire diagnostic group (e.g. "unknown-pragmas") to
+  /// Change an entire diagnostic group (e.g. "unknown-pragmas") to
   /// have the specified mapping.
   ///
   /// \returns true (and ignores the request) if "Group" was unknown, false
@@ -721,21 +721,21 @@
                            diag::Severity Map,
                            SourceLocation Loc = SourceLocation());
 
-  /// \brief Set the warning-as-error flag for the given diagnostic group.
+  /// Set the warning-as-error flag for the given diagnostic group.
   ///
   /// This function always only operates on the current diagnostic state.
   ///
   /// \returns True if the given group is unknown, false otherwise.
   bool setDiagnosticGroupWarningAsError(StringRef Group, bool Enabled);
 
-  /// \brief Set the error-as-fatal flag for the given diagnostic group.
+  /// Set the error-as-fatal flag for the given diagnostic group.
   ///
   /// This function always only operates on the current diagnostic state.
   ///
   /// \returns True if the given group is unknown, false otherwise.
   bool setDiagnosticGroupErrorAsFatal(StringRef Group, bool Enabled);
 
-  /// \brief Add the specified mapping to all diagnostics of the specified
+  /// Add the specified mapping to all diagnostics of the specified
   /// flavor.
   ///
   /// Mainly to be used by -Wno-everything to disable all warnings but allow
@@ -745,14 +745,14 @@
 
   bool hasErrorOccurred() const { return ErrorOccurred; }
 
-  /// \brief Errors that actually prevent compilation, not those that are
+  /// Errors that actually prevent compilation, not those that are
   /// upgraded from a warning by -Werror.
   bool hasUncompilableErrorOccurred() const {
     return UncompilableErrorOccurred;
   }
   bool hasFatalErrorOccurred() const { return FatalErrorOccurred; }
   
-  /// \brief Determine whether any kind of unrecoverable error has occurred.
+  /// Determine whether any kind of unrecoverable error has occurred.
   bool hasUnrecoverableErrorOccurred() const {
     return FatalErrorOccurred || UnrecoverableErrorOccurred;
   }
@@ -763,7 +763,7 @@
     this->NumWarnings = NumWarnings;
   }
 
-  /// \brief Return an ID for a diagnostic with the specified format string and
+  /// Return an ID for a diagnostic with the specified format string and
   /// level.
   ///
   /// If this is the first request for this diagnostic, it is registered and
@@ -777,7 +777,7 @@
                                   StringRef(FormatString, N - 1));
   }
 
-  /// \brief Converts a diagnostic argument (as an intptr_t) into the string
+  /// Converts a diagnostic argument (as an intptr_t) into the string
   /// that represents it.
   void ConvertArgToString(ArgumentKind Kind, intptr_t Val,
                           StringRef Modifier, StringRef Argument,
@@ -793,13 +793,13 @@
     ArgToStringCookie = Cookie;
   }
 
-  /// \brief Note that the prior diagnostic was emitted by some other
+  /// Note that the prior diagnostic was emitted by some other
   /// \c DiagnosticsEngine, and we may be attaching a note to that diagnostic.
   void notePriorDiagnosticFrom(const DiagnosticsEngine &Other) {
     LastDiagLevel = Other.LastDiagLevel;
   }
 
-  /// \brief Reset the state of the diagnostic object to its initial 
+  /// Reset the state of the diagnostic object to its initial 
   /// configuration.
   void Reset();
   
@@ -807,7 +807,7 @@
   // DiagnosticsEngine classification and reporting interfaces.
   //
 
-  /// \brief Determine whether the diagnostic is known to be ignored.
+  /// Determine whether the diagnostic is known to be ignored.
   ///
   /// This can be used to opportunistically avoid expensive checks when it's
   /// known for certain that the diagnostic has been suppressed at the
@@ -820,7 +820,7 @@
            diag::Severity::Ignored;
   }
 
-  /// \brief Based on the way the client configured the DiagnosticsEngine
+  /// Based on the way the client configured the DiagnosticsEngine
   /// object, classify the specified diagnostic ID into a Level, consumable by
   /// the DiagnosticConsumer.
   ///
@@ -834,7 +834,7 @@
     return (Level)Diags->getDiagnosticLevel(DiagID, Loc, *this);
   }
 
-  /// \brief Issue the message to the client.
+  /// Issue the message to the client.
   ///
   /// This actually returns an instance of DiagnosticBuilder which emits the
   /// diagnostics (through @c ProcessDiag) when it is destroyed.
@@ -847,12 +847,12 @@
 
   void Report(const StoredDiagnostic &storedDiag);
 
-  /// \brief Determine whethere there is already a diagnostic in flight.
+  /// Determine whethere there is already a diagnostic in flight.
   bool isDiagnosticInFlight() const {
     return CurDiagID != std::numeric_limits<unsigned>::max();
   }
 
-  /// \brief Set the "delayed" diagnostic that will be emitted once
+  /// Set the "delayed" diagnostic that will be emitted once
   /// the current diagnostic completes.
   ///
   ///  If a diagnostic is already in-flight but the front end must
@@ -876,10 +876,10 @@
   void SetDelayedDiagnostic(unsigned DiagID, StringRef Arg1 = "",
                             StringRef Arg2 = "");
   
-  /// \brief Clear out the current diagnostic.
+  /// Clear out the current diagnostic.
   void Clear() { CurDiagID = std::numeric_limits<unsigned>::max(); }
 
-  /// \brief Return the value associated with this diagnostic flag.
+  /// Return the value associated with this diagnostic flag.
   StringRef getFlagValue() const { return FlagValue; }
 
 private:
@@ -895,20 +895,20 @@
   friend class DiagnosticIDs;
   friend class PartialDiagnostic;
   
-  /// \brief Report the delayed diagnostic.
+  /// Report the delayed diagnostic.
   void ReportDelayed();
 
-  /// \brief The location of the current diagnostic that is in flight.
+  /// The location of the current diagnostic that is in flight.
   SourceLocation CurDiagLoc;
 
-  /// \brief The ID of the current diagnostic that is in flight.
+  /// The ID of the current diagnostic that is in flight.
   ///
   /// This is set to std::numeric_limits<unsigned>::max() when there is no
   /// diagnostic in flight.
   unsigned CurDiagID;
 
   enum {
-    /// \brief The maximum number of arguments we can hold.
+    /// The maximum number of arguments we can hold.
     ///
     /// We currently only support up to 10 arguments (%0-%9).  A single
     /// diagnostic with more than that almost certainly has to be simplified
@@ -916,33 +916,33 @@
     MaxArguments = 10,
   };
 
-  /// \brief The number of entries in Arguments.
+  /// The number of entries in Arguments.
   signed char NumDiagArgs;
 
-  /// \brief Specifies whether an argument is in DiagArgumentsStr or
+  /// Specifies whether an argument is in DiagArgumentsStr or
   /// in DiagArguments.
   ///
   /// This is an array of ArgumentKind::ArgumentKind enum values, one for each
   /// argument.
   unsigned char DiagArgumentsKind[MaxArguments];
 
-  /// \brief Holds the values of each string argument for the current
+  /// Holds the values of each string argument for the current
   /// diagnostic.
   ///
   /// This is only used when the corresponding ArgumentKind is ak_std_string.
   std::string DiagArgumentsStr[MaxArguments];
 
-  /// \brief The values for the various substitution positions.
+  /// The values for the various substitution positions.
   ///
   /// This is used when the argument is not an std::string.  The specific
   /// value is mangled into an intptr_t and the interpretation depends on
   /// exactly what sort of argument kind it is.
   intptr_t DiagArgumentsVal[MaxArguments];
 
-  /// \brief The list of ranges added to this diagnostic.
+  /// The list of ranges added to this diagnostic.
   SmallVector<CharSourceRange, 8> DiagRanges;
 
-  /// \brief If valid, provides a hint with some code to insert, remove,
+  /// If valid, provides a hint with some code to insert, remove,
   /// or modify at a particular position.
   SmallVector<FixItHint, 8> DiagFixItHints;
 
@@ -961,7 +961,7 @@
     return Mapping;
   }
 
-  /// \brief Used to report a diagnostic that is finally fully formed.
+  /// Used to report a diagnostic that is finally fully formed.
   ///
   /// \returns true if the diagnostic was emitted, false if it was suppressed.
   bool ProcessDiag() {
@@ -980,7 +980,7 @@
   // Sema::Diag() patterns.
   friend class Sema;
 
-  /// \brief Emit the current diagnostic and clear the diagnostic state.
+  /// Emit the current diagnostic and clear the diagnostic state.
   ///
   /// \param Force Emit the diagnostic regardless of suppression settings.
   bool EmitCurrentDiagnostic(bool Force = false);
@@ -992,7 +992,7 @@
   /// @}
 };
 
-/// \brief RAII class that determines when any errors have occurred
+/// RAII class that determines when any errors have occurred
 /// between the time the instance was created and the time it was
 /// queried.
 class DiagnosticErrorTrap {
@@ -1004,19 +1004,19 @@
   explicit DiagnosticErrorTrap(DiagnosticsEngine &Diag)
       : Diag(Diag) { reset(); }
 
-  /// \brief Determine whether any errors have occurred since this
+  /// Determine whether any errors have occurred since this
   /// object instance was created.
   bool hasErrorOccurred() const {
     return Diag.TrapNumErrorsOccurred > NumErrors;
   }
 
-  /// \brief Determine whether any unrecoverable errors have occurred since this
+  /// Determine whether any unrecoverable errors have occurred since this
   /// object instance was created.
   bool hasUnrecoverableErrorOccurred() const {
     return Diag.TrapNumUnrecoverableErrorsOccurred > NumUnrecoverableErrors;
   }
 
-  /// \brief Set to initial state of "no errors occurred".
+  /// Set to initial state of "no errors occurred".
   void reset() {
     NumErrors = Diag.TrapNumErrorsOccurred;
     NumUnrecoverableErrors = Diag.TrapNumUnrecoverableErrorsOccurred;
@@ -1027,7 +1027,7 @@
 // DiagnosticBuilder
 //===----------------------------------------------------------------------===//
 
-/// \brief A little helper class used to produce diagnostics.
+/// A little helper class used to produce diagnostics.
 ///
 /// This is constructed by the DiagnosticsEngine::Report method, and
 /// allows insertion of extra information (arguments and source ranges) into
@@ -1046,14 +1046,14 @@
   mutable DiagnosticsEngine *DiagObj = nullptr;
   mutable unsigned NumArgs = 0;
 
-  /// \brief Status variable indicating if this diagnostic is still active.
+  /// Status variable indicating if this diagnostic is still active.
   ///
   // NOTE: This field is redundant with DiagObj (IsActive iff (DiagObj == 0)),
   // but LLVM is not currently smart enough to eliminate the null check that
   // Emit() would end up with if we used that as our status variable.
   mutable bool IsActive = false;
 
-  /// \brief Flag indicating that this diagnostic is being emitted via a
+  /// Flag indicating that this diagnostic is being emitted via a
   /// call to ForceEmit.
   mutable bool IsForceEmit = false;
 
@@ -1071,17 +1071,17 @@
     DiagObj->NumDiagArgs = NumArgs;
   }
 
-  /// \brief Clear out the current diagnostic.
+  /// Clear out the current diagnostic.
   void Clear() const {
     DiagObj = nullptr;
     IsActive = false;
     IsForceEmit = false;
   }
 
-  /// \brief Determine whether this diagnostic is still active.
+  /// Determine whether this diagnostic is still active.
   bool isActive() const { return IsActive; }
 
-  /// \brief Force the diagnostic builder to emit the diagnostic now.
+  /// Force the diagnostic builder to emit the diagnostic now.
   ///
   /// Once this function has been called, the DiagnosticBuilder object
   /// should not be used again before it is destroyed.
@@ -1119,23 +1119,23 @@
 
   DiagnosticBuilder &operator=(const DiagnosticBuilder &) = delete;
 
-  /// \brief Emits the diagnostic.
+  /// Emits the diagnostic.
   ~DiagnosticBuilder() {
     Emit();
   }
 
-  /// \brief Retrieve an empty diagnostic builder.
+  /// Retrieve an empty diagnostic builder.
   static DiagnosticBuilder getEmpty() {
     return {};
   }
 
-  /// \brief Forces the diagnostic to be emitted.
+  /// Forces the diagnostic to be emitted.
   const DiagnosticBuilder &setForceEmit() const {
     IsForceEmit = true;
     return *this;
   }
 
-  /// \brief Conversion of DiagnosticBuilder to bool always returns \c true.
+  /// Conversion of DiagnosticBuilder to bool always returns \c true.
   ///
   /// This allows is to be used in boolean error contexts (where \c true is
   /// used to indicate that an error has occurred), like:
@@ -1180,7 +1180,7 @@
   explicit AddFlagValue(StringRef V) : Val(V) {}
 };
 
-/// \brief Register a value for the flag in the current diagnostic. This
+/// Register a value for the flag in the current diagnostic. This
 /// value will be shown as the suffix "=value" after the flag name. It is
 /// useful in cases where the diagnostic flag accepts values (e.g.,
 /// -Rpass or -Wframe-larger-than).
@@ -1329,7 +1329,7 @@
 
   unsigned getNumArgs() const { return DiagObj->NumDiagArgs; }
 
-  /// \brief Return the kind of the specified index.
+  /// Return the kind of the specified index.
   ///
   /// Based on the kind of argument, the accessors below can be used to get
   /// the value.
@@ -1340,7 +1340,7 @@
     return (DiagnosticsEngine::ArgumentKind)DiagObj->DiagArgumentsKind[Idx];
   }
 
-  /// \brief Return the provided argument string specified by \p Idx.
+  /// Return the provided argument string specified by \p Idx.
   /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_std_string
   const std::string &getArgStdStr(unsigned Idx) const {
     assert(getArgKind(Idx) == DiagnosticsEngine::ak_std_string &&
@@ -1348,7 +1348,7 @@
     return DiagObj->DiagArgumentsStr[Idx];
   }
 
-  /// \brief Return the specified C string argument.
+  /// Return the specified C string argument.
   /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_c_string
   const char *getArgCStr(unsigned Idx) const {
     assert(getArgKind(Idx) == DiagnosticsEngine::ak_c_string &&
@@ -1356,7 +1356,7 @@
     return reinterpret_cast<const char*>(DiagObj->DiagArgumentsVal[Idx]);
   }
 
-  /// \brief Return the specified signed integer argument.
+  /// Return the specified signed integer argument.
   /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_sint
   int getArgSInt(unsigned Idx) const {
     assert(getArgKind(Idx) == DiagnosticsEngine::ak_sint &&
@@ -1364,7 +1364,7 @@
     return (int)DiagObj->DiagArgumentsVal[Idx];
   }
 
-  /// \brief Return the specified unsigned integer argument.
+  /// Return the specified unsigned integer argument.
   /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_uint
   unsigned getArgUInt(unsigned Idx) const {
     assert(getArgKind(Idx) == DiagnosticsEngine::ak_uint &&
@@ -1372,7 +1372,7 @@
     return (unsigned)DiagObj->DiagArgumentsVal[Idx];
   }
 
-  /// \brief Return the specified IdentifierInfo argument.
+  /// Return the specified IdentifierInfo argument.
   /// \pre getArgKind(Idx) == DiagnosticsEngine::ak_identifierinfo
   const IdentifierInfo *getArgIdentifier(unsigned Idx) const {
     assert(getArgKind(Idx) == DiagnosticsEngine::ak_identifierinfo &&
@@ -1380,7 +1380,7 @@
     return reinterpret_cast<IdentifierInfo*>(DiagObj->DiagArgumentsVal[Idx]);
   }
 
-  /// \brief Return the specified non-string argument in an opaque form.
+  /// Return the specified non-string argument in an opaque form.
   /// \pre getArgKind(Idx) != DiagnosticsEngine::ak_std_string
   intptr_t getRawArg(unsigned Idx) const {
     assert(getArgKind(Idx) != DiagnosticsEngine::ak_std_string &&
@@ -1388,7 +1388,7 @@
     return DiagObj->DiagArgumentsVal[Idx];
   }
 
-  /// \brief Return the number of source ranges associated with this diagnostic.
+  /// Return the number of source ranges associated with this diagnostic.
   unsigned getNumRanges() const {
     return DiagObj->DiagRanges.size();
   }
@@ -1399,7 +1399,7 @@
     return DiagObj->DiagRanges[Idx];
   }
 
-  /// \brief Return an array reference for this diagnostic's ranges.
+  /// Return an array reference for this diagnostic's ranges.
   ArrayRef<CharSourceRange> getRanges() const {
     return DiagObj->DiagRanges;
   }
@@ -1417,20 +1417,20 @@
     return DiagObj->DiagFixItHints;
   }
 
-  /// \brief Format this diagnostic into a string, substituting the
+  /// Format this diagnostic into a string, substituting the
   /// formal arguments into the %0 slots.
   ///
   /// The result is appended onto the \p OutStr array.
   void FormatDiagnostic(SmallVectorImpl<char> &OutStr) const;
 
-  /// \brief Format the given format-string into the output buffer using the
+  /// Format the given format-string into the output buffer using the
   /// arguments stored in this diagnostic.
   void FormatDiagnostic(const char *DiagStr, const char *DiagEnd,
                         SmallVectorImpl<char> &OutStr) const;
 };
 
 /**
- * \brief Represents a diagnostic in a form that can be retained until its 
+ * Represents a diagnostic in a form that can be retained until its 
  * corresponding source manager is destroyed. 
  */
 class StoredDiagnostic {
@@ -1451,7 +1451,7 @@
                    ArrayRef<CharSourceRange> Ranges,
                    ArrayRef<FixItHint> Fixits);
 
-  /// \brief Evaluates true when this object stores a diagnostic.
+  /// Evaluates true when this object stores a diagnostic.
   explicit operator bool() const { return !Message.empty(); }
 
   unsigned getID() const { return ID; }
@@ -1482,7 +1482,7 @@
   }
 };
 
-/// \brief Abstract interface, implemented by clients of the front-end, which
+/// Abstract interface, implemented by clients of the front-end, which
 /// formats and prints fully processed diagnostics.
 class DiagnosticConsumer {
 protected:
@@ -1497,7 +1497,7 @@
   unsigned getNumWarnings() const { return NumWarnings; }
   virtual void clear() { NumWarnings = NumErrors = 0; }
 
-  /// \brief Callback to inform the diagnostic client that processing
+  /// Callback to inform the diagnostic client that processing
   /// of a source file is beginning.
   ///
   /// Note that diagnostics may be emitted outside the processing of a source
@@ -1511,25 +1511,25 @@
   virtual void BeginSourceFile(const LangOptions &LangOpts,
                                const Preprocessor *PP = nullptr) {}
 
-  /// \brief Callback to inform the diagnostic client that processing
+  /// Callback to inform the diagnostic client that processing
   /// of a source file has ended.
   ///
   /// The diagnostic client should assume that any objects made available via
   /// BeginSourceFile() are inaccessible.
   virtual void EndSourceFile() {}
 
-  /// \brief Callback to inform the diagnostic client that processing of all
+  /// Callback to inform the diagnostic client that processing of all
   /// source files has ended.
   virtual void finish() {}
 
-  /// \brief Indicates whether the diagnostics handled by this
+  /// Indicates whether the diagnostics handled by this
   /// DiagnosticConsumer should be included in the number of diagnostics
   /// reported by DiagnosticsEngine.
   ///
   /// The default implementation returns true.
   virtual bool IncludeInDiagnosticCounts() const;
 
-  /// \brief Handle this diagnostic, reporting it to the user or
+  /// Handle this diagnostic, reporting it to the user or
   /// capturing it to a log as needed.
   ///
   /// The default implementation just keeps track of the total number of
@@ -1538,7 +1538,7 @@
                                 const Diagnostic &Info);
 };
 
-/// \brief A diagnostic client that ignores all diagnostics.
+/// A diagnostic client that ignores all diagnostics.
 class IgnoringDiagConsumer : public DiagnosticConsumer {
   virtual void anchor();
 
@@ -1548,7 +1548,7 @@
   }
 };
 
-/// \brief Diagnostic consumer that forwards diagnostics along to an
+/// Diagnostic consumer that forwards diagnostics along to an
 /// existing, already-initialized diagnostic consumer.
 ///
 class ForwardingDiagnosticConsumer : public DiagnosticConsumer {
Index: cfe/trunk/include/clang/Basic/DiagnosticError.h
===================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticError.h
+++ cfe/trunk/include/clang/Basic/DiagnosticError.h
@@ -15,7 +15,7 @@
 
 namespace clang {
 
-/// \brief Carries a Clang diagnostic in an llvm::Error.
+/// Carries a Clang diagnostic in an llvm::Error.
 ///
 /// Users should emit the stored diagnostic using the DiagnosticsEngine.
 class DiagnosticError : public llvm::ErrorInfo<DiagnosticError> {
Index: cfe/trunk/include/clang/Basic/DiagnosticIDs.h
===================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticIDs.h
+++ cfe/trunk/include/clang/Basic/DiagnosticIDs.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the Diagnostic IDs-related interfaces.
+/// Defines the Diagnostic IDs-related interfaces.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -60,7 +60,7 @@
 
     class CustomDiagInfo;
 
-    /// \brief All of the diagnostics that can be emitted by the frontend.
+    /// All of the diagnostics that can be emitted by the frontend.
     typedef unsigned kind;
 
     // Get typedefs for common diagnostics.
@@ -158,25 +158,25 @@
   }
 };
 
-/// \brief Used for handling and querying diagnostic IDs.
+/// Used for handling and querying diagnostic IDs.
 ///
 /// Can be used and shared by multiple Diagnostics for multiple translation units.
 class DiagnosticIDs : public RefCountedBase<DiagnosticIDs> {
 public:
-  /// \brief The level of the diagnostic, after it has been through mapping.
+  /// The level of the diagnostic, after it has been through mapping.
   enum Level {
     Ignored, Note, Remark, Warning, Error, Fatal
   };
 
 private:
-  /// \brief Information for uniquing and looking up custom diags.
+  /// Information for uniquing and looking up custom diags.
   diag::CustomDiagInfo *CustomDiagInfo;
 
 public:
   DiagnosticIDs();
   ~DiagnosticIDs();
 
-  /// \brief Return an ID for a diagnostic with the specified format string and
+  /// Return an ID for a diagnostic with the specified format string and
   /// level.
   ///
   /// If this is the first request for this diagnostic, it is registered and
@@ -191,31 +191,31 @@
   // Diagnostic classification and reporting interfaces.
   //
 
-  /// \brief Given a diagnostic ID, return a description of the issue.
+  /// Given a diagnostic ID, return a description of the issue.
   StringRef getDescription(unsigned DiagID) const;
 
-  /// \brief Return true if the unmapped diagnostic levelof the specified
+  /// Return true if the unmapped diagnostic levelof the specified
   /// diagnostic ID is a Warning or Extension.
   ///
   /// This only works on builtin diagnostics, not custom ones, and is not
   /// legal to call on NOTEs.
   static bool isBuiltinWarningOrExtension(unsigned DiagID);
 
-  /// \brief Return true if the specified diagnostic is mapped to errors by
+  /// Return true if the specified diagnostic is mapped to errors by
   /// default.
   static bool isDefaultMappingAsError(unsigned DiagID);
 
-  /// \brief Determine whether the given built-in diagnostic ID is a Note.
+  /// Determine whether the given built-in diagnostic ID is a Note.
   static bool isBuiltinNote(unsigned DiagID);
 
-  /// \brief Determine whether the given built-in diagnostic ID is for an
+  /// Determine whether the given built-in diagnostic ID is for an
   /// extension of some sort.
   static bool isBuiltinExtensionDiag(unsigned DiagID) {
     bool ignored;
     return isBuiltinExtensionDiag(DiagID, ignored);
   }
   
-  /// \brief Determine whether the given built-in diagnostic ID is for an
+  /// Determine whether the given built-in diagnostic ID is for an
   /// extension of some sort, and whether it is enabled by default.
   ///
   /// This also returns EnabledByDefault, which is set to indicate whether the
@@ -225,53 +225,53 @@
   static bool isBuiltinExtensionDiag(unsigned DiagID, bool &EnabledByDefault);
   
 
-  /// \brief Return the lowest-level warning option that enables the specified
+  /// Return the lowest-level warning option that enables the specified
   /// diagnostic.
   ///
   /// If there is no -Wfoo flag that controls the diagnostic, this returns null.
   static StringRef getWarningOptionForDiag(unsigned DiagID);
   
-  /// \brief Return the category number that a specified \p DiagID belongs to,
+  /// Return the category number that a specified \p DiagID belongs to,
   /// or 0 if no category.
   static unsigned getCategoryNumberForDiag(unsigned DiagID);
 
-  /// \brief Return the number of diagnostic categories.
+  /// Return the number of diagnostic categories.
   static unsigned getNumberOfCategories();
 
-  /// \brief Given a category ID, return the name of the category.
+  /// Given a category ID, return the name of the category.
   static StringRef getCategoryNameFromID(unsigned CategoryID);
   
-  /// \brief Return true if a given diagnostic falls into an ARC diagnostic
+  /// Return true if a given diagnostic falls into an ARC diagnostic
   /// category.
   static bool isARCDiagnostic(unsigned DiagID);
 
-  /// \brief Enumeration describing how the emission of a diagnostic should
+  /// Enumeration describing how the emission of a diagnostic should
   /// be treated when it occurs during C++ template argument deduction.
   enum SFINAEResponse {
-    /// \brief The diagnostic should not be reported, but it should cause
+    /// The diagnostic should not be reported, but it should cause
     /// template argument deduction to fail.
     ///
     /// The vast majority of errors that occur during template argument 
     /// deduction fall into this category.
     SFINAE_SubstitutionFailure,
     
-    /// \brief The diagnostic should be suppressed entirely.
+    /// The diagnostic should be suppressed entirely.
     ///
     /// Warnings generally fall into this category.
     SFINAE_Suppress,
     
-    /// \brief The diagnostic should be reported.
+    /// The diagnostic should be reported.
     ///
     /// The diagnostic should be reported. Various fatal errors (e.g., 
     /// template instantiation depth exceeded) fall into this category.
     SFINAE_Report,
     
-    /// \brief The diagnostic is an access-control diagnostic, which will be
+    /// The diagnostic is an access-control diagnostic, which will be
     /// substitution failures in some contexts and reported in others.
     SFINAE_AccessControl
   };
   
-  /// \brief Determines whether the given built-in diagnostic ID is
+  /// Determines whether the given built-in diagnostic ID is
   /// for an error that is suppressed if it occurs during C++ template
   /// argument deduction.
   ///
@@ -281,30 +281,30 @@
   /// are not SFINAE errors.
   static SFINAEResponse getDiagnosticSFINAEResponse(unsigned DiagID);
 
-  /// \brief Get the string of all diagnostic flags.
+  /// Get the string of all diagnostic flags.
   ///
   /// \returns A list of all diagnostics flags as they would be written in a
   /// command line invocation including their `no-` variants. For example:
   /// `{"-Wempty-body", "-Wno-empty-body", ...}`
   static std::vector<std::string> getDiagnosticFlags();
 
-  /// \brief Get the set of all diagnostic IDs in the group with the given name.
+  /// Get the set of all diagnostic IDs in the group with the given name.
   ///
   /// \param[out] Diags - On return, the diagnostics in the group.
   /// \returns \c true if the given group is unknown, \c false otherwise.
   bool getDiagnosticsInGroup(diag::Flavor Flavor, StringRef Group,
                              SmallVectorImpl<diag::kind> &Diags) const;
 
-  /// \brief Get the set of all diagnostic IDs.
+  /// Get the set of all diagnostic IDs.
   static void getAllDiagnostics(diag::Flavor Flavor,
                                 std::vector<diag::kind> &Diags);
 
-  /// \brief Get the diagnostic option with the closest edit distance to the
+  /// Get the diagnostic option with the closest edit distance to the
   /// given group name.
   static StringRef getNearestOption(diag::Flavor Flavor, StringRef Group);
 
 private:
-  /// \brief Classify the specified diagnostic ID into a Level, consumable by
+  /// Classify the specified diagnostic ID into a Level, consumable by
   /// the DiagnosticClient.
   /// 
   /// The classification is based on the way the client configured the
@@ -320,17 +320,17 @@
   getDiagnosticSeverity(unsigned DiagID, SourceLocation Loc,
                         const DiagnosticsEngine &Diag) const LLVM_READONLY;
 
-  /// \brief Used to report a diagnostic that is finally fully formed.
+  /// Used to report a diagnostic that is finally fully formed.
   ///
   /// \returns \c true if the diagnostic was emitted, \c false if it was
   /// suppressed.
   bool ProcessDiag(DiagnosticsEngine &Diag) const;
 
-  /// \brief Used to emit a diagnostic that is finally fully formed,
+  /// Used to emit a diagnostic that is finally fully formed,
   /// ignoring suppression.
   void EmitDiag(DiagnosticsEngine &Diag, Level DiagLevel) const;
 
-  /// \brief Whether the diagnostic may leave the AST in a state where some
+  /// Whether the diagnostic may leave the AST in a state where some
   /// invariants can break.
   bool isUnrecoverable(unsigned DiagID) const;
 
Index: cfe/trunk/include/clang/Basic/DiagnosticOptions.h
===================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticOptions.h
+++ cfe/trunk/include/clang/Basic/DiagnosticOptions.h
@@ -18,7 +18,7 @@
 
 namespace clang {
 
-/// \brief Specifies which overload candidates to display when overload
+/// Specifies which overload candidates to display when overload
 /// resolution fails.
 enum OverloadsShown : unsigned {
   /// Show all overloads.
@@ -28,7 +28,7 @@
   Ovl_Best
 };
 
-/// \brief A bitmask representing the diagnostic levels used by
+/// A bitmask representing the diagnostic levels used by
 /// VerifyDiagnosticConsumer.
 enum class DiagnosticLevelMask : unsigned {
   None    = 0,
@@ -60,7 +60,7 @@
 
 raw_ostream& operator<<(raw_ostream& Out, DiagnosticLevelMask M);
 
-/// \brief Options for controlling the compiler diagnostics engine.
+/// Options for controlling the compiler diagnostics engine.
 class DiagnosticOptions : public RefCountedBase<DiagnosticOptions>{
 public:
   enum TextDiagnosticFormat { Clang, MSVC, Vi };
@@ -89,10 +89,10 @@
 #include "clang/Basic/DiagnosticOptions.def"
 
 public:
-  /// \brief The file to log diagnostic output to.
+  /// The file to log diagnostic output to.
   std::string DiagnosticLogFile;
   
-  /// \brief The file to serialize diagnostics to (non-appending).
+  /// The file to serialize diagnostics to (non-appending).
   std::string DiagnosticSerializationFile;
 
   /// The list of -W... options used to alter the diagnostic mappings, with the
Index: cfe/trunk/include/clang/Basic/ExceptionSpecificationType.h
===================================================================
--- cfe/trunk/include/clang/Basic/ExceptionSpecificationType.h
+++ cfe/trunk/include/clang/Basic/ExceptionSpecificationType.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the ExceptionSpecificationType enumeration and various
+/// Defines the ExceptionSpecificationType enumeration and various
 /// utility functions.
 ///
 //===----------------------------------------------------------------------===//
@@ -17,7 +17,7 @@
 
 namespace clang {
 
-/// \brief The various types of exception specifications that exist in C++11.
+/// The various types of exception specifications that exist in C++11.
 enum ExceptionSpecificationType {
   EST_None,             ///< no exception specification
   EST_DynamicNone,      ///< throw()
@@ -49,7 +49,7 @@
   return ESpecType == EST_Unevaluated || ESpecType == EST_Uninstantiated;
 }
 
-/// \brief Possible results from evaluation of a noexcept expression.
+/// Possible results from evaluation of a noexcept expression.
 enum CanThrowResult {
   CT_Cannot,
   CT_Dependent,
Index: cfe/trunk/include/clang/Basic/ExpressionTraits.h
===================================================================
--- cfe/trunk/include/clang/Basic/ExpressionTraits.h
+++ cfe/trunk/include/clang/Basic/ExpressionTraits.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines enumerations for expression traits intrinsics.
+/// Defines enumerations for expression traits intrinsics.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/include/clang/Basic/FileManager.h
===================================================================
--- cfe/trunk/include/clang/Basic/FileManager.h
+++ cfe/trunk/include/clang/Basic/FileManager.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::FileManager interface and associated types.
+/// Defines the clang::FileManager interface and associated types.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -40,7 +40,7 @@
 
 class FileSystemStatCache;
 
-/// \brief Cached information about one directory (either on disk or in
+/// Cached information about one directory (either on disk or in
 /// the virtual file system).
 class DirectoryEntry {
   friend class FileManager;
@@ -51,7 +51,7 @@
   StringRef getName() const { return Name; }
 };
 
-/// \brief Cached information about one file (either on disk
+/// Cached information about one file (either on disk
 /// or in the virtual file system).
 ///
 /// If the 'File' member is valid, then this FileEntry has an open file
@@ -70,7 +70,7 @@
   bool InPCH;
   bool IsValid;               // Is this \c FileEntry initialized and valid?
 
-  /// \brief The open file, if it is owned by the \p FileEntry.
+  /// The open file, if it is owned by the \p FileEntry.
   mutable std::unique_ptr<vfs::File> File;
 
 public:
@@ -90,12 +90,12 @@
   bool isInPCH() const { return InPCH; }
   time_t getModificationTime() const { return ModTime; }
 
-  /// \brief Return the directory the file lives in.
+  /// Return the directory the file lives in.
   const DirectoryEntry *getDir() const { return Dir; }
 
   bool operator<(const FileEntry &RHS) const { return UniqueID < RHS.UniqueID; }
 
-  /// \brief Check whether the file is a named pipe (and thus can't be opened by
+  /// Check whether the file is a named pipe (and thus can't be opened by
   /// the native FileManager methods).
   bool isNamedPipe() const { return IsNamedPipe; }
 
@@ -106,7 +106,7 @@
 
 struct FileData;
 
-/// \brief Implements support for file system lookup, file system caching,
+/// Implements support for file system lookup, file system caching,
 /// and directory search management.
 ///
 /// This also handles more advanced properties, such as uniquing files based
@@ -117,21 +117,21 @@
   IntrusiveRefCntPtr<vfs::FileSystem> FS;
   FileSystemOptions FileSystemOpts;
 
-  /// \brief Cache for existing real directories.
+  /// Cache for existing real directories.
   std::map<llvm::sys::fs::UniqueID, DirectoryEntry> UniqueRealDirs;
 
-  /// \brief Cache for existing real files.
+  /// Cache for existing real files.
   std::map<llvm::sys::fs::UniqueID, FileEntry> UniqueRealFiles;
 
-  /// \brief The virtual directories that we have allocated.
+  /// The virtual directories that we have allocated.
   ///
   /// For each virtual file (e.g. foo/bar/baz.cpp), we add all of its parent
   /// directories (foo/ and foo/bar/) here.
   SmallVector<std::unique_ptr<DirectoryEntry>, 4> VirtualDirectoryEntries;
-  /// \brief The virtual files that we have allocated.
+  /// The virtual files that we have allocated.
   SmallVector<std::unique_ptr<FileEntry>, 4> VirtualFileEntries;
 
-  /// \brief A cache that maps paths to directory entries (either real or
+  /// A cache that maps paths to directory entries (either real or
   /// virtual) we have looked up
   ///
   /// The actual Entries for real directories/files are
@@ -141,19 +141,19 @@
   ///
   llvm::StringMap<DirectoryEntry*, llvm::BumpPtrAllocator> SeenDirEntries;
 
-  /// \brief A cache that maps paths to file entries (either real or
+  /// A cache that maps paths to file entries (either real or
   /// virtual) we have looked up.
   ///
   /// \see SeenDirEntries
   llvm::StringMap<FileEntry*, llvm::BumpPtrAllocator> SeenFileEntries;
 
-  /// \brief The canonical names of directories.
+  /// The canonical names of directories.
   llvm::DenseMap<const DirectoryEntry *, llvm::StringRef> CanonicalDirNames;
 
-  /// \brief Storage for canonical names that we have computed.
+  /// Storage for canonical names that we have computed.
   llvm::BumpPtrAllocator CanonicalNameStorage;
 
-  /// \brief Each FileEntry we create is assigned a unique ID #.
+  /// Each FileEntry we create is assigned a unique ID #.
   ///
   unsigned NextFileUID;
 
@@ -176,7 +176,7 @@
               IntrusiveRefCntPtr<vfs::FileSystem> FS = nullptr);
   ~FileManager();
 
-  /// \brief Installs the provided FileSystemStatCache object within
+  /// Installs the provided FileSystemStatCache object within
   /// the FileManager.
   ///
   /// Ownership of this object is transferred to the FileManager.
@@ -190,13 +190,13 @@
   void addStatCache(std::unique_ptr<FileSystemStatCache> statCache,
                     bool AtBeginning = false);
 
-  /// \brief Removes the specified FileSystemStatCache object from the manager.
+  /// Removes the specified FileSystemStatCache object from the manager.
   void removeStatCache(FileSystemStatCache *statCache);
 
-  /// \brief Removes all FileSystemStatCache objects from the manager.
+  /// Removes all FileSystemStatCache objects from the manager.
   void clearStatCaches();
 
-  /// \brief Lookup, cache, and verify the specified directory (real or
+  /// Lookup, cache, and verify the specified directory (real or
   /// virtual).
   ///
   /// This returns NULL if the directory doesn't exist.
@@ -206,7 +206,7 @@
   const DirectoryEntry *getDirectory(StringRef DirName,
                                      bool CacheFailure = true);
 
-  /// \brief Lookup, cache, and verify the specified file (real or
+  /// Lookup, cache, and verify the specified file (real or
   /// virtual).
   ///
   /// This returns NULL if the file doesn't exist.
@@ -218,7 +218,7 @@
   const FileEntry *getFile(StringRef Filename, bool OpenFile = false,
                            bool CacheFailure = true);
 
-  /// \brief Returns the current file system options
+  /// Returns the current file system options
   FileSystemOptions &getFileSystemOpts() { return FileSystemOpts; }
   const FileSystemOptions &getFileSystemOpts() const { return FileSystemOpts; }
 
@@ -226,14 +226,14 @@
     return FS;
   }
 
-  /// \brief Retrieve a file entry for a "virtual" file that acts as
+  /// Retrieve a file entry for a "virtual" file that acts as
   /// if there were a file with the given name on disk.
   ///
   /// The file itself is not accessed.
   const FileEntry *getVirtualFile(StringRef Filename, off_t Size,
                                   time_t ModificationTime);
 
-  /// \brief Open the specified file as a MemoryBuffer, returning a new
+  /// Open the specified file as a MemoryBuffer, returning a new
   /// MemoryBuffer if successful, otherwise returning null.
   llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
   getBufferForFile(const FileEntry *Entry, bool isVolatile = false,
@@ -241,7 +241,7 @@
   llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
   getBufferForFile(StringRef Filename);
 
-  /// \brief Get the 'stat' information for the given \p Path.
+  /// Get the 'stat' information for the given \p Path.
   ///
   /// If the path is relative, it will be resolved against the WorkingDir of the
   /// FileManager's FileSystemOptions.
@@ -250,10 +250,10 @@
   bool getNoncachedStatValue(StringRef Path,
                              vfs::Status &Result);
 
-  /// \brief Remove the real file \p Entry from the cache.
+  /// Remove the real file \p Entry from the cache.
   void invalidateCache(const FileEntry *Entry);
 
-  /// \brief If path is not absolute and FileSystemOptions set the working
+  /// If path is not absolute and FileSystemOptions set the working
   /// directory, the path is modified to be relative to the given
   /// working directory.
   /// \returns true if \c path changed.
@@ -264,17 +264,17 @@
   /// \returns true if \c Path changed to absolute.
   bool makeAbsolutePath(SmallVectorImpl<char> &Path) const;
 
-  /// \brief Produce an array mapping from the unique IDs assigned to each
+  /// Produce an array mapping from the unique IDs assigned to each
   /// file to the corresponding FileEntry pointer.
   void GetUniqueIDMapping(
                     SmallVectorImpl<const FileEntry *> &UIDToFiles) const;
 
-  /// \brief Modifies the size and modification time of a previously created
+  /// Modifies the size and modification time of a previously created
   /// FileEntry. Use with caution.
   static void modifyFileEntry(FileEntry *File, off_t Size,
                               time_t ModificationTime);
 
-  /// \brief Retrieve the canonical name for a given directory.
+  /// Retrieve the canonical name for a given directory.
   ///
   /// This is a very expensive operation, despite its results being cached,
   /// and should only be used when the physical layout of the file system is
Index: cfe/trunk/include/clang/Basic/FileSystemOptions.h
===================================================================
--- cfe/trunk/include/clang/Basic/FileSystemOptions.h
+++ cfe/trunk/include/clang/Basic/FileSystemOptions.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::FileSystemOptions interface.
+/// Defines the clang::FileSystemOptions interface.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -19,10 +19,10 @@
 
 namespace clang {
 
-/// \brief Keeps track of options that affect how file operations are performed.
+/// Keeps track of options that affect how file operations are performed.
 class FileSystemOptions {
 public:
-  /// \brief If set, paths are resolved as if the working directory was
+  /// If set, paths are resolved as if the working directory was
   /// set to the value of WorkingDir.
   std::string WorkingDir;
 };
Index: cfe/trunk/include/clang/Basic/FileSystemStatCache.h
===================================================================
--- cfe/trunk/include/clang/Basic/FileSystemStatCache.h
+++ cfe/trunk/include/clang/Basic/FileSystemStatCache.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the FileSystemStatCache interface.
+/// Defines the FileSystemStatCache interface.
 //
 //===----------------------------------------------------------------------===//
 
@@ -51,7 +51,7 @@
   FileData() = default;
 };
 
-/// \brief Abstract interface for introducing a FileManager cache for 'stat'
+/// Abstract interface for introducing a FileManager cache for 'stat'
 /// system calls, which is used by precompiled and pretokenized headers to
 /// improve performance.
 class FileSystemStatCache {
@@ -71,7 +71,7 @@
     CacheMissing
   };
 
-  /// \brief Get the 'stat' information for the specified path, using the cache
+  /// Get the 'stat' information for the specified path, using the cache
   /// to accelerate it if possible.
   ///
   /// \returns \c true if the path does not exist or \c false if it exists.
@@ -85,16 +85,16 @@
                   std::unique_ptr<vfs::File> *F, FileSystemStatCache *Cache,
                   vfs::FileSystem &FS);
 
-  /// \brief Sets the next stat call cache in the chain of stat caches.
+  /// Sets the next stat call cache in the chain of stat caches.
   /// Takes ownership of the given stat cache.
   void setNextStatCache(std::unique_ptr<FileSystemStatCache> Cache) {
     NextStatCache = std::move(Cache);
   }
   
-  /// \brief Retrieve the next stat call cache in the chain.
+  /// Retrieve the next stat call cache in the chain.
   FileSystemStatCache *getNextStatCache() { return NextStatCache.get(); }
   
-  /// \brief Retrieve the next stat call cache in the chain, transferring
+  /// Retrieve the next stat call cache in the chain, transferring
   /// ownership of this cache (and, transitively, all of the remaining caches)
   /// to the caller.
   std::unique_ptr<FileSystemStatCache> takeNextStatCache() {
@@ -120,12 +120,12 @@
   }
 };
 
-/// \brief A stat "cache" that can be used by FileManager to keep
+/// A stat "cache" that can be used by FileManager to keep
 /// track of the results of stat() calls that occur throughout the
 /// execution of the front end.
 class MemorizeStatCalls : public FileSystemStatCache {
 public:
-  /// \brief The set of stat() calls that have been seen.
+  /// The set of stat() calls that have been seen.
   llvm::StringMap<FileData, llvm::BumpPtrAllocator> StatCalls;
 
   using iterator =
Index: cfe/trunk/include/clang/Basic/IdentifierTable.h
===================================================================
--- cfe/trunk/include/clang/Basic/IdentifierTable.h
+++ cfe/trunk/include/clang/Basic/IdentifierTable.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::IdentifierInfo, clang::IdentifierTable, and
+/// Defines the clang::IdentifierInfo, clang::IdentifierTable, and
 /// clang::Selector interfaces.
 //
 //===----------------------------------------------------------------------===//
@@ -39,7 +39,7 @@
 class MultiKeywordSelector;
 class SourceLocation;
 
-/// \brief A simple pair of identifier info and location.
+/// A simple pair of identifier info and location.
 using IdentifierLocPair = std::pair<IdentifierInfo *, SourceLocation>;
 
 /// One of these records is kept for each identifier that
@@ -89,7 +89,7 @@
   IdentifierInfo(const IdentifierInfo &) = delete;
   IdentifierInfo &operator=(const IdentifierInfo &) = delete;
 
-  /// \brief Return true if this is the identifier for the specified string.
+  /// Return true if this is the identifier for the specified string.
   ///
   /// This is intended to be used for string literals only: II->isStr("foo").
   template <std::size_t StrLen>
@@ -98,13 +98,13 @@
            memcmp(getNameStart(), Str, StrLen-1) == 0;
   }
 
-  /// \brief Return true if this is the identifier for the specified StringRef.
+  /// Return true if this is the identifier for the specified StringRef.
   bool isStr(llvm::StringRef Str) const {
     llvm::StringRef ThisStr(getNameStart(), getLength());
     return ThisStr == Str;
   }
 
-  /// \brief Return the beginning of the actual null-terminated string for this
+  /// Return the beginning of the actual null-terminated string for this
   /// identifier.
   const char *getNameStart() const {
     if (Entry) return Entry->getKeyData();
@@ -118,7 +118,7 @@
     return ((const actualtype*) this)->second;
   }
 
-  /// \brief Efficiently return the length of this identifier info.
+  /// Efficiently return the length of this identifier info.
   unsigned getLength() const {
     if (Entry) return Entry->getKeyLength();
     // FIXME: This is gross. It would be best not to embed specific details
@@ -132,12 +132,12 @@
     return (((unsigned) p[0]) | (((unsigned) p[1]) << 8)) - 1;
   }
 
-  /// \brief Return the actual identifier string.
+  /// Return the actual identifier string.
   StringRef getName() const {
     return StringRef(getNameStart(), getLength());
   }
 
-  /// \brief Return true if this identifier is \#defined to some other value.
+  /// Return true if this identifier is \#defined to some other value.
   /// \note The current definition may be in a module and not currently visible.
   bool hasMacroDefinition() const {
     return HasMacro;
@@ -153,7 +153,7 @@
       RecomputeNeedsHandleIdentifier();
     }
   }
-  /// \brief Returns true if this identifier was \#defined to some value at any
+  /// Returns true if this identifier was \#defined to some value at any
   /// moment. In this case there should be an entry for the identifier in the
   /// macro history table in Preprocessor.
   bool hadMacroDefinition() const {
@@ -165,10 +165,10 @@
   /// tokens.
   tok::TokenKind getTokenID() const { return (tok::TokenKind)TokenID; }
 
-  /// \brief True if revertTokenIDToIdentifier() was called.
+  /// True if revertTokenIDToIdentifier() was called.
   bool hasRevertedTokenIDToIdentifier() const { return RevertedTokenID; }
 
-  /// \brief Revert TokenID to tok::identifier; used for GNU libstdc++ 4.2
+  /// Revert TokenID to tok::identifier; used for GNU libstdc++ 4.2
   /// compatibility.
   ///
   /// TokenID is normally read-only but there are 2 instances where we revert it
@@ -185,12 +185,12 @@
     RevertedTokenID = false;
   }
 
-  /// \brief Return the preprocessor keyword ID for this identifier.
+  /// Return the preprocessor keyword ID for this identifier.
   ///
   /// For example, "define" will return tok::pp_define.
   tok::PPKeywordKind getPPKeywordID() const;
 
-  /// \brief Return the Objective-C keyword ID for the this identifier.
+  /// Return the Objective-C keyword ID for the this identifier.
   ///
   /// For example, 'class' will return tok::objc_class if ObjC is enabled.
   tok::ObjCKeywordKind getObjCKeywordID() const {
@@ -201,19 +201,19 @@
   }
   void setObjCKeywordID(tok::ObjCKeywordKind ID) { ObjCOrBuiltinID = ID; }
 
-  /// \brief True if setNotBuiltin() was called.
+  /// True if setNotBuiltin() was called.
   bool hasRevertedBuiltin() const {
     return ObjCOrBuiltinID == tok::NUM_OBJC_KEYWORDS;
   }
 
-  /// \brief Revert the identifier to a non-builtin identifier. We do this if
+  /// Revert the identifier to a non-builtin identifier. We do this if
   /// the name of a known builtin library function is used to declare that
   /// function, but an unexpected type is specified.
   void revertBuiltin() {
     setBuiltinID(0);
   }
 
-  /// \brief Return a value indicating whether this is a builtin function.
+  /// Return a value indicating whether this is a builtin function.
   ///
   /// 0 is not-built-in. 1+ are specific builtin functions.
   unsigned getBuiltinID() const {
@@ -267,7 +267,7 @@
       RecomputeNeedsHandleIdentifier();
   }
 
-  /// \brief Return true if this token has been poisoned.
+  /// Return true if this token has been poisoned.
   bool isPoisoned() const { return IsPoisoned; }
 
   /// isCPlusPlusOperatorKeyword/setIsCPlusPlusOperatorKeyword controls whether
@@ -277,10 +277,10 @@
   }
   bool isCPlusPlusOperatorKeyword() const { return IsCPPOperatorKeyword; }
 
-  /// \brief Return true if this token is a keyword in the specified language.
+  /// Return true if this token is a keyword in the specified language.
   bool isKeyword(const LangOptions &LangOpts) const;
 
-  /// \brief Return true if this token is a C++ keyword in the specified
+  /// Return true if this token is a C++ keyword in the specified
   /// language.
   bool isCPlusPlusKeyword(const LangOptions &LangOpts) const;
 
@@ -290,48 +290,48 @@
   T *getFETokenInfo() const { return static_cast<T*>(FETokenInfo); }
   void setFETokenInfo(void *T) { FETokenInfo = T; }
 
-  /// \brief Return true if the Preprocessor::HandleIdentifier must be called
+  /// Return true if the Preprocessor::HandleIdentifier must be called
   /// on a token of this identifier.
   ///
   /// If this returns false, we know that HandleIdentifier will not affect
   /// the token.
   bool isHandleIdentifierCase() const { return NeedsHandleIdentifier; }
 
-  /// \brief Return true if the identifier in its current state was loaded
+  /// Return true if the identifier in its current state was loaded
   /// from an AST file.
   bool isFromAST() const { return IsFromAST; }
 
   void setIsFromAST() { IsFromAST = true; }
 
-  /// \brief Determine whether this identifier has changed since it was loaded
+  /// Determine whether this identifier has changed since it was loaded
   /// from an AST file.
   bool hasChangedSinceDeserialization() const {
     return ChangedAfterLoad;
   }
   
-  /// \brief Note that this identifier has changed since it was loaded from
+  /// Note that this identifier has changed since it was loaded from
   /// an AST file.
   void setChangedSinceDeserialization() {
     ChangedAfterLoad = true;
   }
 
-  /// \brief Determine whether the frontend token information for this
+  /// Determine whether the frontend token information for this
   /// identifier has changed since it was loaded from an AST file.
   bool hasFETokenInfoChangedSinceDeserialization() const {
     return FEChangedAfterLoad;
   }
   
-  /// \brief Note that the frontend token information for this identifier has
+  /// Note that the frontend token information for this identifier has
   /// changed since it was loaded from an AST file.
   void setFETokenInfoChangedSinceDeserialization() {
     FEChangedAfterLoad = true;
   }
 
-  /// \brief Determine whether the information for this identifier is out of
+  /// Determine whether the information for this identifier is out of
   /// date with respect to the external source.
   bool isOutOfDate() const { return OutOfDate; }
   
-  /// \brief Set whether the information for this identifier is out of
+  /// Set whether the information for this identifier is out of
   /// date with respect to the external source.
   void setOutOfDate(bool OOD) {
     OutOfDate = OOD;
@@ -341,10 +341,10 @@
       RecomputeNeedsHandleIdentifier();
   }
   
-  /// \brief Determine whether this is the contextual keyword \c import.
+  /// Determine whether this is the contextual keyword \c import.
   bool isModulesImport() const { return IsModulesImport; }
   
-  /// \brief Set whether this identifier is the contextual keyword \c import.
+  /// Set whether this identifier is the contextual keyword \c import.
   void setModulesImport(bool I) {
     IsModulesImport = I;
     if (I)
@@ -366,7 +366,7 @@
     return getName().startswith("<#") && getName().endswith("#>");
   }
 
-  /// \brief Provide less than operator for lexicographical sorting.
+  /// Provide less than operator for lexicographical sorting.
   bool operator<(const IdentifierInfo &RHS) const {
     return getName() < RHS.getName();
   }
@@ -385,7 +385,7 @@
   }
 };
 
-/// \brief An RAII object for [un]poisoning an identifier within a scope.
+/// An RAII object for [un]poisoning an identifier within a scope.
 ///
 /// \p II is allowed to be null, in which case objects of this type have
 /// no effect.
@@ -406,7 +406,7 @@
   }
 };
 
-/// \brief An iterator that walks over all of the known identifiers
+/// An iterator that walks over all of the known identifiers
 /// in the lookup table.
 ///
 /// Since this iterator uses an abstract interface via virtual
@@ -426,7 +426,7 @@
 
   virtual ~IdentifierIterator();
 
-  /// \brief Retrieve the next string in the identifier table and
+  /// Retrieve the next string in the identifier table and
   /// advances the iterator for the following string.
   ///
   /// \returns The next string in the identifier table. If there is
@@ -434,19 +434,19 @@
   virtual StringRef Next() = 0;
 };
 
-/// \brief Provides lookups to, and iteration over, IdentiferInfo objects.
+/// Provides lookups to, and iteration over, IdentiferInfo objects.
 class IdentifierInfoLookup {
 public:
   virtual ~IdentifierInfoLookup();
 
-  /// \brief Return the IdentifierInfo for the specified named identifier.
+  /// Return the IdentifierInfo for the specified named identifier.
   ///
   /// Unlike the version in IdentifierTable, this returns a pointer instead
   /// of a reference.  If the pointer is null then the IdentifierInfo cannot
   /// be found.
   virtual IdentifierInfo* get(StringRef Name) = 0;
 
-  /// \brief Retrieve an iterator into the set of all identifiers
+  /// Retrieve an iterator into the set of all identifiers
   /// known to this identifier lookup source.
   ///
   /// This routine provides access to all of the identifiers known to
@@ -459,7 +459,7 @@
   virtual IdentifierIterator *getIdentifiers();
 };
 
-/// \brief Implements an efficient mapping from strings to IdentifierInfo nodes.
+/// Implements an efficient mapping from strings to IdentifierInfo nodes.
 ///
 /// This has no other purpose, but this is an extremely performance-critical
 /// piece of the code, as each occurrence of every identifier goes through
@@ -473,20 +473,20 @@
   IdentifierInfoLookup* ExternalLookup;
 
 public:
-  /// \brief Create the identifier table.
+  /// Create the identifier table.
   explicit IdentifierTable(IdentifierInfoLookup *ExternalLookup = nullptr);
 
-  /// \brief Create the identifier table, populating it with info about the
+  /// Create the identifier table, populating it with info about the
   /// language keywords for the language specified by \p LangOpts.
   explicit IdentifierTable(const LangOptions &LangOpts,
                            IdentifierInfoLookup *ExternalLookup = nullptr);
 
-  /// \brief Set the external identifier lookup mechanism.
+  /// Set the external identifier lookup mechanism.
   void setExternalIdentifierLookup(IdentifierInfoLookup *IILookup) {
     ExternalLookup = IILookup;
   }
 
-  /// \brief Retrieve the external identifier lookup object, if any.
+  /// Retrieve the external identifier lookup object, if any.
   IdentifierInfoLookup *getExternalIdentifierLookup() const {
     return ExternalLookup;
   }
@@ -495,7 +495,7 @@
     return HashTable.getAllocator();
   }
 
-  /// \brief Return the identifier token info for the specified named
+  /// Return the identifier token info for the specified named
   /// identifier.
   IdentifierInfo &get(StringRef Name) {
     auto &Entry = *HashTable.insert(std::make_pair(Name, nullptr)).first;
@@ -528,7 +528,7 @@
     return II;
   }
 
-  /// \brief Gets an IdentifierInfo for the given name without consulting
+  /// Gets an IdentifierInfo for the given name without consulting
   ///        external sources.
   ///
   /// This is a version of get() meant for external sources that want to
@@ -563,16 +563,16 @@
   iterator end() const   { return HashTable.end(); }
   unsigned size() const  { return HashTable.size(); }
 
-  /// \brief Print some statistics to stderr that indicate how well the
+  /// Print some statistics to stderr that indicate how well the
   /// hashing is doing.
   void PrintStats() const;
 
-  /// \brief Populate the identifier table with info about the language keywords
+  /// Populate the identifier table with info about the language keywords
   /// for the language specified by \p LangOpts.
   void AddKeywords(const LangOptions &LangOpts);
 };
 
-/// \brief A family of Objective-C methods. 
+/// A family of Objective-C methods. 
 ///
 /// These families have no inherent meaning in the language, but are
 /// nonetheless central enough in the existing implementations to
@@ -590,7 +590,7 @@
 /// explicitly change or remove a method's family.  Therefore the
 /// method's family should be considered the single source of truth.
 enum ObjCMethodFamily {
-  /// \brief No particular method family.
+  /// No particular method family.
   OMF_None,
 
   // Selectors in these families may have arbitrary arity, may be
@@ -622,10 +622,10 @@
 /// InvalidObjCMethodFamily.
 enum { ObjCMethodFamilyBitWidth = 4 };
 
-/// \brief An invalid value of ObjCMethodFamily.
+/// An invalid value of ObjCMethodFamily.
 enum { InvalidObjCMethodFamily = (1 << ObjCMethodFamilyBitWidth) - 1 };
 
-/// \brief A family of Objective-C methods.
+/// A family of Objective-C methods.
 ///
 /// These are family of methods whose result type is initially 'id', but
 /// but are candidate for the result type to be changed to 'instancetype'.
@@ -644,7 +644,7 @@
   SFF_CFString
 };
 
-/// \brief Smart pointer class that efficiently represents Objective-C method
+/// Smart pointer class that efficiently represents Objective-C method
 /// names.
 ///
 /// This class will either point to an IdentifierInfo or a
@@ -717,7 +717,7 @@
     return reinterpret_cast<void*>(InfoPtr);
   }
 
-  /// \brief Determine whether this is the empty selector.
+  /// Determine whether this is the empty selector.
   bool isNull() const { return InfoPtr == 0; }
 
   // Predicates to identify the selector type.
@@ -731,7 +731,7 @@
 
   unsigned getNumArgs() const;
   
-  /// \brief Retrieve the identifier at a given position in the selector.
+  /// Retrieve the identifier at a given position in the selector.
   ///
   /// Note that the identifier pointer returned may be NULL. Clients that only
   /// care about the text of the identifier string, and not the specific, 
@@ -746,7 +746,7 @@
   /// no corresponding identifier.
   IdentifierInfo *getIdentifierInfoForSlot(unsigned argIndex) const;
   
-  /// \brief Retrieve the name at a given position in the selector.
+  /// Retrieve the name at a given position in the selector.
   ///
   /// \param argIndex The index for which we want to retrieve the name.
   /// This index shall be less than \c getNumArgs() unless this is a keyword
@@ -756,14 +756,14 @@
   /// name was supplied.
   StringRef getNameForSlot(unsigned argIndex) const;
   
-  /// \brief Derive the full selector name (e.g. "foo:bar:") and return
+  /// Derive the full selector name (e.g. "foo:bar:") and return
   /// it as an std::string.
   std::string getAsString() const;
 
-  /// \brief Prints the full selector name (e.g. "foo:bar:").
+  /// Prints the full selector name (e.g. "foo:bar:").
   void print(llvm::raw_ostream &OS) const;
 
-  /// \brief Derive the conventional family of this method.
+  /// Derive the conventional family of this method.
   ObjCMethodFamily getMethodFamily() const {
     return getMethodFamilyImpl(*this);
   }
@@ -783,7 +783,7 @@
   static ObjCInstanceTypeFamily getInstTypeMethodFamily(Selector sel);
 };
 
-/// \brief This table allows us to fully hide how we implement
+/// This table allows us to fully hide how we implement
 /// multi-keyword caching.
 class SelectorTable {
   // Actually a SelectorTableImpl
@@ -795,7 +795,7 @@
   SelectorTable &operator=(const SelectorTable &) = delete;
   ~SelectorTable();
 
-  /// \brief Can create any sort of selector.
+  /// Can create any sort of selector.
   ///
   /// \p NumArgs indicates whether this is a no argument selector "foo", a
   /// single argument selector "foo:" or multi-argument "foo:bar:".
@@ -809,16 +809,16 @@
     return Selector(ID, 0);
   }
 
-  /// \brief Return the total amount of memory allocated for managing selectors.
+  /// Return the total amount of memory allocated for managing selectors.
   size_t getTotalMemory() const;
 
-  /// \brief Return the default setter name for the given identifier.
+  /// Return the default setter name for the given identifier.
   ///
   /// This is "set" + \p Name where the initial character of \p Name
   /// has been capitalized.
   static SmallString<64> constructSetterName(StringRef Name);
 
-  /// \brief Return the default setter selector for the given identifier.
+  /// Return the default setter selector for the given identifier.
   ///
   /// This is "set" + \p Name where the initial character of \p Name
   /// has been capitalized.
Index: cfe/trunk/include/clang/Basic/LLVM.h
===================================================================
--- cfe/trunk/include/clang/Basic/LLVM.h
+++ cfe/trunk/include/clang/Basic/LLVM.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Forward-declares and imports various common LLVM datatypes that
+/// Forward-declares and imports various common LLVM datatypes that
 /// clang wants to use unqualified.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/include/clang/Basic/Lambda.h
===================================================================
--- cfe/trunk/include/clang/Basic/Lambda.h
+++ cfe/trunk/include/clang/Basic/Lambda.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines several types used to describe C++ lambda expressions
+/// Defines several types used to describe C++ lambda expressions
 /// that are shared between the parser and AST.
 ///
 //===----------------------------------------------------------------------===//
@@ -19,14 +19,14 @@
 
 namespace clang {
 
-/// \brief The default, if any, capture method for a lambda expression.
+/// The default, if any, capture method for a lambda expression.
 enum LambdaCaptureDefault {
   LCD_None,
   LCD_ByCopy,
   LCD_ByRef
 };
 
-/// \brief The different capture forms in a lambda introducer
+/// The different capture forms in a lambda introducer
 ///
 /// C++11 allows capture of \c this, or of local variables by copy or
 /// by reference.  C++1y also allows "init-capture", where the initializer
Index: cfe/trunk/include/clang/Basic/LangOptions.h
===================================================================
--- cfe/trunk/include/clang/Basic/LangOptions.h
+++ cfe/trunk/include/clang/Basic/LangOptions.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::LangOptions interface.
+/// Defines the clang::LangOptions interface.
 //
 //===----------------------------------------------------------------------===//
 
@@ -45,7 +45,7 @@
 #include "clang/Basic/LangOptions.def"
 };
 
-/// \brief Keeps track of the various options that can be
+/// Keeps track of the various options that can be
 /// enabled, which controls the dialect of C or C++ that is accepted.
 class LangOptions : public LangOptionsBase {
 public:
@@ -138,26 +138,26 @@
   };
 
 public:
-  /// \brief Set of enabled sanitizers.
+  /// Set of enabled sanitizers.
   SanitizerSet Sanitize;
 
-  /// \brief Paths to blacklist files specifying which objects
+  /// Paths to blacklist files specifying which objects
   /// (files, functions, variables) should not be instrumented.
   std::vector<std::string> SanitizerBlacklistFiles;
 
-  /// \brief Paths to the XRay "always instrument" files specifying which
+  /// Paths to the XRay "always instrument" files specifying which
   /// objects (files, functions, variables) should be imbued with the XRay
   /// "always instrument" attribute.
   /// WARNING: This is a deprecated field and will go away in the future.
   std::vector<std::string> XRayAlwaysInstrumentFiles;
 
-  /// \brief Paths to the XRay "never instrument" files specifying which
+  /// Paths to the XRay "never instrument" files specifying which
   /// objects (files, functions, variables) should be imbued with the XRay
   /// "never instrument" attribute.
   /// WARNING: This is a deprecated field and will go away in the future.
   std::vector<std::string> XRayNeverInstrumentFiles;
 
-  /// \brief Paths to the XRay attribute list files, specifying which objects
+  /// Paths to the XRay attribute list files, specifying which objects
   /// (files, functions, variables) should be imbued with the appropriate XRay
   /// attribute(s).
   std::vector<std::string> XRayAttrListFiles;
@@ -166,7 +166,7 @@
 
   std::string ObjCConstantStringClass;
   
-  /// \brief The name of the handler function to be called when -ftrapv is
+  /// The name of the handler function to be called when -ftrapv is
   /// specified.
   ///
   /// If none is specified, abort (GCC-compatible behaviour).
@@ -175,34 +175,34 @@
   /// The module currently being compiled as speficied by -fmodule-name.
   std::string ModuleName;
 
-  /// \brief The name of the current module, of which the main source file
+  /// The name of the current module, of which the main source file
   /// is a part. If CompilingModule is set, we are compiling the interface
   /// of this module, otherwise we are compiling an implementation file of
   /// it. This starts as ModuleName in case -fmodule-name is provided and
   /// changes during compilation to reflect the current module.
   std::string CurrentModule;
 
-  /// \brief The names of any features to enable in module 'requires' decls
+  /// The names of any features to enable in module 'requires' decls
   /// in addition to the hard-coded list in Module.cpp and the target features.
   ///
   /// This list is sorted.
   std::vector<std::string> ModuleFeatures;
 
-  /// \brief Options for parsing comments.
+  /// Options for parsing comments.
   CommentOptions CommentOpts;
 
-  /// \brief A list of all -fno-builtin-* function names (e.g., memset).
+  /// A list of all -fno-builtin-* function names (e.g., memset).
   std::vector<std::string> NoBuiltinFuncs;
 
-  /// \brief Triples of the OpenMP targets that the host code codegen should
+  /// Triples of the OpenMP targets that the host code codegen should
   /// take into account in order to generate accurate offloading descriptors.
   std::vector<llvm::Triple> OMPTargetTriples;
 
-  /// \brief Name of the IR file that contains the result of the OpenMP target
+  /// Name of the IR file that contains the result of the OpenMP target
   /// host code generation.
   std::string OMPHostIRFile;
 
-  /// \brief Indicates whether the front-end is explicitly told that the
+  /// Indicates whether the front-end is explicitly told that the
   /// input is a header file (i.e. -x c-header).
   bool IsHeaderFile = false;
 
@@ -238,15 +238,15 @@
     return MSCompatibilityVersion >= MajorVersion * 10000000U;
   }
 
-  /// \brief Reset all of the options that are not considered when building a
+  /// Reset all of the options that are not considered when building a
   /// module.
   void resetNonModularOptions();
 
-  /// \brief Is this a libc/libm function that is no longer recognized as a
+  /// Is this a libc/libm function that is no longer recognized as a
   /// builtin because a -fno-builtin-* option has been specified?
   bool isNoBuiltinFunc(StringRef Name) const;
 
-  /// \brief True if any ObjC types may have non-trivial lifetime qualifiers.
+  /// True if any ObjC types may have non-trivial lifetime qualifiers.
   bool allowsNonTrivialObjCLifetimeQualifiers() const {
     return ObjCAutoRefCount || ObjCWeak;
   }
@@ -255,11 +255,11 @@
     return (CUDA && CUDAIsDevice) || OpenCL;
   }
 
-  /// \brief Return the OpenCL C or C++ version as a VersionTuple.
+  /// Return the OpenCL C or C++ version as a VersionTuple.
   VersionTuple getOpenCLVersionTuple() const;
 };
 
-/// \brief Floating point control options
+/// Floating point control options
 class FPOptions {
 public:
   FPOptions() : fp_contract(LangOptions::FPC_Off) {}
@@ -297,16 +297,16 @@
   unsigned fp_contract : 2;
 };
 
-/// \brief Describes the kind of translation unit being processed.
+/// Describes the kind of translation unit being processed.
 enum TranslationUnitKind {
-  /// \brief The translation unit is a complete translation unit.
+  /// The translation unit is a complete translation unit.
   TU_Complete,
 
-  /// \brief The translation unit is a prefix to a translation unit, and is
+  /// The translation unit is a prefix to a translation unit, and is
   /// not complete.
   TU_Prefix,
 
-  /// \brief The translation unit is a module.
+  /// The translation unit is a module.
   TU_Module
 };
   
Index: cfe/trunk/include/clang/Basic/LangOptions.def
===================================================================
--- cfe/trunk/include/clang/Basic/LangOptions.def
+++ cfe/trunk/include/clang/Basic/LangOptions.def
@@ -233,7 +233,7 @@
 BENIGN_LANGOPT(SpellChecking , 1, 1, "spell-checking")
 LANGOPT(SinglePrecisionConstants , 1, 0, "treating double-precision floating point constants as single precision constants")
 LANGOPT(FastRelaxedMath , 1, 0, "OpenCL fast relaxed math")
-/// \brief FP_CONTRACT mode (on/off/fast).
+/// FP_CONTRACT mode (on/off/fast).
 ENUM_LANGOPT(DefaultFPContractMode, FPContractModeKind, 2, FPC_Off, "FP contraction type")
 LANGOPT(NoBitFieldTypeAlign , 1, 0, "bit-field type alignment")
 LANGOPT(HexagonQdsp6Compat , 1, 0, "hexagon-qdsp6 backward compatibility")
Index: cfe/trunk/include/clang/Basic/Linkage.h
===================================================================
--- cfe/trunk/include/clang/Basic/Linkage.h
+++ cfe/trunk/include/clang/Basic/Linkage.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the Linkage enumeration and various utility functions.
+/// Defines the Linkage enumeration and various utility functions.
 //
 //===----------------------------------------------------------------------===//
 
@@ -19,19 +19,19 @@
 
 namespace clang {
 
-/// \brief Describes the different kinds of linkage 
+/// Describes the different kinds of linkage 
 /// (C++ [basic.link], C99 6.2.2) that an entity may have.
 enum Linkage : unsigned char {
-  /// \brief No linkage, which means that the entity is unique and
+  /// No linkage, which means that the entity is unique and
   /// can only be referred to from within its scope.
   NoLinkage = 0,
 
-  /// \brief Internal linkage, which indicates that the entity can
+  /// Internal linkage, which indicates that the entity can
   /// be referred to from within the translation unit (but not other
   /// translation units).
   InternalLinkage,
 
-  /// \brief External linkage within a unique namespace. 
+  /// External linkage within a unique namespace. 
   ///
   /// From the language perspective, these entities have external
   /// linkage. However, since they reside in an anonymous namespace,
@@ -40,27 +40,27 @@
   /// point of view.
   UniqueExternalLinkage,
 
-  /// \brief No linkage according to the standard, but is visible from other
+  /// No linkage according to the standard, but is visible from other
   /// translation units because of types defined in a inline function.
   VisibleNoLinkage,
 
-  /// \brief Internal linkage according to the Modules TS, but can be referred
+  /// Internal linkage according to the Modules TS, but can be referred
   /// to from other translation units indirectly through inline functions and
   /// templates in the module interface.
   ModuleInternalLinkage,
 
-  /// \brief Module linkage, which indicates that the entity can be referred
+  /// Module linkage, which indicates that the entity can be referred
   /// to from other translation units within the same module, and indirectly
   /// from arbitrary other translation units through inline functions and
   /// templates in the module interface.
   ModuleLinkage,
 
-  /// \brief External linkage, which indicates that the entity can
+  /// External linkage, which indicates that the entity can
   /// be referred to from other translation units.
   ExternalLinkage
 };
 
-/// \brief Describes the different kinds of language linkage
+/// Describes the different kinds of language linkage
 /// (C++ [dcl.link]) that an entity may have.
 enum LanguageLinkage {
   CLanguageLinkage,
@@ -68,7 +68,7 @@
   NoLanguageLinkage
 };
 
-/// \brief A more specific kind of linkage than enum Linkage.
+/// A more specific kind of linkage than enum Linkage.
 ///
 /// This is relevant to CodeGen and AST file reading.
 enum GVALinkage {
@@ -104,7 +104,7 @@
   return getFormalLinkage(L) == ExternalLinkage;
 }
 
-/// \brief Compute the minimum linkage given two linkages.
+/// Compute the minimum linkage given two linkages.
 ///
 /// The linkage can be interpreted as a pair formed by the formal linkage and
 /// a boolean for external visibility. This is just what getFormalLinkage and
Index: cfe/trunk/include/clang/Basic/MacroBuilder.h
===================================================================
--- cfe/trunk/include/clang/Basic/MacroBuilder.h
+++ cfe/trunk/include/clang/Basic/MacroBuilder.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::MacroBuilder utility class.
+/// Defines the clang::MacroBuilder utility class.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/include/clang/Basic/Module.h
===================================================================
--- cfe/trunk/include/clang/Basic/Module.h
+++ cfe/trunk/include/clang/Basic/Module.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::Module class, which describes a module in the
+/// Defines the clang::Module class, which describes a module in the
 /// source code.
 //
 //===----------------------------------------------------------------------===//
@@ -48,7 +48,7 @@
 class LangOptions;
 class TargetInfo;
 
-/// \brief Describes the name of a module.
+/// Describes the name of a module.
 using ModuleId = SmallVector<std::pair<std::string, SourceLocation>, 2>;
 
 /// The signature of a module, which is a hash of the AST content.
@@ -61,76 +61,76 @@
   }
 };
 
-/// \brief Describes a module or submodule.
+/// Describes a module or submodule.
 class Module {
 public:
-  /// \brief The name of this module.
+  /// The name of this module.
   std::string Name;
   
-  /// \brief The location of the module definition.
+  /// The location of the module definition.
   SourceLocation DefinitionLoc;
 
   enum ModuleKind {
-    /// \brief This is a module that was defined by a module map and built out
+    /// This is a module that was defined by a module map and built out
     /// of header files.
     ModuleMapModule,
 
-    /// \brief This is a C++ Modules TS module interface unit.
+    /// This is a C++ Modules TS module interface unit.
     ModuleInterfaceUnit,
 
-    /// \brief This is a fragment of the global module within some C++ Modules
+    /// This is a fragment of the global module within some C++ Modules
     /// TS module.
     GlobalModuleFragment,
   };
 
-  /// \brief The kind of this module.
+  /// The kind of this module.
   ModuleKind Kind = ModuleMapModule;
 
-  /// \brief The parent of this module. This will be NULL for the top-level
+  /// The parent of this module. This will be NULL for the top-level
   /// module.
   Module *Parent;
 
-  /// \brief The build directory of this module. This is the directory in
+  /// The build directory of this module. This is the directory in
   /// which the module is notionally built, and relative to which its headers
   /// are found.
   const DirectoryEntry *Directory = nullptr;
 
-  /// \brief The presumed file name for the module map defining this module.
+  /// The presumed file name for the module map defining this module.
   /// Only non-empty when building from preprocessed source.
   std::string PresumedModuleMapFile;
 
-  /// \brief The umbrella header or directory.
+  /// The umbrella header or directory.
   llvm::PointerUnion<const DirectoryEntry *, const FileEntry *> Umbrella;
 
-  /// \brief The module signature.
+  /// The module signature.
   ASTFileSignature Signature;
 
-  /// \brief The name of the umbrella entry, as written in the module map.
+  /// The name of the umbrella entry, as written in the module map.
   std::string UmbrellaAsWritten;
 
-  /// \brief The module through which entities defined in this module will
+  /// The module through which entities defined in this module will
   /// eventually be exposed, for use in "private" modules.
   std::string ExportAsModule;
   
 private:
-  /// \brief The submodules of this module, indexed by name.
+  /// The submodules of this module, indexed by name.
   std::vector<Module *> SubModules;
   
-  /// \brief A mapping from the submodule name to the index into the 
+  /// A mapping from the submodule name to the index into the 
   /// \c SubModules vector at which that submodule resides.
   llvm::StringMap<unsigned> SubModuleIndex;
 
-  /// \brief The AST file if this is a top-level module which has a
+  /// The AST file if this is a top-level module which has a
   /// corresponding serialized AST file, or null otherwise.
   const FileEntry *ASTFile = nullptr;
 
-  /// \brief The top-level headers associated with this module.
+  /// The top-level headers associated with this module.
   llvm::SmallSetVector<const FileEntry *, 2> TopHeaders;
 
-  /// \brief top-level header filenames that aren't resolved to FileEntries yet.
+  /// top-level header filenames that aren't resolved to FileEntries yet.
   std::vector<std::string> TopHeaderNames;
 
-  /// \brief Cache of modules visible to lookup in this module.
+  /// Cache of modules visible to lookup in this module.
   mutable llvm::DenseSet<const Module*> VisibleModulesCache;
 
   /// The ID used when referencing this module within a VisibleModuleSet.
@@ -146,7 +146,7 @@
   };
   static const int NumHeaderKinds = HK_Excluded + 1;
 
-  /// \brief Information about a header directive as found in the module map
+  /// Information about a header directive as found in the module map
   /// file.
   struct Header {
     std::string NameAsWritten;
@@ -155,7 +155,7 @@
     explicit operator bool() { return Entry; }
   };
 
-  /// \brief Information about a directory name as found in the module map
+  /// Information about a directory name as found in the module map
   /// file.
   struct DirectoryName {
     std::string NameAsWritten;
@@ -164,10 +164,10 @@
     explicit operator bool() { return Entry; }
   };
 
-  /// \brief The headers that are part of this module.
+  /// The headers that are part of this module.
   SmallVector<Header, 2> Headers[5];
 
-  /// \brief Stored information about a header directive that was found in the
+  /// Stored information about a header directive that was found in the
   /// module map file but has not been resolved to a file.
   struct UnresolvedHeaderDirective {
     HeaderKind Kind = HK_Normal;
@@ -183,155 +183,155 @@
   /// yet attempted to resolve to a file on the file system.
   SmallVector<UnresolvedHeaderDirective, 1> UnresolvedHeaders;
 
-  /// \brief Headers that are mentioned in the module map file but could not be
+  /// Headers that are mentioned in the module map file but could not be
   /// found on the file system.
   SmallVector<UnresolvedHeaderDirective, 1> MissingHeaders;
 
-  /// \brief An individual requirement: a feature name and a flag indicating
+  /// An individual requirement: a feature name and a flag indicating
   /// the required state of that feature.
   using Requirement = std::pair<std::string, bool>;
 
-  /// \brief The set of language features required to use this module.
+  /// The set of language features required to use this module.
   ///
   /// If any of these requirements are not available, the \c IsAvailable bit
   /// will be false to indicate that this (sub)module is not available.
   SmallVector<Requirement, 2> Requirements;
 
-  /// \brief A module with the same name that shadows this module.
+  /// A module with the same name that shadows this module.
   Module *ShadowingModule = nullptr;
 
-  /// \brief Whether this module is missing a feature from \c Requirements.
+  /// Whether this module is missing a feature from \c Requirements.
   unsigned IsMissingRequirement : 1;
 
-  /// \brief Whether we tried and failed to load a module file for this module.
+  /// Whether we tried and failed to load a module file for this module.
   unsigned HasIncompatibleModuleFile : 1;
 
-  /// \brief Whether this module is available in the current translation unit.
+  /// Whether this module is available in the current translation unit.
   ///
   /// If the module is missing headers or does not meet all requirements then
   /// this bit will be 0.
   unsigned IsAvailable : 1;
 
-  /// \brief Whether this module was loaded from a module file.
+  /// Whether this module was loaded from a module file.
   unsigned IsFromModuleFile : 1;
   
-  /// \brief Whether this is a framework module.
+  /// Whether this is a framework module.
   unsigned IsFramework : 1;
   
-  /// \brief Whether this is an explicit submodule.
+  /// Whether this is an explicit submodule.
   unsigned IsExplicit : 1;
   
-  /// \brief Whether this is a "system" module (which assumes that all
+  /// Whether this is a "system" module (which assumes that all
   /// headers in it are system headers).
   unsigned IsSystem : 1;
 
-  /// \brief Whether this is an 'extern "C"' module (which implicitly puts all
+  /// Whether this is an 'extern "C"' module (which implicitly puts all
   /// headers in it within an 'extern "C"' block, and allows the module to be
   /// imported within such a block).
   unsigned IsExternC : 1;
 
-  /// \brief Whether this is an inferred submodule (module * { ... }).
+  /// Whether this is an inferred submodule (module * { ... }).
   unsigned IsInferred : 1;
 
-  /// \brief Whether we should infer submodules for this module based on 
+  /// Whether we should infer submodules for this module based on 
   /// the headers.
   ///
   /// Submodules can only be inferred for modules with an umbrella header.
   unsigned InferSubmodules : 1;
   
-  /// \brief Whether, when inferring submodules, the inferred submodules
+  /// Whether, when inferring submodules, the inferred submodules
   /// should be explicit.
   unsigned InferExplicitSubmodules : 1;
   
-  /// \brief Whether, when inferring submodules, the inferr submodules should
+  /// Whether, when inferring submodules, the inferr submodules should
   /// export all modules they import (e.g., the equivalent of "export *").
   unsigned InferExportWildcard : 1;
 
-  /// \brief Whether the set of configuration macros is exhaustive.
+  /// Whether the set of configuration macros is exhaustive.
   ///
   /// When the set of configuration macros is exhaustive, meaning
   /// that no identifier not in this list should affect how the module is
   /// built.
   unsigned ConfigMacrosExhaustive : 1;
 
-  /// \brief Whether files in this module can only include non-modular headers
+  /// Whether files in this module can only include non-modular headers
   /// and headers from used modules.
   unsigned NoUndeclaredIncludes : 1;
 
-  /// \brief Whether this module came from a "private" module map, found next
+  /// Whether this module came from a "private" module map, found next
   /// to a regular (public) module map.
   unsigned ModuleMapIsPrivate : 1;
 
-  /// \brief Describes the visibility of the various names within a
+  /// Describes the visibility of the various names within a
   /// particular module.
   enum NameVisibilityKind {
-    /// \brief All of the names in this module are hidden.
+    /// All of the names in this module are hidden.
     Hidden,
-    /// \brief All of the names in this module are visible.
+    /// All of the names in this module are visible.
     AllVisible
   };
 
-  /// \brief The visibility of names within this particular module.
+  /// The visibility of names within this particular module.
   NameVisibilityKind NameVisibility;
 
-  /// \brief The location of the inferred submodule.
+  /// The location of the inferred submodule.
   SourceLocation InferredSubmoduleLoc;
 
-  /// \brief The set of modules imported by this module, and on which this
+  /// The set of modules imported by this module, and on which this
   /// module depends.
   llvm::SmallSetVector<Module *, 2> Imports;
   
-  /// \brief Describes an exported module.
+  /// Describes an exported module.
   ///
   /// The pointer is the module being re-exported, while the bit will be true
   /// to indicate that this is a wildcard export.
   using ExportDecl = llvm::PointerIntPair<Module *, 1, bool>;
   
-  /// \brief The set of export declarations.
+  /// The set of export declarations.
   SmallVector<ExportDecl, 2> Exports;
   
-  /// \brief Describes an exported module that has not yet been resolved
+  /// Describes an exported module that has not yet been resolved
   /// (perhaps because the module it refers to has not yet been loaded).
   struct UnresolvedExportDecl {
-    /// \brief The location of the 'export' keyword in the module map file.
+    /// The location of the 'export' keyword in the module map file.
     SourceLocation ExportLoc;
     
-    /// \brief The name of the module.
+    /// The name of the module.
     ModuleId Id;
     
-    /// \brief Whether this export declaration ends in a wildcard, indicating
+    /// Whether this export declaration ends in a wildcard, indicating
     /// that all of its submodules should be exported (rather than the named
     /// module itself).
     bool Wildcard;
   };
   
-  /// \brief The set of export declarations that have yet to be resolved.
+  /// The set of export declarations that have yet to be resolved.
   SmallVector<UnresolvedExportDecl, 2> UnresolvedExports;
 
-  /// \brief The directly used modules.
+  /// The directly used modules.
   SmallVector<Module *, 2> DirectUses;
 
-  /// \brief The set of use declarations that have yet to be resolved.
+  /// The set of use declarations that have yet to be resolved.
   SmallVector<ModuleId, 2> UnresolvedDirectUses;
 
-  /// \brief A library or framework to link against when an entity from this
+  /// A library or framework to link against when an entity from this
   /// module is used.
   struct LinkLibrary {
     LinkLibrary() = default;
     LinkLibrary(const std::string &Library, bool IsFramework)
         : Library(Library), IsFramework(IsFramework) {}
     
-    /// \brief The library to link against.
+    /// The library to link against.
     ///
     /// This will typically be a library or framework name, but can also
     /// be an absolute path to the library or framework.
     std::string Library;
 
-    /// \brief Whether this is a framework rather than a library.
+    /// Whether this is a framework rather than a library.
     bool IsFramework = false;
   };
 
-  /// \brief The set of libraries or frameworks to link against when
+  /// The set of libraries or frameworks to link against when
   /// an entity from this module is used.
   llvm::SmallVector<LinkLibrary, 2> LinkLibraries;
 
@@ -339,46 +339,46 @@
   /// when this is false and the export_as name otherwise.
   bool UseExportAsModuleLinkName = false;
 
-  /// \brief The set of "configuration macros", which are macros that
+  /// The set of "configuration macros", which are macros that
   /// (intentionally) change how this module is built.
   std::vector<std::string> ConfigMacros;
 
-  /// \brief An unresolved conflict with another module.
+  /// An unresolved conflict with another module.
   struct UnresolvedConflict {
-    /// \brief The (unresolved) module id.
+    /// The (unresolved) module id.
     ModuleId Id;
 
-    /// \brief The message provided to the user when there is a conflict.
+    /// The message provided to the user when there is a conflict.
     std::string Message;
   };
 
-  /// \brief The list of conflicts for which the module-id has not yet been
+  /// The list of conflicts for which the module-id has not yet been
   /// resolved.
   std::vector<UnresolvedConflict> UnresolvedConflicts;
 
-  /// \brief A conflict between two modules.
+  /// A conflict between two modules.
   struct Conflict {
-    /// \brief The module that this module conflicts with.
+    /// The module that this module conflicts with.
     Module *Other;
 
-    /// \brief The message provided to the user when there is a conflict.
+    /// The message provided to the user when there is a conflict.
     std::string Message;
   };
 
-  /// \brief The list of conflicts.
+  /// The list of conflicts.
   std::vector<Conflict> Conflicts;
 
-  /// \brief Construct a new module or submodule.
+  /// Construct a new module or submodule.
   Module(StringRef Name, SourceLocation DefinitionLoc, Module *Parent,
          bool IsFramework, bool IsExplicit, unsigned VisibilityID);
   
   ~Module();
   
-  /// \brief Determine whether this module is available for use within the
+  /// Determine whether this module is available for use within the
   /// current translation unit.
   bool isAvailable() const { return IsAvailable; }
 
-  /// \brief Determine whether this module is available for use within the
+  /// Determine whether this module is available for use within the
   /// current translation unit.
   ///
   /// \param LangOpts The language options used for the current
@@ -401,14 +401,14 @@
                    UnresolvedHeaderDirective &MissingHeader,
                    Module *&ShadowingModule) const;
 
-  /// \brief Determine whether this module is a submodule.
+  /// Determine whether this module is a submodule.
   bool isSubModule() const { return Parent != nullptr; }
   
-  /// \brief Determine whether this module is a submodule of the given other
+  /// Determine whether this module is a submodule of the given other
   /// module.
   bool isSubModuleOf(const Module *Other) const;
   
-  /// \brief Determine whether this module is a part of a framework,
+  /// Determine whether this module is a part of a framework,
   /// either because it is a framework module or because it is a submodule
   /// of a framework module.
   bool isPartOfFramework() const {
@@ -419,7 +419,7 @@
     return false;
   }
 
-  /// \brief Determine whether this module is a subframework of another
+  /// Determine whether this module is a subframework of another
   /// framework.
   bool isSubFramework() const {
     return IsFramework && Parent && Parent->isPartOfFramework();
@@ -434,51 +434,51 @@
     Parent->SubModules.push_back(this);
   }
 
-  /// \brief Retrieve the full name of this module, including the path from
+  /// Retrieve the full name of this module, including the path from
   /// its top-level module.
   /// \param AllowStringLiterals If \c true, components that might not be
   ///        lexically valid as identifiers will be emitted as string literals.
   std::string getFullModuleName(bool AllowStringLiterals = false) const;
 
-  /// \brief Whether the full name of this module is equal to joining
+  /// Whether the full name of this module is equal to joining
   /// \p nameParts with "."s.
   ///
   /// This is more efficient than getFullModuleName().
   bool fullModuleNameIs(ArrayRef<StringRef> nameParts) const;
 
-  /// \brief Retrieve the top-level module for this (sub)module, which may
+  /// Retrieve the top-level module for this (sub)module, which may
   /// be this module.
   Module *getTopLevelModule() {
     return const_cast<Module *>(
              const_cast<const Module *>(this)->getTopLevelModule());
   }
 
-  /// \brief Retrieve the top-level module for this (sub)module, which may
+  /// Retrieve the top-level module for this (sub)module, which may
   /// be this module.
   const Module *getTopLevelModule() const;
   
-  /// \brief Retrieve the name of the top-level module.
+  /// Retrieve the name of the top-level module.
   StringRef getTopLevelModuleName() const {
     return getTopLevelModule()->Name;
   }
 
-  /// \brief The serialized AST file for this module, if one was created.
+  /// The serialized AST file for this module, if one was created.
   const FileEntry *getASTFile() const {
     return getTopLevelModule()->ASTFile;
   }
 
-  /// \brief Set the serialized AST file for the top-level module of this module.
+  /// Set the serialized AST file for the top-level module of this module.
   void setASTFile(const FileEntry *File) {
     assert((File == nullptr || getASTFile() == nullptr ||
             getASTFile() == File) && "file path changed");
     getTopLevelModule()->ASTFile = File;
   }
 
-  /// \brief Retrieve the directory for which this module serves as the
+  /// Retrieve the directory for which this module serves as the
   /// umbrella.
   DirectoryName getUmbrellaDir() const;
 
-  /// \brief Retrieve the header that serves as the umbrella header for this
+  /// Retrieve the header that serves as the umbrella header for this
   /// module.
   Header getUmbrellaHeader() const {
     if (auto *E = Umbrella.dyn_cast<const FileEntry *>())
@@ -486,31 +486,31 @@
     return Header{};
   }
 
-  /// \brief Determine whether this module has an umbrella directory that is
+  /// Determine whether this module has an umbrella directory that is
   /// not based on an umbrella header.
   bool hasUmbrellaDir() const {
     return Umbrella && Umbrella.is<const DirectoryEntry *>();
   }
 
-  /// \brief Add a top-level header associated with this module.
+  /// Add a top-level header associated with this module.
   void addTopHeader(const FileEntry *File) {
     assert(File);
     TopHeaders.insert(File);
   }
 
-  /// \brief Add a top-level header filename associated with this module.
+  /// Add a top-level header filename associated with this module.
   void addTopHeaderFilename(StringRef Filename) {
     TopHeaderNames.push_back(Filename);
   }
 
-  /// \brief The top-level headers associated with this module.
+  /// The top-level headers associated with this module.
   ArrayRef<const FileEntry *> getTopHeaders(FileManager &FileMgr);
 
-  /// \brief Determine whether this module has declared its intention to
+  /// Determine whether this module has declared its intention to
   /// directly use another module.
   bool directlyUses(const Module *Requested) const;
 
-  /// \brief Add the given feature requirement to the list of features
+  /// Add the given feature requirement to the list of features
   /// required by this module.
   ///
   /// \param Feature The feature that is required by this module (and
@@ -528,15 +528,15 @@
                       const LangOptions &LangOpts,
                       const TargetInfo &Target);
 
-  /// \brief Mark this module and all of its submodules as unavailable.
+  /// Mark this module and all of its submodules as unavailable.
   void markUnavailable(bool MissingRequirement = false);
 
-  /// \brief Find the submodule with the given name.
+  /// Find the submodule with the given name.
   ///
   /// \returns The submodule if found, or NULL otherwise.
   Module *findSubmodule(StringRef Name) const;
 
-  /// \brief Determine whether the specified module would be visible to
+  /// Determine whether the specified module would be visible to
   /// a lookup at the end of this module.
   ///
   /// FIXME: This may return incorrect results for (submodules of) the
@@ -565,7 +565,7 @@
     return llvm::make_range(submodule_begin(), submodule_end());
   }
 
-  /// \brief Appends this module's list of exported modules to \p Exported.
+  /// Appends this module's list of exported modules to \p Exported.
   ///
   /// This provides a subset of immediately imported modules (the ones that are
   /// directly exported), not the complete set of exported modules.
@@ -575,17 +575,17 @@
     return "<module-includes>";
   }
 
-  /// \brief Print the module map for this module to the given stream. 
+  /// Print the module map for this module to the given stream. 
   void print(raw_ostream &OS, unsigned Indent = 0) const;
   
-  /// \brief Dump the contents of this module to the given output stream.
+  /// Dump the contents of this module to the given output stream.
   void dump() const;
 
 private:
   void buildVisibleModulesCache() const;
 };
 
-/// \brief A set of visible modules.
+/// A set of visible modules.
 class VisibleModuleSet {
 public:
   VisibleModuleSet() = default;
@@ -605,34 +605,34 @@
     return *this;
   }
 
-  /// \brief Get the current visibility generation. Incremented each time the
+  /// Get the current visibility generation. Incremented each time the
   /// set of visible modules changes in any way.
   unsigned getGeneration() const { return Generation; }
 
-  /// \brief Determine whether a module is visible.
+  /// Determine whether a module is visible.
   bool isVisible(const Module *M) const {
     return getImportLoc(M).isValid();
   }
 
-  /// \brief Get the location at which the import of a module was triggered.
+  /// Get the location at which the import of a module was triggered.
   SourceLocation getImportLoc(const Module *M) const {
     return M->getVisibilityID() < ImportLocs.size()
                ? ImportLocs[M->getVisibilityID()]
                : SourceLocation();
   }
 
-  /// \brief A callback to call when a module is made visible (directly or
+  /// A callback to call when a module is made visible (directly or
   /// indirectly) by a call to \ref setVisible.
   using VisibleCallback = llvm::function_ref<void(Module *M)>;
 
-  /// \brief A callback to call when a module conflict is found. \p Path
+  /// A callback to call when a module conflict is found. \p Path
   /// consists of a sequence of modules from the conflicting module to the one
   /// made visible, where each was exported by the next.
   using ConflictCallback =
       llvm::function_ref<void(ArrayRef<Module *> Path, Module *Conflict,
                          StringRef Message)>;
 
-  /// \brief Make a specific module visible.
+  /// Make a specific module visible.
   void setVisible(Module *M, SourceLocation Loc,
                   VisibleCallback Vis = [](Module *) {},
                   ConflictCallback Cb = [](ArrayRef<Module *>, Module *,
Index: cfe/trunk/include/clang/Basic/ObjCRuntime.h
===================================================================
--- cfe/trunk/include/clang/Basic/ObjCRuntime.h
+++ cfe/trunk/include/clang/Basic/ObjCRuntime.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines types useful for describing an Objective-C runtime.
+/// Defines types useful for describing an Objective-C runtime.
 //
 //===----------------------------------------------------------------------===//
 
@@ -24,10 +24,10 @@
 
 namespace clang {
 
-/// \brief The basic abstraction for the target Objective-C runtime.
+/// The basic abstraction for the target Objective-C runtime.
 class ObjCRuntime {
 public:
-  /// \brief The basic Objective-C runtimes that we know about.
+  /// The basic Objective-C runtimes that we know about.
   enum Kind {
     /// 'macosx' is the Apple-provided NeXT-derived runtime on Mac OS
     /// X platforms that use the non-fragile ABI; the version is a
@@ -77,7 +77,7 @@
   Kind getKind() const { return TheKind; }
   const VersionTuple &getVersion() const { return Version; }
 
-  /// \brief Does this runtime follow the set of implied behaviors for a
+  /// Does this runtime follow the set of implied behaviors for a
   /// "non-fragile" ABI?
   bool isNonFragile() const {
     switch (getKind()) {
@@ -115,7 +115,7 @@
     return true;
   }
 
-  /// \brief Is this runtime basically of the GNU family of runtimes?
+  /// Is this runtime basically of the GNU family of runtimes?
   bool isGNUFamily() const {
     switch (getKind()) {
     case FragileMacOSX:
@@ -131,14 +131,14 @@
     llvm_unreachable("bad kind");
   }
 
-  /// \brief Is this runtime basically of the NeXT family of runtimes?
+  /// Is this runtime basically of the NeXT family of runtimes?
   bool isNeXTFamily() const {
     // For now, this is just the inverse of isGNUFamily(), but that's
     // not inherently true.
     return !isGNUFamily();
   }
 
-  /// \brief Does this runtime allow ARC at all?
+  /// Does this runtime allow ARC at all?
   bool allowsARC() const {
     switch (getKind()) {
     case FragileMacOSX:
@@ -154,7 +154,7 @@
     llvm_unreachable("bad kind");
   }
 
-  /// \brief Does this runtime natively provide the ARC entrypoints? 
+  /// Does this runtime natively provide the ARC entrypoints? 
   ///
   /// ARC cannot be directly supported on a platform that does not provide
   /// these entrypoints, although it may be supportable via a stub
@@ -173,7 +173,7 @@
     llvm_unreachable("bad kind");
   }
 
-  /// \brief Does this runtime supports optimized setter entrypoints?
+  /// Does this runtime supports optimized setter entrypoints?
   bool hasOptimizedSetter() const {
     switch (getKind()) {
       case MacOSX:
@@ -194,7 +194,7 @@
     return hasNativeWeak();
   }
 
-  /// \brief Does this runtime natively provide ARC-compliant 'weak'
+  /// Does this runtime natively provide ARC-compliant 'weak'
   /// entrypoints?
   bool hasNativeWeak() const {
     // Right now, this is always equivalent to whether the runtime
@@ -202,7 +202,7 @@
     return hasNativeARC();
   }
 
-  /// \brief Does this runtime directly support the subscripting methods?
+  /// Does this runtime directly support the subscripting methods?
   ///
   /// This is really a property of the library, not the runtime.
   bool hasSubscripting() const {
@@ -222,12 +222,12 @@
     llvm_unreachable("bad kind");
   }
 
-  /// \brief Does this runtime allow sizeof or alignof on object types?
+  /// Does this runtime allow sizeof or alignof on object types?
   bool allowsSizeofAlignof() const {
     return isFragile();
   }
 
-  /// \brief Does this runtime allow pointer arithmetic on objects?
+  /// Does this runtime allow pointer arithmetic on objects?
   ///
   /// This covers +, -, ++, --, and (if isSubscriptPointerArithmetic()
   /// yields true) [].
@@ -246,12 +246,12 @@
     llvm_unreachable("bad kind");
   }
 
-  /// \brief Is subscripting pointer arithmetic?
+  /// Is subscripting pointer arithmetic?
   bool isSubscriptPointerArithmetic() const {
     return allowsPointerArithmetic();
   }
 
-  /// \brief Does this runtime provide an objc_terminate function?
+  /// Does this runtime provide an objc_terminate function?
   ///
   /// This is used in handlers for exceptions during the unwind process;
   /// without it, abort() must be used in pure ObjC files.
@@ -268,7 +268,7 @@
     llvm_unreachable("bad kind");
   }
 
-  /// \brief Does this runtime support weakly importing classes?
+  /// Does this runtime support weakly importing classes?
   bool hasWeakClassImport() const {
     switch (getKind()) {
     case MacOSX: return true;
@@ -282,7 +282,7 @@
     llvm_unreachable("bad kind");
   }
 
-  /// \brief Does this runtime use zero-cost exceptions?
+  /// Does this runtime use zero-cost exceptions?
   bool hasUnwindExceptions() const {
     switch (getKind()) {
     case MacOSX: return true;
@@ -340,7 +340,7 @@
     }
   }
 
-  /// \brief Try to parse an Objective-C runtime specification from the given
+  /// Try to parse an Objective-C runtime specification from the given
   /// string.
   ///
   /// \return true on error.
Index: cfe/trunk/include/clang/Basic/OpenCLOptions.h
===================================================================
--- cfe/trunk/include/clang/Basic/OpenCLOptions.h
+++ cfe/trunk/include/clang/Basic/OpenCLOptions.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::OpenCLOptions class.
+/// Defines the clang::OpenCLOptions class.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -19,7 +19,7 @@
 
 namespace clang {
 
-/// \brief OpenCL supported extensions and optional core features
+/// OpenCL supported extensions and optional core features
 class OpenCLOptions {
   struct Info {
     bool Supported; // Is this option supported
@@ -67,7 +67,7 @@
     OptMap[Ext].Enabled = V;
   }
 
-  /// \brief Enable or disable support for OpenCL extensions
+  /// Enable or disable support for OpenCL extensions
   /// \param Ext name of the extension optionally prefixed with
   ///        '+' or '-'
   /// \param V used when \p Ext is not prefixed by '+' or '-'
Index: cfe/trunk/include/clang/Basic/OpenMPKinds.h
===================================================================
--- cfe/trunk/include/clang/Basic/OpenMPKinds.h
+++ cfe/trunk/include/clang/Basic/OpenMPKinds.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines some OpenMP-specific enums and functions.
+/// Defines some OpenMP-specific enums and functions.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -19,7 +19,7 @@
 
 namespace clang {
 
-/// \brief OpenMP directives.
+/// OpenMP directives.
 enum OpenMPDirectiveKind {
 #define OPENMP_DIRECTIVE(Name) \
   OMPD_##Name,
@@ -29,7 +29,7 @@
   OMPD_unknown
 };
 
-/// \brief OpenMP clauses.
+/// OpenMP clauses.
 enum OpenMPClauseKind {
 #define OPENMP_CLAUSE(Name, Class) \
   OMPC_##Name,
@@ -39,7 +39,7 @@
   OMPC_unknown
 };
 
-/// \brief OpenMP attributes for 'default' clause.
+/// OpenMP attributes for 'default' clause.
 enum OpenMPDefaultClauseKind {
 #define OPENMP_DEFAULT_KIND(Name) \
   OMPC_DEFAULT_##Name,
@@ -47,7 +47,7 @@
   OMPC_DEFAULT_unknown
 };
 
-/// \brief OpenMP attributes for 'proc_bind' clause.
+/// OpenMP attributes for 'proc_bind' clause.
 enum OpenMPProcBindClauseKind {
 #define OPENMP_PROC_BIND_KIND(Name) \
   OMPC_PROC_BIND_##Name,
@@ -55,7 +55,7 @@
   OMPC_PROC_BIND_unknown
 };
 
-/// \brief OpenMP attributes for 'schedule' clause.
+/// OpenMP attributes for 'schedule' clause.
 enum OpenMPScheduleClauseKind {
 #define OPENMP_SCHEDULE_KIND(Name) \
   OMPC_SCHEDULE_##Name,
@@ -63,7 +63,7 @@
   OMPC_SCHEDULE_unknown
 };
 
-/// \brief OpenMP modifiers for 'schedule' clause.
+/// OpenMP modifiers for 'schedule' clause.
 enum OpenMPScheduleClauseModifier {
   OMPC_SCHEDULE_MODIFIER_unknown = OMPC_SCHEDULE_unknown,
 #define OPENMP_SCHEDULE_MODIFIER(Name) \
@@ -72,7 +72,7 @@
   OMPC_SCHEDULE_MODIFIER_last
 };
 
-/// \brief OpenMP attributes for 'depend' clause.
+/// OpenMP attributes for 'depend' clause.
 enum OpenMPDependClauseKind {
 #define OPENMP_DEPEND_KIND(Name) \
   OMPC_DEPEND_##Name,
@@ -80,7 +80,7 @@
   OMPC_DEPEND_unknown
 };
 
-/// \brief OpenMP attributes for 'linear' clause.
+/// OpenMP attributes for 'linear' clause.
 enum OpenMPLinearClauseKind {
 #define OPENMP_LINEAR_KIND(Name) \
   OMPC_LINEAR_##Name,
@@ -88,7 +88,7 @@
   OMPC_LINEAR_unknown
 };
 
-/// \brief OpenMP mapping kind for 'map' clause.
+/// OpenMP mapping kind for 'map' clause.
 enum OpenMPMapClauseKind {
 #define OPENMP_MAP_KIND(Name) \
   OMPC_MAP_##Name,
@@ -96,14 +96,14 @@
   OMPC_MAP_unknown
 };
 
-/// \brief OpenMP attributes for 'dist_schedule' clause.
+/// OpenMP attributes for 'dist_schedule' clause.
 enum OpenMPDistScheduleClauseKind {
 #define OPENMP_DIST_SCHEDULE_KIND(Name) OMPC_DIST_SCHEDULE_##Name,
 #include "clang/Basic/OpenMPKinds.def"
   OMPC_DIST_SCHEDULE_unknown
 };
 
-/// \brief OpenMP attributes for 'defaultmap' clause.
+/// OpenMP attributes for 'defaultmap' clause.
 enum OpenMPDefaultmapClauseKind {
 #define OPENMP_DEFAULTMAP_KIND(Name) \
   OMPC_DEFAULTMAP_##Name,
@@ -111,7 +111,7 @@
   OMPC_DEFAULTMAP_unknown
 };
 
-/// \brief OpenMP modifiers for 'defaultmap' clause.
+/// OpenMP modifiers for 'defaultmap' clause.
 enum OpenMPDefaultmapClauseModifier {
   OMPC_DEFAULTMAP_MODIFIER_unknown = OMPC_DEFAULTMAP_unknown,
 #define OPENMP_DEFAULTMAP_MODIFIER(Name) \
@@ -139,39 +139,39 @@
 bool isAllowedClauseForDirective(OpenMPDirectiveKind DKind,
                                  OpenMPClauseKind CKind);
 
-/// \brief Checks if the specified directive is a directive with an associated
+/// Checks if the specified directive is a directive with an associated
 /// loop construct.
 /// \param DKind Specified directive.
 /// \return true - the directive is a loop-associated directive like 'omp simd'
 /// or 'omp for' directive, otherwise - false.
 bool isOpenMPLoopDirective(OpenMPDirectiveKind DKind);
 
-/// \brief Checks if the specified directive is a worksharing directive.
+/// Checks if the specified directive is a worksharing directive.
 /// \param DKind Specified directive.
 /// \return true - the directive is a worksharing directive like 'omp for',
 /// otherwise - false.
 bool isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind);
 
-/// \brief Checks if the specified directive is a taskloop directive.
+/// Checks if the specified directive is a taskloop directive.
 /// \param DKind Specified directive.
 /// \return true - the directive is a worksharing directive like 'omp taskloop',
 /// otherwise - false.
 bool isOpenMPTaskLoopDirective(OpenMPDirectiveKind DKind);
 
-/// \brief Checks if the specified directive is a parallel-kind directive.
+/// Checks if the specified directive is a parallel-kind directive.
 /// \param DKind Specified directive.
 /// \return true - the directive is a parallel-like directive like 'omp
 /// parallel', otherwise - false.
 bool isOpenMPParallelDirective(OpenMPDirectiveKind DKind);
 
-/// \brief Checks if the specified directive is a target code offload directive.
+/// Checks if the specified directive is a target code offload directive.
 /// \param DKind Specified directive.
 /// \return true - the directive is a target code offload directive like
 /// 'omp target', 'omp target parallel', 'omp target xxx'
 /// otherwise - false.
 bool isOpenMPTargetExecutionDirective(OpenMPDirectiveKind DKind);
 
-/// \brief Checks if the specified directive is a target data offload directive.
+/// Checks if the specified directive is a target data offload directive.
 /// \param DKind Specified directive.
 /// \return true - the directive is a target data offload directive like
 /// 'omp target data', 'omp target update', 'omp target enter data',
@@ -193,13 +193,13 @@
 /// \return true - the directive is a teams-like directive, otherwise - false.
 bool isOpenMPTeamsDirective(OpenMPDirectiveKind DKind);
 
-/// \brief Checks if the specified directive is a simd directive.
+/// Checks if the specified directive is a simd directive.
 /// \param DKind Specified directive.
 /// \return true - the directive is a simd directive like 'omp simd',
 /// otherwise - false.
 bool isOpenMPSimdDirective(OpenMPDirectiveKind DKind);
 
-/// \brief Checks if the specified directive is a distribute directive.
+/// Checks if the specified directive is a distribute directive.
 /// \param DKind Specified directive.
 /// \return true - the directive is a distribute-directive like 'omp
 /// distribute',
@@ -214,13 +214,13 @@
 /// otherwise - false.
 bool isOpenMPNestingDistributeDirective(OpenMPDirectiveKind DKind);
 
-/// \brief Checks if the specified clause is one of private clauses like
+/// Checks if the specified clause is one of private clauses like
 /// 'private', 'firstprivate', 'reduction' etc..
 /// \param Kind Clause kind.
 /// \return true - the clause is a private clause, otherwise - false.
 bool isOpenMPPrivate(OpenMPClauseKind Kind);
 
-/// \brief Checks if the specified clause is one of threadprivate clauses like
+/// Checks if the specified clause is one of threadprivate clauses like
 /// 'threadprivate', 'copyin' or 'copyprivate'.
 /// \param Kind Clause kind.
 /// \return true - the clause is a threadprivate clause, otherwise - false.
Index: cfe/trunk/include/clang/Basic/OpenMPKinds.def
===================================================================
--- cfe/trunk/include/clang/Basic/OpenMPKinds.def
+++ cfe/trunk/include/clang/Basic/OpenMPKinds.def
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 /// \file
-/// \brief This file defines the list of supported OpenMP directives and
+/// This file defines the list of supported OpenMP directives and
 /// clauses.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/include/clang/Basic/OperatorKinds.h
===================================================================
--- cfe/trunk/include/clang/Basic/OperatorKinds.h
+++ cfe/trunk/include/clang/Basic/OperatorKinds.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines an enumeration for C++ overloaded operators.
+/// Defines an enumeration for C++ overloaded operators.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -17,7 +17,7 @@
 
 namespace clang {
 
-/// \brief Enumeration specifying the different kinds of C++ overloaded
+/// Enumeration specifying the different kinds of C++ overloaded
 /// operators.
 enum OverloadedOperatorKind : int {
   OO_None,                ///< Not an overloaded operator
@@ -27,7 +27,7 @@
   NUM_OVERLOADED_OPERATORS
 };
 
-/// \brief Retrieve the spelling of the given overloaded operator, without 
+/// Retrieve the spelling of the given overloaded operator, without 
 /// the preceding "operator" keyword.
 const char *getOperatorSpelling(OverloadedOperatorKind Operator);
 
Index: cfe/trunk/include/clang/Basic/OperatorPrecedence.h
===================================================================
--- cfe/trunk/include/clang/Basic/OperatorPrecedence.h
+++ cfe/trunk/include/clang/Basic/OperatorPrecedence.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines and computes precedence levels for binary/ternary operators.
+/// Defines and computes precedence levels for binary/ternary operators.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -44,7 +44,7 @@
   };
 }
 
-/// \brief Return the precedence of the specified binary operator token.
+/// Return the precedence of the specified binary operator token.
 prec::Level getBinOpPrecedence(tok::TokenKind Kind, bool GreaterThanIsOperator,
                                bool CPlusPlus11);
 
Index: cfe/trunk/include/clang/Basic/PartialDiagnostic.h
===================================================================
--- cfe/trunk/include/clang/Basic/PartialDiagnostic.h
+++ cfe/trunk/include/clang/Basic/PartialDiagnostic.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Implements a partial diagnostic that can be emitted anwyhere
+/// Implements a partial diagnostic that can be emitted anwyhere
 /// in a DiagnosticBuilder stream.
 //
 //===----------------------------------------------------------------------===//
@@ -44,7 +44,7 @@
 
   struct Storage {
     enum {
-        /// \brief The maximum number of arguments we can hold. We
+        /// The maximum number of arguments we can hold. We
         /// currently only support up to 10 arguments (%0-%9).
         ///
         /// A single diagnostic with more than that almost certainly has to
@@ -52,35 +52,35 @@
         MaxArguments = PartialDiagnostic::MaxArguments
     };
 
-    /// \brief The number of entries in Arguments.
+    /// The number of entries in Arguments.
     unsigned char NumDiagArgs = 0;
 
-    /// \brief Specifies for each argument whether it is in DiagArgumentsStr
+    /// Specifies for each argument whether it is in DiagArgumentsStr
     /// or in DiagArguments.
     unsigned char DiagArgumentsKind[MaxArguments];
 
-    /// \brief The values for the various substitution positions.
+    /// The values for the various substitution positions.
     ///
     /// This is used when the argument is not an std::string. The specific value
     /// is mangled into an intptr_t and the interpretation depends on exactly
     /// what sort of argument kind it is.
     intptr_t DiagArgumentsVal[MaxArguments];
 
-    /// \brief The values for the various substitution positions that have
+    /// The values for the various substitution positions that have
     /// string arguments.
     std::string DiagArgumentsStr[MaxArguments];
 
-    /// \brief The list of ranges added to this diagnostic.
+    /// The list of ranges added to this diagnostic.
     SmallVector<CharSourceRange, 8> DiagRanges;
 
-    /// \brief If valid, provides a hint with some code to insert, remove, or
+    /// If valid, provides a hint with some code to insert, remove, or
     /// modify at a particular position.
     SmallVector<FixItHint, 6>  FixItHints;
 
     Storage() = default;
   };
 
-  /// \brief An allocator for Storage objects, which uses a small cache to
+  /// An allocator for Storage objects, which uses a small cache to
   /// objects, used to reduce malloc()/free() traffic for partial diagnostics.
   class StorageAllocator {
     static const unsigned NumCached = 16;
@@ -92,7 +92,7 @@
     StorageAllocator();
     ~StorageAllocator();
 
-    /// \brief Allocate new storage.
+    /// Allocate new storage.
     Storage *Allocate() {
       if (NumFreeListEntries == 0)
         return new Storage;
@@ -104,7 +104,7 @@
       return Result;
     }
 
-    /// \brief Free the given storage object.
+    /// Free the given storage object.
     void Deallocate(Storage *S) {
       if (S >= Cached && S <= Cached + NumCached) {
         FreeList[NumFreeListEntries++] = S;
@@ -120,16 +120,16 @@
   // in the sense that its bits can be safely memcpy'ed and destructed
   // in the new location.
 
-  /// \brief The diagnostic ID.
+  /// The diagnostic ID.
   mutable unsigned DiagID = 0;
 
-  /// \brief Storage for args and ranges.
+  /// Storage for args and ranges.
   mutable Storage *DiagStorage = nullptr;
 
-  /// \brief Allocator used to allocate storage for this diagnostic.
+  /// Allocator used to allocate storage for this diagnostic.
   StorageAllocator *Allocator = nullptr;
 
-  /// \brief Retrieve storage for this particular diagnostic.
+  /// Retrieve storage for this particular diagnostic.
   Storage *getStorage() const {
     if (DiagStorage)
       return DiagStorage;
@@ -184,7 +184,7 @@
 public:
   struct NullDiagnostic {};
 
-  /// \brief Create a null partial diagnostic, which cannot carry a payload,
+  /// Create a null partial diagnostic, which cannot carry a payload,
   /// and only exists to be swapped with a real partial diagnostic.
   PartialDiagnostic(NullDiagnostic) {}
 
@@ -324,7 +324,7 @@
     Diags.Clear();
   }
 
-  /// \brief Clear out this partial diagnostic, giving it a new diagnostic ID
+  /// Clear out this partial diagnostic, giving it a new diagnostic ID
   /// and removing all of its arguments, ranges, and fix-it hints.
   void Reset(unsigned DiagID = 0) {
     this->DiagID = DiagID;
@@ -414,7 +414,7 @@
   return DB;
 }
 
-/// \brief A partial diagnostic along with the source location where this
+/// A partial diagnostic along with the source location where this
 /// diagnostic occurs.
 using PartialDiagnosticAt = std::pair<SourceLocation, PartialDiagnostic>;
 
Index: cfe/trunk/include/clang/Basic/PrettyStackTrace.h
===================================================================
--- cfe/trunk/include/clang/Basic/PrettyStackTrace.h
+++ cfe/trunk/include/clang/Basic/PrettyStackTrace.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the PrettyStackTraceEntry class, which is used to make
+/// Defines the PrettyStackTraceEntry class, which is used to make
 /// crashes give more contextual information about what the program was doing
 /// when it crashed.
 ///
Index: cfe/trunk/include/clang/Basic/Sanitizers.h
===================================================================
--- cfe/trunk/include/clang/Basic/Sanitizers.h
+++ cfe/trunk/include/clang/Basic/Sanitizers.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::SanitizerKind enum.
+/// Defines the clang::SanitizerKind enum.
 //
 //===----------------------------------------------------------------------===//
 
@@ -48,16 +48,16 @@
 } // namespace SanitizerKind
 
 struct SanitizerSet {
-  /// \brief Check if a certain (single) sanitizer is enabled.
+  /// Check if a certain (single) sanitizer is enabled.
   bool has(SanitizerMask K) const {
     assert(llvm::isPowerOf2_64(K));
     return Mask & K;
   }
 
-  /// \brief Check if one or more sanitizers are enabled.
+  /// Check if one or more sanitizers are enabled.
   bool hasOneOf(SanitizerMask K) const { return Mask & K; }
 
-  /// \brief Enable or disable a certain (single) sanitizer.
+  /// Enable or disable a certain (single) sanitizer.
   void set(SanitizerMask K, bool Value) {
     assert(llvm::isPowerOf2_64(K));
     Mask = Value ? (Mask | K) : (Mask & ~K);
@@ -66,10 +66,10 @@
   /// Disable the sanitizers specified in \p K.
   void clear(SanitizerMask K = SanitizerKind::All) { Mask &= ~K; }
 
-  /// \brief Returns true if at least one sanitizer is enabled.
+  /// Returns true if at least one sanitizer is enabled.
   bool empty() const { return Mask == 0; }
 
-  /// \brief Bitmask of enabled sanitizers.
+  /// Bitmask of enabled sanitizers.
   SanitizerMask Mask = 0;
 };
 
Index: cfe/trunk/include/clang/Basic/SourceLocation.h
===================================================================
--- cfe/trunk/include/clang/Basic/SourceLocation.h
+++ cfe/trunk/include/clang/Basic/SourceLocation.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::SourceLocation class and associated facilities.
+/// Defines the clang::SourceLocation class and associated facilities.
 //
 //===----------------------------------------------------------------------===//
 
@@ -34,11 +34,11 @@
 
 class SourceManager;
 
-/// \brief An opaque identifier used by SourceManager which refers to a
+/// An opaque identifier used by SourceManager which refers to a
 /// source file (MemoryBuffer) along with its \#include path and \#line data.
 ///
 class FileID {
-  /// \brief A mostly-opaque identifier, where 0 is "invalid", >0 is 
+  /// A mostly-opaque identifier, where 0 is "invalid", >0 is 
   /// this module, and <-1 is something loaded from another module.
   int ID = 0;
 
@@ -70,7 +70,7 @@
   int getOpaqueValue() const { return ID; }
 };
 
-/// \brief Encodes a location in the source. The SourceManager can decode this
+/// Encodes a location in the source. The SourceManager can decode this
 /// to get at the full include stack, line and column information.
 ///
 /// Technically, a source location is simply an offset into the manager's view
@@ -100,7 +100,7 @@
   bool isFileID() const  { return (ID & MacroIDBit) == 0; }
   bool isMacroID() const { return (ID & MacroIDBit) != 0; }
 
-  /// \brief Return true if this is a valid SourceLocation object.
+  /// Return true if this is a valid SourceLocation object.
   ///
   /// Invalid SourceLocations are often used when events have no corresponding
   /// location in the source (e.g. a diagnostic is required for a command line
@@ -109,7 +109,7 @@
   bool isInvalid() const { return ID == 0; }
 
 private:
-  /// \brief Return the offset into the manager's global input view.
+  /// Return the offset into the manager's global input view.
   unsigned getOffset() const {
     return ID & ~MacroIDBit;
   }
@@ -129,7 +129,7 @@
   }
 
 public:
-  /// \brief Return a source location with the specified offset from this
+  /// Return a source location with the specified offset from this
   /// SourceLocation.
   SourceLocation getLocWithOffset(int Offset) const {
     assert(((getOffset()+Offset) & MacroIDBit) == 0 && "offset overflow");
@@ -138,14 +138,14 @@
     return L;
   }
 
-  /// \brief When a SourceLocation itself cannot be used, this returns
+  /// When a SourceLocation itself cannot be used, this returns
   /// an (opaque) 32-bit integer encoding for it.
   ///
   /// This should only be passed to SourceLocation::getFromRawEncoding, it
   /// should not be inspected directly.
   unsigned getRawEncoding() const { return ID; }
 
-  /// \brief Turn a raw encoding of a SourceLocation object into
+  /// Turn a raw encoding of a SourceLocation object into
   /// a real SourceLocation.
   ///
   /// \see getRawEncoding.
@@ -155,7 +155,7 @@
     return X;
   }
 
-  /// \brief When a SourceLocation itself cannot be used, this returns
+  /// When a SourceLocation itself cannot be used, this returns
   /// an (opaque) pointer encoding for it.
   ///
   /// This should only be passed to SourceLocation::getFromPtrEncoding, it
@@ -166,7 +166,7 @@
     return (void*)(uintptr_t)getRawEncoding();
   }
 
-  /// \brief Turn a pointer encoding of a SourceLocation object back
+  /// Turn a pointer encoding of a SourceLocation object back
   /// into a real SourceLocation.
   static SourceLocation getFromPtrEncoding(const void *Encoding) {
     return getFromRawEncoding((unsigned)(uintptr_t)Encoding);
@@ -194,7 +194,7 @@
   return LHS.getRawEncoding() < RHS.getRawEncoding();
 }
 
-/// \brief A trivial tuple used to represent a source range.
+/// A trivial tuple used to represent a source range.
 class SourceRange {
   SourceLocation B;
   SourceLocation E;
@@ -222,7 +222,7 @@
   }
 };
   
-/// \brief Represents a character-granular source range.
+/// Represents a character-granular source range.
 ///
 /// The underlying SourceRange can either specify the starting/ending character
 /// of the range, or it can specify the start of the range and the start of the
@@ -253,7 +253,7 @@
     return getCharRange(SourceRange(B, E));
   }
   
-  /// \brief Return true if the end of this range specifies the start of
+  /// Return true if the end of this range specifies the start of
   /// the last token.  Return false if the end of this range specifies the last
   /// character in the range.
   bool isTokenRange() const { return IsTokenRange; }
@@ -271,7 +271,7 @@
   bool isInvalid() const { return !isValid(); }
 };
 
-/// \brief Represents an unpacked "presumed" location which can be presented
+/// Represents an unpacked "presumed" location which can be presented
 /// to the user.
 ///
 /// A 'presumed' location can be modified by \#line and GNU line marker
@@ -288,14 +288,14 @@
   PresumedLoc(const char *FN, unsigned Ln, unsigned Co, SourceLocation IL)
       : Filename(FN), Line(Ln), Col(Co), IncludeLoc(IL) {}
 
-  /// \brief Return true if this object is invalid or uninitialized.
+  /// Return true if this object is invalid or uninitialized.
   ///
   /// This occurs when created with invalid source locations or when walking
   /// off the top of a \#include stack.
   bool isInvalid() const { return Filename == nullptr; }
   bool isValid() const { return Filename != nullptr; }
 
-  /// \brief Return the presumed filename of this location.
+  /// Return the presumed filename of this location.
   ///
   /// This can be affected by \#line etc.
   const char *getFilename() const {
@@ -303,7 +303,7 @@
     return Filename;
   }
 
-  /// \brief Return the presumed line number of this location.
+  /// Return the presumed line number of this location.
   ///
   /// This can be affected by \#line etc.
   unsigned getLine() const {
@@ -311,7 +311,7 @@
     return Line;
   }
 
-  /// \brief Return the presumed column number of this location.
+  /// Return the presumed column number of this location.
   ///
   /// This cannot be affected by \#line, but is packaged here for convenience.
   unsigned getColumn() const {
@@ -319,7 +319,7 @@
     return Col;
   }
 
-  /// \brief Return the presumed include location of this location.
+  /// Return the presumed include location of this location.
   ///
   /// This can be affected by GNU linemarker directives.
   SourceLocation getIncludeLoc() const {
@@ -330,14 +330,14 @@
 
 class FileEntry;
 
-/// \brief A SourceLocation and its associated SourceManager.
+/// A SourceLocation and its associated SourceManager.
 ///
 /// This is useful for argument passing to functions that expect both objects.
 class FullSourceLoc : public SourceLocation {
   const SourceManager *SrcMgr = nullptr;
 
 public:
-  /// \brief Creates a FullSourceLoc where isValid() returns \c false.
+  /// Creates a FullSourceLoc where isValid() returns \c false.
   FullSourceLoc() = default;
 
   explicit FullSourceLoc(SourceLocation Loc, const SourceManager &SM)
@@ -379,11 +379,11 @@
 
   const FileEntry *getFileEntry() const;
 
-  /// \brief Return a StringRef to the source buffer data for the
+  /// Return a StringRef to the source buffer data for the
   /// specified FileID.
   StringRef getBufferData(bool *Invalid = nullptr) const;
 
-  /// \brief Decompose the specified location into a raw FileID + Offset pair.
+  /// Decompose the specified location into a raw FileID + Offset pair.
   ///
   /// The first element is the FileID, the second is the offset from the
   /// start of the buffer of the location.
@@ -391,12 +391,12 @@
 
   bool isInSystemHeader() const;
 
-  /// \brief Determines the order of 2 source locations in the translation unit.
+  /// Determines the order of 2 source locations in the translation unit.
   ///
   /// \returns true if this source location comes before 'Loc', false otherwise.
   bool isBeforeInTranslationUnitThan(SourceLocation Loc) const;
 
-  /// \brief Determines the order of 2 source locations in the translation unit.
+  /// Determines the order of 2 source locations in the translation unit.
   ///
   /// \returns true if this source location comes before 'Loc', false otherwise.
   bool isBeforeInTranslationUnitThan(FullSourceLoc Loc) const {
@@ -405,14 +405,14 @@
     return isBeforeInTranslationUnitThan((SourceLocation)Loc);
   }
 
-  /// \brief Comparison function class, useful for sorting FullSourceLocs.
+  /// Comparison function class, useful for sorting FullSourceLocs.
   struct BeforeThanCompare {
     bool operator()(const FullSourceLoc& lhs, const FullSourceLoc& rhs) const {
       return lhs.isBeforeInTranslationUnitThan(rhs);
     }
   };
 
-  /// \brief Prints information about this FullSourceLoc to stderr.
+  /// Prints information about this FullSourceLoc to stderr.
   ///
   /// This is useful for debugging.
   void dump() const;
Index: cfe/trunk/include/clang/Basic/SourceManager.h
===================================================================
--- cfe/trunk/include/clang/Basic/SourceManager.h
+++ cfe/trunk/include/clang/Basic/SourceManager.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the SourceManager interface.
+/// Defines the SourceManager interface.
 ///
 /// There are three different types of locations in a %file: a spelling
 /// location, an expansion location, and a presumed location.
@@ -64,11 +64,11 @@
 class LineTableInfo;
 class SourceManager;
 
-/// \brief Public enums and private classes that are part of the
+/// Public enums and private classes that are part of the
 /// SourceManager implementation.
 namespace SrcMgr {
 
-  /// \brief Indicates whether a file or directory holds normal user code,
+  /// Indicates whether a file or directory holds normal user code,
   /// system code, or system code which is implicitly 'extern "C"' in C++ mode.
   ///
   /// Entire directories can be tagged with this (this is maintained by
@@ -89,19 +89,19 @@
     return CK == C_User_ModuleMap || CK == C_System_ModuleMap;
   }
 
-  /// \brief One instance of this struct is kept for every file loaded or used.
+  /// One instance of this struct is kept for every file loaded or used.
   ///
   /// This object owns the MemoryBuffer object.
   class LLVM_ALIGNAS(8) ContentCache {
     enum CCFlags {
-      /// \brief Whether the buffer is invalid.
+      /// Whether the buffer is invalid.
       InvalidFlag = 0x01,
 
-      /// \brief Whether the buffer should not be freed on destruction.
+      /// Whether the buffer should not be freed on destruction.
       DoNotFreeFlag = 0x02
     };
 
-    /// \brief The actual buffer containing the characters from the input
+    /// The actual buffer containing the characters from the input
     /// file.
     ///
     /// This is owned by the ContentCache object.  The bits indicate
@@ -109,7 +109,7 @@
     mutable llvm::PointerIntPair<llvm::MemoryBuffer *, 2> Buffer;
 
   public:
-    /// \brief Reference to the file entry representing this ContentCache.
+    /// Reference to the file entry representing this ContentCache.
     ///
     /// This reference does not own the FileEntry object.
     ///
@@ -117,35 +117,35 @@
     /// an imaginary text buffer.
     const FileEntry *OrigEntry;
 
-    /// \brief References the file which the contents were actually loaded from.
+    /// References the file which the contents were actually loaded from.
     ///
     /// Can be different from 'Entry' if we overridden the contents of one file
     /// with the contents of another file.
     const FileEntry *ContentsEntry;
 
-    /// \brief A bump pointer allocated array of offsets for each source line.
+    /// A bump pointer allocated array of offsets for each source line.
     ///
     /// This is lazily computed.  This is owned by the SourceManager
     /// BumpPointerAllocator object.
     unsigned *SourceLineCache = nullptr;
 
-    /// \brief The number of lines in this ContentCache.
+    /// The number of lines in this ContentCache.
     ///
     /// This is only valid if SourceLineCache is non-null.
     unsigned NumLines = 0;
 
-    /// \brief Indicates whether the buffer itself was provided to override
+    /// Indicates whether the buffer itself was provided to override
     /// the actual file contents.
     ///
     /// When true, the original entry may be a virtual file that does not
     /// exist.
     unsigned BufferOverridden : 1;
 
-    /// \brief True if this content cache was initially created for a source
+    /// True if this content cache was initially created for a source
     /// file considered as a system one.
     unsigned IsSystemFile : 1;
 
-    /// \brief True if this file may be transient, that is, if it might not
+    /// True if this file may be transient, that is, if it might not
     /// exist at some later point in time when this content entry is used,
     /// after serialization and deserialization.
     unsigned IsTransient : 1;
@@ -176,7 +176,7 @@
 
     ~ContentCache();
 
-    /// \brief Returns the memory buffer for the associated content.
+    /// Returns the memory buffer for the associated content.
     ///
     /// \param Diag Object through which diagnostics will be emitted if the
     ///   buffer cannot be retrieved.
@@ -190,7 +190,7 @@
                                   SourceLocation Loc = SourceLocation(),
                                   bool *Invalid = nullptr) const;
 
-    /// \brief Returns the size of the content encapsulated by this
+    /// Returns the size of the content encapsulated by this
     /// ContentCache.
     ///
     /// This can be the size of the source file or the size of an
@@ -198,7 +198,7 @@
     /// file this size is retrieved from the file's FileEntry.
     unsigned getSize() const;
 
-    /// \brief Returns the number of bytes actually mapped for this
+    /// Returns the number of bytes actually mapped for this
     /// ContentCache.
     ///
     /// This can be 0 if the MemBuffer was not actually expanded.
@@ -208,20 +208,20 @@
     /// this content cache.  This is used for performance analysis.
     llvm::MemoryBuffer::BufferKind getMemoryBufferKind() const;
 
-    /// \brief Get the underlying buffer, returning NULL if the buffer is not
+    /// Get the underlying buffer, returning NULL if the buffer is not
     /// yet available.
     llvm::MemoryBuffer *getRawBuffer() const { return Buffer.getPointer(); }
 
-    /// \brief Replace the existing buffer (which will be deleted)
+    /// Replace the existing buffer (which will be deleted)
     /// with the given buffer.
     void replaceBuffer(llvm::MemoryBuffer *B, bool DoNotFree = false);
 
-    /// \brief Determine whether the buffer itself is invalid.
+    /// Determine whether the buffer itself is invalid.
     bool isBufferInvalid() const {
       return Buffer.getInt() & InvalidFlag;
     }
 
-    /// \brief Determine whether the buffer should be freed.
+    /// Determine whether the buffer should be freed.
     bool shouldFreeBuffer() const {
       return (Buffer.getInt() & DoNotFreeFlag) == 0;
     }
@@ -232,7 +232,7 @@
   static_assert(alignof(ContentCache) >= 8,
                 "ContentCache must be 8-byte aligned.");
 
-  /// \brief Information about a FileID, basically just the logical file
+  /// Information about a FileID, basically just the logical file
   /// that it represents and include stack information.
   ///
   /// Each FileInfo has include stack information, indicating where it came
@@ -246,26 +246,26 @@
     friend class clang::ASTWriter;
     friend class clang::ASTReader;
 
-    /// \brief The location of the \#include that brought in this file.
+    /// The location of the \#include that brought in this file.
     ///
     /// This is an invalid SLOC for the main file (top of the \#include chain).
     unsigned IncludeLoc;  // Really a SourceLocation
 
-    /// \brief Number of FileIDs (files and macros) that were created during
+    /// Number of FileIDs (files and macros) that were created during
     /// preprocessing of this \#include, including this SLocEntry.
     ///
     /// Zero means the preprocessor didn't provide such info for this SLocEntry.
     unsigned NumCreatedFIDs : 31;
 
-    /// \brief Whether this FileInfo has any \#line directives.
+    /// Whether this FileInfo has any \#line directives.
     unsigned HasLineDirectives : 1;
 
-    /// \brief The content cache and the characteristic of the file.
+    /// The content cache and the characteristic of the file.
     llvm::PointerIntPair<const ContentCache*, 3, CharacteristicKind>
         ContentAndKind;
 
   public:
-    /// \brief Return a FileInfo object.
+    /// Return a FileInfo object.
     static FileInfo get(SourceLocation IL, const ContentCache *Con,
                         CharacteristicKind FileCharacter) {
       FileInfo X;
@@ -285,28 +285,28 @@
       return ContentAndKind.getPointer();
     }
 
-    /// \brief Return whether this is a system header or not.
+    /// Return whether this is a system header or not.
     CharacteristicKind getFileCharacteristic() const {
       return ContentAndKind.getInt();
     }
 
-    /// \brief Return true if this FileID has \#line directives in it.
+    /// Return true if this FileID has \#line directives in it.
     bool hasLineDirectives() const { return HasLineDirectives; }
 
-    /// \brief Set the flag that indicates that this FileID has
+    /// Set the flag that indicates that this FileID has
     /// line table entries associated with it.
     void setHasLineDirectives() {
       HasLineDirectives = true;
     }
   };
 
-  /// \brief Each ExpansionInfo encodes the expansion location - where
+  /// Each ExpansionInfo encodes the expansion location - where
   /// the token was ultimately expanded, and the SpellingLoc - where the actual
   /// character data for the token came from.
   class ExpansionInfo {
     // Really these are all SourceLocations.
 
-    /// \brief Where the spelling for the token can be found.
+    /// Where the spelling for the token can be found.
     unsigned SpellingLoc;
 
     /// In a macro expansion, ExpansionLocStart and ExpansionLocEnd
@@ -362,7 +362,7 @@
           getExpansionLocStart() != getExpansionLocEnd();
     }
 
-    /// \brief Return a ExpansionInfo for an expansion.
+    /// Return a ExpansionInfo for an expansion.
     ///
     /// Start and End specify the expansion range (where the macro is
     /// expanded), and SpellingLoc specifies the spelling location (where
@@ -379,7 +379,7 @@
       return X;
     }
 
-    /// \brief Return a special ExpansionInfo for the expansion of
+    /// Return a special ExpansionInfo for the expansion of
     /// a macro argument into a function-like macro's body.
     ///
     /// ExpansionLoc specifies the expansion location (where the macro is
@@ -406,7 +406,7 @@
       return create(SpellingLoc, ExpansionLoc, SourceLocation());
     }
 
-    /// \brief Return a special ExpansionInfo representing a token that ends
+    /// Return a special ExpansionInfo representing a token that ends
     /// prematurely. This is used to model a '>>' token that has been split
     /// into '>' tokens and similar cases. Unlike for the other forms of
     /// expansion, the expansion range in this case is a character range, not
@@ -418,7 +418,7 @@
     }
   };
 
-  /// \brief This is a discriminated union of FileInfo and ExpansionInfo.
+  /// This is a discriminated union of FileInfo and ExpansionInfo.
   ///
   /// SourceManager keeps an array of these objects, and they are uniquely
   /// identified by the FileID datatype.
@@ -469,44 +469,44 @@
 
 } // namespace SrcMgr
 
-/// \brief External source of source location entries.
+/// External source of source location entries.
 class ExternalSLocEntrySource {
 public:
   virtual ~ExternalSLocEntrySource();
 
-  /// \brief Read the source location entry with index ID, which will always be
+  /// Read the source location entry with index ID, which will always be
   /// less than -1.
   ///
   /// \returns true if an error occurred that prevented the source-location
   /// entry from being loaded.
   virtual bool ReadSLocEntry(int ID) = 0;
 
-  /// \brief Retrieve the module import location and name for the given ID, if
+  /// Retrieve the module import location and name for the given ID, if
   /// in fact it was loaded from a module (rather than, say, a precompiled
   /// header).
   virtual std::pair<SourceLocation, StringRef> getModuleImportLoc(int ID) = 0;
 };
 
-/// \brief Holds the cache used by isBeforeInTranslationUnit.
+/// Holds the cache used by isBeforeInTranslationUnit.
 ///
 /// The cache structure is complex enough to be worth breaking out of
 /// SourceManager.
 class InBeforeInTUCacheEntry {
-  /// \brief The FileID's of the cached query.
+  /// The FileID's of the cached query.
   ///
   /// If these match up with a subsequent query, the result can be reused.
   FileID LQueryFID, RQueryFID;
 
-  /// \brief True if LQueryFID was created before RQueryFID.
+  /// True if LQueryFID was created before RQueryFID.
   ///
   /// This is used to compare macro expansion locations.
   bool IsLQFIDBeforeRQFID;
 
-  /// \brief The file found in common between the two \#include traces, i.e.,
+  /// The file found in common between the two \#include traces, i.e.,
   /// the nearest common ancestor of the \#include tree.
   FileID CommonFID;
 
-  /// \brief The offset of the previous query in CommonFID.
+  /// The offset of the previous query in CommonFID.
   ///
   /// Usually, this represents the location of the \#include for QueryFID, but
   /// if LQueryFID is a parent of RQueryFID (or vice versa) then these can be a
@@ -514,7 +514,7 @@
   unsigned LCommonOffset, RCommonOffset;
 
 public:
-  /// \brief Return true if the currently cached values match up with
+  /// Return true if the currently cached values match up with
   /// the specified LHS/RHS query.
   ///
   /// If not, we can't use the cache.
@@ -522,7 +522,7 @@
     return LQueryFID == LHS && RQueryFID == RHS;
   }
 
-  /// \brief If the cache is valid, compute the result given the
+  /// If the cache is valid, compute the result given the
   /// specified offsets in the LHS/RHS FileID's.
   bool getCachedResult(unsigned LOffset, unsigned ROffset) const {
     // If one of the query files is the common file, use the offset.  Otherwise,
@@ -541,7 +541,7 @@
     return LOffset < ROffset;
   }
 
-  /// \brief Set up a new query.
+  /// Set up a new query.
   void setQueryFIDs(FileID LHS, FileID RHS, bool isLFIDBeforeRFID) {
     assert(LHS != RHS);
     LQueryFID = LHS;
@@ -562,12 +562,12 @@
   }
 };
 
-/// \brief The stack used when building modules on demand, which is used
+/// The stack used when building modules on demand, which is used
 /// to provide a link between the source managers of the different compiler
 /// instances.
 using ModuleBuildStack = ArrayRef<std::pair<std::string, FullSourceLoc>>;
 
-/// \brief This class handles loading and caching of source files into memory.
+/// This class handles loading and caching of source files into memory.
 ///
 /// This object owns the MemoryBuffer objects for all of the loaded
 /// files and assigns unique FileID's for each unique \#include chain.
@@ -580,14 +580,14 @@
 /// where the expanded token came from and the expansion location specifies
 /// where it was expanded.
 class SourceManager : public RefCountedBase<SourceManager> {
-  /// \brief DiagnosticsEngine object.
+  /// DiagnosticsEngine object.
   DiagnosticsEngine &Diag;
 
   FileManager &FileMgr;
 
   mutable llvm::BumpPtrAllocator ContentCacheAlloc;
 
-  /// \brief Memoized information about all of the files tracked by this
+  /// Memoized information about all of the files tracked by this
   /// SourceManager.
   ///
   /// This map allows us to merge ContentCache entries based
@@ -595,29 +595,29 @@
   /// non-null, FileEntry pointers.
   llvm::DenseMap<const FileEntry*, SrcMgr::ContentCache*> FileInfos;
 
-  /// \brief True if the ContentCache for files that are overridden by other
+  /// True if the ContentCache for files that are overridden by other
   /// files, should report the original file name. Defaults to true.
   bool OverridenFilesKeepOriginalName = true;
 
-  /// \brief True if non-system source files should be treated as volatile
+  /// True if non-system source files should be treated as volatile
   /// (likely to change while trying to use them). Defaults to false.
   bool UserFilesAreVolatile;
 
-  /// \brief True if all files read during this compilation should be treated
+  /// True if all files read during this compilation should be treated
   /// as transient (may not be present in later compilations using a module
   /// file created from this compilation). Defaults to false.
   bool FilesAreTransient = false;
 
   struct OverriddenFilesInfoTy {
-    /// \brief Files that have been overridden with the contents from another
+    /// Files that have been overridden with the contents from another
     /// file.
     llvm::DenseMap<const FileEntry *, const FileEntry *> OverriddenFiles;
 
-    /// \brief Files that were overridden with a memory buffer.
+    /// Files that were overridden with a memory buffer.
     llvm::DenseSet<const FileEntry *> OverriddenFilesWithBuffer;
   };
 
-  /// \brief Lazily create the object keeping overridden files info, since
+  /// Lazily create the object keeping overridden files info, since
   /// it is uncommonly used.
   std::unique_ptr<OverriddenFilesInfoTy> OverriddenFilesInfo;
 
@@ -627,77 +627,77 @@
     return *OverriddenFilesInfo;
   }
 
-  /// \brief Information about various memory buffers that we have read in.
+  /// Information about various memory buffers that we have read in.
   ///
   /// All FileEntry* within the stored ContentCache objects are NULL,
   /// as they do not refer to a file.
   std::vector<SrcMgr::ContentCache*> MemBufferInfos;
 
-  /// \brief The table of SLocEntries that are local to this module.
+  /// The table of SLocEntries that are local to this module.
   ///
   /// Positive FileIDs are indexes into this table. Entry 0 indicates an invalid
   /// expansion.
   SmallVector<SrcMgr::SLocEntry, 0> LocalSLocEntryTable;
 
-  /// \brief The table of SLocEntries that are loaded from other modules.
+  /// The table of SLocEntries that are loaded from other modules.
   ///
   /// Negative FileIDs are indexes into this table. To get from ID to an index,
   /// use (-ID - 2).
   mutable SmallVector<SrcMgr::SLocEntry, 0> LoadedSLocEntryTable;
 
-  /// \brief The starting offset of the next local SLocEntry.
+  /// The starting offset of the next local SLocEntry.
   ///
   /// This is LocalSLocEntryTable.back().Offset + the size of that entry.
   unsigned NextLocalOffset;
 
-  /// \brief The starting offset of the latest batch of loaded SLocEntries.
+  /// The starting offset of the latest batch of loaded SLocEntries.
   ///
   /// This is LoadedSLocEntryTable.back().Offset, except that that entry might
   /// not have been loaded, so that value would be unknown.
   unsigned CurrentLoadedOffset;
 
-  /// \brief The highest possible offset is 2^31-1, so CurrentLoadedOffset
+  /// The highest possible offset is 2^31-1, so CurrentLoadedOffset
   /// starts at 2^31.
   static const unsigned MaxLoadedOffset = 1U << 31U;
 
-  /// \brief A bitmap that indicates whether the entries of LoadedSLocEntryTable
+  /// A bitmap that indicates whether the entries of LoadedSLocEntryTable
   /// have already been loaded from the external source.
   ///
   /// Same indexing as LoadedSLocEntryTable.
   llvm::BitVector SLocEntryLoaded;
 
-  /// \brief An external source for source location entries.
+  /// An external source for source location entries.
   ExternalSLocEntrySource *ExternalSLocEntries = nullptr;
 
-  /// \brief A one-entry cache to speed up getFileID.
+  /// A one-entry cache to speed up getFileID.
   ///
   /// LastFileIDLookup records the last FileID looked up or created, because it
   /// is very common to look up many tokens from the same file.
   mutable FileID LastFileIDLookup;
 
-  /// \brief Holds information for \#line directives.
+  /// Holds information for \#line directives.
   ///
   /// This is referenced by indices from SLocEntryTable.
   LineTableInfo *LineTable = nullptr;
 
-  /// \brief These ivars serve as a cache used in the getLineNumber
+  /// These ivars serve as a cache used in the getLineNumber
   /// method which is used to speedup getLineNumber calls to nearby locations.
   mutable FileID LastLineNoFileIDQuery;
   mutable SrcMgr::ContentCache *LastLineNoContentCache;
   mutable unsigned LastLineNoFilePos;
   mutable unsigned LastLineNoResult;
 
-  /// \brief The file ID for the main source file of the translation unit.
+  /// The file ID for the main source file of the translation unit.
   FileID MainFileID;
 
-  /// \brief The file ID for the precompiled preamble there is one.
+  /// The file ID for the precompiled preamble there is one.
   FileID PreambleFileID;
 
   // Statistics for -print-stats.
   mutable unsigned NumLinearScans = 0;
   mutable unsigned NumBinaryProbes = 0;
 
-  /// \brief Associates a FileID with its "included/expanded in" decomposed
+  /// Associates a FileID with its "included/expanded in" decomposed
   /// location.
   ///
   /// Used to cache results from and speed-up \c getDecomposedIncludedLoc
@@ -725,14 +725,14 @@
 
   mutable std::unique_ptr<SrcMgr::ContentCache> FakeContentCacheForRecovery;
 
-  /// \brief Lazily computed map of macro argument chunks to their expanded
+  /// Lazily computed map of macro argument chunks to their expanded
   /// source location.
   using MacroArgsMap = std::map<unsigned, SourceLocation>;
 
   mutable llvm::DenseMap<FileID, std::unique_ptr<MacroArgsMap>>
       MacroArgsCacheMap;
 
-  /// \brief The stack of modules being built, which is used to detect
+  /// The stack of modules being built, which is used to detect
   /// cycles in the module dependency graph as modules are being built, as
   /// well as to describe why we're rebuilding a particular module.
   ///
@@ -758,29 +758,29 @@
 
   FileManager &getFileManager() const { return FileMgr; }
 
-  /// \brief Set true if the SourceManager should report the original file name
+  /// Set true if the SourceManager should report the original file name
   /// for contents of files that were overridden by other files. Defaults to
   /// true.
   void setOverridenFilesKeepOriginalName(bool value) {
     OverridenFilesKeepOriginalName = value;
   }
 
-  /// \brief True if non-system source files should be treated as volatile
+  /// True if non-system source files should be treated as volatile
   /// (likely to change while trying to use them).
   bool userFilesAreVolatile() const { return UserFilesAreVolatile; }
 
-  /// \brief Retrieve the module build stack.
+  /// Retrieve the module build stack.
   ModuleBuildStack getModuleBuildStack() const {
     return StoredModuleBuildStack;
   }
 
-  /// \brief Set the module build stack.
+  /// Set the module build stack.
   void setModuleBuildStack(ModuleBuildStack stack) {
     StoredModuleBuildStack.clear();
     StoredModuleBuildStack.append(stack.begin(), stack.end());
   }
 
-  /// \brief Push an entry to the module build stack.
+  /// Push an entry to the module build stack.
   void pushModuleBuildStack(StringRef moduleName, FullSourceLoc importLoc) {
     StoredModuleBuildStack.push_back(std::make_pair(moduleName.str(),importLoc));
   }
@@ -789,28 +789,28 @@
   // MainFileID creation and querying methods.
   //===--------------------------------------------------------------------===//
 
-  /// \brief Returns the FileID of the main source file.
+  /// Returns the FileID of the main source file.
   FileID getMainFileID() const { return MainFileID; }
 
-  /// \brief Set the file ID for the main source file.
+  /// Set the file ID for the main source file.
   void setMainFileID(FileID FID) {
     MainFileID = FID;
   }
 
-  /// \brief Set the file ID for the precompiled preamble.
+  /// Set the file ID for the precompiled preamble.
   void setPreambleFileID(FileID Preamble) {
     assert(PreambleFileID.isInvalid() && "PreambleFileID already set!");
     PreambleFileID = Preamble;
   }
 
-  /// \brief Get the file ID for the precompiled preamble if there is one.
+  /// Get the file ID for the precompiled preamble if there is one.
   FileID getPreambleFileID() const { return PreambleFileID; }
 
   //===--------------------------------------------------------------------===//
   // Methods to create new FileID's and macro expansions.
   //===--------------------------------------------------------------------===//
 
-  /// \brief Create a new FileID that represents the specified file
+  /// Create a new FileID that represents the specified file
   /// being \#included from the specified IncludePosition.
   ///
   /// This translates NULL into standard input.
@@ -823,7 +823,7 @@
     return createFileID(IR, IncludePos, FileCharacter, LoadedID, LoadedOffset);
   }
 
-  /// \brief Create a new FileID that represents the specified memory buffer.
+  /// Create a new FileID that represents the specified memory buffer.
   ///
   /// This does no caching of the buffer and takes ownership of the
   /// MemoryBuffer, so only pass a MemoryBuffer to this once.
@@ -838,7 +838,7 @@
 
   enum UnownedTag { Unowned };
 
-  /// \brief Create a new FileID that represents the specified memory buffer.
+  /// Create a new FileID that represents the specified memory buffer.
   ///
   /// This does no caching of the buffer and takes ownership of the
   /// MemoryBuffer, so only pass a MemoryBuffer to this once.
@@ -850,7 +850,7 @@
                         IncludeLoc, FileCharacter, LoadedID, LoadedOffset);
   }
 
-  /// \brief Get the FileID for \p SourceFile if it exists. Otherwise, create a
+  /// Get the FileID for \p SourceFile if it exists. Otherwise, create a
   /// new FileID for the \p SourceFile.
   FileID getOrCreateFileID(const FileEntry *SourceFile,
                            SrcMgr::CharacteristicKind FileCharacter) {
@@ -859,7 +859,7 @@
                                             FileCharacter);
   }
 
-  /// \brief Return a new SourceLocation that encodes the
+  /// Return a new SourceLocation that encodes the
   /// fact that a token from SpellingLoc should actually be referenced from
   /// ExpansionLoc, and that it represents the expansion of a macro argument
   /// into the function-like macro body.
@@ -867,7 +867,7 @@
                                             SourceLocation ExpansionLoc,
                                             unsigned TokLength);
 
-  /// \brief Return a new SourceLocation that encodes the fact
+  /// Return a new SourceLocation that encodes the fact
   /// that a token from SpellingLoc should actually be referenced from
   /// ExpansionLoc.
   SourceLocation createExpansionLoc(SourceLocation Loc,
@@ -878,20 +878,20 @@
                                     int LoadedID = 0,
                                     unsigned LoadedOffset = 0);
 
-  /// \brief Return a new SourceLocation that encodes that the token starting
+  /// Return a new SourceLocation that encodes that the token starting
   /// at \p TokenStart ends prematurely at \p TokenEnd.
   SourceLocation createTokenSplitLoc(SourceLocation SpellingLoc,
                                      SourceLocation TokenStart,
                                      SourceLocation TokenEnd);
 
-  /// \brief Retrieve the memory buffer associated with the given file.
+  /// Retrieve the memory buffer associated with the given file.
   ///
   /// \param Invalid If non-NULL, will be set \c true if an error
   /// occurs while retrieving the memory buffer.
   llvm::MemoryBuffer *getMemoryBufferForFile(const FileEntry *File,
                                              bool *Invalid = nullptr);
 
-  /// \brief Override the contents of the given source file by providing an
+  /// Override the contents of the given source file by providing an
   /// already-allocated buffer.
   ///
   /// \param SourceFile the source file whose contents will be overridden.
@@ -908,7 +908,7 @@
     overrideFileContents(SourceFile, Buffer.release(), /*DoNotFree*/ false);
   }
 
-  /// \brief Override the given source file with another one.
+  /// Override the given source file with another one.
   ///
   /// \param SourceFile the source file which will be overridden.
   ///
@@ -917,7 +917,7 @@
   void overrideFileContents(const FileEntry *SourceFile,
                             const FileEntry *NewFile);
 
-  /// \brief Returns true if the file contents have been overridden.
+  /// Returns true if the file contents have been overridden.
   bool isFileOverridden(const FileEntry *File) const {
     if (OverriddenFilesInfo) {
       if (OverriddenFilesInfo->OverriddenFilesWithBuffer.count(File))
@@ -929,16 +929,16 @@
     return false;
   }
 
-  /// \brief Disable overridding the contents of a file, previously enabled
+  /// Disable overridding the contents of a file, previously enabled
   /// with #overrideFileContents.
   ///
   /// This should be called before parsing has begun.
   void disableFileContentsOverride(const FileEntry *File);
 
-  /// \brief Specify that a file is transient.
+  /// Specify that a file is transient.
   void setFileIsTransient(const FileEntry *SourceFile);
 
-  /// \brief Specify that all files that are read during this compilation are
+  /// Specify that all files that are read during this compilation are
   /// transient.
   void setAllFilesAreTransient(bool Transient) {
     FilesAreTransient = Transient;
@@ -948,7 +948,7 @@
   // FileID manipulation methods.
   //===--------------------------------------------------------------------===//
 
-  /// \brief Return the buffer for the specified FileID.
+  /// Return the buffer for the specified FileID.
   ///
   /// If there is an error opening this buffer the first time, this
   /// manufactures a temporary buffer and returns a non-empty error string.
@@ -982,7 +982,7 @@
                                                         Invalid);
   }
 
-  /// \brief Returns the FileEntry record for the provided FileID.
+  /// Returns the FileEntry record for the provided FileID.
   const FileEntry *getFileEntryForID(FileID FID) const {
     bool MyInvalid = false;
     const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &MyInvalid);
@@ -995,7 +995,7 @@
     return Content->OrigEntry;
   }
 
-  /// \brief Returns the FileEntry record for the provided SLocEntry.
+  /// Returns the FileEntry record for the provided SLocEntry.
   const FileEntry *getFileEntryForSLocEntry(const SrcMgr::SLocEntry &sloc) const
   {
     const SrcMgr::ContentCache *Content = sloc.getFile().getContentCache();
@@ -1004,14 +1004,14 @@
     return Content->OrigEntry;
   }
 
-  /// \brief Return a StringRef to the source buffer data for the
+  /// Return a StringRef to the source buffer data for the
   /// specified FileID.
   ///
   /// \param FID The file ID whose contents will be returned.
   /// \param Invalid If non-NULL, will be set true if an error occurred.
   StringRef getBufferData(FileID FID, bool *Invalid = nullptr) const;
 
-  /// \brief Get the number of FileIDs (files and macros) that were created
+  /// Get the number of FileIDs (files and macros) that were created
   /// during preprocessing of \p FID, including it.
   unsigned getNumCreatedFIDsForFileID(FileID FID) const {
     bool Invalid = false;
@@ -1022,7 +1022,7 @@
     return Entry.getFile().NumCreatedFIDs;
   }
 
-  /// \brief Set the number of FileIDs (files and macros) that were created
+  /// Set the number of FileIDs (files and macros) that were created
   /// during preprocessing of \p FID, including it.
   void setNumCreatedFIDsForFileID(FileID FID, unsigned NumFIDs) const {
     bool Invalid = false;
@@ -1038,7 +1038,7 @@
   // SourceLocation manipulation methods.
   //===--------------------------------------------------------------------===//
 
-  /// \brief Return the FileID for a SourceLocation.
+  /// Return the FileID for a SourceLocation.
   ///
   /// This is a very hot method that is used for all SourceManager queries
   /// that start with a SourceLocation object.  It is responsible for finding
@@ -1054,14 +1054,14 @@
     return getFileIDSlow(SLocOffset);
   }
 
-  /// \brief Return the filename of the file containing a SourceLocation.
+  /// Return the filename of the file containing a SourceLocation.
   StringRef getFilename(SourceLocation SpellingLoc) const {
     if (const FileEntry *F = getFileEntryForID(getFileID(SpellingLoc)))
       return F->getName();
     return StringRef();
   }
 
-  /// \brief Return the source location corresponding to the first byte of
+  /// Return the source location corresponding to the first byte of
   /// the specified file.
   SourceLocation getLocForStartOfFile(FileID FID) const {
     bool Invalid = false;
@@ -1073,7 +1073,7 @@
     return SourceLocation::getFileLoc(FileOffset);
   }
   
-  /// \brief Return the source location corresponding to the last byte of the
+  /// Return the source location corresponding to the last byte of the
   /// specified file.
   SourceLocation getLocForEndOfFile(FileID FID) const {
     bool Invalid = false;
@@ -1085,7 +1085,7 @@
     return SourceLocation::getFileLoc(FileOffset + getFileIDSize(FID));
   }
 
-  /// \brief Returns the include location if \p FID is a \#include'd file
+  /// Returns the include location if \p FID is a \#include'd file
   /// otherwise it returns an invalid location.
   SourceLocation getIncludeLoc(FileID FID) const {
     bool Invalid = false;
@@ -1096,7 +1096,7 @@
     return Entry.getFile().getIncludeLoc();
   }
 
-  // \brief Returns the import location if the given source location is
+  // Returns the import location if the given source location is
   // located within a module, or an invalid location if the source location
   // is within the current translation unit.
   std::pair<SourceLocation, StringRef>
@@ -1111,7 +1111,7 @@
     return ExternalSLocEntries->getModuleImportLoc(FID.ID);
   }
 
-  /// \brief Given a SourceLocation object \p Loc, return the expansion
+  /// Given a SourceLocation object \p Loc, return the expansion
   /// location referenced by the ID.
   SourceLocation getExpansionLoc(SourceLocation Loc) const {
     // Handle the non-mapped case inline, defer to out of line code to handle
@@ -1120,7 +1120,7 @@
     return getExpansionLocSlowCase(Loc);
   }
 
-  /// \brief Given \p Loc, if it is a macro location return the expansion
+  /// Given \p Loc, if it is a macro location return the expansion
   /// location or the spelling location, depending on if it comes from a
   /// macro argument or not.
   SourceLocation getFileLoc(SourceLocation Loc) const {
@@ -1128,17 +1128,17 @@
     return getFileLocSlowCase(Loc);
   }
 
-  /// \brief Return the start/end of the expansion information for an
+  /// Return the start/end of the expansion information for an
   /// expansion location.
   ///
   /// \pre \p Loc is required to be an expansion location.
   CharSourceRange getImmediateExpansionRange(SourceLocation Loc) const;
 
-  /// \brief Given a SourceLocation object, return the range of
+  /// Given a SourceLocation object, return the range of
   /// tokens covered by the expansion in the ultimate file.
   CharSourceRange getExpansionRange(SourceLocation Loc) const;
 
-  /// \brief Given a SourceRange object, return the range of
+  /// Given a SourceRange object, return the range of
   /// tokens or characters covered by the expansion in the ultimate file.
   CharSourceRange getExpansionRange(SourceRange Range) const {
     SourceLocation Begin = getExpansionRange(Range.getBegin()).getBegin();
@@ -1147,7 +1147,7 @@
                            End.isTokenRange());
   }
 
-  /// \brief Given a CharSourceRange object, return the range of
+  /// Given a CharSourceRange object, return the range of
   /// tokens or characters covered by the expansion in the ultimate file.
   CharSourceRange getExpansionRange(CharSourceRange Range) const {
     CharSourceRange Expansion = getExpansionRange(Range.getAsRange());
@@ -1156,7 +1156,7 @@
     return Expansion;
   }
 
-  /// \brief Given a SourceLocation object, return the spelling
+  /// Given a SourceLocation object, return the spelling
   /// location referenced by the ID.
   ///
   /// This is the place where the characters that make up the lexed token
@@ -1168,7 +1168,7 @@
     return getSpellingLocSlowCase(Loc);
   }
 
-  /// \brief Given a SourceLocation object, return the spelling location
+  /// Given a SourceLocation object, return the spelling location
   /// referenced by the ID.
   ///
   /// This is the first level down towards the place where the characters
@@ -1176,7 +1176,7 @@
   /// be used by clients.
   SourceLocation getImmediateSpellingLoc(SourceLocation Loc) const;
 
-  /// \brief Form a SourceLocation from a FileID and Offset pair.
+  /// Form a SourceLocation from a FileID and Offset pair.
   SourceLocation getComposedLoc(FileID FID, unsigned Offset) const {
     bool Invalid = false;
     const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid);
@@ -1188,7 +1188,7 @@
                           : SourceLocation::getMacroLoc(GlobalOffset);
   }
 
-  /// \brief Decompose the specified location into a raw FileID + Offset pair.
+  /// Decompose the specified location into a raw FileID + Offset pair.
   ///
   /// The first element is the FileID, the second is the offset from the
   /// start of the buffer of the location.
@@ -1201,7 +1201,7 @@
     return std::make_pair(FID, Loc.getOffset()-E.getOffset());
   }
 
-  /// \brief Decompose the specified location into a raw FileID + Offset pair.
+  /// Decompose the specified location into a raw FileID + Offset pair.
   ///
   /// If the location is an expansion record, walk through it until we find
   /// the final location expanded.
@@ -1220,7 +1220,7 @@
     return getDecomposedExpansionLocSlowCase(E);
   }
 
-  /// \brief Decompose the specified location into a raw FileID + Offset pair.
+  /// Decompose the specified location into a raw FileID + Offset pair.
   ///
   /// If the location is an expansion record, walk through it until we find
   /// its spelling record.
@@ -1238,11 +1238,11 @@
     return getDecomposedSpellingLocSlowCase(E, Offset);
   }
 
-  /// \brief Returns the "included/expanded in" decomposed location of the given
+  /// Returns the "included/expanded in" decomposed location of the given
   /// FileID.
   std::pair<FileID, unsigned> getDecomposedIncludedLoc(FileID FID) const;
 
-  /// \brief Returns the offset from the start of the file that the
+  /// Returns the offset from the start of the file that the
   /// specified SourceLocation represents.
   ///
   /// This is not very meaningful for a macro ID.
@@ -1250,7 +1250,7 @@
     return getDecomposedLoc(SpellingLoc).second;
   }
 
-  /// \brief Tests whether the given source location represents a macro
+  /// Tests whether the given source location represents a macro
   /// argument's expansion into the function-like macro definition.
   ///
   /// \param StartLoc If non-null and function returns true, it is set to the
@@ -1262,14 +1262,14 @@
   bool isMacroArgExpansion(SourceLocation Loc,
                            SourceLocation *StartLoc = nullptr) const;
 
-  /// \brief Tests whether the given source location represents the expansion of
+  /// Tests whether the given source location represents the expansion of
   /// a macro body.
   ///
   /// This is equivalent to testing whether the location is part of a macro
   /// expansion but not the expansion of an argument to a function-like macro.
   bool isMacroBodyExpansion(SourceLocation Loc) const;
 
-  /// \brief Returns true if the given MacroID location points at the beginning
+  /// Returns true if the given MacroID location points at the beginning
   /// of the immediate macro expansion.
   ///
   /// \param MacroBegin If non-null and function returns true, it is set to the
@@ -1277,7 +1277,7 @@
   bool isAtStartOfImmediateMacroExpansion(SourceLocation Loc,
                                     SourceLocation *MacroBegin = nullptr) const;
 
-  /// \brief Returns true if the given MacroID location points at the character
+  /// Returns true if the given MacroID location points at the character
   /// end of the immediate macro expansion.
   ///
   /// \param MacroEnd If non-null and function returns true, it is set to the
@@ -1286,7 +1286,7 @@
   isAtEndOfImmediateMacroExpansion(SourceLocation Loc,
                                    SourceLocation *MacroEnd = nullptr) const;
 
-  /// \brief Returns true if \p Loc is inside the [\p Start, +\p Length)
+  /// Returns true if \p Loc is inside the [\p Start, +\p Length)
   /// chunk of the source location address space.
   ///
   /// If it's true and \p RelativeOffset is non-null, it will be set to the
@@ -1311,7 +1311,7 @@
     return false;
   }
 
-  /// \brief Return true if both \p LHS and \p RHS are in the local source
+  /// Return true if both \p LHS and \p RHS are in the local source
   /// location address space or the loaded one.
   ///
   /// If it's true and \p RelativeOffset is non-null, it will be set to the
@@ -1335,14 +1335,14 @@
   // Queries about the code at a SourceLocation.
   //===--------------------------------------------------------------------===//
 
-  /// \brief Return a pointer to the start of the specified location
+  /// Return a pointer to the start of the specified location
   /// in the appropriate spelling MemoryBuffer.
   ///
   /// \param Invalid If non-NULL, will be set \c true if an error occurs.
   const char *getCharacterData(SourceLocation SL,
                                bool *Invalid = nullptr) const;
 
-  /// \brief Return the column # for the specified file position.
+  /// Return the column # for the specified file position.
   ///
   /// This is significantly cheaper to compute than the line number.  This
   /// returns zero if the column number isn't known.  This may only be called
@@ -1357,7 +1357,7 @@
   unsigned getPresumedColumnNumber(SourceLocation Loc,
                                    bool *Invalid = nullptr) const;
 
-  /// \brief Given a SourceLocation, return the spelling line number
+  /// Given a SourceLocation, return the spelling line number
   /// for the position indicated.
   ///
   /// This requires building and caching a table of line offsets for the
@@ -1368,14 +1368,14 @@
   unsigned getExpansionLineNumber(SourceLocation Loc, bool *Invalid = nullptr) const;
   unsigned getPresumedLineNumber(SourceLocation Loc, bool *Invalid = nullptr) const;
 
-  /// \brief Return the filename or buffer identifier of the buffer the
+  /// Return the filename or buffer identifier of the buffer the
   /// location is in.
   ///
   /// Note that this name does not respect \#line directives.  Use
   /// getPresumedLoc for normal clients.
   StringRef getBufferName(SourceLocation Loc, bool *Invalid = nullptr) const;
 
-  /// \brief Return the file characteristic of the specified source
+  /// Return the file characteristic of the specified source
   /// location, indicating whether this is a normal file, a system
   /// header, or an "implicit extern C" system header.
   ///
@@ -1387,7 +1387,7 @@
   /// considered to be from a system header.
   SrcMgr::CharacteristicKind getFileCharacteristic(SourceLocation Loc) const;
 
-  /// \brief Returns the "presumed" location of a SourceLocation specifies.
+  /// Returns the "presumed" location of a SourceLocation specifies.
   ///
   /// A "presumed location" can be modified by \#line or GNU line marker
   /// directives.  This provides a view on the data that a user should see
@@ -1403,7 +1403,7 @@
   PresumedLoc getPresumedLoc(SourceLocation Loc,
                              bool UseLineDirectives = true) const;
 
-  /// \brief Returns whether the PresumedLoc for a given SourceLocation is 
+  /// Returns whether the PresumedLoc for a given SourceLocation is 
   /// in the main file.
   ///
   /// This computes the "presumed" location for a SourceLocation, then checks
@@ -1412,7 +1412,7 @@
   /// account.
   bool isInMainFile(SourceLocation Loc) const;
 
-  /// \brief Returns true if the spelling locations for both SourceLocations
+  /// Returns true if the spelling locations for both SourceLocations
   /// are part of the same file buffer.
   ///
   /// This check ignores line marker directives.
@@ -1420,7 +1420,7 @@
     return getFileID(Loc1) == getFileID(Loc2);
   }
 
-  /// \brief Returns true if the spelling location for the given location
+  /// Returns true if the spelling location for the given location
   /// is in the main file buffer.
   ///
   /// This check ignores line marker directives.
@@ -1428,25 +1428,25 @@
     return getFileID(Loc) == getMainFileID();
   }
 
-  /// \brief Returns if a SourceLocation is in a system header.
+  /// Returns if a SourceLocation is in a system header.
   bool isInSystemHeader(SourceLocation Loc) const {
     return isSystem(getFileCharacteristic(Loc));
   }
 
-  /// \brief Returns if a SourceLocation is in an "extern C" system header.
+  /// Returns if a SourceLocation is in an "extern C" system header.
   bool isInExternCSystemHeader(SourceLocation Loc) const {
     return getFileCharacteristic(Loc) == SrcMgr::C_ExternCSystem;
   }
 
-  /// \brief Returns whether \p Loc is expanded from a macro in a system header.
+  /// Returns whether \p Loc is expanded from a macro in a system header.
   bool isInSystemMacro(SourceLocation loc) const {
     return loc.isMacroID() && isInSystemHeader(getSpellingLoc(loc));
   }
 
-  /// \brief The size of the SLocEntry that \p FID represents.
+  /// The size of the SLocEntry that \p FID represents.
   unsigned getFileIDSize(FileID FID) const;
 
-  /// \brief Given a specific FileID, returns true if \p Loc is inside that
+  /// Given a specific FileID, returns true if \p Loc is inside that
   /// FileID chunk and sets relative offset (offset of \p Loc from beginning
   /// of FileID) to \p relativeOffset.
   bool isInFileID(SourceLocation Loc, FileID FID,
@@ -1465,10 +1465,10 @@
   // Line Table Manipulation Routines
   //===--------------------------------------------------------------------===//
 
-  /// \brief Return the uniqued ID for the specified filename.
+  /// Return the uniqued ID for the specified filename.
   unsigned getLineTableFilenameID(StringRef Str);
 
-  /// \brief Add a line note to the line table for the FileID and offset
+  /// Add a line note to the line table for the FileID and offset
   /// specified by Loc.
   ///
   /// If FilenameID is -1, it is considered to be unspecified.
@@ -1476,17 +1476,17 @@
                    bool IsFileEntry, bool IsFileExit,
                    SrcMgr::CharacteristicKind FileKind);
 
-  /// \brief Determine if the source manager has a line table.
+  /// Determine if the source manager has a line table.
   bool hasLineTable() const { return LineTable != nullptr; }
 
-  /// \brief Retrieve the stored line table.
+  /// Retrieve the stored line table.
   LineTableInfo &getLineTable();
 
   //===--------------------------------------------------------------------===//
   // Queries for performance analysis.
   //===--------------------------------------------------------------------===//
 
-  /// \brief Return the total amount of physical memory allocated by the
+  /// Return the total amount of physical memory allocated by the
   /// ContentCache allocator.
   size_t getContentCacheSize() const {
     return ContentCacheAlloc.getTotalMemory();
@@ -1500,11 +1500,11 @@
       : malloc_bytes(malloc_bytes), mmap_bytes(mmap_bytes) {}
   };
 
-  /// \brief Return the amount of memory used by memory buffers, breaking down
+  /// Return the amount of memory used by memory buffers, breaking down
   /// by heap-backed versus mmap'ed memory.
   MemoryBufferSizes getMemoryBufferSizes() const;
 
-  /// \brief Return the amount of memory used for various side tables and
+  /// Return the amount of memory used for various side tables and
   /// data structures in the SourceManager.
   size_t getDataStructureSizes() const;
 
@@ -1512,25 +1512,25 @@
   // Other miscellaneous methods.
   //===--------------------------------------------------------------------===//
 
-  /// \brief Get the source location for the given file:line:col triplet.
+  /// Get the source location for the given file:line:col triplet.
   ///
   /// If the source file is included multiple times, the source location will
   /// be based upon the first inclusion.
   SourceLocation translateFileLineCol(const FileEntry *SourceFile,
                                       unsigned Line, unsigned Col) const;
 
-  /// \brief Get the FileID for the given file.
+  /// Get the FileID for the given file.
   ///
   /// If the source file is included multiple times, the FileID will be the
   /// first inclusion.
   FileID translateFile(const FileEntry *SourceFile) const;
 
-  /// \brief Get the source location in \p FID for the given line:col.
+  /// Get the source location in \p FID for the given line:col.
   /// Returns null location if \p FID is not a file SLocEntry.
   SourceLocation translateLineCol(FileID FID,
                                   unsigned Line, unsigned Col) const;
 
-  /// \brief If \p Loc points inside a function macro argument, the returned
+  /// If \p Loc points inside a function macro argument, the returned
   /// location will be the macro location in which the argument was expanded.
   /// If a macro argument is used multiple times, the expanded location will
   /// be at the first expansion of the argument.
@@ -1541,12 +1541,12 @@
   /// where 'foo' was expanded into.
   SourceLocation getMacroArgExpandedLocation(SourceLocation Loc) const;
 
-  /// \brief Determines the order of 2 source locations in the translation unit.
+  /// Determines the order of 2 source locations in the translation unit.
   ///
   /// \returns true if LHS source location comes before RHS, false otherwise.
   bool isBeforeInTranslationUnit(SourceLocation LHS, SourceLocation RHS) const;
 
-  /// \brief Determines whether the two decomposed source location is in the
+  /// Determines whether the two decomposed source location is in the
   ///        same translation unit. As a byproduct, it also calculates the order
   ///        of the source locations in case they are in the same TU.
   ///
@@ -1557,13 +1557,13 @@
   isInTheSameTranslationUnit(std::pair<FileID, unsigned> &LOffs,
                              std::pair<FileID, unsigned> &ROffs) const;
 
-  /// \brief Determines the order of 2 source locations in the "source location
+  /// Determines the order of 2 source locations in the "source location
   /// address space".
   bool isBeforeInSLocAddrSpace(SourceLocation LHS, SourceLocation RHS) const {
     return isBeforeInSLocAddrSpace(LHS, RHS.getOffset());
   }
 
-  /// \brief Determines the order of a source location and a source location
+  /// Determines the order of a source location and a source location
   /// offset in the "source location address space".
   ///
   /// Note that we always consider source locations loaded from
@@ -1595,25 +1595,25 @@
     return FileInfos.find(File) != FileInfos.end();
   }
 
-  /// \brief Print statistics to stderr.
+  /// Print statistics to stderr.
   void PrintStats() const;
 
   void dump() const;
 
-  /// \brief Get the number of local SLocEntries we have.
+  /// Get the number of local SLocEntries we have.
   unsigned local_sloc_entry_size() const { return LocalSLocEntryTable.size(); }
 
-  /// \brief Get a local SLocEntry. This is exposed for indexing.
+  /// Get a local SLocEntry. This is exposed for indexing.
   const SrcMgr::SLocEntry &getLocalSLocEntry(unsigned Index,
                                              bool *Invalid = nullptr) const {
     assert(Index < LocalSLocEntryTable.size() && "Invalid index");
     return LocalSLocEntryTable[Index];
   }
 
-  /// \brief Get the number of loaded SLocEntries we have.
+  /// Get the number of loaded SLocEntries we have.
   unsigned loaded_sloc_entry_size() const { return LoadedSLocEntryTable.size();}
 
-  /// \brief Get a loaded SLocEntry. This is exposed for indexing.
+  /// Get a loaded SLocEntry. This is exposed for indexing.
   const SrcMgr::SLocEntry &getLoadedSLocEntry(unsigned Index,
                                               bool *Invalid = nullptr) const {
     assert(Index < LoadedSLocEntryTable.size() && "Invalid index");
@@ -1639,7 +1639,7 @@
     ExternalSLocEntries = Source;
   }
 
-  /// \brief Allocate a number of loaded SLocEntries, which will be actually
+  /// Allocate a number of loaded SLocEntries, which will be actually
   /// loaded on demand from the external source.
   ///
   /// NumSLocEntries will be allocated, which occupy a total of TotalSize space
@@ -1648,23 +1648,23 @@
   std::pair<int, unsigned>
   AllocateLoadedSLocEntries(unsigned NumSLocEntries, unsigned TotalSize);
 
-  /// \brief Returns true if \p Loc came from a PCH/Module.
+  /// Returns true if \p Loc came from a PCH/Module.
   bool isLoadedSourceLocation(SourceLocation Loc) const {
     return Loc.getOffset() >= CurrentLoadedOffset;
   }
 
-  /// \brief Returns true if \p Loc did not come from a PCH/Module.
+  /// Returns true if \p Loc did not come from a PCH/Module.
   bool isLocalSourceLocation(SourceLocation Loc) const {
     return Loc.getOffset() < NextLocalOffset;
   }
 
-  /// \brief Returns true if \p FID came from a PCH/Module.
+  /// Returns true if \p FID came from a PCH/Module.
   bool isLoadedFileID(FileID FID) const {
     assert(FID.ID != -1 && "Using FileID sentinel value");
     return FID.ID < 0;
   }
 
-  /// \brief Returns true if \p FID did not come from a PCH/Module.
+  /// Returns true if \p FID did not come from a PCH/Module.
   bool isLocalFileID(FileID FID) const {
     return !isLoadedFileID(FID);
   }
@@ -1697,7 +1697,7 @@
 
   const SrcMgr::SLocEntry &loadSLocEntry(unsigned Index, bool *Invalid) const;
 
-  /// \brief Get the entry with the given unwrapped FileID.
+  /// Get the entry with the given unwrapped FileID.
   const SrcMgr::SLocEntry &getSLocEntryByID(int ID,
                                             bool *Invalid = nullptr) const {
     assert(ID != -1 && "Using FileID sentinel value");
@@ -1718,7 +1718,7 @@
                                         int LoadedID = 0,
                                         unsigned LoadedOffset = 0);
 
-  /// \brief Return true if the specified FileID contains the
+  /// Return true if the specified FileID contains the
   /// specified SourceLocation offset.  This is a very hot method.
   inline bool isOffsetInFileID(FileID FID, unsigned SLocOffset) const {
     const SrcMgr::SLocEntry &Entry = getSLocEntry(FID);
@@ -1738,15 +1738,15 @@
     return SLocOffset < getSLocEntryByID(FID.ID+1).getOffset();
   }
 
-  /// \brief Returns the previous in-order FileID or an invalid FileID if there
+  /// Returns the previous in-order FileID or an invalid FileID if there
   /// is no previous one.
   FileID getPreviousFileID(FileID FID) const;
 
-  /// \brief Returns the next in-order FileID or an invalid FileID if there is
+  /// Returns the next in-order FileID or an invalid FileID if there is
   /// no next one.
   FileID getNextFileID(FileID FID) const;
 
-  /// \brief Create a new fileID for the specified ContentCache and
+  /// Create a new fileID for the specified ContentCache and
   /// include position.
   ///
   /// This works regardless of whether the ContentCache corresponds to a
@@ -1760,7 +1760,7 @@
     getOrCreateContentCache(const FileEntry *SourceFile,
                             bool isSystemFile = false);
 
-  /// \brief Create a new ContentCache for the specified  memory buffer.
+  /// Create a new ContentCache for the specified  memory buffer.
   const SrcMgr::ContentCache *
   createMemBufferContentCache(llvm::MemoryBuffer *Buf, bool DoNotFree);
 
@@ -1785,11 +1785,11 @@
                                          unsigned ExpansionLength) const;
 };
 
-/// \brief Comparison function object.
+/// Comparison function object.
 template<typename T>
 class BeforeThanCompare;
 
-/// \brief Compare two source locations.
+/// Compare two source locations.
 template<>
 class BeforeThanCompare<SourceLocation> {
   SourceManager &SM;
@@ -1802,7 +1802,7 @@
   }
 };
 
-/// \brief Compare two non-overlapping source ranges.
+/// Compare two non-overlapping source ranges.
 template<>
 class BeforeThanCompare<SourceRange> {
   SourceManager &SM;
Index: cfe/trunk/include/clang/Basic/SourceManagerInternals.h
===================================================================
--- cfe/trunk/include/clang/Basic/SourceManagerInternals.h
+++ cfe/trunk/include/clang/Basic/SourceManagerInternals.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines implementation details of the clang::SourceManager class.
+/// Defines implementation details of the clang::SourceManager class.
 //
 //===----------------------------------------------------------------------===//
 
@@ -31,20 +31,20 @@
 //===----------------------------------------------------------------------===//
 
 struct LineEntry {
-  /// \brief The offset in this file that the line entry occurs at.
+  /// The offset in this file that the line entry occurs at.
   unsigned FileOffset;
 
-  /// \brief The presumed line number of this line entry: \#line 4.
+  /// The presumed line number of this line entry: \#line 4.
   unsigned LineNo;
 
-  /// \brief The ID of the filename identified by this line entry:
+  /// The ID of the filename identified by this line entry:
   /// \#line 4 "foo.c".  This is -1 if not specified.
   int FilenameID;
 
-  /// \brief Set the 0 if no flags, 1 if a system header,
+  /// Set the 0 if no flags, 1 if a system header,
   SrcMgr::CharacteristicKind FileKind;
 
-  /// \brief The offset of the virtual include stack location,
+  /// The offset of the virtual include stack location,
   /// which is manipulated by GNU linemarker directives.
   ///
   /// If this is 0 then there is no virtual \#includer.
@@ -77,9 +77,9 @@
   return Offset < E.FileOffset;
 }
 
-/// \brief Used to hold and unique data used to represent \#line information.
+/// Used to hold and unique data used to represent \#line information.
 class LineTableInfo {
-  /// \brief Map used to assign unique IDs to filenames in \#line directives. 
+  /// Map used to assign unique IDs to filenames in \#line directives. 
   ///
   /// This allows us to unique the filenames that
   /// frequently reoccur and reference them with indices.  FilenameIDs holds
@@ -88,7 +88,7 @@
   llvm::StringMap<unsigned, llvm::BumpPtrAllocator> FilenameIDs;
   std::vector<llvm::StringMapEntry<unsigned>*> FilenamesByID;
 
-  /// \brief Map from FileIDs to a list of line entries (sorted by the offset
+  /// Map from FileIDs to a list of line entries (sorted by the offset
   /// at which they occur in the file).
   std::map<FileID, std::vector<LineEntry>> LineEntries;
 
@@ -113,7 +113,7 @@
                    unsigned EntryExit, SrcMgr::CharacteristicKind FileKind);
 
 
-  /// \brief Find the line entry nearest to FID that is before it.
+  /// Find the line entry nearest to FID that is before it.
   ///
   /// If there is no line entry before \p Offset in \p FID, returns null.
   const LineEntry *FindNearestLineEntry(FileID FID, unsigned Offset);
@@ -124,7 +124,7 @@
   iterator begin() { return LineEntries.begin(); }
   iterator end() { return LineEntries.end(); }
 
-  /// \brief Add a new line entry that has already been encoded into
+  /// Add a new line entry that has already been encoded into
   /// the internal representation of the line table.
   void AddEntry(FileID FID, const std::vector<LineEntry> &Entries);
 };
Index: cfe/trunk/include/clang/Basic/Specifiers.h
===================================================================
--- cfe/trunk/include/clang/Basic/Specifiers.h
+++ cfe/trunk/include/clang/Basic/Specifiers.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines various enumerations that describe declaration and
+/// Defines various enumerations that describe declaration and
 /// type specifiers.
 ///
 //===----------------------------------------------------------------------===//
@@ -21,7 +21,7 @@
 #include "llvm/Support/ErrorHandling.h"
 
 namespace clang {
-  /// \brief Specifies the width of a type, e.g., short, long, or long long.
+  /// Specifies the width of a type, e.g., short, long, or long long.
   enum TypeSpecifierWidth {
     TSW_unspecified,
     TSW_short,
@@ -29,7 +29,7 @@
     TSW_longlong
   };
   
-  /// \brief Specifies the signedness of a type, e.g., signed or unsigned.
+  /// Specifies the signedness of a type, e.g., signed or unsigned.
   enum TypeSpecifierSign {
     TSS_unspecified,
     TSS_signed,
@@ -41,7 +41,7 @@
     TSP_pipe
   };
 
-  /// \brief Specifies the kind of type.
+  /// Specifies the kind of type.
   enum TypeSpecifierType {
     TST_unspecified,
     TST_void,
@@ -81,7 +81,7 @@
     TST_error // erroneous type
   };
 
-  /// \brief Structure that packs information about the type specifiers that
+  /// Structure that packs information about the type specifiers that
   /// were written in a particular type specifier sequence.
   struct WrittenBuiltinSpecs {
     static_assert(TST_error < 1 << 6, "Type bitfield not wide enough for TST");
@@ -91,7 +91,7 @@
     unsigned ModeAttr : 1;
   };
 
-  /// \brief A C++ access specifier (public, private, protected), plus the
+  /// A C++ access specifier (public, private, protected), plus the
   /// special value "none" which means different things in different contexts.
   enum AccessSpecifier {
     AS_public,
@@ -100,24 +100,24 @@
     AS_none
   };
 
-  /// \brief The categorization of expression values, currently following the
+  /// The categorization of expression values, currently following the
   /// C++11 scheme.
   enum ExprValueKind {
-    /// \brief An r-value expression (a pr-value in the C++11 taxonomy)
+    /// An r-value expression (a pr-value in the C++11 taxonomy)
     /// produces a temporary value.
     VK_RValue,
 
-    /// \brief An l-value expression is a reference to an object with
+    /// An l-value expression is a reference to an object with
     /// independent storage.
     VK_LValue,
 
-    /// \brief An x-value expression is a reference to an object with
+    /// An x-value expression is a reference to an object with
     /// independent storage but which can be "moved", i.e.
     /// efficiently cannibalized for its resources.
     VK_XValue
   };
 
-  /// \brief A further classification of the kind of object referenced by an
+  /// A further classification of the kind of object referenced by an
   /// l-value or x-value.
   enum ExprObjectKind {
     /// An ordinary object is located at an address in memory.
@@ -139,7 +139,7 @@
     OK_ObjCSubscript
   };
 
-  /// \brief Describes the kind of template specialization that a
+  /// Describes the kind of template specialization that a
   /// particular template specialization declaration represents.
   enum TemplateSpecializationKind {
     /// This template specialization was formed from a template-id but
@@ -162,14 +162,14 @@
     TSK_ExplicitInstantiationDefinition
   };
 
-  /// \brief Determine whether this template specialization kind refers
+  /// Determine whether this template specialization kind refers
   /// to an instantiation of an entity (as opposed to a non-template or
   /// an explicit specialization).
   inline bool isTemplateInstantiation(TemplateSpecializationKind Kind) {
     return Kind != TSK_Undeclared && Kind != TSK_ExplicitSpecialization;
   }
 
-  /// \brief True if this template specialization kind is an explicit
+  /// True if this template specialization kind is an explicit
   /// specialization, explicit instantiation declaration, or explicit
   /// instantiation definition.
   inline bool isTemplateExplicitInstantiationOrSpecialization(
@@ -187,7 +187,7 @@
     llvm_unreachable("bad template specialization kind");
   }
 
-  /// \brief Thread storage-class-specifier.
+  /// Thread storage-class-specifier.
   enum ThreadStorageClassSpecifier {
     TSCS_unspecified,
     /// GNU __thread.
@@ -200,7 +200,7 @@
     TSCS__Thread_local
   };
 
-  /// \brief Storage classes.
+  /// Storage classes.
   enum StorageClass {
     // These are legal on both functions and variables.
     SC_None,
@@ -213,24 +213,24 @@
     SC_Register
   };
 
-  /// \brief Checks whether the given storage class is legal for functions.
+  /// Checks whether the given storage class is legal for functions.
   inline bool isLegalForFunction(StorageClass SC) {
     return SC <= SC_PrivateExtern;
   }
 
-  /// \brief Checks whether the given storage class is legal for variables.
+  /// Checks whether the given storage class is legal for variables.
   inline bool isLegalForVariable(StorageClass SC) {
     return true;
   }
 
-  /// \brief In-class initialization styles for non-static data members.
+  /// In-class initialization styles for non-static data members.
   enum InClassInitStyle {
     ICIS_NoInit,   ///< No in-class initializer.
     ICIS_CopyInit, ///< Copy initialization.
     ICIS_ListInit  ///< Direct list-initialization.
   };
 
-  /// \brief CallingConv - Specifies the calling convention that a function uses.
+  /// CallingConv - Specifies the calling convention that a function uses.
   enum CallingConv {
     CC_C,           // __attribute__((cdecl))
     CC_X86StdCall,  // __attribute__((stdcall))
@@ -251,7 +251,7 @@
     CC_PreserveAll,  // __attribute__((preserve_all))
   };
 
-  /// \brief Checks whether the given calling convention supports variadic
+  /// Checks whether the given calling convention supports variadic
   /// calls. Unprototyped calls also use the variadic call rules.
   inline bool supportsVariadicCall(CallingConv CC) {
     switch (CC) {
@@ -270,7 +270,7 @@
     }
   }
 
-  /// \brief The storage duration for an object (per C++ [basic.stc]).
+  /// The storage duration for an object (per C++ [basic.stc]).
   enum StorageDuration {
     SD_FullExpression, ///< Full-expression storage duration (for temporaries).
     SD_Automatic,      ///< Automatic storage duration (most local variables).
@@ -296,7 +296,7 @@
   llvm::StringRef getNullabilitySpelling(NullabilityKind kind,
                                          bool isContextSensitive = false);
 
-  /// \brief Kinds of parameter ABI.
+  /// Kinds of parameter ABI.
   enum class ParameterABI {
     /// This parameter uses ordinary ABI rules for its type.
     Ordinary,
Index: cfe/trunk/include/clang/Basic/SyncScope.h
===================================================================
--- cfe/trunk/include/clang/Basic/SyncScope.h
+++ cfe/trunk/include/clang/Basic/SyncScope.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Provides definitions for the atomic synchronization scopes.
+/// Provides definitions for the atomic synchronization scopes.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -22,7 +22,7 @@
 
 namespace clang {
 
-/// \brief Defines synch scope values used internally by clang.
+/// Defines synch scope values used internally by clang.
 ///
 /// The enum values start from 0 and are contiguous. They are mainly used for
 /// enumerating all supported synch scope values and mapping them to LLVM
@@ -62,36 +62,36 @@
   llvm_unreachable("Invalid synch scope");
 }
 
-/// \brief Defines the kind of atomic scope models.
+/// Defines the kind of atomic scope models.
 enum class AtomicScopeModelKind { None, OpenCL };
 
-/// \brief Defines the interface for synch scope model.
+/// Defines the interface for synch scope model.
 class AtomicScopeModel {
 public:
   virtual ~AtomicScopeModel() {}
-  /// \brief Maps language specific synch scope values to internal
+  /// Maps language specific synch scope values to internal
   /// SyncScope enum.
   virtual SyncScope map(unsigned S) const = 0;
 
-  /// \brief Check if the compile-time constant synch scope value
+  /// Check if the compile-time constant synch scope value
   /// is valid.
   virtual bool isValid(unsigned S) const = 0;
 
-  /// \brief Get all possible synch scope values that might be
+  /// Get all possible synch scope values that might be
   /// encountered at runtime for the current language.
   virtual ArrayRef<unsigned> getRuntimeValues() const = 0;
 
-  /// \brief If atomic builtin function is called with invalid
+  /// If atomic builtin function is called with invalid
   /// synch scope value at runtime, it will fall back to a valid
   /// synch scope value returned by this function.
   virtual unsigned getFallBackValue() const = 0;
 
-  /// \brief Create an atomic scope model by AtomicScopeModelKind.
+  /// Create an atomic scope model by AtomicScopeModelKind.
   /// \return an empty std::unique_ptr for AtomicScopeModelKind::None.
   static std::unique_ptr<AtomicScopeModel> create(AtomicScopeModelKind K);
 };
 
-/// \brief Defines the synch scope model for OpenCL.
+/// Defines the synch scope model for OpenCL.
 class AtomicScopeOpenCLModel : public AtomicScopeModel {
 public:
   /// The enum values match the pre-defined macros
Index: cfe/trunk/include/clang/Basic/TargetBuiltins.h
===================================================================
--- cfe/trunk/include/clang/Basic/TargetBuiltins.h
+++ cfe/trunk/include/clang/Basic/TargetBuiltins.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Enumerates target-specific builtins in their own namespaces within
+/// Enumerates target-specific builtins in their own namespaces within
 /// namespace ::clang.
 ///
 //===----------------------------------------------------------------------===//
@@ -31,7 +31,7 @@
   };
   }
 
-  /// \brief ARM builtins
+  /// ARM builtins
   namespace ARM {
     enum {
       LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
@@ -42,7 +42,7 @@
     };
   }
 
-  /// \brief AArch64 builtins
+  /// AArch64 builtins
   namespace AArch64 {
   enum {
     LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
@@ -53,7 +53,7 @@
   };
   }
 
-  /// \brief PPC builtins
+  /// PPC builtins
   namespace PPC {
     enum {
         LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
@@ -63,7 +63,7 @@
     };
   }
 
-  /// \brief NVPTX builtins
+  /// NVPTX builtins
   namespace NVPTX {
     enum {
         LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
@@ -73,7 +73,7 @@
     };
   }
 
-  /// \brief AMDGPU builtins
+  /// AMDGPU builtins
   namespace AMDGPU {
   enum {
     LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
@@ -83,7 +83,7 @@
   };
   }
 
-  /// \brief X86 builtins
+  /// X86 builtins
   namespace X86 {
   enum {
     LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
@@ -97,7 +97,7 @@
   };
   }
 
-  /// \brief Flags to identify the types for overloaded Neon builtins.
+  /// Flags to identify the types for overloaded Neon builtins.
   ///
   /// These must be kept in sync with the flags in utils/TableGen/NeonEmitter.h.
   class NeonTypeFlags {
@@ -140,7 +140,7 @@
     bool isQuad() const { return (Flags & QuadFlag) != 0; }
   };
 
-  /// \brief Hexagon builtins
+  /// Hexagon builtins
   namespace Hexagon {
     enum {
         LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
@@ -150,7 +150,7 @@
     };
   }
 
-  /// \brief Nios2 builtins
+  /// Nios2 builtins
   namespace Nios2 {
   enum {
     LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
@@ -160,7 +160,7 @@
   };
   }
 
-  /// \brief MIPS builtins
+  /// MIPS builtins
   namespace Mips {
     enum {
         LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
@@ -170,7 +170,7 @@
     };
   }
 
-  /// \brief XCore builtins
+  /// XCore builtins
   namespace XCore {
     enum {
         LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
@@ -180,7 +180,7 @@
     };
   }
 
-  /// \brief Le64 builtins
+  /// Le64 builtins
   namespace Le64 {
   enum {
     LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
@@ -190,7 +190,7 @@
   };
   }
 
-  /// \brief SystemZ builtins
+  /// SystemZ builtins
   namespace SystemZ {
     enum {
         LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
@@ -200,7 +200,7 @@
     };
   }
 
-  /// \brief WebAssembly builtins
+  /// WebAssembly builtins
   namespace WebAssembly {
     enum {
       LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
Index: cfe/trunk/include/clang/Basic/TargetCXXABI.h
===================================================================
--- cfe/trunk/include/clang/Basic/TargetCXXABI.h
+++ cfe/trunk/include/clang/Basic/TargetCXXABI.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the TargetCXXABI class, which abstracts details of the
+/// Defines the TargetCXXABI class, which abstracts details of the
 /// C++ ABI that we're targeting.
 ///
 //===----------------------------------------------------------------------===//
@@ -20,10 +20,10 @@
 
 namespace clang {
 
-/// \brief The basic abstraction for the target C++ ABI.
+/// The basic abstraction for the target C++ ABI.
 class TargetCXXABI {
 public:
-  /// \brief The basic C++ ABI kind.
+  /// The basic C++ ABI kind.
   enum Kind {
     /// The generic Itanium ABI is the standard ABI of most open-source
     /// and Unix-like platforms.  It is the primary ABI targeted by
@@ -131,7 +131,7 @@
 
   Kind getKind() const { return TheKind; }
 
-  /// \brief Does this ABI generally fall into the Itanium family of ABIs?
+  /// Does this ABI generally fall into the Itanium family of ABIs?
   bool isItaniumFamily() const {
     switch (getKind()) {
     case GenericAArch64:
@@ -150,7 +150,7 @@
     llvm_unreachable("bad ABI kind");
   }
 
-  /// \brief Is this ABI an MSVC-compatible ABI?
+  /// Is this ABI an MSVC-compatible ABI?
   bool isMicrosoft() const {
     switch (getKind()) {
     case GenericAArch64:
@@ -169,7 +169,7 @@
     llvm_unreachable("bad ABI kind");
   }
 
-  /// \brief Are member functions differently aligned?
+  /// Are member functions differently aligned?
   ///
   /// Many Itanium-style C++ ABIs require member functions to be aligned, so
   /// that a pointer to such a function is guaranteed to have a zero in the
@@ -210,25 +210,25 @@
     return isMicrosoft();
   }
 
-  /// \brief Does this ABI have different entrypoints for complete-object
+  /// Does this ABI have different entrypoints for complete-object
   /// and base-subobject constructors?
   bool hasConstructorVariants() const {
     return isItaniumFamily();
   }
 
-  /// \brief Does this ABI allow virtual bases to be primary base classes?
+  /// Does this ABI allow virtual bases to be primary base classes?
   bool hasPrimaryVBases() const {
     return isItaniumFamily();
   }
 
-  /// \brief Does this ABI use key functions?  If so, class data such as the
+  /// Does this ABI use key functions?  If so, class data such as the
   /// vtable is emitted with strong linkage by the TU containing the key
   /// function.
   bool hasKeyFunctions() const {
     return isItaniumFamily();
   }
 
-  /// \brief Can an out-of-line inline function serve as a key function?
+  /// Can an out-of-line inline function serve as a key function?
   ///
   /// This flag is only useful in ABIs where type data (for example,
   /// vtables and type_info objects) are emitted only after processing
Index: cfe/trunk/include/clang/Basic/TargetInfo.h
===================================================================
--- cfe/trunk/include/clang/Basic/TargetInfo.h
+++ cfe/trunk/include/clang/Basic/TargetInfo.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::TargetInfo interface.
+/// Defines the clang::TargetInfo interface.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -49,7 +49,7 @@
 
 namespace Builtin { struct Info; }
 
-/// \brief Exposes information about the current target.
+/// Exposes information about the current target.
 ///
 class TargetInfo : public RefCountedBase<TargetInfo> {
   std::shared_ptr<TargetOptions> TargetOpts;
@@ -109,7 +109,7 @@
   }
 
 public:
-  /// \brief Construct a target for the given options.
+  /// Construct a target for the given options.
   ///
   /// \param Opts - The options to use to initialize the target. The target may
   /// modify the options to canonicalize the target feature information to match
@@ -120,7 +120,7 @@
 
   virtual ~TargetInfo();
 
-  /// \brief Retrieve the target options.
+  /// Retrieve the target options.
   TargetOptions &getTargetOpts() const {
     assert(TargetOpts && "Missing target options");
     return *TargetOpts;
@@ -149,7 +149,7 @@
     Float128
   };
 
-  /// \brief The different kinds of __builtin_va_list types defined by
+  /// The different kinds of __builtin_va_list types defined by
   /// the target implementation.
   enum BuiltinVaListKind {
     /// typedef char* __builtin_va_list;
@@ -195,7 +195,7 @@
           WIntType, Char16Type, Char32Type, Int64Type, SigAtomicType,
           ProcessIDType;
 
-  /// \brief Whether Objective-C's built-in boolean type should be signed char.
+  /// Whether Objective-C's built-in boolean type should be signed char.
   ///
   /// Otherwise, when this flag is not set, the normal built-in boolean type is
   /// used.
@@ -208,7 +208,7 @@
   /// boundary.
   unsigned UseBitFieldTypeAlignment : 1;
 
-  /// \brief Whether zero length bitfields (e.g., int : 0;) force alignment of
+  /// Whether zero length bitfields (e.g., int : 0;) force alignment of
   /// the next bitfield.
   ///
   /// If the alignment of the zero length bitfield is greater than the member
@@ -216,14 +216,14 @@
   /// zero-length bitfield.
   unsigned UseZeroLengthBitfieldAlignment : 1;
 
-  /// \brief  Whether explicit bit field alignment attributes are honored.
+  ///  Whether explicit bit field alignment attributes are honored.
   unsigned UseExplicitBitFieldAlignment : 1;
 
   /// If non-zero, specifies a fixed alignment value for bitfields that follow
   /// zero length bitfield, regardless of the zero length bitfield type.
   unsigned ZeroLengthBitfieldBoundary;
 
-  /// \brief Specify if mangling based on address space map should be used or
+  /// Specify if mangling based on address space map should be used or
   /// not for language specific address spaces
   bool UseAddrSpaceMapMangling;
 
@@ -285,30 +285,30 @@
     }
   }
 
-  /// \brief Return the width (in bits) of the specified integer type enum.
+  /// Return the width (in bits) of the specified integer type enum.
   ///
   /// For example, SignedInt -> getIntWidth().
   unsigned getTypeWidth(IntType T) const;
 
-  /// \brief Return integer type with specified width.
+  /// Return integer type with specified width.
   virtual IntType getIntTypeByWidth(unsigned BitWidth, bool IsSigned) const;
 
-  /// \brief Return the smallest integer type with at least the specified width.
+  /// Return the smallest integer type with at least the specified width.
   virtual IntType getLeastIntTypeByWidth(unsigned BitWidth,
                                          bool IsSigned) const;
 
-  /// \brief Return floating point type with specified width.
+  /// Return floating point type with specified width.
   RealType getRealTypeByWidth(unsigned BitWidth) const;
 
-  /// \brief Return the alignment (in bits) of the specified integer type enum.
+  /// Return the alignment (in bits) of the specified integer type enum.
   ///
   /// For example, SignedInt -> getIntAlign().
   unsigned getTypeAlign(IntType T) const;
 
-  /// \brief Returns true if the type is signed; false otherwise.
+  /// Returns true if the type is signed; false otherwise.
   static bool isTypeSigned(IntType T);
 
-  /// \brief Return the width of pointers on this target, for the
+  /// Return the width of pointers on this target, for the
   /// specified address space.
   uint64_t getPointerWidth(unsigned AddrSpace) const {
     return AddrSpace == 0 ? PointerWidth : getPointerWidthV(AddrSpace);
@@ -317,29 +317,29 @@
     return AddrSpace == 0 ? PointerAlign : getPointerAlignV(AddrSpace);
   }
 
-  /// \brief Return the maximum width of pointers on this target.
+  /// Return the maximum width of pointers on this target.
   virtual uint64_t getMaxPointerWidth() const {
     return PointerWidth;
   }
 
-  /// \brief Get integer value for null pointer.
+  /// Get integer value for null pointer.
   /// \param AddrSpace address space of pointee in source language.
   virtual uint64_t getNullPointerValue(LangAS AddrSpace) const { return 0; }
 
-  /// \brief Return the size of '_Bool' and C++ 'bool' for this target, in bits.
+  /// Return the size of '_Bool' and C++ 'bool' for this target, in bits.
   unsigned getBoolWidth() const { return BoolWidth; }
 
-  /// \brief Return the alignment of '_Bool' and C++ 'bool' for this target.
+  /// Return the alignment of '_Bool' and C++ 'bool' for this target.
   unsigned getBoolAlign() const { return BoolAlign; }
 
   unsigned getCharWidth() const { return 8; } // FIXME
   unsigned getCharAlign() const { return 8; } // FIXME
 
-  /// \brief Return the size of 'signed short' and 'unsigned short' for this
+  /// Return the size of 'signed short' and 'unsigned short' for this
   /// target, in bits.
   unsigned getShortWidth() const { return 16; } // FIXME
 
-  /// \brief Return the alignment of 'signed short' and 'unsigned short' for
+  /// Return the alignment of 'signed short' and 'unsigned short' for
   /// this target.
   unsigned getShortAlign() const { return 16; } // FIXME
 
@@ -358,22 +358,22 @@
   unsigned getLongLongWidth() const { return LongLongWidth; }
   unsigned getLongLongAlign() const { return LongLongAlign; }
 
-  /// \brief Determine whether the __int128 type is supported on this target.
+  /// Determine whether the __int128 type is supported on this target.
   virtual bool hasInt128Type() const {
     return (getPointerWidth(0) >= 64) || getTargetOpts().ForceEnableInt128;
   } // FIXME
 
-  /// \brief Determine whether _Float16 is supported on this target.
+  /// Determine whether _Float16 is supported on this target.
   virtual bool hasLegalHalfType() const { return HasLegalHalfType; }
 
-  /// \brief Determine whether the __float128 type is supported on this target.
+  /// Determine whether the __float128 type is supported on this target.
   virtual bool hasFloat128Type() const { return HasFloat128; }
 
-  /// \brief Return the alignment that is suitable for storing any
+  /// Return the alignment that is suitable for storing any
   /// object with a fundamental alignment requirement.
   unsigned getSuitableAlign() const { return SuitableAlign; }
 
-  /// \brief Return the default alignment for __attribute__((aligned)) on
+  /// Return the default alignment for __attribute__((aligned)) on
   /// this target, to be used if no alignment value is specified.
   unsigned getDefaultAlignForAttributeAligned() const {
     return DefaultAlignForAttributeAligned;
@@ -436,11 +436,11 @@
     return *Float128Format;
   }
 
-  /// \brief Return true if the 'long double' type should be mangled like
+  /// Return true if the 'long double' type should be mangled like
   /// __float128.
   virtual bool useFloat128ManglingForLongDouble() const { return false; }
 
-  /// \brief Return the value for the C99 FLT_EVAL_METHOD macro.
+  /// Return the value for the C99 FLT_EVAL_METHOD macro.
   virtual unsigned getFloatEvalMethod() const { return 0; }
 
   // getLargeArrayMinWidth/Align - Return the minimum array size that is
@@ -448,16 +448,16 @@
   unsigned getLargeArrayMinWidth() const { return LargeArrayMinWidth; }
   unsigned getLargeArrayAlign() const { return LargeArrayAlign; }
 
-  /// \brief Return the maximum width lock-free atomic operation which will
+  /// Return the maximum width lock-free atomic operation which will
   /// ever be supported for the given target
   unsigned getMaxAtomicPromoteWidth() const { return MaxAtomicPromoteWidth; }
-  /// \brief Return the maximum width lock-free atomic operation which can be
+  /// Return the maximum width lock-free atomic operation which can be
   /// inlined given the supported features of the given target.
   unsigned getMaxAtomicInlineWidth() const { return MaxAtomicInlineWidth; }
-  /// \brief Set the maximum inline or promote width lock-free atomic operation
+  /// Set the maximum inline or promote width lock-free atomic operation
   /// for the given target.
   virtual void setMaxAtomicWidth() {}
-  /// \brief Returns true if the given target supports lock-free atomic
+  /// Returns true if the given target supports lock-free atomic
   /// operations at the specified width and alignment.
   virtual bool hasBuiltinAtomic(uint64_t AtomicSizeInBits,
                                 uint64_t AlignmentInBits) const {
@@ -467,14 +467,14 @@
             llvm::isPowerOf2_64(AtomicSizeInBits / getCharWidth()));
   }
 
-  /// \brief Return the maximum vector alignment supported for the given target.
+  /// Return the maximum vector alignment supported for the given target.
   unsigned getMaxVectorAlign() const { return MaxVectorAlign; }
-  /// \brief Return default simd alignment for the given target. Generally, this
+  /// Return default simd alignment for the given target. Generally, this
   /// value is type-specific, but this alignment can be used for most of the
   /// types for the given target.
   unsigned getSimdDefaultAlign() const { return SimdDefaultAlign; }
 
-  /// \brief Return the size of intmax_t and uintmax_t for this target, in bits.
+  /// Return the size of intmax_t and uintmax_t for this target, in bits.
   unsigned getIntMaxTWidth() const {
     return getTypeWidth(IntMaxType);
   }
@@ -482,7 +482,7 @@
   // Return the size of unwind_word for this target.
   virtual unsigned getUnwindWordWidth() const { return getPointerWidth(0); }
 
-  /// \brief Return the "preferred" register width on this target.
+  /// Return the "preferred" register width on this target.
   virtual unsigned getRegisterWidth() const {
     // Currently we assume the register width on the target matches the pointer
     // width, we can introduce a new variable for this if/when some target wants
@@ -490,12 +490,12 @@
     return PointerWidth;
   }
 
-  /// \brief Returns the name of the mcount instrumentation function.
+  /// Returns the name of the mcount instrumentation function.
   const char *getMCountName() const {
     return MCountName;
   }
 
-  /// \brief Check if the Objective-C built-in boolean type should be signed
+  /// Check if the Objective-C built-in boolean type should be signed
   /// char.
   ///
   /// Otherwise, if this returns false, the normal built-in boolean type
@@ -507,58 +507,58 @@
     UseSignedCharForObjCBool = false;
   }
 
-  /// \brief Check whether the alignment of bit-field types is respected
+  /// Check whether the alignment of bit-field types is respected
   /// when laying out structures.
   bool useBitFieldTypeAlignment() const {
     return UseBitFieldTypeAlignment;
   }
 
-  /// \brief Check whether zero length bitfields should force alignment of
+  /// Check whether zero length bitfields should force alignment of
   /// the next member.
   bool useZeroLengthBitfieldAlignment() const {
     return UseZeroLengthBitfieldAlignment;
   }
 
-  /// \brief Get the fixed alignment value in bits for a member that follows
+  /// Get the fixed alignment value in bits for a member that follows
   /// a zero length bitfield.
   unsigned getZeroLengthBitfieldBoundary() const {
     return ZeroLengthBitfieldBoundary;
   }
 
-  /// \brief Check whether explicit bitfield alignment attributes should be
+  /// Check whether explicit bitfield alignment attributes should be
   //  honored, as in "__attribute__((aligned(2))) int b : 1;".
   bool useExplicitBitFieldAlignment() const {
     return UseExplicitBitFieldAlignment;
   }
 
-  /// \brief Check whether this target support '\#pragma options align=mac68k'.
+  /// Check whether this target support '\#pragma options align=mac68k'.
   bool hasAlignMac68kSupport() const {
     return HasAlignMac68kSupport;
   }
 
-  /// \brief Return the user string for the specified integer type enum.
+  /// Return the user string for the specified integer type enum.
   ///
   /// For example, SignedShort -> "short".
   static const char *getTypeName(IntType T);
 
-  /// \brief Return the constant suffix for the specified integer type enum.
+  /// Return the constant suffix for the specified integer type enum.
   ///
   /// For example, SignedLong -> "L".
   const char *getTypeConstantSuffix(IntType T) const;
 
-  /// \brief Return the printf format modifier for the specified
+  /// Return the printf format modifier for the specified
   /// integer type enum.
   ///
   /// For example, SignedLong -> "l".
   static const char *getTypeFormatModifier(IntType T);
 
-  /// \brief Check whether the given real type should use the "fpret" flavor of
+  /// Check whether the given real type should use the "fpret" flavor of
   /// Objective-C message passing on this target.
   bool useObjCFPRetForRealType(RealType T) const {
     return RealTypeUsesObjCFPRet & (1 << T);
   }
 
-  /// \brief Check whether _Complex long double should use the "fp2ret" flavor
+  /// Check whether _Complex long double should use the "fp2ret" flavor
   /// of Objective-C message passing on this target.
   bool useObjCFP2RetForComplexLongDouble() const {
     return ComplexLongDoubleUsesFP2Ret;
@@ -572,7 +572,7 @@
     return true;
   }
 
-  /// \brief Specify if mangling based on address space map should be used or
+  /// Specify if mangling based on address space map should be used or
   /// not for language specific address spaces
   bool useAddressSpaceMapMangling() const {
     return UseAddrSpaceMapMangling;
@@ -580,7 +580,7 @@
 
   ///===---- Other target property query methods --------------------------===//
 
-  /// \brief Appends the target-specific \#define values for this
+  /// Appends the target-specific \#define values for this
   /// target set to the specified buffer.
   virtual void getTargetDefines(const LangOptions &Opts,
                                 MacroBuilder &Builder) const = 0;
@@ -598,7 +598,7 @@
   /// idea to avoid optimizing based on that undef behavior.
   virtual bool isCLZForZeroUndef() const { return true; }
 
-  /// \brief Returns the kind of __builtin_va_list type that should be used
+  /// Returns the kind of __builtin_va_list type that should be used
   /// with this target.
   virtual BuiltinVaListKind getBuiltinVaListKind() const = 0;
 
@@ -609,19 +609,19 @@
   /// Returns true for RenderScript.
   bool isRenderScriptTarget() const { return IsRenderScriptTarget; }
 
-  /// \brief Returns whether the passed in string is a valid clobber in an
+  /// Returns whether the passed in string is a valid clobber in an
   /// inline asm statement.
   ///
   /// This is used by Sema.
   bool isValidClobber(StringRef Name) const;
 
-  /// \brief Returns whether the passed in string is a valid register name
+  /// Returns whether the passed in string is a valid register name
   /// according to GCC.
   ///
   /// This is used by Sema for inline asm statements.
   virtual bool isValidGCCRegisterName(StringRef Name) const;
 
-  /// \brief Returns the "normalized" GCC register name.
+  /// Returns the "normalized" GCC register name.
   ///
   /// ReturnCannonical true will return the register name without any additions
   /// such as "{}" or "%" in it's canonical form, for example:
@@ -629,7 +629,7 @@
   StringRef getNormalizedGCCRegisterName(StringRef Name,
                                          bool ReturnCanonical = false) const;
 
-  /// \brief Extracts a register from the passed constraint (if it is a
+  /// Extracts a register from the passed constraint (if it is a
   /// single-register constraint) and the asm label expression related to a
   /// variable in the input or output list of an inline asm statement.
   ///
@@ -674,11 +674,11 @@
     bool allowsRegister() const { return (Flags & CI_AllowsRegister) != 0; }
     bool allowsMemory() const { return (Flags & CI_AllowsMemory) != 0; }
 
-    /// \brief Return true if this output operand has a matching
+    /// Return true if this output operand has a matching
     /// (tied) input operand.
     bool hasMatchingInput() const { return (Flags & CI_HasMatchingInput) != 0; }
 
-    /// \brief Return true if this input operand is a matching
+    /// Return true if this input operand is a matching
     /// constraint that ties it to an output operand.
     ///
     /// If this returns true then getTiedOperand will indicate which output
@@ -722,7 +722,7 @@
       ImmRange.Max = INT_MAX;
     }
 
-    /// \brief Indicate that this is an input operand that is tied to
+    /// Indicate that this is an input operand that is tied to
     /// the specified output operand.
     ///
     /// Copy over the various constraint information from the output.
@@ -734,7 +734,7 @@
     }
   };
 
-  /// \brief Validate register name used for global register variables.
+  /// Validate register name used for global register variables.
   ///
   /// This function returns true if the register passed in RegName can be used
   /// for global register variables on this target. In addition, it returns
@@ -788,16 +788,16 @@
     return std::string(1, *Constraint);
   }
 
-  /// \brief Returns a string of target-specific clobbers, in LLVM format.
+  /// Returns a string of target-specific clobbers, in LLVM format.
   virtual const char *getClobbers() const = 0;
 
-  /// \brief Returns true if NaN encoding is IEEE 754-2008.
+  /// Returns true if NaN encoding is IEEE 754-2008.
   /// Only MIPS allows a different encoding.
   virtual bool isNan2008() const {
     return true;
   }
 
-  /// \brief Returns the target triple of the primary target.
+  /// Returns the target triple of the primary target.
   const llvm::Triple &getTriple() const {
     return Triple;
   }
@@ -817,7 +817,7 @@
     const unsigned RegNum;
   };
 
-  /// \brief Does this target support "protected" visibility?
+  /// Does this target support "protected" visibility?
   ///
   /// Any target which dynamic libraries will naturally support
   /// something like "default" (meaning that the symbol is visible
@@ -829,7 +829,7 @@
   /// either; the entire thing is pretty badly mangled.
   virtual bool hasProtectedVisibility() const { return true; }
 
-  /// \brief An optional hook that targets can implement to perform semantic
+  /// An optional hook that targets can implement to perform semantic
   /// checking on attribute((section("foo"))) specifiers.
   ///
   /// In this case, "foo" is passed in to be checked.  If the section
@@ -844,18 +844,18 @@
     return "";
   }
 
-  /// \brief Set forced language options.
+  /// Set forced language options.
   ///
   /// Apply changes to the target information with respect to certain
   /// language options which change the target configuration and adjust
   /// the language based on the target options where applicable.
   virtual void adjust(LangOptions &Opts);
 
-  /// \brief Adjust target options based on codegen options.
+  /// Adjust target options based on codegen options.
   virtual void adjustTargetOptions(const CodeGenOptions &CGOpts,
                                    TargetOptions &TargetOpts) const {}
 
-  /// \brief Initialize the map with the default set of target features for the
+  /// Initialize the map with the default set of target features for the
   /// CPU this should include all legal feature strings on the target.
   ///
   /// \return False on error (invalid features).
@@ -863,15 +863,15 @@
                               DiagnosticsEngine &Diags, StringRef CPU,
                               const std::vector<std::string> &FeatureVec) const;
 
-  /// \brief Get the ABI currently in use.
+  /// Get the ABI currently in use.
   virtual StringRef getABI() const { return StringRef(); }
 
-  /// \brief Get the C++ ABI currently in use.
+  /// Get the C++ ABI currently in use.
   TargetCXXABI getCXXABI() const {
     return TheCXXABI;
   }
 
-  /// \brief Target the specified CPU.
+  /// Target the specified CPU.
   ///
   /// \return  False on error (invalid CPU name).
   virtual bool setCPU(const std::string &Name) {
@@ -886,21 +886,21 @@
     return true;
   }
 
-  /// \brief Use the specified ABI.
+  /// Use the specified ABI.
   ///
   /// \return False on error (invalid ABI name).
   virtual bool setABI(const std::string &Name) {
     return false;
   }
 
-  /// \brief Use the specified unit for FP math.
+  /// Use the specified unit for FP math.
   ///
   /// \return False on error (invalid unit name).
   virtual bool setFPMath(StringRef Name) {
     return false;
   }
 
-  /// \brief Enable or disable a specific target feature;
+  /// Enable or disable a specific target feature;
   /// the feature name must be valid.
   virtual void setFeatureEnabled(llvm::StringMap<bool> &Features,
                                  StringRef Name,
@@ -908,12 +908,12 @@
     Features[Name] = Enabled;
   }
 
-  /// \brief Determine whether this TargetInfo supports the given feature.
+  /// Determine whether this TargetInfo supports the given feature.
   virtual bool isValidFeatureName(StringRef Feature) const {
     return true;
   }
 
-  /// \brief Perform initialization based on the user configured
+  /// Perform initialization based on the user configured
   /// set of features (e.g., +sse4).
   ///
   /// The list is guaranteed to have at most one entry per feature.
@@ -929,41 +929,41 @@
     return true;
   }
 
-  /// \brief Determine whether the given target has the given feature.
+  /// Determine whether the given target has the given feature.
   virtual bool hasFeature(StringRef Feature) const {
     return false;
   }
 
-  /// \brief Identify whether this taret supports multiversioning of functions,
+  /// Identify whether this taret supports multiversioning of functions,
   /// which requires support for cpu_supports and cpu_is functionality.
   virtual bool supportsMultiVersioning() const { return false; }
 
-  // \brief Validate the contents of the __builtin_cpu_supports(const char*)
+  // Validate the contents of the __builtin_cpu_supports(const char*)
   // argument.
   virtual bool validateCpuSupports(StringRef Name) const { return false; }
 
-  // \brief Return the target-specific priority for features/cpus/vendors so
+  // Return the target-specific priority for features/cpus/vendors so
   // that they can be properly sorted for checking.
   virtual unsigned multiVersionSortPriority(StringRef Name) const {
     return 0;
   }
 
-  // \brief Validate the contents of the __builtin_cpu_is(const char*)
+  // Validate the contents of the __builtin_cpu_is(const char*)
   // argument.
   virtual bool validateCpuIs(StringRef Name) const { return false; }
 
-  // \brief Returns maximal number of args passed in registers.
+  // Returns maximal number of args passed in registers.
   unsigned getRegParmMax() const {
     assert(RegParmMax < 7 && "RegParmMax value is larger than AST can handle");
     return RegParmMax;
   }
 
-  /// \brief Whether the target supports thread-local storage.
+  /// Whether the target supports thread-local storage.
   bool isTLSSupported() const {
     return TLSSupported;
   }
 
-  /// \brief Return the maximum alignment (in bits) of a TLS variable
+  /// Return the maximum alignment (in bits) of a TLS variable
   ///
   /// Gets the maximum alignment (in bits) of a TLS variable on this target.
   /// Returns zero if there is no such constraint.
@@ -971,17 +971,17 @@
     return MaxTLSAlign;
   }
 
-  /// \brief Whether target supports variable-length arrays.
+  /// Whether target supports variable-length arrays.
   bool isVLASupported() const { return VLASupported; }
 
-  /// \brief Whether the target supports SEH __try.
+  /// Whether the target supports SEH __try.
   bool isSEHTrySupported() const {
     return getTriple().isOSWindows() &&
            (getTriple().getArch() == llvm::Triple::x86 ||
             getTriple().getArch() == llvm::Triple::x86_64);
   }
 
-  /// \brief Return true if {|} are normal characters in the asm string.
+  /// Return true if {|} are normal characters in the asm string.
   ///
   /// If this returns false (the default), then {abc|xyz} is syntax
   /// that says that when compiling for asm variant #0, "abc" should be
@@ -991,7 +991,7 @@
     return NoAsmVariants;
   }
 
-  /// \brief Return the register number that __builtin_eh_return_regno would
+  /// Return the register number that __builtin_eh_return_regno would
   /// return with the specified argument.
   /// This corresponds with TargetLowering's getExceptionPointerRegister
   /// and getExceptionSelectorRegister in the backend.
@@ -999,14 +999,14 @@
     return -1;
   }
 
-  /// \brief Return the section to use for C++ static initialization functions.
+  /// Return the section to use for C++ static initialization functions.
   virtual const char *getStaticInitSectionSpecifier() const {
     return nullptr;
   }
 
   const LangASMap &getAddressSpaceMap() const { return *AddrSpaceMap; }
 
-  /// \brief Return an AST address space which can be used opportunistically
+  /// Return an AST address space which can be used opportunistically
   /// for constant global memory. It must be possible to convert pointers into
   /// this address space to LangAS::Default. If no such address space exists,
   /// this may return None, and such optimizations will be disabled.
@@ -1014,11 +1014,11 @@
     return LangAS::Default;
   }
 
-  /// \brief Retrieve the name of the platform as it is used in the
+  /// Retrieve the name of the platform as it is used in the
   /// availability attribute.
   StringRef getPlatformName() const { return PlatformName; }
 
-  /// \brief Retrieve the minimum desired version of the platform, to
+  /// Retrieve the minimum desired version of the platform, to
   /// which the program should be compiled.
   VersionTuple getPlatformMinVersion() const { return PlatformMinVersion; }
 
@@ -1031,7 +1031,7 @@
     CCMT_NonMember
   };
 
-  /// \brief Gets the default calling convention for the given target and
+  /// Gets the default calling convention for the given target and
   /// declaration context.
   virtual CallingConv getDefaultCallingConv(CallingConvMethodType MT) const {
     // Not all targets will specify an explicit calling convention that we can
@@ -1046,7 +1046,7 @@
     CCCR_Ignore,
   };
 
-  /// \brief Determines whether a given calling convention is valid for the
+  /// Determines whether a given calling convention is valid for the
   /// target. A calling convention can either be accepted, produce a warning
   /// and be substituted with the default calling convention, or (someday)
   /// produce an error (such as using thiscall on a non-instance function).
@@ -1085,25 +1085,25 @@
     return false;
   }
 
-  /// \brief Whether target allows to overalign ABI-specified preferred alignment
+  /// Whether target allows to overalign ABI-specified preferred alignment
   virtual bool allowsLargerPreferedTypeAlignment() const { return true; }
 
-  /// \brief Set supported OpenCL extensions and optional core features.
+  /// Set supported OpenCL extensions and optional core features.
   virtual void setSupportedOpenCLOpts() {}
 
-  /// \brief Set supported OpenCL extensions as written on command line
+  /// Set supported OpenCL extensions as written on command line
   virtual void setOpenCLExtensionOpts() {
     for (const auto &Ext : getTargetOpts().OpenCLExtensionsAsWritten) {
       getTargetOpts().SupportedOpenCLOptions.support(Ext);
     }
   }
 
-  /// \brief Get supported OpenCL extensions and optional core features.
+  /// Get supported OpenCL extensions and optional core features.
   OpenCLOptions &getSupportedOpenCLOpts() {
     return getTargetOpts().SupportedOpenCLOptions;
   }
 
-  /// \brief Get const supported OpenCL extensions and optional core features.
+  /// Get const supported OpenCL extensions and optional core features.
   const OpenCLOptions &getSupportedOpenCLOpts() const {
       return getTargetOpts().SupportedOpenCLOptions;
   }
@@ -1119,7 +1119,7 @@
     OCLTK_Sampler,
   };
 
-  /// \brief Get address space for OpenCL type.
+  /// Get address space for OpenCL type.
   virtual LangAS getOpenCLTypeAddrSpace(OpenCLTypeKind TK) const;
 
   /// \returns Target specific vtbl ptr address space.
@@ -1137,7 +1137,7 @@
     return None;
   }
 
-  /// \brief Check the target is valid after it is fully initialized.
+  /// Check the target is valid after it is fully initialized.
   virtual bool validateTarget(DiagnosticsEngine &Diags) const {
     return true;
   }
Index: cfe/trunk/include/clang/Basic/TargetOptions.h
===================================================================
--- cfe/trunk/include/clang/Basic/TargetOptions.h
+++ cfe/trunk/include/clang/Basic/TargetOptions.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::TargetOptions class.
+/// Defines the clang::TargetOptions class.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -22,7 +22,7 @@
 
 namespace clang {
 
-/// \brief Options for controlling the target.
+/// Options for controlling the target.
 class TargetOptions {
 public:
   /// The name of the target triple to compile for.
@@ -47,7 +47,7 @@
   /// If given, the version string of the linker in use.
   std::string LinkerVersion;
 
-  /// \brief The list of target specific features to enable or disable, as written on the command line.
+  /// The list of target specific features to enable or disable, as written on the command line.
   std::vector<std::string> FeaturesAsWritten;
 
   /// The list of target specific features to enable or disable -- this should
@@ -57,11 +57,11 @@
   /// Supported OpenCL extensions and optional core features.
   OpenCLOptions SupportedOpenCLOptions;
 
-  /// \brief The list of OpenCL extensions to enable or disable, as written on
+  /// The list of OpenCL extensions to enable or disable, as written on
   /// the command line.
   std::vector<std::string> OpenCLExtensionsAsWritten;
 
-  /// \brief If given, enables support for __int128_t and __uint128_t types.
+  /// If given, enables support for __int128_t and __uint128_t types.
   bool ForceEnableInt128 = false;
 };
 
Index: cfe/trunk/include/clang/Basic/TemplateKinds.h
===================================================================
--- cfe/trunk/include/clang/Basic/TemplateKinds.h
+++ cfe/trunk/include/clang/Basic/TemplateKinds.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::TemplateNameKind enum.
+/// Defines the clang::TemplateNameKind enum.
 ///
 //===----------------------------------------------------------------------===//
 #ifndef LLVM_CLANG_BASIC_TEMPLATEKINDS_H
@@ -16,7 +16,7 @@
 
 namespace clang {
 
-/// \brief Specifies the kind of template name that an identifier refers to.
+/// Specifies the kind of template name that an identifier refers to.
 /// Be careful when changing this: this enumeration is used in diagnostics.
 enum TemplateNameKind {
   /// The name does not refer to a template.
Index: cfe/trunk/include/clang/Basic/TokenKinds.h
===================================================================
--- cfe/trunk/include/clang/Basic/TokenKinds.h
+++ cfe/trunk/include/clang/Basic/TokenKinds.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::TokenKind enum and support functions.
+/// Defines the clang::TokenKind enum and support functions.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -21,14 +21,14 @@
 
 namespace tok {
 
-/// \brief Provides a simple uniform namespace for tokens from all C languages.
+/// Provides a simple uniform namespace for tokens from all C languages.
 enum TokenKind : unsigned short {
 #define TOK(X) X,
 #include "clang/Basic/TokenKinds.def"
   NUM_TOKENS
 };
 
-/// \brief Provides a namespace for preprocessor keywords which start with a
+/// Provides a namespace for preprocessor keywords which start with a
 /// '#' at the beginning of the line.
 enum PPKeywordKind {
 #define PPKEYWORD(X) pp_##X,
@@ -36,7 +36,7 @@
   NUM_PP_KEYWORDS
 };
 
-/// \brief Provides a namespace for Objective-C keywords which start with
+/// Provides a namespace for Objective-C keywords which start with
 /// an '@'.
 enum ObjCKeywordKind {
 #define OBJC1_AT_KEYWORD(X) objc_##X,
@@ -45,18 +45,18 @@
   NUM_OBJC_KEYWORDS
 };
 
-/// \brief Defines the possible values of an on-off-switch (C99 6.10.6p2).
+/// Defines the possible values of an on-off-switch (C99 6.10.6p2).
 enum OnOffSwitch {
   OOS_ON, OOS_OFF, OOS_DEFAULT
 };
 
-/// \brief Determines the name of a token as used within the front end.
+/// Determines the name of a token as used within the front end.
 ///
 /// The name of a token will be an internal name (such as "l_square")
 /// and should not be used as part of diagnostic messages.
 const char *getTokenName(TokenKind Kind) LLVM_READNONE;
 
-/// \brief Determines the spelling of simple punctuation tokens like
+/// Determines the spelling of simple punctuation tokens like
 /// '!' or '%', and returns NULL for literal and annotation tokens.
 ///
 /// This routine only retrieves the "simple" spelling of the token,
@@ -65,16 +65,16 @@
 /// Preprocessor::getSpelling().
 const char *getPunctuatorSpelling(TokenKind Kind) LLVM_READNONE;
 
-/// \brief Determines the spelling of simple keyword and contextual keyword
+/// Determines the spelling of simple keyword and contextual keyword
 /// tokens like 'int' and 'dynamic_cast'. Returns NULL for other token kinds.
 const char *getKeywordSpelling(TokenKind Kind) LLVM_READNONE;
 
-/// \brief Return true if this is a raw identifier or an identifier kind.
+/// Return true if this is a raw identifier or an identifier kind.
 inline bool isAnyIdentifier(TokenKind K) {
   return (K == tok::identifier) || (K == tok::raw_identifier);
 }
 
-/// \brief Return true if this is a C or C++ string-literal (or
+/// Return true if this is a C or C++ string-literal (or
 /// C++11 user-defined-string-literal) token.
 inline bool isStringLiteral(TokenKind K) {
   return K == tok::string_literal || K == tok::wide_string_literal ||
@@ -82,7 +82,7 @@
          K == tok::utf32_string_literal;
 }
 
-/// \brief Return true if this is a "literal" kind, like a numeric
+/// Return true if this is a "literal" kind, like a numeric
 /// constant, string, etc.
 inline bool isLiteral(TokenKind K) {
   return K == tok::numeric_constant || K == tok::char_constant ||
@@ -91,7 +91,7 @@
          isStringLiteral(K) || K == tok::angle_string_literal;
 }
 
-/// \brief Return true if this is any of tok::annot_* kinds.
+/// Return true if this is any of tok::annot_* kinds.
 inline bool isAnnotation(TokenKind K) {
 #define ANNOTATION(NAME) \
   if (K == tok::annot_##NAME) \
Index: cfe/trunk/include/clang/Basic/TypeTraits.h
===================================================================
--- cfe/trunk/include/clang/Basic/TypeTraits.h
+++ cfe/trunk/include/clang/Basic/TypeTraits.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines enumerations for the type traits support.
+/// Defines enumerations for the type traits support.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -17,7 +17,7 @@
 
 namespace clang {
 
-  /// \brief Names for traits that operate specifically on types.
+  /// Names for traits that operate specifically on types.
   enum TypeTrait {
     UTT_HasNothrowAssign,
     UTT_HasNothrowMoveAssign,
@@ -87,13 +87,13 @@
     TT_IsTriviallyConstructible
   };
 
-  /// \brief Names for the array type traits.
+  /// Names for the array type traits.
   enum ArrayTypeTrait {
     ATT_ArrayRank,
     ATT_ArrayExtent
   };
 
-  /// \brief Names for the "expression or type" traits.
+  /// Names for the "expression or type" traits.
   enum UnaryExprOrTypeTrait {
     UETT_SizeOf,
     UETT_AlignOf,
Index: cfe/trunk/include/clang/Basic/Version.h
===================================================================
--- cfe/trunk/include/clang/Basic/Version.h
+++ cfe/trunk/include/clang/Basic/Version.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines version macros and version-related utility functions
+/// Defines version macros and version-related utility functions
 /// for Clang.
 ///
 //===----------------------------------------------------------------------===//
@@ -20,40 +20,40 @@
 #include "llvm/ADT/StringRef.h"
 
 namespace clang {
-  /// \brief Retrieves the repository path (e.g., Subversion path) that
+  /// Retrieves the repository path (e.g., Subversion path) that
   /// identifies the particular Clang branch, tag, or trunk from which this
   /// Clang was built.
   std::string getClangRepositoryPath();
 
-  /// \brief Retrieves the repository path from which LLVM was built.
+  /// Retrieves the repository path from which LLVM was built.
   ///
   /// This supports LLVM residing in a separate repository from clang.
   std::string getLLVMRepositoryPath();
 
-  /// \brief Retrieves the repository revision number (or identifier) from which
+  /// Retrieves the repository revision number (or identifier) from which
   /// this Clang was built.
   std::string getClangRevision();
 
-  /// \brief Retrieves the repository revision number (or identifier) from which
+  /// Retrieves the repository revision number (or identifier) from which
   /// LLVM was built.
   ///
   /// If Clang and LLVM are in the same repository, this returns the same
   /// string as getClangRevision.
   std::string getLLVMRevision();
 
-  /// \brief Retrieves the full repository version that is an amalgamation of
+  /// Retrieves the full repository version that is an amalgamation of
   /// the information in getClangRepositoryPath() and getClangRevision().
   std::string getClangFullRepositoryVersion();
 
-  /// \brief Retrieves a string representing the complete clang version,
+  /// Retrieves a string representing the complete clang version,
   /// which includes the clang version number, the repository version,
   /// and the vendor tag.
   std::string getClangFullVersion();
 
-  /// \brief Like getClangFullVersion(), but with a custom tool name.
+  /// Like getClangFullVersion(), but with a custom tool name.
   std::string getClangToolFullVersion(llvm::StringRef ToolName);
 
-  /// \brief Retrieves a string representing the complete clang version suitable
+  /// Retrieves a string representing the complete clang version suitable
   /// for use in the CPP __VERSION__ macro, which includes the clang version
   /// number, the repository version, and the vendor tag.
   std::string getClangFullCPPVersion();
Index: cfe/trunk/include/clang/Basic/VersionTuple.h
===================================================================
--- cfe/trunk/include/clang/Basic/VersionTuple.h
+++ cfe/trunk/include/clang/Basic/VersionTuple.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::VersionTuple class, which represents a version in
+/// Defines the clang::VersionTuple class, which represents a version in
 /// the form major[.minor[.subminor]].
 ///
 //===----------------------------------------------------------------------===//
@@ -22,7 +22,7 @@
 
 namespace clang {
 
-/// \brief Represents a version number in the form major[.minor[.subminor[.build]]].
+/// Represents a version number in the form major[.minor[.subminor[.build]]].
 class VersionTuple {
   unsigned Major : 31;
 
@@ -64,30 +64,30 @@
         HasMinor(true), Subminor(Subminor), HasSubminor(true), Build(Build),
         HasBuild(true) {}
 
-  /// \brief Determine whether this version information is empty
+  /// Determine whether this version information is empty
   /// (e.g., all version components are zero).
   bool empty() const {
     return Major == 0 && Minor == 0 && Subminor == 0 && Build == 0;
   }
 
-  /// \brief Retrieve the major version number.
+  /// Retrieve the major version number.
   unsigned getMajor() const { return Major; }
 
-  /// \brief Retrieve the minor version number, if provided.
+  /// Retrieve the minor version number, if provided.
   Optional<unsigned> getMinor() const {
     if (!HasMinor)
       return None;
     return Minor;
   }
 
-  /// \brief Retrieve the subminor version number, if provided.
+  /// Retrieve the subminor version number, if provided.
   Optional<unsigned> getSubminor() const {
     if (!HasSubminor)
       return None;
     return Subminor;
   }
 
-  /// \brief Retrieve the build version number, if provided.
+  /// Retrieve the build version number, if provided.
   Optional<unsigned> getBuild() const {
     if (!HasBuild)
       return None;
@@ -102,14 +102,14 @@
     UsesUnderscores = false;
   }
   
-  /// \brief Determine if two version numbers are equivalent. If not
+  /// Determine if two version numbers are equivalent. If not
   /// provided, minor and subminor version numbers are considered to be zero.
   friend bool operator==(const VersionTuple& X, const VersionTuple &Y) {
     return X.Major == Y.Major && X.Minor == Y.Minor &&
            X.Subminor == Y.Subminor && X.Build == Y.Build;
   }
 
-  /// \brief Determine if two version numbers are not equivalent.
+  /// Determine if two version numbers are not equivalent.
   ///
   /// If not provided, minor and subminor version numbers are considered to be 
   /// zero.
@@ -117,7 +117,7 @@
     return !(X == Y);
   }
 
-  /// \brief Determine whether one version number precedes another.
+  /// Determine whether one version number precedes another.
   ///
   /// If not provided, minor and subminor version numbers are considered to be
   /// zero.
@@ -126,7 +126,7 @@
            std::tie(Y.Major, Y.Minor, Y.Subminor, Y.Build);
   }
 
-  /// \brief Determine whether one version number follows another.
+  /// Determine whether one version number follows another.
   ///
   /// If not provided, minor and subminor version numbers are considered to be
   /// zero.
@@ -134,7 +134,7 @@
     return Y < X;
   }
 
-  /// \brief Determine whether one version number precedes or is
+  /// Determine whether one version number precedes or is
   /// equivalent to another. 
   ///
   /// If not provided, minor and subminor version numbers are considered to be
@@ -143,7 +143,7 @@
     return !(Y < X);
   }
 
-  /// \brief Determine whether one version number follows or is
+  /// Determine whether one version number follows or is
   /// equivalent to another.
   ///
   /// If not provided, minor and subminor version numbers are considered to be
@@ -152,16 +152,16 @@
     return !(X < Y);
   }
 
-  /// \brief Retrieve a string representation of the version number.
+  /// Retrieve a string representation of the version number.
   std::string getAsString() const;
 
-  /// \brief Try to parse the given string as a version number.
+  /// Try to parse the given string as a version number.
   /// \returns \c true if the string does not match the regular expression
   ///   [0-9]+(\.[0-9]+){0,3}
   bool tryParse(StringRef string);
 };
 
-/// \brief Print a version number.
+/// Print a version number.
 raw_ostream& operator<<(raw_ostream &Out, const VersionTuple &V);
 
 } // end namespace clang
Index: cfe/trunk/include/clang/Basic/VirtualFileSystem.h
===================================================================
--- cfe/trunk/include/clang/Basic/VirtualFileSystem.h
+++ cfe/trunk/include/clang/Basic/VirtualFileSystem.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the virtual file system interface vfs::FileSystem.
+/// Defines the virtual file system interface vfs::FileSystem.
 //
 //===----------------------------------------------------------------------===//
 
@@ -45,7 +45,7 @@
 namespace clang {
 namespace vfs {
 
-/// \brief The result of a \p status operation.
+/// The result of a \p status operation.
 class Status {
   std::string Name;
   llvm::sys::fs::UniqueID UID;
@@ -72,7 +72,7 @@
   static Status copyWithNewName(const llvm::sys::fs::file_status &In,
                                 StringRef NewName);
 
-  /// \brief Returns the name that should be used for this file or directory.
+  /// Returns the name that should be used for this file or directory.
   StringRef getName() const { return Name; }
 
   /// @name Status interface from llvm::sys::fs
@@ -98,18 +98,18 @@
   /// @}
 };
 
-/// \brief Represents an open file.
+/// Represents an open file.
 class File {
 public:
-  /// \brief Destroy the file after closing it (if open).
+  /// Destroy the file after closing it (if open).
   /// Sub-classes should generally call close() inside their destructors.  We
   /// cannot do that from the base class, since close is virtual.
   virtual ~File();
 
-  /// \brief Get the status of the file.
+  /// Get the status of the file.
   virtual llvm::ErrorOr<Status> status() = 0;
 
-  /// \brief Get the name of the file
+  /// Get the name of the file
   virtual llvm::ErrorOr<std::string> getName() {
     if (auto Status = status())
       return Status->getName().str();
@@ -117,23 +117,23 @@
       return Status.getError();
   }
 
-  /// \brief Get the contents of the file as a \p MemoryBuffer.
+  /// Get the contents of the file as a \p MemoryBuffer.
   virtual llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
   getBuffer(const Twine &Name, int64_t FileSize = -1,
             bool RequiresNullTerminator = true, bool IsVolatile = false) = 0;
 
-  /// \brief Closes the file.
+  /// Closes the file.
   virtual std::error_code close() = 0;
 };
 
 namespace detail {
 
-/// \brief An interface for virtual file systems to provide an iterator over the
+/// An interface for virtual file systems to provide an iterator over the
 /// (non-recursive) contents of a directory.
 struct DirIterImpl {
   virtual ~DirIterImpl();
 
-  /// \brief Sets \c CurrentEntry to the next entry in the directory on success,
+  /// Sets \c CurrentEntry to the next entry in the directory on success,
   /// or returns a system-defined \c error_code.
   virtual std::error_code increment() = 0;
 
@@ -142,7 +142,7 @@
 
 } // namespace detail
 
-/// \brief An input iterator over the entries in a virtual path, similar to
+/// An input iterator over the entries in a virtual path, similar to
 /// llvm::sys::fs::directory_iterator.
 class directory_iterator {
   std::shared_ptr<detail::DirIterImpl> Impl; // Input iterator semantics on copy
@@ -155,10 +155,10 @@
       Impl.reset(); // Normalize the end iterator to Impl == nullptr.
   }
 
-  /// \brief Construct an 'end' iterator.
+  /// Construct an 'end' iterator.
   directory_iterator() = default;
 
-  /// \brief Equivalent to operator++, with an error code.
+  /// Equivalent to operator++, with an error code.
   directory_iterator &increment(std::error_code &EC) {
     assert(Impl && "attempting to increment past end");
     EC = Impl->increment();
@@ -182,7 +182,7 @@
 
 class FileSystem;
 
-/// \brief An input iterator over the recursive contents of a virtual path,
+/// An input iterator over the recursive contents of a virtual path,
 /// similar to llvm::sys::fs::recursive_directory_iterator.
 class recursive_directory_iterator {
   using IterState =
@@ -195,10 +195,10 @@
   recursive_directory_iterator(FileSystem &FS, const Twine &Path,
                                std::error_code &EC);
 
-  /// \brief Construct an 'end' iterator.
+  /// Construct an 'end' iterator.
   recursive_directory_iterator() = default;
 
-  /// \brief Equivalent to operator++, with an error code.
+  /// Equivalent to operator++, with an error code.
   recursive_directory_iterator &increment(std::error_code &EC);
 
   const Status &operator*() const { return *State->top(); }
@@ -211,22 +211,22 @@
     return !(*this == RHS);
   }
 
-  /// \brief Gets the current level. Starting path is at level 0.
+  /// Gets the current level. Starting path is at level 0.
   int level() const {
     assert(!State->empty() && "Cannot get level without any iteration state");
     return State->size()-1;
   }
 };
 
-/// \brief The virtual file system interface.
+/// The virtual file system interface.
 class FileSystem : public llvm::ThreadSafeRefCountedBase<FileSystem> {
 public:
   virtual ~FileSystem();
 
-  /// \brief Get the status of the entry at \p Path, if one exists.
+  /// Get the status of the entry at \p Path, if one exists.
   virtual llvm::ErrorOr<Status> status(const Twine &Path) = 0;
 
-  /// \brief Get a \p File object for the file at \p Path, if one exists.
+  /// Get a \p File object for the file at \p Path, if one exists.
   virtual llvm::ErrorOr<std::unique_ptr<File>>
   openFileForRead(const Twine &Path) = 0;
 
@@ -236,7 +236,7 @@
   getBufferForFile(const Twine &Name, int64_t FileSize = -1,
                    bool RequiresNullTerminator = true, bool IsVolatile = false);
 
-  /// \brief Get a directory_iterator for \p Dir.
+  /// Get a directory_iterator for \p Dir.
   /// \note The 'end' iterator is directory_iterator().
   virtual directory_iterator dir_begin(const Twine &Dir,
                                        std::error_code &EC) = 0;
@@ -265,11 +265,11 @@
   std::error_code makeAbsolute(SmallVectorImpl<char> &Path) const;
 };
 
-/// \brief Gets an \p vfs::FileSystem for the 'real' file system, as seen by
+/// Gets an \p vfs::FileSystem for the 'real' file system, as seen by
 /// the operating system.
 IntrusiveRefCntPtr<FileSystem> getRealFileSystem();
 
-/// \brief A file system that allows overlaying one \p AbstractFileSystem on top
+/// A file system that allows overlaying one \p AbstractFileSystem on top
 /// of another.
 ///
 /// Consists of a stack of >=1 \p FileSystem objects, which are treated as being
@@ -282,14 +282,14 @@
 class OverlayFileSystem : public FileSystem {
   using FileSystemList = SmallVector<IntrusiveRefCntPtr<FileSystem>, 1>;
 
-  /// \brief The stack of file systems, implemented as a list in order of
+  /// The stack of file systems, implemented as a list in order of
   /// their addition.
   FileSystemList FSList;
 
 public:
   OverlayFileSystem(IntrusiveRefCntPtr<FileSystem> Base);
 
-  /// \brief Pushes a file system on top of the stack.
+  /// Pushes a file system on top of the stack.
   void pushOverlay(IntrusiveRefCntPtr<FileSystem> FS);
 
   llvm::ErrorOr<Status> status(const Twine &Path) override;
@@ -301,10 +301,10 @@
 
   using iterator = FileSystemList::reverse_iterator;
   
-  /// \brief Get an iterator pointing to the most recently added file system.
+  /// Get an iterator pointing to the most recently added file system.
   iterator overlays_begin() { return FSList.rbegin(); }
 
-  /// \brief Get an iterator pointing one-past the least recently added file
+  /// Get an iterator pointing one-past the least recently added file
   /// system.
   iterator overlays_end() { return FSList.rend(); }
 };
@@ -367,10 +367,10 @@
   std::error_code setCurrentWorkingDirectory(const Twine &Path) override;
 };
 
-/// \brief Get a globally unique ID for a virtual file or directory.
+/// Get a globally unique ID for a virtual file or directory.
 llvm::sys::fs::UniqueID getNextVirtualUniqueID();
 
-/// \brief Gets a \p FileSystem for a virtual file system described in YAML
+/// Gets a \p FileSystem for a virtual file system described in YAML
 /// format.
 IntrusiveRefCntPtr<FileSystem>
 getVFSFromYAML(std::unique_ptr<llvm::MemoryBuffer> Buffer,
@@ -386,7 +386,7 @@
   std::string RPath;
 };
 
-/// \brief Collect all pairs of <virtual path, real path> entries from the
+/// Collect all pairs of <virtual path, real path> entries from the
 /// \p YAMLFilePath. This is used by the module dependency collector to forward
 /// the entries into the reproducer output VFS YAML file.
 void collectVFSFromYAML(
Index: cfe/trunk/include/clang/Basic/Visibility.h
===================================================================
--- cfe/trunk/include/clang/Basic/Visibility.h
+++ cfe/trunk/include/clang/Basic/Visibility.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::Visibility enumeration and various utility
+/// Defines the clang::Visibility enumeration and various utility
 /// functions.
 ///
 //===----------------------------------------------------------------------===//
@@ -20,7 +20,7 @@
 
 namespace clang {
 
-/// \brief Describes the different kinds of visibility that a declaration
+/// Describes the different kinds of visibility that a declaration
 /// may have.
 ///
 /// Visibility determines how a declaration interacts with the dynamic
Index: cfe/trunk/include/clang/Basic/XRayInstr.h
===================================================================
--- cfe/trunk/include/clang/Basic/XRayInstr.h
+++ cfe/trunk/include/clang/Basic/XRayInstr.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::XRayInstrKind enum.
+/// Defines the clang::XRayInstrKind enum.
 //
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h
===================================================================
--- cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h
+++ cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h
@@ -384,7 +384,7 @@
     AllocaFieldIndex = FieldIndex;
   }
 
-  /// \brief Return true if this field of an inalloca struct should be returned
+  /// Return true if this field of an inalloca struct should be returned
   /// to implement a struct return calling convention.
   bool getInAllocaSRet() const {
     assert(isInAlloca() && "Invalid kind!");
@@ -648,10 +648,10 @@
     return getExtParameterInfos()[argIndex];
   }
 
-  /// \brief Return true if this function uses inalloca arguments.
+  /// Return true if this function uses inalloca arguments.
   bool usesInAlloca() const { return ArgStruct; }
 
-  /// \brief Get the struct type used to represent all the arguments in memory.
+  /// Get the struct type used to represent all the arguments in memory.
   llvm::StructType *getArgStruct() const { return ArgStruct; }
   CharUnits getArgStructAlignment() const {
     return CharUnits::fromQuantity(ArgStructAlign);
Index: cfe/trunk/include/clang/CrossTU/CrossTranslationUnit.h
===================================================================
--- cfe/trunk/include/clang/CrossTU/CrossTranslationUnit.h
+++ cfe/trunk/include/clang/CrossTU/CrossTranslationUnit.h
@@ -62,7 +62,7 @@
   int LineNo;
 };
 
-/// \brief This function parses an index file that determines which
+/// This function parses an index file that determines which
 ///        translation unit contains which definition.
 ///
 /// The index file format is the following:
@@ -75,7 +75,7 @@
 
 std::string createCrossTUIndexString(const llvm::StringMap<std::string> &Index);
 
-/// \brief This class is used for tools that requires cross translation
+/// This class is used for tools that requires cross translation
 ///        unit capability.
 ///
 /// This class can load function definitions from external AST files.
@@ -90,7 +90,7 @@
   CrossTranslationUnitContext(CompilerInstance &CI);
   ~CrossTranslationUnitContext();
 
-  /// \brief This function loads a function definition from an external AST
+  /// This function loads a function definition from an external AST
   ///        file and merge it into the original AST.
   ///
   /// This method should only be used on functions that have no definitions in
@@ -110,7 +110,7 @@
   getCrossTUDefinition(const FunctionDecl *FD, StringRef CrossTUDir,
                        StringRef IndexName);
 
-  /// \brief This function loads a function definition from an external AST
+  /// This function loads a function definition from an external AST
   ///        file.
   ///
   /// A function definition with the same declaration will be looked up in the
@@ -126,17 +126,17 @@
                                             StringRef CrossTUDir,
                                             StringRef IndexName);
 
-  /// \brief This function merges a definition from a separate AST Unit into
+  /// This function merges a definition from a separate AST Unit into
   ///        the current one which was created by the compiler instance that
   ///        was passed to the constructor.
   ///
   /// \return Returns the resulting definition or an error.
   llvm::Expected<const FunctionDecl *> importDefinition(const FunctionDecl *FD);
 
-  /// \brief Get a name to identify a function.
+  /// Get a name to identify a function.
   static std::string getLookupName(const NamedDecl *ND);
 
-  /// \brief Emit diagnostics for the user for potential configuration errors.
+  /// Emit diagnostics for the user for potential configuration errors.
   void emitCrossTUDiagnostics(const IndexError &IE);
 
 private:
Index: cfe/trunk/include/clang/Driver/Action.h
===================================================================
--- cfe/trunk/include/clang/Driver/Action.h
+++ cfe/trunk/include/clang/Driver/Action.h
@@ -547,13 +547,13 @@
   /// Type that provides information about the actions that depend on this
   /// unbundling action.
   struct DependentActionInfo final {
-    /// \brief The tool chain of the dependent action.
+    /// The tool chain of the dependent action.
     const ToolChain *DependentToolChain = nullptr;
 
-    /// \brief The bound architecture of the dependent action.
+    /// The bound architecture of the dependent action.
     StringRef DependentBoundArch;
 
-    /// \brief The offload kind of the dependent action.
+    /// The offload kind of the dependent action.
     const OffloadKind DependentOffloadKind = OFK_None;
 
     DependentActionInfo(const ToolChain *DependentToolChain,
Index: cfe/trunk/include/clang/Driver/Driver.h
===================================================================
--- cfe/trunk/include/clang/Driver/Driver.h
+++ cfe/trunk/include/clang/Driver/Driver.h
@@ -243,7 +243,7 @@
   std::list<std::string> TempFiles;
   std::list<std::string> ResultFiles;
 
-  /// \brief Cache of all the ToolChains in use by the driver.
+  /// Cache of all the ToolChains in use by the driver.
   ///
   /// This maps from the string representation of a triple to a ToolChain
   /// created targeting that triple. The driver owns all the ToolChain objects
@@ -267,7 +267,7 @@
   void generatePrefixedToolNames(StringRef Tool, const ToolChain &TC,
                                  SmallVectorImpl<std::string> &Names) const;
 
-  /// \brief Find the appropriate .crash diagonostic file for the child crash
+  /// Find the appropriate .crash diagonostic file for the child crash
   /// under this driver and copy it out to a temporary destination with the
   /// other reproducer related files (.sh, .cache, etc). If not found, suggest a
   /// directory for the user to look at.
@@ -309,12 +309,12 @@
   const std::string &getTitle() { return DriverTitle; }
   void setTitle(std::string Value) { DriverTitle = std::move(Value); }
 
-  /// \brief Get the path to the main clang executable.
+  /// Get the path to the main clang executable.
   const char *getClangProgramPath() const {
     return ClangExecutable.c_str();
   }
 
-  /// \brief Get the path to where the clang executable was installed.
+  /// Get the path to where the clang executable was installed.
   const char *getInstalledDir() const {
     if (!InstalledDir.empty())
       return InstalledDir.c_str();
@@ -540,7 +540,7 @@
   /// compilation based on which -f(no-)?lto(=.*)? option occurs last.
   void setLTOMode(const llvm::opt::ArgList &Args);
 
-  /// \brief Retrieves a ToolChain for a particular \p Target triple.
+  /// Retrieves a ToolChain for a particular \p Target triple.
   ///
   /// Will cache ToolChains for the life of the driver object, and create them
   /// on-demand.
@@ -549,7 +549,7 @@
 
   /// @}
 
-  /// \brief Get bitmasks for which option flags to include and exclude based on
+  /// Get bitmasks for which option flags to include and exclude based on
   /// the driver mode.
   std::pair<unsigned, unsigned> getIncludeExcludeOptionFlagMasks() const;
 
Index: cfe/trunk/include/clang/Driver/Job.h
===================================================================
--- cfe/trunk/include/clang/Driver/Job.h
+++ cfe/trunk/include/clang/Driver/Job.h
@@ -116,7 +116,7 @@
     InputFileList = std::move(List);
   }
 
-  /// \brief Sets the environment to be used by the new process.
+  /// Sets the environment to be used by the new process.
   /// \param NewEnvironment An array of environment variables.
   /// \remark If the environment remains unset, then the environment
   ///         from the parent process will be used.
Index: cfe/trunk/include/clang/Driver/Multilib.h
===================================================================
--- cfe/trunk/include/clang/Driver/Multilib.h
+++ cfe/trunk/include/clang/Driver/Multilib.h
@@ -40,7 +40,7 @@
   Multilib(StringRef GCCSuffix = {}, StringRef OSSuffix = {},
            StringRef IncludeSuffix = {});
 
-  /// \brief Get the detected GCC installation path suffix for the multi-arch
+  /// Get the detected GCC installation path suffix for the multi-arch
   /// target variant. Always starts with a '/', unless empty
   const std::string &gccSuffix() const {
     assert(GCCSuffix.empty() ||
@@ -51,7 +51,7 @@
   /// Set the GCC installation path suffix.
   Multilib &gccSuffix(StringRef S);
 
-  /// \brief Get the detected os path suffix for the multi-arch
+  /// Get the detected os path suffix for the multi-arch
   /// target variant. Always starts with a '/', unless empty
   const std::string &osSuffix() const {
     assert(OSSuffix.empty() ||
@@ -62,7 +62,7 @@
   /// Set the os path suffix.
   Multilib &osSuffix(StringRef S);
 
-  /// \brief Get the include directory suffix. Always starts with a '/', unless
+  /// Get the include directory suffix. Always starts with a '/', unless
   /// empty
   const std::string &includeSuffix() const {
     assert(IncludeSuffix.empty() ||
@@ -73,7 +73,7 @@
   /// Set the include directory suffix
   Multilib &includeSuffix(StringRef S);
 
-  /// \brief Get the flags that indicate or contraindicate this multilib's use
+  /// Get the flags that indicate or contraindicate this multilib's use
   /// All elements begin with either '+' or '-'
   const flags_list &flags() const { return Flags; }
   flags_list &flags() { return Flags; }
@@ -92,7 +92,7 @@
   }
 
   LLVM_DUMP_METHOD void dump() const;
-  /// \brief print summary of the Multilib
+  /// print summary of the Multilib
   void print(raw_ostream &OS) const;
 
   /// Check whether any of the 'against' flags contradict the 'for' flags.
Index: cfe/trunk/include/clang/Driver/Tool.h
===================================================================
--- cfe/trunk/include/clang/Driver/Tool.h
+++ cfe/trunk/include/clang/Driver/Tool.h
@@ -88,12 +88,12 @@
   virtual bool hasIntegratedCPP() const = 0;
   virtual bool isLinkJob() const { return false; }
   virtual bool isDsymutilJob() const { return false; }
-  /// \brief Returns the level of support for response files of this tool,
+  /// Returns the level of support for response files of this tool,
   /// whether it accepts arguments to be passed via a file on disk.
   ResponseFileSupport getResponseFilesSupport() const {
     return ResponseSupport;
   }
-  /// \brief Returns which encoding the response file should use. This is only
+  /// Returns which encoding the response file should use. This is only
   /// relevant on Windows platforms where there are different encodings being
   /// accepted for different tools. On UNIX, UTF8 is universal.
   ///
@@ -108,11 +108,11 @@
   llvm::sys::WindowsEncodingMethod getResponseFileEncoding() const {
     return ResponseEncoding;
   }
-  /// \brief Returns which prefix to use when passing the name of a response
+  /// Returns which prefix to use when passing the name of a response
   /// file as a parameter to this tool.
   const char *getResponseFileFlag() const { return ResponseFlag; }
 
-  /// \brief Does this tool have "good" standardized diagnostics, or should the
+  /// Does this tool have "good" standardized diagnostics, or should the
   /// driver add an additional "command failed" diagnostic on failures.
   virtual bool hasGoodDiagnostics() const { return false; }
 
Index: cfe/trunk/include/clang/Driver/ToolChain.h
===================================================================
--- cfe/trunk/include/clang/Driver/ToolChain.h
+++ cfe/trunk/include/clang/Driver/ToolChain.h
@@ -201,7 +201,7 @@
   StringRef getPlatform() const { return Triple.getVendorName(); }
   StringRef getOS() const { return Triple.getOSName(); }
 
-  /// \brief Provide the default architecture name (as expected by -arch) for
+  /// Provide the default architecture name (as expected by -arch) for
   /// this toolchain.
   StringRef getDefaultUniversalArchName() const;
 
@@ -233,7 +233,7 @@
   // Returns the RTTIMode for the toolchain with the current arguments.
   RTTIMode getRTTIMode() const { return CachedRTTIMode; }
 
-  /// \brief Return any implicit target and/or mode flag for an invocation of
+  /// Return any implicit target and/or mode flag for an invocation of
   /// the compiler driver as `ProgName`.
   ///
   /// For example, when called with i686-linux-android-g++, the first element
@@ -287,7 +287,7 @@
   /// the linker suffix or name.
   std::string GetLinkerPath() const;
 
-  /// \brief Dispatch to the specific toolchain for verbose printing.
+  /// Dispatch to the specific toolchain for verbose printing.
   ///
   /// This is used when handling the verbose option to print detailed,
   /// toolchain-specific information useful for understanding the behavior of
@@ -296,7 +296,7 @@
 
   // Platform defaults information
 
-  /// \brief Returns true if the toolchain is targeting a non-native
+  /// Returns true if the toolchain is targeting a non-native
   /// architecture.
   virtual bool isCrossCompiling() const;
 
@@ -315,7 +315,7 @@
   /// by default.
   virtual bool IsIntegratedAssemblerDefault() const { return false; }
 
-  /// \brief Check if the toolchain should use the integrated assembler.
+  /// Check if the toolchain should use the integrated assembler.
   virtual bool useIntegratedAs() const;
 
   /// IsMathErrnoDefault - Does this tool chain use -fmath-errno by default.
@@ -333,7 +333,7 @@
   /// mixed dispatch method be used?
   virtual bool UseObjCMixedDispatch() const { return false; }
 
-  /// \brief Check whether to enable x86 relax relocations by default.
+  /// Check whether to enable x86 relax relocations by default.
   virtual bool useRelaxRelocations() const;
 
   /// GetDefaultStackProtectorLevel - Get the default stack protector level for
@@ -378,13 +378,13 @@
   /// by default.
   virtual bool IsUnwindTablesDefault(const llvm::opt::ArgList &Args) const;
 
-  /// \brief Test whether this toolchain defaults to PIC.
+  /// Test whether this toolchain defaults to PIC.
   virtual bool isPICDefault() const = 0;
 
-  /// \brief Test whether this toolchain defaults to PIE.
+  /// Test whether this toolchain defaults to PIE.
   virtual bool isPIEDefault() const = 0;
 
-  /// \brief Tests whether this toolchain forces its default for PIC, PIE or
+  /// Tests whether this toolchain forces its default for PIC, PIE or
   /// non-PIC.  If this returns true, any PIC related flags should be ignored
   /// and instead the results of \c isPICDefault() and \c isPIEDefault() are
   /// used exclusively.
@@ -456,7 +456,7 @@
   /// FIXME: this really belongs on some sort of DeploymentTarget abstraction
   virtual bool hasBlocksRuntime() const { return true; }
 
-  /// \brief Add the clang cc1 arguments for system include paths.
+  /// Add the clang cc1 arguments for system include paths.
   ///
   /// This routine is responsible for adding the necessary cc1 arguments to
   /// include headers from standard system header directories.
@@ -464,12 +464,12 @@
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
                             llvm::opt::ArgStringList &CC1Args) const;
 
-  /// \brief Add options that need to be passed to cc1 for this target.
+  /// Add options that need to be passed to cc1 for this target.
   virtual void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
                                      llvm::opt::ArgStringList &CC1Args,
                                      Action::OffloadKind DeviceOffloadKind) const;
 
-  /// \brief Add warning options that need to be passed to cc1 for this target.
+  /// Add warning options that need to be passed to cc1 for this target.
   virtual void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) const;
 
   // GetRuntimeLibType - Determine the runtime library type to use with the
@@ -517,22 +517,22 @@
   virtual void addProfileRTLibs(const llvm::opt::ArgList &Args,
                                 llvm::opt::ArgStringList &CmdArgs) const;
 
-  /// \brief Add arguments to use system-specific CUDA includes.
+  /// Add arguments to use system-specific CUDA includes.
   virtual void AddCudaIncludeArgs(const llvm::opt::ArgList &DriverArgs,
                                   llvm::opt::ArgStringList &CC1Args) const;
 
-  /// \brief Add arguments to use MCU GCC toolchain includes.
+  /// Add arguments to use MCU GCC toolchain includes.
   virtual void AddIAMCUIncludeArgs(const llvm::opt::ArgList &DriverArgs,
                                    llvm::opt::ArgStringList &CC1Args) const;
 
-  /// \brief On Windows, returns the MSVC compatibility version.
+  /// On Windows, returns the MSVC compatibility version.
   virtual VersionTuple computeMSVCVersion(const Driver *D,
                                           const llvm::opt::ArgList &Args) const;
 
-  /// \brief Return sanitizers which are available in this toolchain.
+  /// Return sanitizers which are available in this toolchain.
   virtual SanitizerMask getSupportedSanitizers() const;
 
-  /// \brief Return sanitizers which are enabled by default.
+  /// Return sanitizers which are enabled by default.
   virtual SanitizerMask getDefaultSanitizers() const { return 0; }
 };
 
Index: cfe/trunk/include/clang/Edit/EditsReceiver.h
===================================================================
--- cfe/trunk/include/clang/Edit/EditsReceiver.h
+++ cfe/trunk/include/clang/Edit/EditsReceiver.h
@@ -24,7 +24,7 @@
   virtual void insert(SourceLocation loc, StringRef text) = 0;
   virtual void replace(CharSourceRange range, StringRef text) = 0;
 
-  /// \brief By default it calls replace with an empty string.
+  /// By default it calls replace with an empty string.
   virtual void remove(CharSourceRange range);
 };
 
Index: cfe/trunk/include/clang/Format/Format.h
===================================================================
--- cfe/trunk/include/clang/Format/Format.h
+++ cfe/trunk/include/clang/Format/Format.h
@@ -41,27 +41,27 @@
 const std::error_category &getParseCategory();
 std::error_code make_error_code(ParseError e);
 
-/// \brief The ``FormatStyle`` is used to configure the formatting to follow
+/// The ``FormatStyle`` is used to configure the formatting to follow
 /// specific guidelines.
 struct FormatStyle {
-  /// \brief The extra indent or outdent of access modifiers, e.g. ``public:``.
+  /// The extra indent or outdent of access modifiers, e.g. ``public:``.
   int AccessModifierOffset;
 
-  /// \brief Different styles for aligning after open brackets.
+  /// Different styles for aligning after open brackets.
   enum BracketAlignmentStyle {
-    /// \brief Align parameters on the open bracket, e.g.:
+    /// Align parameters on the open bracket, e.g.:
     /// \code
     ///   someLongFunction(argument1,
     ///                    argument2);
     /// \endcode
     BAS_Align,
-    /// \brief Don't align, instead use ``ContinuationIndentWidth``, e.g.:
+    /// Don't align, instead use ``ContinuationIndentWidth``, e.g.:
     /// \code
     ///   someLongFunction(argument1,
     ///       argument2);
     /// \endcode
     BAS_DontAlign,
-    /// \brief Always break after an open bracket, if the parameters don't fit
+    /// Always break after an open bracket, if the parameters don't fit
     /// on a single line, e.g.:
     /// \code
     ///   someLongFunction(
@@ -70,13 +70,13 @@
     BAS_AlwaysBreak,
   };
 
-  /// \brief If ``true``, horizontally aligns arguments after an open bracket.
+  /// If ``true``, horizontally aligns arguments after an open bracket.
   ///
   /// This applies to round brackets (parentheses), angle brackets and square
   /// brackets.
   BracketAlignmentStyle AlignAfterOpenBracket;
 
-  /// \brief If ``true``, aligns consecutive assignments.
+  /// If ``true``, aligns consecutive assignments.
   ///
   /// This will align the assignment operators of consecutive lines. This
   /// will result in formattings like
@@ -87,7 +87,7 @@
   /// \endcode
   bool AlignConsecutiveAssignments;
 
-  /// \brief If ``true``, aligns consecutive declarations.
+  /// If ``true``, aligns consecutive declarations.
   ///
   /// This will align the declaration names of consecutive lines. This
   /// will result in formattings like
@@ -98,9 +98,9 @@
   /// \endcode
   bool AlignConsecutiveDeclarations;
 
-  /// \brief Different styles for aligning escaped newlines.
+  /// Different styles for aligning escaped newlines.
   enum EscapedNewlineAlignmentStyle {
-    /// \brief Don't align escaped newlines.
+    /// Don't align escaped newlines.
     /// \code
     ///   #define A \
     ///     int aaaa; \
@@ -108,7 +108,7 @@
     ///     int dddddddddd;
     /// \endcode
     ENAS_DontAlign,
-    /// \brief Align escaped newlines as far left as possible.
+    /// Align escaped newlines as far left as possible.
     /// \code
     ///   true:
     ///   #define A   \
@@ -119,7 +119,7 @@
     ///   false:
     /// \endcode
     ENAS_Left,
-    /// \brief Align escaped newlines in the right-most column.
+    /// Align escaped newlines in the right-most column.
     /// \code
     ///   #define A                                                                      \
     ///     int aaaa;                                                                    \
@@ -129,10 +129,10 @@
     ENAS_Right,
   };
 
-  /// \brief Options for aligning backslashes in escaped newlines.
+  /// Options for aligning backslashes in escaped newlines.
   EscapedNewlineAlignmentStyle AlignEscapedNewlines;
 
-  /// \brief If ``true``, horizontally align operands of binary and ternary
+  /// If ``true``, horizontally align operands of binary and ternary
   /// expressions.
   ///
   /// Specifically, this aligns operands of a single expression that needs to be
@@ -143,7 +143,7 @@
   /// \endcode
   bool AlignOperands;
 
-  /// \brief If ``true``, aligns trailing comments.
+  /// If ``true``, aligns trailing comments.
   /// \code
   ///   true:                                   false:
   ///   int a;     // My comment a      vs.     int a; // My comment a
@@ -151,7 +151,7 @@
   /// \endcode
   bool AlignTrailingComments;
 
-  /// \brief If the function declaration doesn't fit on a line,
+  /// If the function declaration doesn't fit on a line,
   /// allow putting all parameters of a function declaration onto
   /// the next line even if ``BinPackParameters`` is ``false``.
   /// \code
@@ -168,12 +168,12 @@
   /// \endcode
   bool AllowAllParametersOfDeclarationOnNextLine;
 
-  /// \brief Allows contracting simple braced statements to a single line.
+  /// Allows contracting simple braced statements to a single line.
   ///
   /// E.g., this allows ``if (a) { return; }`` to be put on a single line.
   bool AllowShortBlocksOnASingleLine;
 
-  /// \brief If ``true``, short case labels will be contracted to a single line.
+  /// If ``true``, short case labels will be contracted to a single line.
   /// \code
   ///   true:                                   false:
   ///   switch (a) {                    vs.     switch (a) {
@@ -186,12 +186,12 @@
   /// \endcode
   bool AllowShortCaseLabelsOnASingleLine;
 
-  /// \brief Different styles for merging short functions containing at most one
+  /// Different styles for merging short functions containing at most one
   /// statement.
   enum ShortFunctionStyle {
-    /// \brief Never merge functions into a single line.
+    /// Never merge functions into a single line.
     SFS_None,
-    /// \brief Only merge functions defined inside a class. Same as "inline",
+    /// Only merge functions defined inside a class. Same as "inline",
     /// except it does not implies "empty": i.e. top level empty functions
     /// are not merged either.
     /// \code
@@ -205,7 +205,7 @@
     ///   }
     /// \endcode
     SFS_InlineOnly,
-    /// \brief Only merge empty functions.
+    /// Only merge empty functions.
     /// \code
     ///   void f() {}
     ///   void f2() {
@@ -213,7 +213,7 @@
     ///   }
     /// \endcode
     SFS_Empty,
-    /// \brief Only merge functions defined inside a class. Implies "empty".
+    /// Only merge functions defined inside a class. Implies "empty".
     /// \code
     ///   class Foo {
     ///     void f() { foo(); }
@@ -224,7 +224,7 @@
     ///   void f() {}
     /// \endcode
     SFS_Inline,
-    /// \brief Merge all functions fitting on a single line.
+    /// Merge all functions fitting on a single line.
     /// \code
     ///   class Foo {
     ///     void f() { foo(); }
@@ -234,18 +234,18 @@
     SFS_All,
   };
 
-  /// \brief Dependent on the value, ``int f() { return 0; }`` can be put on a
+  /// Dependent on the value, ``int f() { return 0; }`` can be put on a
   /// single line.
   ShortFunctionStyle AllowShortFunctionsOnASingleLine;
 
-  /// \brief If ``true``, ``if (a) return;`` can be put on a single line.
+  /// If ``true``, ``if (a) return;`` can be put on a single line.
   bool AllowShortIfStatementsOnASingleLine;
 
-  /// \brief If ``true``, ``while (true) continue;`` can be put on a single
+  /// If ``true``, ``while (true) continue;`` can be put on a single
   /// line.
   bool AllowShortLoopsOnASingleLine;
 
-  /// \brief Different ways to break after the function definition return type.
+  /// Different ways to break after the function definition return type.
   /// This option is **deprecated** and is retained for backwards compatibility.
   enum DefinitionReturnTypeBreakingStyle {
     /// Break after return type automatically.
@@ -257,7 +257,7 @@
     DRTBS_TopLevel,
   };
 
-  /// \brief Different ways to break after the function definition or
+  /// Different ways to break after the function definition or
   /// declaration return type.
   enum ReturnTypeBreakingStyle {
     /// Break after return type automatically.
@@ -328,14 +328,14 @@
     RTBS_TopLevelDefinitions,
   };
 
-  /// \brief The function definition return type breaking style to use.  This
+  /// The function definition return type breaking style to use.  This
   /// option is **deprecated** and is retained for backwards compatibility.
   DefinitionReturnTypeBreakingStyle AlwaysBreakAfterDefinitionReturnType;
 
-  /// \brief The function declaration return type breaking style to use.
+  /// The function declaration return type breaking style to use.
   ReturnTypeBreakingStyle AlwaysBreakAfterReturnType;
 
-  /// \brief If ``true``, always break before multiline string literals.
+  /// If ``true``, always break before multiline string literals.
   ///
   /// This flag is mean to make cases where there are multiple multiline strings
   /// in a file look more consistent. Thus, it will only take effect if wrapping
@@ -349,7 +349,7 @@
   /// \endcode
   bool AlwaysBreakBeforeMultilineStrings;
 
-  /// \brief If ``true``, always break after the ``template<...>`` of a template
+  /// If ``true``, always break after the ``template<...>`` of a template
   /// declaration.
   /// \code
   ///    true:                                  false:
@@ -358,7 +358,7 @@
   /// \endcode
   bool AlwaysBreakTemplateDeclarations;
 
-  /// \brief If ``false``, a function call's arguments will either be all on the
+  /// If ``false``, a function call's arguments will either be all on the
   /// same line or will have one line each.
   /// \code
   ///   true:
@@ -376,7 +376,7 @@
   /// \endcode
   bool BinPackArguments;
 
-  /// \brief If ``false``, a function declaration's or function definition's
+  /// If ``false``, a function declaration's or function definition's
   /// parameters will either all be on the same line or will have one line each.
   /// \code
   ///   true:
@@ -390,7 +390,7 @@
   /// \endcode
   bool BinPackParameters;
 
-  /// \brief The style of wrapping parameters on the same line (bin-packed) or
+  /// The style of wrapping parameters on the same line (bin-packed) or
   /// on one line each.
   enum BinPackStyle {
     /// Automatically determine parameter bin-packing behavior.
@@ -401,7 +401,7 @@
     BPS_Never,
   };
 
-  /// \brief The style of breaking before or after binary operators.
+  /// The style of breaking before or after binary operators.
   enum BinaryOperatorStyle {
     /// Break after operators.
     /// \code
@@ -441,10 +441,10 @@
     BOS_All,
   };
 
-  /// \brief The way to wrap binary operators.
+  /// The way to wrap binary operators.
   BinaryOperatorStyle BreakBeforeBinaryOperators;
 
-  /// \brief Different ways to attach braces to their surrounding context.
+  /// Different ways to attach braces to their surrounding context.
   enum BraceBreakingStyle {
     /// Always attach braces to surrounding context.
     /// \code
@@ -579,10 +579,10 @@
     BS_Custom
   };
 
-  /// \brief The brace breaking style to use.
+  /// The brace breaking style to use.
   BraceBreakingStyle BreakBeforeBraces;
 
-  /// \brief Precise control over the wrapping of braces.
+  /// Precise control over the wrapping of braces.
   /// \code
   ///   # Should be declared this way:
   ///   BreakBeforeBraces: Custom
@@ -590,7 +590,7 @@
   ///       AfterClass: true
   /// \endcode
   struct BraceWrappingFlags {
-    /// \brief Wrap class definitions.
+    /// Wrap class definitions.
     /// \code
     ///   true:
     ///   class foo {};
@@ -600,7 +600,7 @@
     ///   {};
     /// \endcode
     bool AfterClass;
-    /// \brief Wrap control statements (``if``/``for``/``while``/``switch``/..).
+    /// Wrap control statements (``if``/``for``/``while``/``switch``/..).
     /// \code
     ///   true:
     ///   if (foo())
@@ -618,7 +618,7 @@
     ///   }
     /// \endcode
     bool AfterControlStatement;
-    /// \brief Wrap enum definitions.
+    /// Wrap enum definitions.
     /// \code
     ///   true:
     ///   enum X : int
@@ -630,7 +630,7 @@
     ///   enum X : int { B };
     /// \endcode
     bool AfterEnum;
-    /// \brief Wrap function definitions.
+    /// Wrap function definitions.
     /// \code
     ///   true:
     ///   void foo()
@@ -646,7 +646,7 @@
     ///   }
     /// \endcode
     bool AfterFunction;
-    /// \brief Wrap namespace definitions.
+    /// Wrap namespace definitions.
     /// \code
     ///   true:
     ///   namespace
@@ -662,11 +662,11 @@
     ///   }
     /// \endcode
     bool AfterNamespace;
-    /// \brief Wrap ObjC definitions (interfaces, implementations...).
+    /// Wrap ObjC definitions (interfaces, implementations...).
     /// \note @autoreleasepool and @synchronized blocks are wrapped
     /// according to `AfterControlStatement` flag.
     bool AfterObjCDeclaration;
-    /// \brief Wrap struct definitions.
+    /// Wrap struct definitions.
     /// \code
     ///   true:
     ///   struct foo
@@ -680,7 +680,7 @@
     ///   };
     /// \endcode
     bool AfterStruct;
-    /// \brief Wrap union definitions.
+    /// Wrap union definitions.
     /// \code
     ///   true:
     ///   union foo
@@ -694,7 +694,7 @@
     ///   }
     /// \endcode
     bool AfterUnion;
-    /// \brief Wrap extern blocks.
+    /// Wrap extern blocks.
     /// \code
     ///   true:
     ///   extern "C"
@@ -708,7 +708,7 @@
     ///   }
     /// \endcode
     bool AfterExternBlock;
-    /// \brief Wrap before ``catch``.
+    /// Wrap before ``catch``.
     /// \code
     ///   true:
     ///   try {
@@ -724,7 +724,7 @@
     ///   }
     /// \endcode
     bool BeforeCatch;
-    /// \brief Wrap before ``else``.
+    /// Wrap before ``else``.
     /// \code
     ///   true:
     ///   if (foo()) {
@@ -738,9 +738,9 @@
     ///   }
     /// \endcode
     bool BeforeElse;
-    /// \brief Indent the wrapped braces themselves.
+    /// Indent the wrapped braces themselves.
     bool IndentBraces;
-    /// \brief If ``false``, empty function body can be put on a single line.
+    /// If ``false``, empty function body can be put on a single line.
     /// This option is used only if the opening brace of the function has
     /// already been wrapped, i.e. the `AfterFunction` brace wrapping mode is
     /// set, and the function could/should not be put on a single line (as per
@@ -752,7 +752,7 @@
     /// \endcode
     ///
     bool SplitEmptyFunction;
-    /// \brief If ``false``, empty record (e.g. class, struct or union) body
+    /// If ``false``, empty record (e.g. class, struct or union) body
     /// can be put on a single line. This option is used only if the opening
     /// brace of the record has already been wrapped, i.e. the `AfterClass`
     /// (for classes) brace wrapping mode is set.
@@ -763,7 +763,7 @@
     /// \endcode
     ///
     bool SplitEmptyRecord;
-    /// \brief If ``false``, empty namespace body can be put on a single line.
+    /// If ``false``, empty namespace body can be put on a single line.
     /// This option is used only if the opening brace of the namespace has
     /// already been wrapped, i.e. the `AfterNamespace` brace wrapping mode is
     /// set.
@@ -776,7 +776,7 @@
     bool SplitEmptyNamespace;
   };
 
-  /// \brief Control of individual brace wrapping cases.
+  /// Control of individual brace wrapping cases.
   ///
   /// If ``BreakBeforeBraces`` is set to ``BS_Custom``, use this to specify how
   /// each individual brace case should be handled. Otherwise, this is ignored.
@@ -790,7 +790,7 @@
   /// \endcode
   BraceWrappingFlags BraceWrapping;
 
-  /// \brief If ``true``, ternary operators will be placed after line breaks.
+  /// If ``true``, ternary operators will be placed after line breaks.
   /// \code
   ///    true:
   ///    veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription
@@ -804,7 +804,7 @@
   /// \endcode
   bool BreakBeforeTernaryOperators;
 
-  /// \brief Different ways to break initializers.
+  /// Different ways to break initializers.
   enum BreakConstructorInitializersStyle {
     /// Break constructor initializers before the colon and after the commas.
     /// \code
@@ -830,10 +830,10 @@
     BCIS_AfterColon
   };
 
-  /// \brief The constructor initializers style to use.
+  /// The constructor initializers style to use.
   BreakConstructorInitializersStyle BreakConstructorInitializers;
 
-  /// \brief Break after each annotation on a field in Java files.
+  /// Break after each annotation on a field in Java files.
   /// \code{.java}
   ///    true:                                  false:
   ///    @Partial                       vs.     @Partial @Mock DataLoad loader;
@@ -842,17 +842,17 @@
   /// \endcode
   bool BreakAfterJavaFieldAnnotations;
 
-  /// \brief Allow breaking string literals when formatting.
+  /// Allow breaking string literals when formatting.
   bool BreakStringLiterals;
 
-  /// \brief The column limit.
+  /// The column limit.
   ///
   /// A column limit of ``0`` means that there is no column limit. In this case,
   /// clang-format will respect the input's line breaking decisions within
   /// statements unless they contradict other rules.
   unsigned ColumnLimit;
 
-  /// \brief A regular expression that describes comments with special meaning,
+  /// A regular expression that describes comments with special meaning,
   /// which should not be split into lines or otherwise changed.
   /// \code
   ///    // CommentPragmas: '^ FOOBAR pragma:'
@@ -861,7 +861,7 @@
   /// \endcode
   std::string CommentPragmas;
 
-  /// \brief If ``true``, in the class inheritance expression clang-format will
+  /// If ``true``, in the class inheritance expression clang-format will
   /// break before ``:`` and ``,`` if there is multiple inheritance.
   /// \code
   ///    true:                                  false:
@@ -872,7 +872,7 @@
   /// \endcode
   bool BreakBeforeInheritanceComma;
 
-  /// \brief If ``true``, consecutive namespace declarations will be on the same
+  /// If ``true``, consecutive namespace declarations will be on the same
   /// line. If ``false``, each namespace is declared on a new line.
   /// \code
   ///   true:
@@ -895,7 +895,7 @@
   /// \endcode
   bool CompactNamespaces;
 
-  /// \brief If the constructor initializers don't fit on a line, put each
+  /// If the constructor initializers don't fit on a line, put each
   /// initializer on its own line.
   /// \code
   ///   true:
@@ -913,11 +913,11 @@
   /// \endcode
   bool ConstructorInitializerAllOnOneLineOrOnePerLine;
 
-  /// \brief The number of characters to use for indentation of constructor
+  /// The number of characters to use for indentation of constructor
   /// initializer lists.
   unsigned ConstructorInitializerIndentWidth;
 
-  /// \brief Indent width for line continuations.
+  /// Indent width for line continuations.
   /// \code
   ///    ContinuationIndentWidth: 2
   ///
@@ -927,7 +927,7 @@
   /// \endcode
   unsigned ContinuationIndentWidth;
 
-  /// \brief If ``true``, format braced lists as best suited for C++11 braced
+  /// If ``true``, format braced lists as best suited for C++11 braced
   /// lists.
   ///
   /// Important differences:
@@ -949,17 +949,17 @@
   /// \endcode
   bool Cpp11BracedListStyle;
 
-  /// \brief If ``true``, analyze the formatted file for the most common
+  /// If ``true``, analyze the formatted file for the most common
   /// alignment of ``&`` and ``*``.
   /// Pointer and reference alignment styles are going to be updated according
   /// to the preferences found in the file.
   /// ``PointerAlignment`` is then used only as fallback.
   bool DerivePointerAlignment;
 
-  /// \brief Disables formatting completely.
+  /// Disables formatting completely.
   bool DisableFormat;
 
-  /// \brief If ``true``, clang-format detects whether function calls and
+  /// If ``true``, clang-format detects whether function calls and
   /// definitions are formatted with one parameter per line.
   ///
   /// Each call can be bin-packed, one-per-line or inconclusive. If it is
@@ -971,7 +971,7 @@
   /// not use this in config files, etc. Use at your own risk.
   bool ExperimentalAutoDetectBinPacking;
 
-  /// \brief If ``true``, clang-format adds missing namespace end comments and
+  /// If ``true``, clang-format adds missing namespace end comments and
   /// fixes invalid existing ones.
   /// \code
   ///    true:                                  false:
@@ -981,7 +981,7 @@
   /// \endcode
   bool FixNamespaceComments;
 
-  /// \brief A vector of macros that should be interpreted as foreach loops
+  /// A vector of macros that should be interpreted as foreach loops
   /// instead of as function calls.
   ///
   /// These are expected to be macros of the form:
@@ -998,9 +998,9 @@
   /// For example: BOOST_FOREACH.
   std::vector<std::string> ForEachMacros;
 
-  /// \brief Styles for sorting multiple ``#include`` blocks.
+  /// Styles for sorting multiple ``#include`` blocks.
   enum IncludeBlocksStyle {
-    /// \brief Sort each ``#include`` block separately.
+    /// Sort each ``#include`` block separately.
     /// \code
     ///    #include "b.h"               into      #include "b.h"
     ///
@@ -1008,7 +1008,7 @@
     ///    #include "a.h"                         #include <lib/main.h>
     /// \endcode
     IBS_Preserve,
-    /// \brief Merge multiple ``#include`` blocks together and sort as one.
+    /// Merge multiple ``#include`` blocks together and sort as one.
     /// \code
     ///    #include "b.h"               into      #include "a.h"
     ///                                           #include "b.h"
@@ -1016,7 +1016,7 @@
     ///    #include "a.h"
     /// \endcode
     IBS_Merge,
-    /// \brief Merge multiple ``#include`` blocks together and sort as one.
+    /// Merge multiple ``#include`` blocks together and sort as one.
     /// Then split into groups based on category priority. See
     /// ``IncludeCategories``.
     /// \code
@@ -1028,22 +1028,22 @@
     IBS_Regroup,
   };
 
-  /// \brief Dependent on the value, multiple ``#include`` blocks can be sorted
+  /// Dependent on the value, multiple ``#include`` blocks can be sorted
   /// as one and divided based on category.
   IncludeBlocksStyle IncludeBlocks;
 
-  /// \brief See documentation of ``IncludeCategories``.
+  /// See documentation of ``IncludeCategories``.
   struct IncludeCategory {
-    /// \brief The regular expression that this category matches.
+    /// The regular expression that this category matches.
     std::string Regex;
-    /// \brief The priority to assign to this category.
+    /// The priority to assign to this category.
     int Priority;
     bool operator==(const IncludeCategory &Other) const {
       return Regex == Other.Regex && Priority == Other.Priority;
     }
   };
 
-  /// \brief Regular expressions denoting the different ``#include`` categories
+  /// Regular expressions denoting the different ``#include`` categories
   /// used for ordering ``#includes``.
   ///
   /// These regular expressions are matched against the filename of an include
@@ -1071,7 +1071,7 @@
   /// \endcode
   std::vector<IncludeCategory> IncludeCategories;
 
-  /// \brief Specify a regular expression of suffixes that are allowed in the
+  /// Specify a regular expression of suffixes that are allowed in the
   /// file-to-main-include mapping.
   ///
   /// When guessing whether a #include is the "main" include (to assign
@@ -1084,7 +1084,7 @@
   /// as the "main" include in both a.cc and a_test.cc.
   std::string IncludeIsMainRegex;
 
-  /// \brief Indent case labels one level from the switch statement.
+  /// Indent case labels one level from the switch statement.
   ///
   /// When ``false``, use the same indentation level as for the switch statement.
   /// Switch statement body is always indented one level more than case labels.
@@ -1100,7 +1100,7 @@
   /// \endcode
   bool IndentCaseLabels;
 
-  /// \brief Options for indenting preprocessor directives.
+  /// Options for indenting preprocessor directives.
   enum PPDirectiveIndentStyle {
     /// Does not indent any directives.
     /// \code
@@ -1122,10 +1122,10 @@
     PPDIS_AfterHash
   };
 
-  /// \brief The preprocessor directive indenting style to use.
+  /// The preprocessor directive indenting style to use.
   PPDirectiveIndentStyle IndentPPDirectives;
 
-  /// \brief The number of columns to use for indentation.
+  /// The number of columns to use for indentation.
   /// \code
   ///    IndentWidth: 3
   ///
@@ -1138,7 +1138,7 @@
   /// \endcode
   unsigned IndentWidth;
 
-  /// \brief Indent if a function definition or declaration is wrapped after the
+  /// Indent if a function definition or declaration is wrapped after the
   /// type.
   /// \code
   ///    true:
@@ -1151,7 +1151,7 @@
   /// \endcode
   bool IndentWrappedFunctionNames;
 
-  /// \brief Quotation styles for JavaScript strings. Does not affect template
+  /// Quotation styles for JavaScript strings. Does not affect template
   /// strings.
   enum JavaScriptQuoteStyle {
     /// Leave string quotes as they are.
@@ -1174,10 +1174,10 @@
     JSQS_Double
   };
 
-  /// \brief The JavaScriptQuoteStyle to use for JavaScript strings.
+  /// The JavaScriptQuoteStyle to use for JavaScript strings.
   JavaScriptQuoteStyle JavaScriptQuotes;
 
-  /// \brief Whether to wrap JavaScript import/export statements.
+  /// Whether to wrap JavaScript import/export statements.
   /// \code{.js}
   ///    true:
   ///    import {
@@ -1191,7 +1191,7 @@
   /// \endcode
   bool JavaScriptWrapImports;
 
-  /// \brief If true, the empty line at the start of blocks is kept.
+  /// If true, the empty line at the start of blocks is kept.
   /// \code
   ///    true:                                  false:
   ///    if (foo) {                     vs.     if (foo) {
@@ -1201,7 +1201,7 @@
   /// \endcode
   bool KeepEmptyLinesAtTheStartOfBlocks;
 
-  /// \brief Supported languages.
+  /// Supported languages.
   ///
   /// When stored in a configuration file, specifies the language, that the
   /// configuration targets. When passed to the ``reformat()`` function, enables
@@ -1228,10 +1228,10 @@
   };
   bool isCpp() const { return Language == LK_Cpp || Language == LK_ObjC; }
 
-  /// \brief Language, this format style is targeted at.
+  /// Language, this format style is targeted at.
   LanguageKind Language;
 
-  /// \brief A regular expression matching macros that start a block.
+  /// A regular expression matching macros that start a block.
   /// \code
   ///    # With:
   ///    MacroBlockBegin: "^NS_MAP_BEGIN|\
@@ -1259,10 +1259,10 @@
   /// \endcode
   std::string MacroBlockBegin;
 
-  /// \brief A regular expression matching macros that end a block.
+  /// A regular expression matching macros that end a block.
   std::string MacroBlockEnd;
 
-  /// \brief The maximum number of consecutive empty lines to keep.
+  /// The maximum number of consecutive empty lines to keep.
   /// \code
   ///    MaxEmptyLinesToKeep: 1         vs.     MaxEmptyLinesToKeep: 0
   ///    int f() {                              int f() {
@@ -1275,7 +1275,7 @@
   /// \endcode
   unsigned MaxEmptyLinesToKeep;
 
-  /// \brief Different ways to indent namespace contents.
+  /// Different ways to indent namespace contents.
   enum NamespaceIndentationKind {
     /// Don't indent in namespaces.
     /// \code
@@ -1309,10 +1309,10 @@
     NI_All
   };
 
-  /// \brief The indentation used for namespaces.
+  /// The indentation used for namespaces.
   NamespaceIndentationKind NamespaceIndentation;
 
-  /// \brief Controls bin-packing Objective-C protocol conformance list
+  /// Controls bin-packing Objective-C protocol conformance list
   /// items into as few lines as possible when they go over ``ColumnLimit``.
   ///
   /// If ``Auto`` (the default), delegates to the value in
@@ -1344,7 +1344,7 @@
   /// \endcode
   BinPackStyle ObjCBinPackProtocolList;
 
-  /// \brief The number of characters to use for indentation of ObjC blocks.
+  /// The number of characters to use for indentation of ObjC blocks.
   /// \code{.objc}
   ///    ObjCBlockIndentWidth: 4
   ///
@@ -1354,37 +1354,37 @@
   /// \endcode
   unsigned ObjCBlockIndentWidth;
 
-  /// \brief Add a space after ``@property`` in Objective-C, i.e. use
+  /// Add a space after ``@property`` in Objective-C, i.e. use
   /// ``@property (readonly)`` instead of ``@property(readonly)``.
   bool ObjCSpaceAfterProperty;
 
-  /// \brief Add a space in front of an Objective-C protocol list, i.e. use
+  /// Add a space in front of an Objective-C protocol list, i.e. use
   /// ``Foo <Protocol>`` instead of ``Foo<Protocol>``.
   bool ObjCSpaceBeforeProtocolList;
 
-  /// \brief The penalty for breaking around an assignment operator.
+  /// The penalty for breaking around an assignment operator.
   unsigned PenaltyBreakAssignment;
 
-  /// \brief The penalty for breaking a function call after ``call(``.
+  /// The penalty for breaking a function call after ``call(``.
   unsigned PenaltyBreakBeforeFirstCallParameter;
 
-  /// \brief The penalty for each line break introduced inside a comment.
+  /// The penalty for each line break introduced inside a comment.
   unsigned PenaltyBreakComment;
 
-  /// \brief The penalty for breaking before the first ``<<``.
+  /// The penalty for breaking before the first ``<<``.
   unsigned PenaltyBreakFirstLessLess;
 
-  /// \brief The penalty for each line break introduced inside a string literal.
+  /// The penalty for each line break introduced inside a string literal.
   unsigned PenaltyBreakString;
 
-  /// \brief The penalty for each character outside of the column limit.
+  /// The penalty for each character outside of the column limit.
   unsigned PenaltyExcessCharacter;
 
-  /// \brief Penalty for putting the return type of a function onto its own
+  /// Penalty for putting the return type of a function onto its own
   /// line.
   unsigned PenaltyReturnTypeOnItsOwnLine;
 
-  /// \brief The ``&`` and ``*`` alignment style.
+  /// The ``&`` and ``*`` alignment style.
   enum PointerAlignmentStyle {
     /// Align pointer to the left.
     /// \code
@@ -1403,20 +1403,20 @@
     PAS_Middle
   };
 
-  /// \brief Pointer and reference alignment style.
+  /// Pointer and reference alignment style.
   PointerAlignmentStyle PointerAlignment;
 
   /// See documentation of ``RawStringFormats``.
   struct RawStringFormat {
-    /// \brief The language of this raw string.
+    /// The language of this raw string.
     LanguageKind Language;
-    /// \brief A list of raw string delimiters that match this language.
+    /// A list of raw string delimiters that match this language.
     std::vector<std::string> Delimiters;
-    /// \brief A list of enclosing function names that match this language.
+    /// A list of enclosing function names that match this language.
     std::vector<std::string> EnclosingFunctions;
-    /// \brief The canonical delimiter for this language.
+    /// The canonical delimiter for this language.
     std::string CanonicalDelimiter;
-    /// \brief The style name on which this raw string format is based on.
+    /// The style name on which this raw string format is based on.
     /// If not specified, the raw string format is based on the style that this
     /// format is based on.
     std::string BasedOnStyle;
@@ -1428,7 +1428,7 @@
     }
   };
 
-  /// \brief Defines hints for detecting supported languages code blocks in raw
+  /// Defines hints for detecting supported languages code blocks in raw
   /// strings.
   ///
   /// A raw string with a matching delimiter or a matching enclosing function
@@ -1465,7 +1465,7 @@
   /// \endcode
   std::vector<RawStringFormat> RawStringFormats;
 
-  /// \brief If ``true``, clang-format will attempt to re-flow comments.
+  /// If ``true``, clang-format will attempt to re-flow comments.
   /// \code
   ///    false:
   ///    // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information
@@ -1479,7 +1479,7 @@
   /// \endcode
   bool ReflowComments;
 
-  /// \brief If ``true``, clang-format will sort ``#includes``.
+  /// If ``true``, clang-format will sort ``#includes``.
   /// \code
   ///    false:                                 true:
   ///    #include "b.h"                 vs.     #include "a.h"
@@ -1487,7 +1487,7 @@
   /// \endcode
   bool SortIncludes;
 
-  /// \brief If ``true``, clang-format will sort using declarations.
+  /// If ``true``, clang-format will sort using declarations.
   ///
   /// The order of using declarations is defined as follows:
   /// Split the strings by "::" and discard any initial empty strings. The last
@@ -1503,21 +1503,21 @@
   /// \endcode
   bool SortUsingDeclarations;
 
-  /// \brief If ``true``, a space is inserted after C style casts.
+  /// If ``true``, a space is inserted after C style casts.
   /// \code
   ///    true:                                  false:
   ///    (int) i;                       vs.     (int)i;
   /// \endcode
   bool SpaceAfterCStyleCast;
 
-  /// \brief If \c true, a space will be inserted after the 'template' keyword.
+  /// If \c true, a space will be inserted after the 'template' keyword.
   /// \code
   ///    true:                                  false:
   ///    template <int> void foo();     vs.     template<int> void foo();
   /// \endcode
   bool SpaceAfterTemplateKeyword;
 
-  /// \brief If ``false``, spaces will be removed before assignment operators.
+  /// If ``false``, spaces will be removed before assignment operators.
   /// \code
   ///    true:                                  false:
   ///    int a = 5;                     vs.     int a=5;
@@ -1525,7 +1525,7 @@
   /// \endcode
   bool SpaceBeforeAssignmentOperators;
 
-  /// \brief If ``false``, spaces will be removed before constructor initializer
+  /// If ``false``, spaces will be removed before constructor initializer
   /// colon.
   /// \code
   ///    true:                                  false:
@@ -1533,14 +1533,14 @@
   /// \endcode
   bool SpaceBeforeCtorInitializerColon;
 
-  /// \brief If ``false``, spaces will be removed before inheritance colon.
+  /// If ``false``, spaces will be removed before inheritance colon.
   /// \code
   ///    true:                                  false:
   ///    class Foo : Bar {}             vs.     class Foo: Bar {}
   /// \endcode
   bool SpaceBeforeInheritanceColon;
 
-  /// \brief Different ways to put a space before opening parentheses.
+  /// Different ways to put a space before opening parentheses.
   enum SpaceBeforeParensOptions {
     /// Never put a space before opening parentheses.
     /// \code
@@ -1575,10 +1575,10 @@
     SBPO_Always
   };
 
-  /// \brief Defines in which cases to put a space before opening parentheses.
+  /// Defines in which cases to put a space before opening parentheses.
   SpaceBeforeParensOptions SpaceBeforeParens;
 
-  /// \brief If ``false``, spaces will be removed before range-based for loop
+  /// If ``false``, spaces will be removed before range-based for loop
   /// colon.
   /// \code
   ///    true:                                  false:
@@ -1586,7 +1586,7 @@
   /// \endcode
   bool SpaceBeforeRangeBasedForLoopColon;
 
-  /// \brief If ``true``, spaces may be inserted into ``()``.
+  /// If ``true``, spaces may be inserted into ``()``.
   /// \code
   ///    true:                                false:
   ///    void f( ) {                    vs.   void f() {
@@ -1598,7 +1598,7 @@
   /// \endcode
   bool SpaceInEmptyParentheses;
 
-  /// \brief The number of spaces before trailing line comments
+  /// The number of spaces before trailing line comments
   /// (``//`` - comments).
   ///
   /// This does not affect trailing block comments (``/*`` - comments) as
@@ -1614,7 +1614,7 @@
   /// \endcode
   unsigned SpacesBeforeTrailingComments;
 
-  /// \brief If ``true``, spaces will be inserted after ``<`` and before ``>``
+  /// If ``true``, spaces will be inserted after ``<`` and before ``>``
   /// in template argument lists.
   /// \code
   ///    true:                                  false:
@@ -1623,7 +1623,7 @@
   /// \endcode
   bool SpacesInAngles;
 
-  /// \brief If ``true``, spaces are inserted inside container literals (e.g.
+  /// If ``true``, spaces are inserted inside container literals (e.g.
   /// ObjC and Javascript array and dict literals).
   /// \code{.js}
   ///    true:                                  false:
@@ -1632,21 +1632,21 @@
   /// \endcode
   bool SpacesInContainerLiterals;
 
-  /// \brief If ``true``, spaces may be inserted into C style casts.
+  /// If ``true``, spaces may be inserted into C style casts.
   /// \code
   ///    true:                                  false:
   ///    x = ( int32 )y                 vs.     x = (int32)y
   /// \endcode
   bool SpacesInCStyleCastParentheses;
 
-  /// \brief If ``true``, spaces will be inserted after ``(`` and before ``)``.
+  /// If ``true``, spaces will be inserted after ``(`` and before ``)``.
   /// \code
   ///    true:                                  false:
   ///    t f( Deleted & ) & = delete;   vs.     t f(Deleted &) & = delete;
   /// \endcode
   bool SpacesInParentheses;
 
-  /// \brief If ``true``, spaces will be inserted after ``[`` and before ``]``.
+  /// If ``true``, spaces will be inserted after ``[`` and before ``]``.
   /// Lambdas or unspecified size array declarations will not be affected.
   /// \code
   ///    true:                                  false:
@@ -1655,7 +1655,7 @@
   /// \endcode
   bool SpacesInSquareBrackets;
 
-  /// \brief Supported language standards.
+  /// Supported language standards.
   enum LanguageStandard {
     /// Use C++03-compatible syntax.
     LS_Cpp03,
@@ -1666,14 +1666,14 @@
     LS_Auto
   };
 
-  /// \brief Format compatible with this standard, e.g. use ``A<A<int> >``
+  /// Format compatible with this standard, e.g. use ``A<A<int> >``
   /// instead of ``A<A<int>>`` for ``LS_Cpp03``.
   LanguageStandard Standard;
 
-  /// \brief The number of columns used for tab stops.
+  /// The number of columns used for tab stops.
   unsigned TabWidth;
 
-  /// \brief Different ways to use tab in formatting.
+  /// Different ways to use tab in formatting.
   enum UseTabStyle {
     /// Never use tab.
     UT_Never,
@@ -1686,7 +1686,7 @@
     UT_Always
   };
 
-  /// \brief The way to use tab characters in the resulting file.
+  /// The way to use tab characters in the resulting file.
   UseTabStyle UseTab;
 
   bool operator==(const FormatStyle &R) const {
@@ -1822,36 +1822,36 @@
   friend std::error_code parseConfiguration(StringRef Text, FormatStyle *Style);
 };
 
-/// \brief Returns a format style complying with the LLVM coding standards:
+/// Returns a format style complying with the LLVM coding standards:
 /// http://llvm.org/docs/CodingStandards.html.
 FormatStyle getLLVMStyle();
 
-/// \brief Returns a format style complying with one of Google's style guides:
+/// Returns a format style complying with one of Google's style guides:
 /// http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml.
 /// http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml.
 /// https://developers.google.com/protocol-buffers/docs/style.
 FormatStyle getGoogleStyle(FormatStyle::LanguageKind Language);
 
-/// \brief Returns a format style complying with Chromium's style guide:
+/// Returns a format style complying with Chromium's style guide:
 /// http://www.chromium.org/developers/coding-style.
 FormatStyle getChromiumStyle(FormatStyle::LanguageKind Language);
 
-/// \brief Returns a format style complying with Mozilla's style guide:
+/// Returns a format style complying with Mozilla's style guide:
 /// https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style.
 FormatStyle getMozillaStyle();
 
-/// \brief Returns a format style complying with Webkit's style guide:
+/// Returns a format style complying with Webkit's style guide:
 /// http://www.webkit.org/coding/coding-style.html
 FormatStyle getWebKitStyle();
 
-/// \brief Returns a format style complying with GNU Coding Standards:
+/// Returns a format style complying with GNU Coding Standards:
 /// http://www.gnu.org/prep/standards/standards.html
 FormatStyle getGNUStyle();
 
-/// \brief Returns style indicating formatting should be not applied at all.
+/// Returns style indicating formatting should be not applied at all.
 FormatStyle getNoStyle();
 
-/// \brief Gets a predefined style for the specified language by name.
+/// Gets a predefined style for the specified language by name.
 ///
 /// Currently supported names: LLVM, Google, Chromium, Mozilla. Names are
 /// compared case-insensitively.
@@ -1860,7 +1860,7 @@
 bool getPredefinedStyle(StringRef Name, FormatStyle::LanguageKind Language,
                         FormatStyle *Style);
 
-/// \brief Parse configuration from YAML-formatted text.
+/// Parse configuration from YAML-formatted text.
 ///
 /// Style->Language is used to get the base style, if the ``BasedOnStyle``
 /// option is present.
@@ -1871,24 +1871,24 @@
 /// document, are retained in \p Style.
 std::error_code parseConfiguration(StringRef Text, FormatStyle *Style);
 
-/// \brief Gets configuration in a YAML string.
+/// Gets configuration in a YAML string.
 std::string configurationAsText(const FormatStyle &Style);
 
-/// \brief Returns the replacements necessary to sort all ``#include`` blocks
+/// Returns the replacements necessary to sort all ``#include`` blocks
 /// that are affected by ``Ranges``.
 tooling::Replacements sortIncludes(const FormatStyle &Style, StringRef Code,
                                    ArrayRef<tooling::Range> Ranges,
                                    StringRef FileName,
                                    unsigned *Cursor = nullptr);
 
-/// \brief Returns the replacements corresponding to applying and formatting
+/// Returns the replacements corresponding to applying and formatting
 /// \p Replaces on success; otheriwse, return an llvm::Error carrying
 /// llvm::StringError.
 llvm::Expected<tooling::Replacements>
 formatReplacements(StringRef Code, const tooling::Replacements &Replaces,
                    const FormatStyle &Style);
 
-/// \brief Returns the replacements corresponding to applying \p Replaces and
+/// Returns the replacements corresponding to applying \p Replaces and
 /// cleaning up the code after that on success; otherwise, return an llvm::Error
 /// carrying llvm::StringError.
 /// This also supports inserting/deleting C++ #include directives:
@@ -1909,19 +1909,19 @@
 cleanupAroundReplacements(StringRef Code, const tooling::Replacements &Replaces,
                           const FormatStyle &Style);
 
-/// \brief Represents the status of a formatting attempt.
+/// Represents the status of a formatting attempt.
 struct FormattingAttemptStatus {
-  /// \brief A value of ``false`` means that any of the affected ranges were not
+  /// A value of ``false`` means that any of the affected ranges were not
   /// formatted due to a non-recoverable syntax error.
   bool FormatComplete = true;
 
-  /// \brief If ``FormatComplete`` is false, ``Line`` records a one-based
+  /// If ``FormatComplete`` is false, ``Line`` records a one-based
   /// original line number at which a syntax error might have occurred. This is
   /// based on a best-effort analysis and could be imprecise.
   unsigned Line = 0;
 };
 
-/// \brief Reformats the given \p Ranges in \p Code.
+/// Reformats the given \p Ranges in \p Code.
 ///
 /// Each range is extended on either end to its next bigger logic unit, i.e.
 /// everything that might influence its formatting or might be influenced by its
@@ -1937,7 +1937,7 @@
                                StringRef FileName = "<stdin>",
                                FormattingAttemptStatus *Status = nullptr);
 
-/// \brief Same as above, except if ``IncompleteFormat`` is non-null, its value
+/// Same as above, except if ``IncompleteFormat`` is non-null, its value
 /// will be set to true if any of the affected ranges were not formatted due to
 /// a non-recoverable syntax error.
 tooling::Replacements reformat(const FormatStyle &Style, StringRef Code,
@@ -1945,7 +1945,7 @@
                                StringRef FileName,
                                bool *IncompleteFormat);
 
-/// \brief Clean up any erroneous/redundant code in the given \p Ranges in \p
+/// Clean up any erroneous/redundant code in the given \p Ranges in \p
 /// Code.
 ///
 /// Returns the ``Replacements`` that clean up all \p Ranges in \p Code.
@@ -1953,7 +1953,7 @@
                               ArrayRef<tooling::Range> Ranges,
                               StringRef FileName = "<stdin>");
 
-/// \brief Fix namespace end comments in the given \p Ranges in \p Code.
+/// Fix namespace end comments in the given \p Ranges in \p Code.
 ///
 /// Returns the ``Replacements`` that fix the namespace comments in all
 /// \p Ranges in \p Code.
@@ -1962,7 +1962,7 @@
                                               ArrayRef<tooling::Range> Ranges,
                                               StringRef FileName = "<stdin>");
 
-/// \brief Sort consecutive using declarations in the given \p Ranges in
+/// Sort consecutive using declarations in the given \p Ranges in
 /// \p Code.
 ///
 /// Returns the ``Replacements`` that sort the using declarations in all
@@ -1972,17 +1972,17 @@
                                             ArrayRef<tooling::Range> Ranges,
                                             StringRef FileName = "<stdin>");
 
-/// \brief Returns the ``LangOpts`` that the formatter expects you to set.
+/// Returns the ``LangOpts`` that the formatter expects you to set.
 ///
 /// \param Style determines specific settings for lexing mode.
 LangOptions getFormattingLangOpts(const FormatStyle &Style = getLLVMStyle());
 
-/// \brief Description to be used for help text for a ``llvm::cl`` option for
+/// Description to be used for help text for a ``llvm::cl`` option for
 /// specifying format style. The description is closely related to the operation
 /// of ``getStyle()``.
 extern const char *StyleOptionHelpDescription;
 
-/// \brief Construct a FormatStyle based on ``StyleName``.
+/// Construct a FormatStyle based on ``StyleName``.
 ///
 /// ``StyleName`` can take several forms:
 /// * "{<key>: <value>, ...}" - Set specic style parameters.
@@ -2011,11 +2011,11 @@
                                      StringRef Code = "",
                                      vfs::FileSystem *FS = nullptr);
 
-// \brief Guesses the language from the ``FileName`` and ``Code`` to be formatted.
+// Guesses the language from the ``FileName`` and ``Code`` to be formatted.
 // Defaults to FormatStyle::LK_Cpp.
 FormatStyle::LanguageKind guessLanguage(StringRef FileName, StringRef Code);
 
-// \brief Returns a string representation of ``Language``.
+// Returns a string representation of ``Language``.
 inline StringRef getLanguageName(FormatStyle::LanguageKind Language) {
   switch (Language) {
   case FormatStyle::LK_Cpp:
Index: cfe/trunk/include/clang/Frontend/ASTUnit.h
===================================================================
--- cfe/trunk/include/clang/Frontend/ASTUnit.h
+++ cfe/trunk/include/clang/Frontend/ASTUnit.h
@@ -81,7 +81,7 @@
 
 } // namespace vfs
 
-/// \brief Utility class for loading a ASTContext from an AST file.
+/// Utility class for loading a ASTContext from an AST file.
 class ASTUnit {
 public:
   struct StandaloneFixIt {
@@ -122,11 +122,11 @@
 
   FileSystemOptions FileSystemOpts;
 
-  /// \brief The AST consumer that received information about the translation
+  /// The AST consumer that received information about the translation
   /// unit as it was parsed or loaded.
   std::unique_ptr<ASTConsumer> Consumer;
 
-  /// \brief The semantic analysis object used to type-check the translation
+  /// The semantic analysis object used to type-check the translation
   /// unit.
   std::unique_ptr<Sema> TheSema;
 
@@ -142,19 +142,19 @@
   // FIXME: This is temporary; eventually, CIndex will always do this.
   bool OnlyLocalDecls = false;
 
-  /// \brief Whether to capture any diagnostics produced.
+  /// Whether to capture any diagnostics produced.
   bool CaptureDiagnostics = false;
 
-  /// \brief Track whether the main file was loaded from an AST or not.
+  /// Track whether the main file was loaded from an AST or not.
   bool MainFileIsAST;
 
-  /// \brief What kind of translation unit this AST represents.
+  /// What kind of translation unit this AST represents.
   TranslationUnitKind TUKind = TU_Complete;
 
-  /// \brief Whether we should time each operation.
+  /// Whether we should time each operation.
   bool WantTiming;
 
-  /// \brief Whether the ASTUnit should delete the remapped buffers.
+  /// Whether the ASTUnit should delete the remapped buffers.
   bool OwnsRemappedFileBuffers = true;
   
   /// Track the top-level decls which appeared in an ASTUnit which was loaded
@@ -166,36 +166,36 @@
   // more scalable search mechanisms.
   std::vector<Decl*> TopLevelDecls;
 
-  /// \brief Sorted (by file offset) vector of pairs of file offset/Decl.
+  /// Sorted (by file offset) vector of pairs of file offset/Decl.
   using LocDeclsTy = SmallVector<std::pair<unsigned, Decl *>, 64>;
   using FileDeclsTy = llvm::DenseMap<FileID, LocDeclsTy *>;
 
-  /// \brief Map from FileID to the file-level declarations that it contains.
+  /// Map from FileID to the file-level declarations that it contains.
   /// The files and decls are only local (and non-preamble) ones.
   FileDeclsTy FileDecls;
   
   /// The name of the original source file used to generate this ASTUnit.
   std::string OriginalSourceFile;
 
-  /// \brief The set of diagnostics produced when creating the preamble.
+  /// The set of diagnostics produced when creating the preamble.
   SmallVector<StandaloneDiagnostic, 4> PreambleDiagnostics;
 
-  /// \brief The set of diagnostics produced when creating this
+  /// The set of diagnostics produced when creating this
   /// translation unit.
   SmallVector<StoredDiagnostic, 4> StoredDiagnostics;
 
-  /// \brief The set of diagnostics produced when failing to parse, e.g. due
+  /// The set of diagnostics produced when failing to parse, e.g. due
   /// to failure to load the PCH.
   SmallVector<StoredDiagnostic, 4> FailedParseDiagnostics;
 
-  /// \brief The number of stored diagnostics that come from the driver
+  /// The number of stored diagnostics that come from the driver
   /// itself.
   ///
   /// Diagnostics that come from the driver are retained from one parse to
   /// the next.
   unsigned NumStoredDiagnosticsFromDriver = 0;
   
-  /// \brief Counter that determines when we want to try building a
+  /// Counter that determines when we want to try building a
   /// precompiled preamble.
   ///
   /// If zero, we will never build a precompiled preamble. Otherwise,
@@ -206,7 +206,7 @@
   /// some number of calls.
   unsigned PreambleRebuildCounter = 0;
 
-  /// \brief Cache pairs "filename - source location"
+  /// Cache pairs "filename - source location"
   ///
   /// Cache contains only source locations from preamble so it is
   /// guaranteed that they stay valid when the SourceManager is recreated.
@@ -217,12 +217,12 @@
   /// The contents of the preamble.
   llvm::Optional<PrecompiledPreamble> Preamble;
 
-  /// \brief When non-NULL, this is the buffer used to store the contents of
+  /// When non-NULL, this is the buffer used to store the contents of
   /// the main file when it has been padded for use with the precompiled
   /// preamble.
   std::unique_ptr<llvm::MemoryBuffer> SavedMainFileBuffer;
 
-  /// \brief The number of warnings that occurred while parsing the preamble.
+  /// The number of warnings that occurred while parsing the preamble.
   ///
   /// This value will be used to restore the state of the \c DiagnosticsEngine
   /// object when re-using the precompiled preamble. Note that only the
@@ -230,18 +230,18 @@
   /// when any errors are present.
   unsigned NumWarningsInPreamble = 0;
 
-  /// \brief A list of the serialization ID numbers for each of the top-level
+  /// A list of the serialization ID numbers for each of the top-level
   /// declarations parsed within the precompiled preamble.
   std::vector<serialization::DeclID> TopLevelDeclsInPreamble;
   
-  /// \brief Whether we should be caching code-completion results.
+  /// Whether we should be caching code-completion results.
   bool ShouldCacheCodeCompletionResults : 1;
 
-  /// \brief Whether to include brief documentation within the set of code
+  /// Whether to include brief documentation within the set of code
   /// completions cached.
   bool IncludeBriefCommentsInCodeCompletion : 1;
 
-  /// \brief True if non-system source files should be treated as volatile
+  /// True if non-system source files should be treated as volatile
   /// (likely to change while trying to use them).
   bool UserFilesAreVolatile : 1;
  
@@ -256,14 +256,14 @@
   void clearFileLevelDecls();
 
 public:
-  /// \brief A cached code-completion result, which may be introduced in one of
+  /// A cached code-completion result, which may be introduced in one of
   /// many different contexts.
   struct CachedCodeCompletionResult {
-    /// \brief The code-completion string corresponding to this completion
+    /// The code-completion string corresponding to this completion
     /// result.
     CodeCompletionString *Completion;
     
-    /// \brief A bitmask that indicates which code-completion contexts should
+    /// A bitmask that indicates which code-completion contexts should
     /// contain this completion result.
     ///
     /// The bits in the bitmask correspond to the values of
@@ -272,20 +272,20 @@
     /// several different contexts.
     uint64_t ShowInContexts;
     
-    /// \brief The priority given to this code-completion result.
+    /// The priority given to this code-completion result.
     unsigned Priority;
     
-    /// \brief The libclang cursor kind corresponding to this code-completion 
+    /// The libclang cursor kind corresponding to this code-completion 
     /// result.
     CXCursorKind Kind;
     
-    /// \brief The availability of this code-completion result.
+    /// The availability of this code-completion result.
     CXAvailabilityKind Availability;
     
-    /// \brief The simplified type class for a non-macro completion result.
+    /// The simplified type class for a non-macro completion result.
     SimplifiedTypeClass TypeClass;
     
-    /// \brief The type of a non-macro completion result, stored as a unique
+    /// The type of a non-macro completion result, stored as a unique
     /// integer used by the string map of cached completion types.
     ///
     /// This value will be zero if the type is not known, or a unique value
@@ -294,13 +294,13 @@
     unsigned Type;
   };
   
-  /// \brief Retrieve the mapping from formatted type names to unique type
+  /// Retrieve the mapping from formatted type names to unique type
   /// identifiers.
   llvm::StringMap<unsigned> &getCachedCompletionTypes() {
     return CachedCompletionTypes; 
   }
   
-  /// \brief Retrieve the allocator used to cache global code completions.
+  /// Retrieve the allocator used to cache global code completions.
   std::shared_ptr<GlobalCodeCompletionAllocator>
   getCachedCompletionAllocator() {
     return CachedCompletionAllocator;
@@ -314,45 +314,45 @@
   }
 
 private:
-  /// \brief Allocator used to store cached code completions.
+  /// Allocator used to store cached code completions.
   std::shared_ptr<GlobalCodeCompletionAllocator> CachedCompletionAllocator;
 
   std::unique_ptr<CodeCompletionTUInfo> CCTUInfo;
 
-  /// \brief The set of cached code-completion results.
+  /// The set of cached code-completion results.
   std::vector<CachedCodeCompletionResult> CachedCompletionResults;
   
-  /// \brief A mapping from the formatted type name to a unique number for that
+  /// A mapping from the formatted type name to a unique number for that
   /// type, which is used for type equality comparisons.
   llvm::StringMap<unsigned> CachedCompletionTypes;
   
-  /// \brief A string hash of the top-level declaration and macro definition 
+  /// A string hash of the top-level declaration and macro definition 
   /// names processed the last time that we reparsed the file.
   ///
   /// This hash value is used to determine when we need to refresh the 
   /// global code-completion cache.
   unsigned CompletionCacheTopLevelHashValue = 0;
 
-  /// \brief A string hash of the top-level declaration and macro definition 
+  /// A string hash of the top-level declaration and macro definition 
   /// names processed the last time that we reparsed the precompiled preamble.
   ///
   /// This hash value is used to determine when we need to refresh the 
   /// global code-completion cache after a rebuild of the precompiled preamble.
   unsigned PreambleTopLevelHashValue = 0;
 
-  /// \brief The current hash value for the top-level declaration and macro
+  /// The current hash value for the top-level declaration and macro
   /// definition names
   unsigned CurrentTopLevelHashValue = 0;
   
-  /// \brief Bit used by CIndex to mark when a translation unit may be in an
+  /// Bit used by CIndex to mark when a translation unit may be in an
   /// inconsistent state, and is not safe to free.
   unsigned UnsafeToFree : 1;
 
-  /// \brief Cache any "global" code-completion results, so that we can avoid
+  /// Cache any "global" code-completion results, so that we can avoid
   /// recomputing them with each completion.
   void CacheCodeCompletionResults();
   
-  /// \brief Clear out and deallocate 
+  /// Clear out and deallocate 
   void ClearCachedCompletionResults();
   
   explicit ASTUnit(bool MainFileIsAST);
@@ -368,11 +368,11 @@
       unsigned MaxLines = 0);
   void RealizeTopLevelDeclsFromPreamble();
 
-  /// \brief Transfers ownership of the objects (like SourceManager) from
+  /// Transfers ownership of the objects (like SourceManager) from
   /// \param CI to this ASTUnit.
   void transferASTDataFromCompilerInstance(CompilerInstance &CI);
 
-  /// \brief Allows us to assert that ASTUnit is not being used concurrently,
+  /// Allows us to assert that ASTUnit is not being used concurrently,
   /// which is not supported.
   ///
   /// Clients should create instances of the ConcurrencyCheck class whenever
@@ -475,7 +475,7 @@
 
   StringRef getMainFileName() const;
 
-  /// \brief If this ASTUnit came from an AST file, returns the filename for it.
+  /// If this ASTUnit came from an AST file, returns the filename for it.
   StringRef getASTFileName() const;
 
   using top_level_iterator = std::vector<Decl *>::iterator;
@@ -504,26 +504,26 @@
     return TopLevelDeclsInPreamble.empty() && TopLevelDecls.empty();
   }
 
-  /// \brief Add a new top-level declaration.
+  /// Add a new top-level declaration.
   void addTopLevelDecl(Decl *D) {
     TopLevelDecls.push_back(D);
   }
 
-  /// \brief Add a new local file-level declaration.
+  /// Add a new local file-level declaration.
   void addFileLevelDecl(Decl *D);
 
-  /// \brief Get the decls that are contained in a file in the Offset/Length
+  /// Get the decls that are contained in a file in the Offset/Length
   /// range. \p Length can be 0 to indicate a point at \p Offset instead of
   /// a range. 
   void findFileRegionDecls(FileID File, unsigned Offset, unsigned Length,
                            SmallVectorImpl<Decl *> &Decls);
 
-  /// \brief Retrieve a reference to the current top-level name hash value.
+  /// Retrieve a reference to the current top-level name hash value.
   ///
   /// Note: This is used internally by the top-level tracking action
   unsigned &getCurrentTopLevelHashValue() { return CurrentTopLevelHashValue; }
 
-  /// \brief Get the source location for the given file:line:col triplet.
+  /// Get the source location for the given file:line:col triplet.
   ///
   /// The difference with SourceManager::getLocation is that this method checks
   /// whether the requested location points inside the precompiled preamble
@@ -531,15 +531,15 @@
   SourceLocation getLocation(const FileEntry *File,
                              unsigned Line, unsigned Col) const;
 
-  /// \brief Get the source location for the given file:offset pair.
+  /// Get the source location for the given file:offset pair.
   SourceLocation getLocation(const FileEntry *File, unsigned Offset) const;
 
-  /// \brief If \p Loc is a loaded location from the preamble, returns
+  /// If \p Loc is a loaded location from the preamble, returns
   /// the corresponding local location of the main file, otherwise it returns
   /// \p Loc.
   SourceLocation mapLocationFromPreamble(SourceLocation Loc) const;
 
-  /// \brief If \p Loc is a local location of the main file but inside the
+  /// If \p Loc is a local location of the main file but inside the
   /// preamble chunk, returns the corresponding loaded location from the
   /// preamble, otherwise it returns \p Loc.
   SourceLocation mapLocationToPreamble(SourceLocation Loc) const;
@@ -604,43 +604,43 @@
     return CachedCompletionResults.size(); 
   }
 
-  /// \brief Returns an iterator range for the local preprocessing entities
+  /// Returns an iterator range for the local preprocessing entities
   /// of the local Preprocessor, if this is a parsed source file, or the loaded
   /// preprocessing entities of the primary module if this is an AST file.
   llvm::iterator_range<PreprocessingRecord::iterator>
   getLocalPreprocessingEntities() const;
 
-  /// \brief Type for a function iterating over a number of declarations.
+  /// Type for a function iterating over a number of declarations.
   /// \returns true to continue iteration and false to abort.
   using DeclVisitorFn = bool (*)(void *context, const Decl *D);
 
-  /// \brief Iterate over local declarations (locally parsed if this is a parsed
+  /// Iterate over local declarations (locally parsed if this is a parsed
   /// source file or the loaded declarations of the primary module if this is an
   /// AST file).
   /// \returns true if the iteration was complete or false if it was aborted.
   bool visitLocalTopLevelDecls(void *context, DeclVisitorFn Fn);
 
-  /// \brief Get the PCH file if one was included.
+  /// Get the PCH file if one was included.
   const FileEntry *getPCHFile();
 
-  /// \brief Returns true if the ASTUnit was constructed from a serialized
+  /// Returns true if the ASTUnit was constructed from a serialized
   /// module file.
   bool isModuleFile() const;
 
   std::unique_ptr<llvm::MemoryBuffer>
   getBufferForFile(StringRef Filename, std::string *ErrorStr = nullptr);
 
-  /// \brief Determine what kind of translation unit this AST represents.
+  /// Determine what kind of translation unit this AST represents.
   TranslationUnitKind getTranslationUnitKind() const { return TUKind; }
 
-  /// \brief Determine the input kind this AST unit represents.
+  /// Determine the input kind this AST unit represents.
   InputKind getInputKind() const;
 
-  /// \brief A mapping from a file name to the memory buffer that stores the
+  /// A mapping from a file name to the memory buffer that stores the
   /// remapped contents of that file.
   using RemappedFile = std::pair<std::string, llvm::MemoryBuffer *>;
 
-  /// \brief Create a ASTUnit. Gets ownership of the passed CompilerInvocation.
+  /// Create a ASTUnit. Gets ownership of the passed CompilerInvocation.
   static std::unique_ptr<ASTUnit>
   create(std::shared_ptr<CompilerInvocation> CI,
          IntrusiveRefCntPtr<DiagnosticsEngine> Diags, bool CaptureDiagnostics,
@@ -657,7 +657,7 @@
     LoadEverything
   };
 
-  /// \brief Create a ASTUnit from an AST file.
+  /// Create a ASTUnit from an AST file.
   ///
   /// \param Filename - The AST file to load.
   ///
@@ -676,7 +676,7 @@
       bool UserFilesAreVolatile = false);
 
 private:
-  /// \brief Helper function for \c LoadFromCompilerInvocation() and
+  /// Helper function for \c LoadFromCompilerInvocation() and
   /// \c LoadFromCommandLine(), which loads an AST from a compiler invocation.
   ///
   /// \param PrecompilePreambleAfterNParses After how many parses the preamble
@@ -696,7 +696,7 @@
       IntrusiveRefCntPtr<vfs::FileSystem> VFS);
 
 public:
-  /// \brief Create an ASTUnit from a source file, via a CompilerInvocation
+  /// Create an ASTUnit from a source file, via a CompilerInvocation
   /// object, by invoking the optionally provided ASTFrontendAction. 
   ///
   /// \param CI - The compiler invocation to use; it must have exactly one input
@@ -808,7 +808,7 @@
       std::unique_ptr<ASTUnit> *ErrAST = nullptr,
       IntrusiveRefCntPtr<vfs::FileSystem> VFS = nullptr);
 
-  /// \brief Reparse the source files using the same command-line options that
+  /// Reparse the source files using the same command-line options that
   /// were originally used to produce this translation unit.
   ///
   /// \param VFS - A vfs::FileSystem to be used for all file accesses. Note that
@@ -823,12 +823,12 @@
                ArrayRef<RemappedFile> RemappedFiles = None,
                IntrusiveRefCntPtr<vfs::FileSystem> VFS = nullptr);
 
-  /// \brief Free data that will be re-generated on the next parse.
+  /// Free data that will be re-generated on the next parse.
   ///
   /// Preamble-related data is not affected.
   void ResetForParse();
 
-  /// \brief Perform code completion at the given file, line, and
+  /// Perform code completion at the given file, line, and
   /// column within this translation unit.
   ///
   /// \param File The file in which code completion will occur.
@@ -858,13 +858,13 @@
                     SmallVectorImpl<StoredDiagnostic> &StoredDiagnostics,
                     SmallVectorImpl<const llvm::MemoryBuffer *> &OwnedBuffers);
 
-  /// \brief Save this translation unit to a file with the given name.
+  /// Save this translation unit to a file with the given name.
   ///
   /// \returns true if there was a file error or false if the save was
   /// successful.
   bool Save(StringRef File);
 
-  /// \brief Serialize this translation unit with the given output stream.
+  /// Serialize this translation unit with the given output stream.
   ///
   /// \returns True if an error occurred, false otherwise.
   bool serialize(raw_ostream &OS);
Index: cfe/trunk/include/clang/Frontend/ChainedDiagnosticConsumer.h
===================================================================
--- cfe/trunk/include/clang/Frontend/ChainedDiagnosticConsumer.h
+++ cfe/trunk/include/clang/Frontend/ChainedDiagnosticConsumer.h
@@ -32,7 +32,7 @@
       : OwningPrimary(std::move(Primary)), Primary(OwningPrimary.get()),
         Secondary(std::move(Secondary)) {}
 
-  /// \brief Construct without taking ownership of \c Primary.
+  /// Construct without taking ownership of \c Primary.
   ChainedDiagnosticConsumer(DiagnosticConsumer *Primary,
                             std::unique_ptr<DiagnosticConsumer> Secondary)
       : Primary(Primary), Secondary(std::move(Secondary)) {}
Index: cfe/trunk/include/clang/Frontend/CodeGenOptions.h
===================================================================
--- cfe/trunk/include/clang/Frontend/CodeGenOptions.h
+++ cfe/trunk/include/clang/Frontend/CodeGenOptions.h
@@ -27,7 +27,7 @@
 
 namespace clang {
 
-/// \brief Bitfields of CodeGenOptions, split out from CodeGenOptions to ensure
+/// Bitfields of CodeGenOptions, split out from CodeGenOptions to ensure
 /// that this large collection of bitfields is a trivial class type.
 class CodeGenOptionsBase {
 public:
@@ -249,7 +249,7 @@
   /// List of backend command-line options for -fembed-bitcode.
   std::vector<uint8_t> CmdArgs;
 
-  /// \brief A list of all -fno-builtin-* function names (e.g., memset).
+  /// A list of all -fno-builtin-* function names (e.g., memset).
   std::vector<std::string> NoBuiltinFuncs;
 
   std::vector<std::string> Reciprocals;
@@ -272,7 +272,7 @@
 
   CodeGenOptions();
 
-  /// \brief Is this a libc/libm function that is no longer recognized as a
+  /// Is this a libc/libm function that is no longer recognized as a
   /// builtin because a -fno-builtin-* option has been specified?
   bool isNoBuiltinFunc(const char *Name) const;
 
@@ -280,22 +280,22 @@
     return NoBuiltinFuncs;
   }
 
-  /// \brief Check if Clang profile instrumenation is on.
+  /// Check if Clang profile instrumenation is on.
   bool hasProfileClangInstr() const {
     return getProfileInstr() == ProfileClangInstr;
   }
 
-  /// \brief Check if IR level profile instrumentation is on.
+  /// Check if IR level profile instrumentation is on.
   bool hasProfileIRInstr() const {
     return getProfileInstr() == ProfileIRInstr;
   }
 
-  /// \brief Check if Clang profile use is on.
+  /// Check if Clang profile use is on.
   bool hasProfileClangUse() const {
     return getProfileUse() == ProfileClangInstr;
   }
 
-  /// \brief Check if IR level profile use is on.
+  /// Check if IR level profile use is on.
   bool hasProfileIRUse() const {
     return getProfileUse() == ProfileIRInstr;
   }
Index: cfe/trunk/include/clang/Frontend/CodeGenOptions.def
===================================================================
--- cfe/trunk/include/clang/Frontend/CodeGenOptions.def
+++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def
@@ -75,7 +75,7 @@
 CODEGENOPT(EmitOpenCLArgMetadata , 1, 0) ///< Emit OpenCL kernel arg metadata.
 CODEGENOPT(EmulatedTLS       , 1, 0) ///< Set by default or -f[no-]emulated-tls.
 CODEGENOPT(ExplicitEmulatedTLS , 1, 0) ///< Set if -f[no-]emulated-tls is used.
-/// \brief Embed Bitcode mode (off/all/bitcode/marker).
+/// Embed Bitcode mode (off/all/bitcode/marker).
 ENUM_CODEGENOPT(EmbedBitcode, EmbedBitcodeKind, 2, Embed_Off)
 CODEGENOPT(ForbidGuardVariables , 1, 0) ///< Issue errors if C++ guard variables
                                         ///< are required.
@@ -144,7 +144,7 @@
 
 CODEGENOPT(UniformWGSize     , 1, 0) ///< -cl-uniform-work-group-size
 CODEGENOPT(NoZeroInitializedInBSS , 1, 0) ///< -fno-zero-initialized-in-bss.
-/// \brief Method of Objective-C dispatch to use.
+/// Method of Objective-C dispatch to use.
 ENUM_CODEGENOPT(ObjCDispatchMethod, ObjCDispatchMethodKind, 2, Legacy)
 CODEGENOPT(OmitLeafFramePointer , 1, 0) ///< Set when -momit-leaf-frame-pointer is
                                         ///< enabled.
@@ -152,9 +152,9 @@
 VALUE_CODEGENOPT(OptimizationLevel, 2, 0) ///< The -O[0-3] option specified.
 VALUE_CODEGENOPT(OptimizeSize, 2, 0) ///< If -Os (==1) or -Oz (==2) is specified.
 
-/// \brief Choose profile instrumenation kind or no instrumentation.
+/// Choose profile instrumenation kind or no instrumentation.
 ENUM_CODEGENOPT(ProfileInstr, ProfileInstrKind, 2, ProfileNone)
-/// \brief Choose profile kind for PGO use compilation.
+/// Choose profile kind for PGO use compilation.
 ENUM_CODEGENOPT(ProfileUse, ProfileInstrKind, 2, ProfileNone)
 CODEGENOPT(CoverageMapping , 1, 0) ///< Generate coverage mapping regions to
                                    ///< enable code coverage analysis.
Index: cfe/trunk/include/clang/Frontend/CommandLineSourceLoc.h
===================================================================
--- cfe/trunk/include/clang/Frontend/CommandLineSourceLoc.h
+++ cfe/trunk/include/clang/Frontend/CommandLineSourceLoc.h
@@ -21,7 +21,7 @@
 
 namespace clang {
 
-/// \brief A source location that has been parsed on the command line.
+/// A source location that has been parsed on the command line.
 struct ParsedSourceLocation {
   std::string FileName;
   unsigned Line;
@@ -101,7 +101,7 @@
 
 namespace llvm {
   namespace cl {
-    /// \brief Command-line option parser that parses source locations.
+    /// Command-line option parser that parses source locations.
     ///
     /// Source locations are of the form filename:line:column.
     template<>
Index: cfe/trunk/include/clang/Frontend/CompilerInstance.h
===================================================================
--- cfe/trunk/include/clang/Frontend/CompilerInstance.h
+++ cfe/trunk/include/clang/Frontend/CompilerInstance.h
@@ -109,59 +109,59 @@
   /// The code completion consumer.
   std::unique_ptr<CodeCompleteConsumer> CompletionConsumer;
 
-  /// \brief The semantic analysis object.
+  /// The semantic analysis object.
   std::unique_ptr<Sema> TheSema;
 
-  /// \brief The frontend timer group.
+  /// The frontend timer group.
   std::unique_ptr<llvm::TimerGroup> FrontendTimerGroup;
 
-  /// \brief The frontend timer.
+  /// The frontend timer.
   std::unique_ptr<llvm::Timer> FrontendTimer;
 
-  /// \brief The ASTReader, if one exists.
+  /// The ASTReader, if one exists.
   IntrusiveRefCntPtr<ASTReader> ModuleManager;
 
-  /// \brief The module dependency collector for crashdumps
+  /// The module dependency collector for crashdumps
   std::shared_ptr<ModuleDependencyCollector> ModuleDepCollector;
 
-  /// \brief The module provider.
+  /// The module provider.
   std::shared_ptr<PCHContainerOperations> ThePCHContainerOperations;
 
-  /// \brief The dependency file generator.
+  /// The dependency file generator.
   std::unique_ptr<DependencyFileGenerator> TheDependencyFileGenerator;
 
   std::vector<std::shared_ptr<DependencyCollector>> DependencyCollectors;
 
-  /// \brief The set of top-level modules that has already been loaded,
+  /// The set of top-level modules that has already been loaded,
   /// along with the module map
   llvm::DenseMap<const IdentifierInfo *, Module *> KnownModules;
 
-  /// \brief The set of top-level modules that has already been built on the
+  /// The set of top-level modules that has already been built on the
   /// fly as part of this overall compilation action.
   std::map<std::string, std::string> BuiltModules;
 
   /// Should we delete the BuiltModules when we're done?
   bool DeleteBuiltModules = true;
 
-  /// \brief The location of the module-import keyword for the last module
+  /// The location of the module-import keyword for the last module
   /// import. 
   SourceLocation LastModuleImportLoc;
   
-  /// \brief The result of the last module import.
+  /// The result of the last module import.
   ///
   ModuleLoadResult LastModuleImportResult;
 
-  /// \brief Whether we should (re)build the global module index once we
+  /// Whether we should (re)build the global module index once we
   /// have finished with this translation unit.
   bool BuildGlobalModuleIndex = false;
 
-  /// \brief We have a full global module index, with all modules.
+  /// We have a full global module index, with all modules.
   bool HaveFullGlobalModuleIndex = false;
 
-  /// \brief One or more modules failed to build.
+  /// One or more modules failed to build.
   bool ModuleBuildFailed = false;
 
-  /// \brief Holds information about the output file.
+  /// Holds information about the output file.
   ///
   /// If TempFilename is not empty we must rename it to Filename at the end.
   /// TempFilename may be empty and Filename non-empty if creating the temporary
@@ -244,10 +244,10 @@
   /// setInvocation - Replace the current invocation.
   void setInvocation(std::shared_ptr<CompilerInvocation> Value);
 
-  /// \brief Indicates whether we should (re)build the global module index.
+  /// Indicates whether we should (re)build the global module index.
   bool shouldBuildGlobalModuleIndex() const;
   
-  /// \brief Set the flag indicating whether we should (re)build the global
+  /// Set the flag indicating whether we should (re)build the global
   /// module index.
   void setBuildGlobalModuleIndex(bool Build) {
     BuildGlobalModuleIndex = Build;
@@ -390,7 +390,7 @@
     return *VirtualFileSystem;
   }
 
-  /// \brief Replace the current virtual file system.
+  /// Replace the current virtual file system.
   ///
   /// \note Most clients should use setFileManager, which will implicitly reset
   /// the virtual file system to the one contained in the file manager.
@@ -415,7 +415,7 @@
     FileMgr.resetWithoutRelease();
   }
 
-  /// \brief Replace the current file manager and virtual file system.
+  /// Replace the current file manager and virtual file system.
   void setFileManager(FileManager *Value);
 
   /// }
@@ -478,7 +478,7 @@
   /// setASTContext - Replace the current AST context.
   void setASTContext(ASTContext *Value);
 
-  /// \brief Replace the current Sema; the compiler instance takes ownership
+  /// Replace the current Sema; the compiler instance takes ownership
   /// of S.
   void setSema(Sema *S);
   
@@ -690,7 +690,7 @@
       Preprocessor &PP, StringRef Filename, unsigned Line, unsigned Column,
       const CodeCompleteOptions &Opts, raw_ostream &OS);
 
-  /// \brief Create the Sema object to be used for parsing.
+  /// Create the Sema object to be used for parsing.
   void createSema(TranslationUnitKind TUKind,
                   CodeCompleteConsumer *CompletionConsumer);
   
Index: cfe/trunk/include/clang/Frontend/CompilerInvocation.h
===================================================================
--- cfe/trunk/include/clang/Frontend/CompilerInvocation.h
+++ cfe/trunk/include/clang/Frontend/CompilerInvocation.h
@@ -44,7 +44,7 @@
 class PreprocessorOptions;
 class TargetOptions;
 
-/// \brief Fill out Opts based on the options given in Args.
+/// Fill out Opts based on the options given in Args.
 ///
 /// Args must have been created from the OptTable returned by
 /// createCC1OptTable().
@@ -107,7 +107,7 @@
   }
 };
   
-/// \brief Helper class for holding the data necessary to invoke the compiler.
+/// Helper class for holding the data necessary to invoke the compiler.
 ///
 /// This class is designed to represent an abstract "invocation" of the
 /// compiler, including data such as the include paths, the code generation
@@ -139,7 +139,7 @@
   /// @name Utility Methods
   /// @{
 
-  /// \brief Create a compiler invocation from a list of input options.
+  /// Create a compiler invocation from a list of input options.
   /// \returns true on success.
   ///
   /// \param [out] Res - The resulting invocation.
@@ -151,7 +151,7 @@
                              const char* const *ArgEnd,
                              DiagnosticsEngine &Diags);
 
-  /// \brief Get the directory where the compiler headers
+  /// Get the directory where the compiler headers
   /// reside, relative to the compiler binary (found by the passed in
   /// arguments).
   ///
@@ -161,7 +161,7 @@
   /// executable), for finding the builtin compiler path.
   static std::string GetResourcesPath(const char *Argv0, void *MainAddr);
 
-  /// \brief Set language defaults for the given input language and
+  /// Set language defaults for the given input language and
   /// language standard in the given LangOptions object.
   ///
   /// \param Opts - The LangOptions object to set up.
@@ -173,7 +173,7 @@
                    const llvm::Triple &T, PreprocessorOptions &PPOpts,
                    LangStandard::Kind LangStd = LangStandard::lang_unspecified);
   
-  /// \brief Retrieve a module hash string that is suitable for uniquely 
+  /// Retrieve a module hash string that is suitable for uniquely 
   /// identifying the conditions under which the module was built.
   std::string getModuleHash() const;
   
Index: cfe/trunk/include/clang/Frontend/DependencyOutputOptions.h
===================================================================
--- cfe/trunk/include/clang/Frontend/DependencyOutputOptions.h
+++ cfe/trunk/include/clang/Frontend/DependencyOutputOptions.h
@@ -58,10 +58,10 @@
   /// In /showIncludes mode, pretend the main TU is a header with this name.
   std::string ShowIncludesPretendHeader;
 
-  /// \brief The file to write GraphViz-formatted header dependencies to.
+  /// The file to write GraphViz-formatted header dependencies to.
   std::string DOTOutputFile;
 
-  /// \brief The directory to copy module dependencies to when collecting them.
+  /// The directory to copy module dependencies to when collecting them.
   std::string ModuleDependencyOutputDir;
 
 public:
Index: cfe/trunk/include/clang/Frontend/DiagnosticRenderer.h
===================================================================
--- cfe/trunk/include/clang/Frontend/DiagnosticRenderer.h
+++ cfe/trunk/include/clang/Frontend/DiagnosticRenderer.h
@@ -33,7 +33,7 @@
 using DiagOrStoredDiag =
     llvm::PointerUnion<const Diagnostic *, const StoredDiagnostic *>;
   
-/// \brief Class to encapsulate the logic for formatting a diagnostic message.
+/// Class to encapsulate the logic for formatting a diagnostic message.
 ///
 /// Actual "printing" logic is implemented by subclasses.
 ///
@@ -50,20 +50,20 @@
   const LangOptions &LangOpts;
   IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
   
-  /// \brief The location of the previous diagnostic if known.
+  /// The location of the previous diagnostic if known.
   ///
   /// This will be invalid in cases where there is no (known) previous
   /// diagnostic location, or that location itself is invalid or comes from
   /// a different source manager than SM.
   SourceLocation LastLoc;
   
-  /// \brief The location of the last include whose stack was printed if known.
+  /// The location of the last include whose stack was printed if known.
   ///
   /// Same restriction as LastLoc essentially, but tracking include stack
   /// root locations rather than diagnostic locations.
   SourceLocation LastIncludeLoc;
   
-  /// \brief The level of the last diagnostic emitted.
+  /// The level of the last diagnostic emitted.
   ///
   /// The level of the last diagnostic emitted. Used to detect level changes
   /// which change the amount of information displayed.
@@ -118,7 +118,7 @@
                            ArrayRef<FixItHint> Hints);
 
 public:
-  /// \brief Emit a diagnostic.
+  /// Emit a diagnostic.
   ///
   /// This is the primary entry point for emitting diagnostic messages.
   /// It handles formatting and rendering the message as well as any ancillary
Index: cfe/trunk/include/clang/Frontend/FrontendAction.h
===================================================================
--- cfe/trunk/include/clang/Frontend/FrontendAction.h
+++ cfe/trunk/include/clang/Frontend/FrontendAction.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the clang::FrontendAction interface and various convenience
+/// Defines the clang::FrontendAction interface and various convenience
 /// abstract classes (clang::ASTFrontendAction, clang::PluginASTAction,
 /// clang::PreprocessorFrontendAction, and clang::WrapperFrontendAction)
 /// derived from it.
@@ -48,7 +48,7 @@
   /// @name Implementation Action Interface
   /// @{
 
-  /// \brief Create the AST consumer object for this action, if supported.
+  /// Create the AST consumer object for this action, if supported.
   ///
   /// This routine is called as part of BeginSourceFile(), which will
   /// fail if the AST consumer cannot be created. This will not be called if the
@@ -64,7 +64,7 @@
   virtual std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
                                                          StringRef InFile) = 0;
 
-  /// \brief Callback before starting processing a single input, giving the
+  /// Callback before starting processing a single input, giving the
   /// opportunity to modify the CompilerInvocation or do some other action
   /// before BeginSourceFileAction is called.
   ///
@@ -72,7 +72,7 @@
   /// ExecuteAction() and EndSourceFileAction() will not be called.
   virtual bool BeginInvocation(CompilerInstance &CI) { return true; }
 
-  /// \brief Callback at the start of processing a single input.
+  /// Callback at the start of processing a single input.
   ///
   /// \return True on success; on failure ExecutionAction() and
   /// EndSourceFileAction() will not be called.
@@ -80,20 +80,20 @@
     return true;
   }
 
-  /// \brief Callback to run the program action, using the initialized
+  /// Callback to run the program action, using the initialized
   /// compiler instance.
   ///
   /// This is guaranteed to only be called between BeginSourceFileAction()
   /// and EndSourceFileAction().
   virtual void ExecuteAction() = 0;
 
-  /// \brief Callback at the end of processing a single input.
+  /// Callback at the end of processing a single input.
   ///
   /// This is guaranteed to only be called following a successful call to
   /// BeginSourceFileAction (and BeginSourceFile).
   virtual void EndSourceFileAction() {}
 
-  /// \brief Callback at the end of processing a single input, to determine
+  /// Callback at the end of processing a single input, to determine
   /// if the output files should be erased or not.
   ///
   /// By default it returns true if a compiler error occurred.
@@ -158,39 +158,39 @@
   /// @name Supported Modes
   /// @{
 
-  /// \brief Is this action invoked on a model file?
+  /// Is this action invoked on a model file?
   ///
   /// Model files are incomplete translation units that relies on type
   /// information from another translation unit. Check ParseModelFileAction for
   /// details.
   virtual bool isModelParsingAction() const { return false; }
 
-  /// \brief Does this action only use the preprocessor?
+  /// Does this action only use the preprocessor?
   ///
   /// If so no AST context will be created and this action will be invalid
   /// with AST file inputs.
   virtual bool usesPreprocessorOnly() const = 0;
 
-  /// \brief For AST-based actions, the kind of translation unit we're handling.
+  /// For AST-based actions, the kind of translation unit we're handling.
   virtual TranslationUnitKind getTranslationUnitKind() { return TU_Complete; }
 
-  /// \brief Does this action support use with PCH?
+  /// Does this action support use with PCH?
   virtual bool hasPCHSupport() const { return true; }
 
-  /// \brief Does this action support use with AST files?
+  /// Does this action support use with AST files?
   virtual bool hasASTFileSupport() const { return true; }
 
-  /// \brief Does this action support use with IR files?
+  /// Does this action support use with IR files?
   virtual bool hasIRSupport() const { return false; }
 
-  /// \brief Does this action support use with code completion?
+  /// Does this action support use with code completion?
   virtual bool hasCodeCompletionSupport() const { return false; }
 
   /// @}
   /// @name Public Action Interface
   /// @{
 
-  /// \brief Prepare the action for processing the input file \p Input.
+  /// Prepare the action for processing the input file \p Input.
   ///
   /// This is run after the options and frontend have been initialized,
   /// but prior to executing any per-file processing.
@@ -211,20 +211,20 @@
   /// be aborted and neither Execute() nor EndSourceFile() should be called.
   bool BeginSourceFile(CompilerInstance &CI, const FrontendInputFile &Input);
 
-  /// \brief Set the source manager's main input file, and run the action.
+  /// Set the source manager's main input file, and run the action.
   bool Execute();
 
-  /// \brief Perform any per-file post processing, deallocate per-file
+  /// Perform any per-file post processing, deallocate per-file
   /// objects, and run statistics and output file cleanup code.
   void EndSourceFile();
 
   /// @}
 };
 
-/// \brief Abstract base class to use for AST consumer-based frontend actions.
+/// Abstract base class to use for AST consumer-based frontend actions.
 class ASTFrontendAction : public FrontendAction {
 protected:
-  /// \brief Implement the ExecuteAction interface by running Sema on
+  /// Implement the ExecuteAction interface by running Sema on
   /// the already-initialized AST consumer.
   ///
   /// This will also take care of instantiating a code completion consumer if
@@ -242,7 +242,7 @@
   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
                                                  StringRef InFile) override = 0;
 
-  /// \brief Parse the given plugin command line arguments.
+  /// Parse the given plugin command line arguments.
   ///
   /// \param CI - The compiler instance, for use in reporting diagnostics.
   /// \return True if the parsing succeeded; otherwise the plugin will be
@@ -257,7 +257,7 @@
     AddBeforeMainAction, ///< Execute the action before the main action
     AddAfterMainAction   ///< Execute the action after the main action
   };
-  /// \brief Get the action type for this plugin
+  /// Get the action type for this plugin
   ///
   /// \return The action type. If the type is Cmdline then by default the
   /// plugin does nothing and what it does is determined by the cc1
@@ -265,10 +265,10 @@
   virtual ActionType getActionType() { return Cmdline; }
 };
 
-/// \brief Abstract base class to use for preprocessor-based frontend actions.
+/// Abstract base class to use for preprocessor-based frontend actions.
 class PreprocessorFrontendAction : public FrontendAction {
 protected:
-  /// \brief Provide a default implementation which returns aborts;
+  /// Provide a default implementation which returns aborts;
   /// this method should never be called by FrontendAction clients.
   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
                                                  StringRef InFile) override;
@@ -277,7 +277,7 @@
   bool usesPreprocessorOnly() const override { return true; }
 };
 
-/// \brief A frontend action which simply wraps some other runtime-specified
+/// A frontend action which simply wraps some other runtime-specified
 /// frontend action.
 ///
 /// Deriving from this class allows an action to inject custom logic around
Index: cfe/trunk/include/clang/Frontend/FrontendActions.h
===================================================================
--- cfe/trunk/include/clang/Frontend/FrontendActions.h
+++ cfe/trunk/include/clang/Frontend/FrontendActions.h
@@ -83,14 +83,14 @@
   bool shouldEraseOutputFiles() override;
 
 public:
-  /// \brief Compute the AST consumer arguments that will be used to
+  /// Compute the AST consumer arguments that will be used to
   /// create the PCHGenerator instance returned by CreateASTConsumer.
   ///
   /// \returns false if an error occurred, true otherwise.
   static bool ComputeASTConsumerArguments(CompilerInstance &CI,
                                           std::string &Sysroot);
 
-  /// \brief Creates file to write the PCH into and returns a stream to write it
+  /// Creates file to write the PCH into and returns a stream to write it
   /// into. On error, returns null.
   static std::unique_ptr<llvm::raw_pwrite_stream>
   CreateOutputFile(CompilerInstance &CI, StringRef InFile,
@@ -140,7 +140,7 @@
   bool hasCodeCompletionSupport() const override { return true; }
 };
 
-/// \brief Dump information about the given module file, to be used for
+/// Dump information about the given module file, to be used for
 /// basic debugging and discovery.
 class DumpModuleInfoAction : public ASTFrontendAction {
 protected:
@@ -176,7 +176,7 @@
 };
 
 /**
- * \brief Frontend action adaptor that merges ASTs together.
+ * Frontend action adaptor that merges ASTs together.
  *
  * This action takes an existing AST file and "merges" it into the AST
  * context, producing a merged context. This action is an action
@@ -184,10 +184,10 @@
  * will consume the merged context.
  */
 class ASTMergeAction : public FrontendAction {
-  /// \brief The action that the merge action adapts.
+  /// The action that the merge action adapts.
   std::unique_ptr<FrontendAction> AdaptedAction;
   
-  /// \brief The set of AST files to merge.
+  /// The set of AST files to merge.
   std::vector<std::string> ASTFiles;
 
 protected:
Index: cfe/trunk/include/clang/Frontend/FrontendOptions.h
===================================================================
--- cfe/trunk/include/clang/Frontend/FrontendOptions.h
+++ cfe/trunk/include/clang/Frontend/FrontendOptions.h
@@ -195,9 +195,9 @@
   }
 };
 
-/// \brief An input file for the front end.
+/// An input file for the front end.
 class FrontendInputFile {
-  /// \brief The file name, or "-" to read from standard input.
+  /// The file name, or "-" to read from standard input.
   std::string File;
 
   /// The input, if it comes from a buffer rather than a file. This object
@@ -205,10 +205,10 @@
   /// that it outlives any users.
   llvm::MemoryBuffer *Buffer = nullptr;
 
-  /// \brief The kind of input, e.g., C source, AST file, LLVM IR.
+  /// The kind of input, e.g., C source, AST file, LLVM IR.
   InputKind Kind;
 
-  /// \brief Whether we're dealing with a 'system' input (vs. a 'user' input).
+  /// Whether we're dealing with a 'system' input (vs. a 'user' input).
   bool IsSystem = false;
 
 public:
@@ -315,46 +315,46 @@
   enum {
     ObjCMT_None = 0,
 
-    /// \brief Enable migration to modern ObjC literals.
+    /// Enable migration to modern ObjC literals.
     ObjCMT_Literals = 0x1,
 
-    /// \brief Enable migration to modern ObjC subscripting.
+    /// Enable migration to modern ObjC subscripting.
     ObjCMT_Subscripting = 0x2,
 
-    /// \brief Enable migration to modern ObjC readonly property.
+    /// Enable migration to modern ObjC readonly property.
     ObjCMT_ReadonlyProperty = 0x4,
 
-    /// \brief Enable migration to modern ObjC readwrite property.
+    /// Enable migration to modern ObjC readwrite property.
     ObjCMT_ReadwriteProperty = 0x8,
 
-    /// \brief Enable migration to modern ObjC property.
+    /// Enable migration to modern ObjC property.
     ObjCMT_Property = (ObjCMT_ReadonlyProperty | ObjCMT_ReadwriteProperty),
 
-    /// \brief Enable annotation of ObjCMethods of all kinds.
+    /// Enable annotation of ObjCMethods of all kinds.
     ObjCMT_Annotation = 0x10,
 
-    /// \brief Enable migration of ObjC methods to 'instancetype'.
+    /// Enable migration of ObjC methods to 'instancetype'.
     ObjCMT_Instancetype = 0x20,
 
-    /// \brief Enable migration to NS_ENUM/NS_OPTIONS macros.
+    /// Enable migration to NS_ENUM/NS_OPTIONS macros.
     ObjCMT_NsMacros = 0x40,
 
-    /// \brief Enable migration to add conforming protocols.
+    /// Enable migration to add conforming protocols.
     ObjCMT_ProtocolConformance = 0x80,
 
-    /// \brief prefer 'atomic' property over 'nonatomic'.
+    /// prefer 'atomic' property over 'nonatomic'.
     ObjCMT_AtomicProperty = 0x100,
 
-    /// \brief annotate property with NS_RETURNS_INNER_POINTER
+    /// annotate property with NS_RETURNS_INNER_POINTER
     ObjCMT_ReturnsInnerPointerProperty = 0x200,
 
-    /// \brief use NS_NONATOMIC_IOSONLY for property 'atomic' attribute
+    /// use NS_NONATOMIC_IOSONLY for property 'atomic' attribute
     ObjCMT_NsAtomicIOSOnlyProperty = 0x400,
 
-    /// \brief Enable inferring NS_DESIGNATED_INITIALIZER for ObjC methods.
+    /// Enable inferring NS_DESIGNATED_INITIALIZER for ObjC methods.
     ObjCMT_DesignatedInitializer = 0x800,
 
-    /// \brief Enable converting setter/getter expressions to property-dot syntx.
+    /// Enable converting setter/getter expressions to property-dot syntx.
     ObjCMT_PropertyDotSyntax = 0x1000,
 
     ObjCMT_MigrateDecls = (ObjCMT_ReadonlyProperty | ObjCMT_ReadwriteProperty |
@@ -408,31 +408,31 @@
   /// The list of module file extensions.
   std::vector<std::shared_ptr<ModuleFileExtension>> ModuleFileExtensions;
 
-  /// \brief The list of module map files to load before processing the input.
+  /// The list of module map files to load before processing the input.
   std::vector<std::string> ModuleMapFiles;
 
-  /// \brief The list of additional prebuilt module files to load before
+  /// The list of additional prebuilt module files to load before
   /// processing the input.
   std::vector<std::string> ModuleFiles;
 
-  /// \brief The list of files to embed into the compiled module file.
+  /// The list of files to embed into the compiled module file.
   std::vector<std::string> ModulesEmbedFiles;
 
-  /// \brief The list of AST files to merge.
+  /// The list of AST files to merge.
   std::vector<std::string> ASTMergeFiles;
 
-  /// \brief A list of arguments to forward to LLVM's option processing; this
+  /// A list of arguments to forward to LLVM's option processing; this
   /// should only be used for debugging and experimental features.
   std::vector<std::string> LLVMArgs;
 
-  /// \brief File name of the file that will provide record layouts
+  /// File name of the file that will provide record layouts
   /// (in the format produced by -fdump-record-layouts).
   std::string OverrideRecordLayoutsFile;
 
-  /// \brief Auxiliary triple for CUDA compilation.
+  /// Auxiliary triple for CUDA compilation.
   std::string AuxTriple;
 
-  /// \brief If non-empty, search the pch input file as if it was a header
+  /// If non-empty, search the pch input file as if it was a header
   /// included by this file.
   std::string FindPchSource;
 
Index: cfe/trunk/include/clang/Frontend/LayoutOverrideSource.h
===================================================================
--- cfe/trunk/include/clang/Frontend/LayoutOverrideSource.h
+++ cfe/trunk/include/clang/Frontend/LayoutOverrideSource.h
@@ -16,36 +16,36 @@
 #include "llvm/ADT/StringRef.h"
 
 namespace clang {
-  /// \brief An external AST source that overrides the layout of
+  /// An external AST source that overrides the layout of
   /// a specified set of record types.
   ///
   /// This class is used only for testing the ability of external AST sources
   /// to override the layout of record types. Its input is the output format
   /// of the command-line argument -fdump-record-layouts.
   class LayoutOverrideSource : public ExternalASTSource {
-    /// \brief The layout of a given record.
+    /// The layout of a given record.
     struct Layout {
-      /// \brief The size of the record.
+      /// The size of the record.
       uint64_t Size;
       
-      /// \brief The alignment of the record.
+      /// The alignment of the record.
       uint64_t Align;
       
-      /// \brief The offsets of the fields, in source order.
+      /// The offsets of the fields, in source order.
       SmallVector<uint64_t, 8> FieldOffsets;
     };
     
-    /// \brief The set of layouts that will be overridden.
+    /// The set of layouts that will be overridden.
     llvm::StringMap<Layout> Layouts;
     
   public:
-    /// \brief Create a new AST source that overrides the layout of some
+    /// Create a new AST source that overrides the layout of some
     /// set of record types.
     ///
     /// The file is the result of passing -fdump-record-layouts to a file.
     explicit LayoutOverrideSource(StringRef Filename);
     
-    /// \brief If this particular record type has an overridden layout,
+    /// If this particular record type has an overridden layout,
     /// return that layout.
     bool
     layoutRecordType(const RecordDecl *Record,
@@ -55,7 +55,7 @@
        llvm::DenseMap<const CXXRecordDecl *,
                       CharUnits> &VirtualBaseOffsets) override;
     
-    /// \brief Dump the overridden layouts.
+    /// Dump the overridden layouts.
     void dump();
   };
 }
Index: cfe/trunk/include/clang/Frontend/PrecompiledPreamble.h
===================================================================
--- cfe/trunk/include/clang/Frontend/PrecompiledPreamble.h
+++ cfe/trunk/include/clang/Frontend/PrecompiledPreamble.h
@@ -38,7 +38,7 @@
 class DeclGroupRef;
 class PCHContainerOperations;
 
-/// \brief Runs lexer to compute suggested preamble bounds.
+/// Runs lexer to compute suggested preamble bounds.
 PreambleBounds ComputePreambleBounds(const LangOptions &LangOpts,
                                      llvm::MemoryBuffer *Buffer,
                                      unsigned MaxLines);
@@ -53,7 +53,7 @@
   struct PreambleFileHash;
 
 public:
-  /// \brief Try to build PrecompiledPreamble for \p Invocation. See
+  /// Try to build PrecompiledPreamble for \p Invocation. See
   /// BuildPreambleError for possible error codes.
   ///
   /// \param Invocation Original CompilerInvocation with options to compile the
Index: cfe/trunk/include/clang/Frontend/SerializedDiagnosticPrinter.h
===================================================================
--- cfe/trunk/include/clang/Frontend/SerializedDiagnosticPrinter.h
+++ cfe/trunk/include/clang/Frontend/SerializedDiagnosticPrinter.h
@@ -25,7 +25,7 @@
 
 namespace serialized_diags {
 
-/// \brief Returns a DiagnosticConsumer that serializes diagnostics to
+/// Returns a DiagnosticConsumer that serializes diagnostics to
 ///  a bitcode file.
 ///
 /// The created DiagnosticConsumer is designed for quick and lightweight
Index: cfe/trunk/include/clang/Frontend/SerializedDiagnosticReader.h
===================================================================
--- cfe/trunk/include/clang/Frontend/SerializedDiagnosticReader.h
+++ cfe/trunk/include/clang/Frontend/SerializedDiagnosticReader.h
@@ -43,7 +43,7 @@
   return std::error_code(static_cast<int>(E), SDErrorCategory());
 }
 
-/// \brief A location that is represented in the serialized diagnostics.
+/// A location that is represented in the serialized diagnostics.
 struct Location {
   unsigned FileID;
   unsigned Line;
@@ -54,7 +54,7 @@
       : FileID(FileID), Line(Line), Col(Col), Offset(Offset) {}
 };
 
-/// \brief A base class that handles reading serialized diagnostics from a file.
+/// A base class that handles reading serialized diagnostics from a file.
 ///
 /// Subclasses should override the visit* methods with their logic for handling
 /// the various constructs that are found in serialized diagnostics.
@@ -63,66 +63,66 @@
   SerializedDiagnosticReader() = default;
   virtual ~SerializedDiagnosticReader() = default;
 
-  /// \brief Read the diagnostics in \c File
+  /// Read the diagnostics in \c File
   std::error_code readDiagnostics(StringRef File);
 
 private:
   enum class Cursor;
 
-  /// \brief Read to the next record or block to process.
+  /// Read to the next record or block to process.
   llvm::ErrorOr<Cursor> skipUntilRecordOrBlock(llvm::BitstreamCursor &Stream,
                                                unsigned &BlockOrRecordId);
 
-  /// \brief Read a metadata block from \c Stream.
+  /// Read a metadata block from \c Stream.
   std::error_code readMetaBlock(llvm::BitstreamCursor &Stream);
 
-  /// \brief Read a diagnostic block from \c Stream.
+  /// Read a diagnostic block from \c Stream.
   std::error_code readDiagnosticBlock(llvm::BitstreamCursor &Stream);
 
 protected:
-  /// \brief Visit the start of a diagnostic block.
+  /// Visit the start of a diagnostic block.
   virtual std::error_code visitStartOfDiagnostic() { return {}; }
 
-  /// \brief Visit the end of a diagnostic block.
+  /// Visit the end of a diagnostic block.
   virtual std::error_code visitEndOfDiagnostic() { return {}; }
 
-  /// \brief Visit a category. This associates the category \c ID to a \c Name.
+  /// Visit a category. This associates the category \c ID to a \c Name.
   virtual std::error_code visitCategoryRecord(unsigned ID, StringRef Name) {
     return {};
   }
 
-  /// \brief Visit a flag. This associates the flag's \c ID to a \c Name.
+  /// Visit a flag. This associates the flag's \c ID to a \c Name.
   virtual std::error_code visitDiagFlagRecord(unsigned ID, StringRef Name) {
     return {};
   }
 
-  /// \brief Visit a diagnostic.
+  /// Visit a diagnostic.
   virtual std::error_code
   visitDiagnosticRecord(unsigned Severity, const Location &Location,
                         unsigned Category, unsigned Flag, StringRef Message) {
     return {};
   }
 
-  /// \brief Visit a filename. This associates the file's \c ID to a \c Name.
+  /// Visit a filename. This associates the file's \c ID to a \c Name.
   virtual std::error_code visitFilenameRecord(unsigned ID, unsigned Size,
                                               unsigned Timestamp,
                                               StringRef Name) {
     return {};
   }
 
-  /// \brief Visit a fixit hint.
+  /// Visit a fixit hint.
   virtual std::error_code
   visitFixitRecord(const Location &Start, const Location &End, StringRef Text) {
     return {};
   }
 
-  /// \brief Visit a source range.
+  /// Visit a source range.
   virtual std::error_code visitSourceRangeRecord(const Location &Start,
                                                  const Location &End) {
     return {};
   }
 
-  /// \brief Visit the version of the set of diagnostics.
+  /// Visit the version of the set of diagnostics.
   virtual std::error_code visitVersionRecord(unsigned Version) { return {}; }
 };
 
Index: cfe/trunk/include/clang/Frontend/SerializedDiagnostics.h
===================================================================
--- cfe/trunk/include/clang/Frontend/SerializedDiagnostics.h
+++ cfe/trunk/include/clang/Frontend/SerializedDiagnostics.h
@@ -16,11 +16,11 @@
 namespace serialized_diags {
 
 enum BlockIDs {
-  /// \brief A top-level block which represents any meta data associated
+  /// A top-level block which represents any meta data associated
   /// with the diagostics, including versioning of the format.
   BLOCK_META = llvm::bitc::FIRST_APPLICATION_BLOCKID,
 
-  /// \brief The this block acts as a container for all the information
+  /// The this block acts as a container for all the information
   /// for a specific diagnostic.
   BLOCK_DIAG
 };
@@ -37,7 +37,7 @@
   RECORD_LAST = RECORD_FIXIT
 };
 
-/// \brief A stable version of DiagnosticIDs::Level.
+/// A stable version of DiagnosticIDs::Level.
 ///
 /// Do not change the order of values in this enum, and please increment the
 /// serialized diagnostics version number when you add to it.
@@ -50,7 +50,7 @@
   Remark
 };
 
-/// \brief The serialized diagnostics version number.
+/// The serialized diagnostics version number.
 enum { VersionNumber = 2 };
 
 } // end serialized_diags namespace
Index: cfe/trunk/include/clang/Frontend/TextDiagnostic.h
===================================================================
--- cfe/trunk/include/clang/Frontend/TextDiagnostic.h
+++ cfe/trunk/include/clang/Frontend/TextDiagnostic.h
@@ -20,7 +20,7 @@
 
 namespace clang {
 
-/// \brief Class to encapsulate the logic for formatting and printing a textual
+/// Class to encapsulate the logic for formatting and printing a textual
 /// diagnostic message.
 ///
 /// This class provides an interface for building and emitting a textual
@@ -42,7 +42,7 @@
 
   ~TextDiagnostic() override;
 
-  /// \brief Print the diagonstic level to a raw_ostream.
+  /// Print the diagonstic level to a raw_ostream.
   ///
   /// This is a static helper that handles colorizing the level and formatting
   /// it into an arbitrary output stream. This is used internally by the
@@ -54,7 +54,7 @@
                                    bool ShowColors,
                                    bool CLFallbackMode = false);
 
-  /// \brief Pretty-print a diagnostic message to a raw_ostream.
+  /// Pretty-print a diagnostic message to a raw_ostream.
   ///
   /// This is a static helper to handle the line wrapping, colorizing, and
   /// rendering of a diagnostic message to a particular ostream. It is
Index: cfe/trunk/include/clang/Frontend/TextDiagnosticPrinter.h
===================================================================
--- cfe/trunk/include/clang/Frontend/TextDiagnosticPrinter.h
+++ cfe/trunk/include/clang/Frontend/TextDiagnosticPrinter.h
@@ -29,7 +29,7 @@
   raw_ostream &OS;
   IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
 
-  /// \brief Handle to the currently active text diagnostic emitter.
+  /// Handle to the currently active text diagnostic emitter.
   std::unique_ptr<TextDiagnostic> TextDiag;
 
   /// A string to prefix to error messages.
Index: cfe/trunk/include/clang/Frontend/VerifyDiagnosticConsumer.h
===================================================================
--- cfe/trunk/include/clang/Frontend/VerifyDiagnosticConsumer.h
+++ cfe/trunk/include/clang/Frontend/VerifyDiagnosticConsumer.h
@@ -273,7 +273,7 @@
     IsUnparsedNoDirectives
   };
 
-  /// \brief Update lists of parsed and unparsed files.
+  /// Update lists of parsed and unparsed files.
   void UpdateParsedFileStatus(SourceManager &SM, FileID FID, ParsedStatus PS);
 
   bool HandleComment(Preprocessor &PP, SourceRange Comment) override;
Index: cfe/trunk/include/clang/Index/USRGeneration.h
===================================================================
--- cfe/trunk/include/clang/Index/USRGeneration.h
+++ cfe/trunk/include/clang/Index/USRGeneration.h
@@ -25,33 +25,33 @@
   return "c:";
 }
 
-/// \brief Generate a USR for a Decl, including the USR prefix.
+/// Generate a USR for a Decl, including the USR prefix.
 /// \returns true if the results should be ignored, false otherwise.
 bool generateUSRForDecl(const Decl *D, SmallVectorImpl<char> &Buf);
 
-/// \brief Generate a USR fragment for an Objective-C class.
+/// Generate a USR fragment for an Objective-C class.
 void generateUSRForObjCClass(StringRef Cls, raw_ostream &OS,
                              StringRef ExtSymbolDefinedIn = "",
                              StringRef CategoryContextExtSymbolDefinedIn = "");
 
-/// \brief Generate a USR fragment for an Objective-C class category.
+/// Generate a USR fragment for an Objective-C class category.
 void generateUSRForObjCCategory(StringRef Cls, StringRef Cat, raw_ostream &OS,
                                 StringRef ClsExtSymbolDefinedIn = "",
                                 StringRef CatExtSymbolDefinedIn = "");
 
-/// \brief Generate a USR fragment for an Objective-C instance variable.  The
+/// Generate a USR fragment for an Objective-C instance variable.  The
 /// complete USR can be created by concatenating the USR for the
 /// encompassing class with this USR fragment.
 void generateUSRForObjCIvar(StringRef Ivar, raw_ostream &OS);
 
-/// \brief Generate a USR fragment for an Objective-C method.
+/// Generate a USR fragment for an Objective-C method.
 void generateUSRForObjCMethod(StringRef Sel, bool IsInstanceMethod,
                               raw_ostream &OS);
 
-/// \brief Generate a USR fragment for an Objective-C property.
+/// Generate a USR fragment for an Objective-C property.
 void generateUSRForObjCProperty(StringRef Prop, bool isClassProp, raw_ostream &OS);
 
-/// \brief Generate a USR fragment for an Objective-C protocol.
+/// Generate a USR fragment for an Objective-C protocol.
 void generateUSRForObjCProtocol(StringRef Prot, raw_ostream &OS,
                                 StringRef ExtSymbolDefinedIn = "");
 
@@ -62,7 +62,7 @@
 /// Generate a USR fragment for an enum constant.
 void generateUSRForEnumConstant(StringRef EnumConstantName, raw_ostream &OS);
 
-/// \brief Generate a USR for a macro, including the USR prefix.
+/// Generate a USR for a macro, including the USR prefix.
 ///
 /// \returns true on error, false on success.
 bool generateUSRForMacro(const MacroDefinitionRecord *MD,
Index: cfe/trunk/include/clang/Lex/CodeCompletionHandler.h
===================================================================
--- cfe/trunk/include/clang/Lex/CodeCompletionHandler.h
+++ cfe/trunk/include/clang/Lex/CodeCompletionHandler.h
@@ -19,13 +19,13 @@
 class IdentifierInfo;
 class MacroInfo;
   
-/// \brief Callback handler that receives notifications when performing code 
+/// Callback handler that receives notifications when performing code 
 /// completion within the preprocessor.
 class CodeCompletionHandler {
 public:
   virtual ~CodeCompletionHandler();
   
-  /// \brief Callback invoked when performing code completion for a preprocessor
+  /// Callback invoked when performing code completion for a preprocessor
   /// directive.
   ///
   /// This callback will be invoked when the preprocessor processes a '#' at the
@@ -35,22 +35,22 @@
   /// already.
   virtual void CodeCompleteDirective(bool InConditional) { }
   
-  /// \brief Callback invoked when performing code completion within a block of
+  /// Callback invoked when performing code completion within a block of
   /// code that was excluded due to preprocessor conditionals.
   virtual void CodeCompleteInConditionalExclusion() { }
   
-  /// \brief Callback invoked when performing code completion in a context
+  /// Callback invoked when performing code completion in a context
   /// where the name of a macro is expected.
   ///
   /// \param IsDefinition Whether this is the definition of a macro, e.g.,
   /// in a \#define.
   virtual void CodeCompleteMacroName(bool IsDefinition) { }
   
-  /// \brief Callback invoked when performing code completion in a preprocessor
+  /// Callback invoked when performing code completion in a preprocessor
   /// expression, such as the condition of an \#if or \#elif directive.
   virtual void CodeCompletePreprocessorExpression() { }
   
-  /// \brief Callback invoked when performing code completion inside a 
+  /// Callback invoked when performing code completion inside a 
   /// function-like macro argument.
   ///
   /// There will be another callback invocation after the macro arguments are
@@ -60,7 +60,7 @@
                                          MacroInfo *MacroInfo,
                                          unsigned ArgumentIndex) { }
 
-  /// \brief Callback invoked when performing code completion in a part of the
+  /// Callback invoked when performing code completion in a part of the
   /// file where we expect natural language, e.g., a comment, string, or 
   /// \#error directive.
   virtual void CodeCompleteNaturalLanguage() { }
Index: cfe/trunk/include/clang/Lex/DirectoryLookup.h
===================================================================
--- cfe/trunk/include/clang/Lex/DirectoryLookup.h
+++ cfe/trunk/include/clang/Lex/DirectoryLookup.h
@@ -55,10 +55,10 @@
   /// normal directory, a framework, or a headermap.
   unsigned LookupType : 2;
   
-  /// \brief Whether this is a header map used when building a framework.
+  /// Whether this is a header map used when building a framework.
   unsigned IsIndexHeaderMap : 1;
 
-  /// \brief Whether we've performed an exhaustive search for module maps
+  /// Whether we've performed an exhaustive search for module maps
   /// within the subdirectories of this directory.
   unsigned SearchedAllModuleMaps : 1;
   
@@ -118,11 +118,11 @@
   /// isHeaderMap - Return true if this is a header map, not a normal directory.
   bool isHeaderMap() const { return getLookupType() == LT_HeaderMap; }
 
-  /// \brief Determine whether we have already searched this entire
+  /// Determine whether we have already searched this entire
   /// directory for module maps.
   bool haveSearchedAllModuleMaps() const { return SearchedAllModuleMaps; }
 
-  /// \brief Specify whether we have already searched all of the subdirectories
+  /// Specify whether we have already searched all of the subdirectories
   /// for module maps.
   void setSearchedAllModuleMaps(bool SAMM) {
     SearchedAllModuleMaps = SAMM;
@@ -134,12 +134,12 @@
     return (SrcMgr::CharacteristicKind)DirCharacteristic;
   }
 
-  /// \brief Whether this describes a system header directory.
+  /// Whether this describes a system header directory.
   bool isSystemHeaderDirectory() const {
     return getDirCharacteristic() != SrcMgr::C_User;
   }
 
-  /// \brief Whether this header map is building a framework or not.
+  /// Whether this header map is building a framework or not.
   bool isIndexHeaderMap() const { 
     return isHeaderMap() && IsIndexHeaderMap; 
   }
Index: cfe/trunk/include/clang/Lex/ExternalPreprocessorSource.h
===================================================================
--- cfe/trunk/include/clang/Lex/ExternalPreprocessorSource.h
+++ cfe/trunk/include/clang/Lex/ExternalPreprocessorSource.h
@@ -19,7 +19,7 @@
 class IdentifierInfo;
 class Module;
 
-/// \brief Abstract interface for external sources of preprocessor 
+/// Abstract interface for external sources of preprocessor 
 /// information.
 ///
 /// This abstract class allows an external sources (such as the \c ASTReader) 
@@ -28,18 +28,18 @@
 public:
   virtual ~ExternalPreprocessorSource();
   
-  /// \brief Read the set of macros defined by this external macro source.
+  /// Read the set of macros defined by this external macro source.
   virtual void ReadDefinedMacros() = 0;
   
-  /// \brief Update an out-of-date identifier.
+  /// Update an out-of-date identifier.
   virtual void updateOutOfDateIdentifier(IdentifierInfo &II) = 0;
 
-  /// \brief Return the identifier associated with the given ID number.
+  /// Return the identifier associated with the given ID number.
   ///
   /// The ID 0 is associated with the NULL identifier.
   virtual IdentifierInfo *GetIdentifier(unsigned ID) = 0;
 
-  /// \brief Map a module ID to a module.
+  /// Map a module ID to a module.
   virtual Module *getModule(unsigned ModuleID) = 0;
 };
   
Index: cfe/trunk/include/clang/Lex/HeaderSearch.h
===================================================================
--- cfe/trunk/include/clang/Lex/HeaderSearch.h
+++ cfe/trunk/include/clang/Lex/HeaderSearch.h
@@ -46,13 +46,13 @@
 class Preprocessor;
 class TargetInfo;
 
-/// \brief The preprocessor keeps track of this information for each
+/// The preprocessor keeps track of this information for each
 /// file that is \#included.
 struct HeaderFileInfo {
-  /// \brief True if this is a \#import'd or \#pragma once file.
+  /// True if this is a \#import'd or \#pragma once file.
   unsigned isImport : 1;
 
-  /// \brief True if this is a \#pragma once file.
+  /// True if this is a \#pragma once file.
   unsigned isPragmaOnce : 1;
 
   /// DirInfo - Keep track of whether this is a system header, and if so,
@@ -61,21 +61,21 @@
   /// SrcMgr::CharacteristicKind.
   unsigned DirInfo : 3;
 
-  /// \brief Whether this header file info was supplied by an external source,
+  /// Whether this header file info was supplied by an external source,
   /// and has not changed since.
   unsigned External : 1;
 
-  /// \brief Whether this header is part of a module.
+  /// Whether this header is part of a module.
   unsigned isModuleHeader : 1;
 
-  /// \brief Whether this header is part of the module that we are building.
+  /// Whether this header is part of the module that we are building.
   unsigned isCompilingModuleHeader : 1;
 
-  /// \brief Whether this structure is considered to already have been
+  /// Whether this structure is considered to already have been
   /// "resolved", meaning that it was loaded from the external source.
   unsigned Resolved : 1;
   
-  /// \brief Whether this is a header inside a framework that is currently
+  /// Whether this is a header inside a framework that is currently
   /// being built. 
   ///
   /// When a framework is being built, the headers have not yet been placed
@@ -84,13 +84,13 @@
   /// those framework headers.
   unsigned IndexHeaderMapHeader : 1;
 
-  /// \brief Whether this file has been looked up as a header.
+  /// Whether this file has been looked up as a header.
   unsigned IsValid : 1;
   
-  /// \brief The number of times the file has been included already.
+  /// The number of times the file has been included already.
   unsigned short NumIncludes = 0;
 
-  /// \brief The ID number of the controlling macro.
+  /// The ID number of the controlling macro.
   ///
   /// This ID number will be non-zero when there is a controlling
   /// macro whose IdentifierInfo may not yet have been loaded from
@@ -107,7 +107,7 @@
   /// external storage.
   const IdentifierInfo *ControllingMacro = nullptr;
 
-  /// \brief If this header came from a framework include, this is the name
+  /// If this header came from a framework include, this is the name
   /// of the framework.
   StringRef Framework;
   
@@ -116,12 +116,12 @@
         External(false), isModuleHeader(false), isCompilingModuleHeader(false),
         Resolved(false), IndexHeaderMapHeader(false), IsValid(false)  {}
 
-  /// \brief Retrieve the controlling macro for this header file, if
+  /// Retrieve the controlling macro for this header file, if
   /// any.
   const IdentifierInfo *
   getControllingMacro(ExternalPreprocessorSource *External);
 
-  /// \brief Determine whether this is a non-default header file info, e.g.,
+  /// Determine whether this is a non-default header file info, e.g.,
   /// it corresponds to an actual header we've included or tried to include.
   bool isNonDefault() const {
     return isImport || isPragmaOnce || NumIncludes || ControllingMacro || 
@@ -129,13 +129,13 @@
   }
 };
 
-/// \brief An external source of header file information, which may supply
+/// An external source of header file information, which may supply
 /// information about header files already included.
 class ExternalHeaderFileInfoSource {
 public:
   virtual ~ExternalHeaderFileInfoSource();
   
-  /// \brief Retrieve the header file information for the given file entry.
+  /// Retrieve the header file information for the given file entry.
   ///
   /// \returns Header file information for the given file entry, with the
   /// \c External bit set. If the file entry is not known, return a 
@@ -143,7 +143,7 @@
   virtual HeaderFileInfo GetHeaderFileInfo(const FileEntry *FE) = 0;
 };
   
-/// \brief Encapsulates the information needed to find the file referenced
+/// Encapsulates the information needed to find the file referenced
 /// by a \#include or \#include_next, (sub-)framework lookup, etc.
 class HeaderSearch {
   friend class DirectoryLookup;
@@ -159,7 +159,7 @@
     bool IsUserSpecifiedSystemFramework;
   };
 
-  /// \brief Header-search options used to initialize this header search.
+  /// Header-search options used to initialize this header search.
   std::shared_ptr<HeaderSearchOptions> HSOpts;
 
   DiagnosticsEngine &Diags;
@@ -176,7 +176,7 @@
   unsigned SystemDirIdx = 0;
   bool NoCurDirSearch = false;
 
-  /// \brief \#include prefixes for which the 'system header' property is
+  /// \#include prefixes for which the 'system header' property is
   /// overridden.
   ///
   /// For a \#include "x" or \#include \<x> directive, the last string in this
@@ -184,10 +184,10 @@
   /// a system header.
   std::vector<std::pair<std::string, bool>> SystemHeaderPrefixes;
 
-  /// \brief The path to the module cache.
+  /// The path to the module cache.
   std::string ModuleCachePath;
   
-  /// \brief All of the preprocessor-specific data about files that are
+  /// All of the preprocessor-specific data about files that are
   /// included, indexed by the FileEntry's UID.
   mutable std::vector<HeaderFileInfo> FileInfo;
 
@@ -215,7 +215,7 @@
   };
   llvm::StringMap<LookupFileCacheInfo, llvm::BumpPtrAllocator> LookupFileCache;
 
-  /// \brief Collection mapping a framework or subframework
+  /// Collection mapping a framework or subframework
   /// name like "Carbon" to the Carbon.framework directory.
   llvm::StringMap<FrameworkCacheEntry, llvm::BumpPtrAllocator> FrameworkMap;
 
@@ -230,26 +230,26 @@
   /// headermaps.  This vector owns the headermap.
   std::vector<std::pair<const FileEntry *, const HeaderMap *>> HeaderMaps;
 
-  /// \brief The mapping between modules and headers.
+  /// The mapping between modules and headers.
   mutable ModuleMap ModMap;
   
-  /// \brief Describes whether a given directory has a module map in it.
+  /// Describes whether a given directory has a module map in it.
   llvm::DenseMap<const DirectoryEntry *, bool> DirectoryHasModuleMap;
 
-  /// \brief Set of module map files we've already loaded, and a flag indicating
+  /// Set of module map files we've already loaded, and a flag indicating
   /// whether they were valid or not.
   llvm::DenseMap<const FileEntry *, bool> LoadedModuleMaps;
 
-  /// \brief Uniqued set of framework names, which is used to track which 
+  /// Uniqued set of framework names, which is used to track which 
   /// headers were included as framework headers.
   llvm::StringSet<llvm::BumpPtrAllocator> FrameworkNames;
   
-  /// \brief Entity used to resolve the identifier IDs of controlling
+  /// Entity used to resolve the identifier IDs of controlling
   /// macros into IdentifierInfo pointers, and keep the identifire up to date,
   /// as needed.
   ExternalPreprocessorSource *ExternalLookup = nullptr;
 
-  /// \brief Entity used to look up stored header file information.
+  /// Entity used to look up stored header file information.
   ExternalHeaderFileInfoSource *ExternalSource = nullptr;
   
   // Various statistics we track for performance analysis.
@@ -266,13 +266,13 @@
   HeaderSearch &operator=(const HeaderSearch &) = delete;
   ~HeaderSearch();
 
-  /// \brief Retrieve the header-search options with which this header search
+  /// Retrieve the header-search options with which this header search
   /// was initialized.
   HeaderSearchOptions &getHeaderSearchOpts() const { return *HSOpts; }
   
   FileManager &getFileMgr() const { return FileMgr; }
 
-  /// \brief Interface for setting the file search paths.
+  /// Interface for setting the file search paths.
   void SetSearchPaths(const std::vector<DirectoryLookup> &dirs,
                       unsigned angledDirIdx, unsigned systemDirIdx,
                       bool noCurDirSearch) {
@@ -285,7 +285,7 @@
     //LookupFileCache.clear();
   }
 
-  /// \brief Add an additional search path.
+  /// Add an additional search path.
   void AddSearchPath(const DirectoryLookup &dir, bool isAngled) {
     unsigned idx = isAngled ? SystemDirIdx : AngledDirIdx;
     SearchDirs.insert(SearchDirs.begin() + idx, dir);
@@ -294,15 +294,15 @@
     SystemDirIdx++;
   }
 
-  /// \brief Set the list of system header prefixes.
+  /// Set the list of system header prefixes.
   void SetSystemHeaderPrefixes(ArrayRef<std::pair<std::string, bool>> P) {
     SystemHeaderPrefixes.assign(P.begin(), P.end());
   }
 
-  /// \brief Checks whether the map exists or not.
+  /// Checks whether the map exists or not.
   bool HasIncludeAliasMap() const { return (bool)IncludeAliases; }
 
-  /// \brief Map the source include name to the dest include name.
+  /// Map the source include name to the dest include name.
   ///
   /// The Source should include the angle brackets or quotes, the dest 
   /// should not.  This allows for distinction between <> and "" headers.
@@ -326,20 +326,20 @@
     return {};
   }
 
-  /// \brief Set the path to the module cache.
+  /// Set the path to the module cache.
   void setModuleCachePath(StringRef CachePath) {
     ModuleCachePath = CachePath;
   }
   
-  /// \brief Retrieve the path to the module cache.
+  /// Retrieve the path to the module cache.
   StringRef getModuleCachePath() const { return ModuleCachePath; }
 
-  /// \brief Consider modules when including files from this directory.
+  /// Consider modules when including files from this directory.
   void setDirectoryHasModuleMap(const DirectoryEntry* Dir) {
     DirectoryHasModuleMap[Dir] = true;
   }
   
-  /// \brief Forget everything we know about headers so far.
+  /// Forget everything we know about headers so far.
   void ClearFileInfo() {
     FileInfo.clear();
   }
@@ -352,16 +352,16 @@
     return ExternalLookup;
   }
   
-  /// \brief Set the external source of header information.
+  /// Set the external source of header information.
   void SetExternalSource(ExternalHeaderFileInfoSource *ES) {
     ExternalSource = ES;
   }
   
-  /// \brief Set the target information for the header search, if not
+  /// Set the target information for the header search, if not
   /// already known.
   void setTarget(const TargetInfo &Target);
   
-  /// \brief Given a "foo" or \<foo> reference, look up the indicated file,
+  /// Given a "foo" or \<foo> reference, look up the indicated file,
   /// return null on failure.
   ///
   /// \returns If successful, this returns 'UsedDir', the DirectoryLookup member
@@ -399,7 +399,7 @@
       Module *RequestingModule, ModuleMap::KnownHeader *SuggestedModule,
       bool *IsMapped, bool SkipCache = false, bool BuildSystemModule = false);
 
-  /// \brief Look up a subframework for the specified \#include file.
+  /// Look up a subframework for the specified \#include file.
   ///
   /// For example, if \#include'ing <HIToolbox/HIToolbox.h> from
   /// within ".../Carbon.framework/Headers/Carbon.h", check to see if
@@ -410,13 +410,13 @@
       SmallVectorImpl<char> *SearchPath, SmallVectorImpl<char> *RelativePath,
       Module *RequestingModule, ModuleMap::KnownHeader *SuggestedModule);
 
-  /// \brief Look up the specified framework name in our framework cache.
+  /// Look up the specified framework name in our framework cache.
   /// \returns The DirectoryEntry it is in if we know, null otherwise.
   FrameworkCacheEntry &LookupFrameworkCache(StringRef FWName) {
     return FrameworkMap[FWName];
   }
 
-  /// \brief Mark the specified file as a target of a \#include,
+  /// Mark the specified file as a target of a \#include,
   /// \#include_next, or \#import directive.
   ///
   /// \return false if \#including the file will have no effect or true
@@ -425,13 +425,13 @@
                               bool isImport, bool ModulesEnabled,
                               Module *CorrespondingModule);
 
-  /// \brief Return whether the specified file is a normal header,
+  /// Return whether the specified file is a normal header,
   /// a system header, or a C++ friendly system header.
   SrcMgr::CharacteristicKind getFileDirFlavor(const FileEntry *File) {
     return (SrcMgr::CharacteristicKind)getFileInfo(File).DirInfo;
   }
 
-  /// \brief Mark the specified file as a "once only" file, e.g. due to
+  /// Mark the specified file as a "once only" file, e.g. due to
   /// \#pragma once.
   void MarkFileIncludeOnce(const FileEntry *File) {
     HeaderFileInfo &FI = getFileInfo(File);
@@ -439,24 +439,24 @@
     FI.isPragmaOnce = true;
   }
 
-  /// \brief Mark the specified file as a system header, e.g. due to
+  /// Mark the specified file as a system header, e.g. due to
   /// \#pragma GCC system_header.
   void MarkFileSystemHeader(const FileEntry *File) {
     getFileInfo(File).DirInfo = SrcMgr::C_System;
   }
 
-  /// \brief Mark the specified file as part of a module.
+  /// Mark the specified file as part of a module.
   void MarkFileModuleHeader(const FileEntry *File,
                             ModuleMap::ModuleHeaderRole Role,
                             bool IsCompiledModuleHeader);
 
-  /// \brief Increment the count for the number of times the specified
+  /// Increment the count for the number of times the specified
   /// FileEntry has been entered.
   void IncrementIncludeCount(const FileEntry *File) {
     ++getFileInfo(File).NumIncludes;
   }
 
-  /// \brief Mark the specified file as having a controlling macro.
+  /// Mark the specified file as having a controlling macro.
   ///
   /// This is used by the multiple-include optimization to eliminate
   /// no-op \#includes.
@@ -465,12 +465,12 @@
     getFileInfo(File).ControllingMacro = ControllingMacro;
   }
 
-  /// \brief Return true if this is the first time encountering this header.
+  /// Return true if this is the first time encountering this header.
   bool FirstTimeLexingFile(const FileEntry *File) {
     return getFileInfo(File).NumIncludes == 1;
   }
 
-  /// \brief Determine whether this file is intended to be safe from
+  /// Determine whether this file is intended to be safe from
   /// multiple inclusions, e.g., it has \#pragma once or a controlling
   /// macro.
   ///
@@ -481,10 +481,10 @@
   /// FileEntry, uniquing them through the 'HeaderMaps' datastructure.
   const HeaderMap *CreateHeaderMap(const FileEntry *FE);
 
-  /// \brief Get filenames for all registered header maps.
+  /// Get filenames for all registered header maps.
   void getHeaderMapFileNames(SmallVectorImpl<std::string> &Names) const;
 
-  /// \brief Retrieve the name of the cached module file that should be used
+  /// Retrieve the name of the cached module file that should be used
   /// to load the given module.
   ///
   /// \param Module The module whose module file name will be returned.
@@ -493,7 +493,7 @@
   /// or an empty string if this module does not correspond to any module file.
   std::string getCachedModuleFileName(Module *Module);
 
-  /// \brief Retrieve the name of the prebuilt module file that should be used
+  /// Retrieve the name of the prebuilt module file that should be used
   /// to load a module with the given name.
   ///
   /// \param ModuleName The module whose module file name will be returned.
@@ -506,7 +506,7 @@
   std::string getPrebuiltModuleFileName(StringRef ModuleName,
                                         bool FileMapOnly = false);
 
-  /// \brief Retrieve the name of the (to-be-)cached module file that should
+  /// Retrieve the name of the (to-be-)cached module file that should
   /// be used to load a module with the given name.
   ///
   /// \param ModuleName The module whose module file name will be returned.
@@ -519,7 +519,7 @@
   std::string getCachedModuleFileName(StringRef ModuleName,
                                       StringRef ModuleMapPath);
 
-  /// \brief Lookup a module Search for a module with the given name.
+  /// Lookup a module Search for a module with the given name.
   ///
   /// \param ModuleName The name of the module we're looking for.
   ///
@@ -530,14 +530,14 @@
   /// \returns The module with the given name.
   Module *lookupModule(StringRef ModuleName, bool AllowSearch = true);
 
-  /// \brief Try to find a module map file in the given directory, returning
+  /// Try to find a module map file in the given directory, returning
   /// \c nullptr if none is found.
   const FileEntry *lookupModuleMapFile(const DirectoryEntry *Dir,
                                        bool IsFramework);
   
   void IncrementFrameworkLookupCount() { ++NumFrameworkLookups; }
 
-  /// \brief Determine whether there is a module map that may map the header
+  /// Determine whether there is a module map that may map the header
   /// with the given file name to a (sub)module.
   /// Always returns false if modules are disabled.
   ///
@@ -551,14 +551,14 @@
   bool hasModuleMap(StringRef Filename, const DirectoryEntry *Root,
                     bool IsSystem);
   
-  /// \brief Retrieve the module that corresponds to the given file, if any.
+  /// Retrieve the module that corresponds to the given file, if any.
   ///
   /// \param File The header that we wish to map to a module.
   /// \param AllowTextual Whether we want to find textual headers too.
   ModuleMap::KnownHeader findModuleForHeader(const FileEntry *File,
                                              bool AllowTextual = false) const;
 
-  /// \brief Read the contents of the given module map file.
+  /// Read the contents of the given module map file.
   ///
   /// \param File The module map file.
   /// \param IsSystem Whether this file is in a system header directory.
@@ -575,16 +575,16 @@
                          FileID ID = FileID(), unsigned *Offset = nullptr,
                          StringRef OriginalModuleMapFile = StringRef());
 
-  /// \brief Collect the set of all known, top-level modules.
+  /// Collect the set of all known, top-level modules.
   ///
   /// \param Modules Will be filled with the set of known, top-level modules.
   void collectAllModules(SmallVectorImpl<Module *> &Modules);
 
-  /// \brief Load all known, top-level system modules.
+  /// Load all known, top-level system modules.
   void loadTopLevelSystemModules();
 
 private:
-  /// \brief Lookup a module with the given module name and search-name.
+  /// Lookup a module with the given module name and search-name.
   ///
   /// \param ModuleName The name of the module we're looking for.
   ///
@@ -596,7 +596,7 @@
   /// \returns The module named ModuleName.
   Module *lookupModule(StringRef ModuleName, StringRef SearchName);
 
-  /// \brief Retrieve a module with the given name, which may be part of the
+  /// Retrieve a module with the given name, which may be part of the
   /// given framework.
   ///
   /// \param Name The name of the module to retrieve.
@@ -611,11 +611,11 @@
                               const DirectoryEntry *Dir,
                               bool IsSystem);
 
-  /// \brief Load all of the module maps within the immediate subdirectories
+  /// Load all of the module maps within the immediate subdirectories
   /// of the given search directory.
   void loadSubdirectoryModuleMaps(DirectoryLookup &SearchDir);
 
-  /// \brief Find and suggest a usable module for the given file.
+  /// Find and suggest a usable module for the given file.
   ///
   /// \return \c true if the file can be used, \c false if we are not permitted to
   ///         find this file due to requirements from \p RequestingModule.
@@ -625,7 +625,7 @@
                                  ModuleMap::KnownHeader *SuggestedModule,
                                  bool IsSystemHeaderDir);
 
-  /// \brief Find and suggest a usable module for the given file, which is part of
+  /// Find and suggest a usable module for the given file, which is part of
   /// the specified framework.
   ///
   /// \return \c true if the file can be used, \c false if we are not permitted to
@@ -634,7 +634,7 @@
       const FileEntry *File, StringRef FrameworkDir, Module *RequestingModule,
       ModuleMap::KnownHeader *SuggestedModule, bool IsSystemFramework);
 
-  /// \brief Look up the file with the specified name and determine its owning
+  /// Look up the file with the specified name and determine its owning
   /// module.
   const FileEntry *
   getFileAndSuggestModule(StringRef FileName, SourceLocation IncludeLoc,
@@ -643,19 +643,19 @@
                           ModuleMap::KnownHeader *SuggestedModule);
 
 public:
-  /// \brief Retrieve the module map.
+  /// Retrieve the module map.
   ModuleMap &getModuleMap() { return ModMap; }
   
-  /// \brief Retrieve the module map.
+  /// Retrieve the module map.
   const ModuleMap &getModuleMap() const { return ModMap; }
   
   unsigned header_file_size() const { return FileInfo.size(); }
 
-  /// \brief Return the HeaderFileInfo structure for the specified FileEntry,
+  /// Return the HeaderFileInfo structure for the specified FileEntry,
   /// in preparation for updating it in some way.
   HeaderFileInfo &getFileInfo(const FileEntry *FE);
 
-  /// \brief Return the HeaderFileInfo structure for the specified FileEntry,
+  /// Return the HeaderFileInfo structure for the specified FileEntry,
   /// if it has ever been filled in.
   /// \param WantExternal Whether the caller wants purely-external header file
   ///        info (where \p External is true).
@@ -691,10 +691,10 @@
 
   search_dir_iterator system_dir_end() const { return SearchDirs.end(); }
 
-  /// \brief Retrieve a uniqued framework name.
+  /// Retrieve a uniqued framework name.
   StringRef getUniqueFrameworkName(StringRef Framework);
 
-  /// \brief Suggest a path by which the specified file could be found, for
+  /// Suggest a path by which the specified file could be found, for
   /// use in diagnostics to suggest a #include.
   ///
   /// \param IsSystem If non-null, filled in to indicate whether the suggested
@@ -702,7 +702,7 @@
   std::string suggestPathToFileForDiagnostics(const FileEntry *File,
                                               bool *IsSystem = nullptr);
 
-  /// \brief Suggest a path by which the specified file could be found, for
+  /// Suggest a path by which the specified file could be found, for
   /// use in diagnostics to suggest a #include.
   ///
   /// \param WorkingDir If non-empty, this will be prepended to search directory
@@ -716,18 +716,18 @@
   size_t getTotalMemory() const;
 
 private:
-  /// \brief Describes what happened when we tried to load a module map file.
+  /// Describes what happened when we tried to load a module map file.
   enum LoadModuleMapResult {
-    /// \brief The module map file had already been loaded.
+    /// The module map file had already been loaded.
     LMM_AlreadyLoaded,
 
-    /// \brief The module map file was loaded by this invocation.
+    /// The module map file was loaded by this invocation.
     LMM_NewlyLoaded,
 
-    /// \brief There is was directory with the given name.
+    /// There is was directory with the given name.
     LMM_NoDirectory,
 
-    /// \brief There was either no module map file or the module map file was
+    /// There was either no module map file or the module map file was
     /// invalid.
     LMM_InvalidModuleMap
   };
@@ -738,7 +738,7 @@
                                             FileID ID = FileID(),
                                             unsigned *Offset = nullptr);
 
-  /// \brief Try to load the module map file in the given directory.
+  /// Try to load the module map file in the given directory.
   ///
   /// \param DirName The name of the directory where we will look for a module
   /// map file.
@@ -750,7 +750,7 @@
   LoadModuleMapResult loadModuleMapFile(StringRef DirName, bool IsSystem,
                                         bool IsFramework);
 
-  /// \brief Try to load the module map file in the given directory.
+  /// Try to load the module map file in the given directory.
   ///
   /// \param Dir The directory where we will look for a module map file.
   /// \param IsSystem Whether this is a system header directory.
Index: cfe/trunk/include/clang/Lex/HeaderSearchOptions.h
===================================================================
--- cfe/trunk/include/clang/Lex/HeaderSearchOptions.h
+++ cfe/trunk/include/clang/Lex/HeaderSearchOptions.h
@@ -108,32 +108,32 @@
   /// etc.).
   std::string ResourceDir;
 
-  /// \brief The directory used for the module cache.
+  /// The directory used for the module cache.
   std::string ModuleCachePath;
 
-  /// \brief The directory used for a user build.
+  /// The directory used for a user build.
   std::string ModuleUserBuildPath;
 
-  /// \brief The mapping of module names to prebuilt module files.
+  /// The mapping of module names to prebuilt module files.
   std::map<std::string, std::string> PrebuiltModuleFiles;
 
-  /// \brief The directories used to load prebuilt module files.
+  /// The directories used to load prebuilt module files.
   std::vector<std::string> PrebuiltModulePaths;
 
   /// The module/pch container format.
   std::string ModuleFormat;
 
-  /// \brief Whether we should disable the use of the hash string within the
+  /// Whether we should disable the use of the hash string within the
   /// module cache.
   ///
   /// Note: Only used for testing!
   unsigned DisableModuleHash : 1;
 
-  /// \brief Implicit module maps.  This option is enabld by default when
+  /// Implicit module maps.  This option is enabld by default when
   /// modules is enabled.
   unsigned ImplicitModuleMaps : 1;
 
-  /// \brief Set the 'home directory' of a module map file to the current
+  /// Set the 'home directory' of a module map file to the current
   /// working directory (or the home directory of the module map file that
   /// contained the 'extern module' directive importing this module map file
   /// if any) rather than the directory containing the module map file.
@@ -142,7 +142,7 @@
   /// file.
   unsigned ModuleMapFileHomeIsCwd : 1;
 
-  /// \brief The interval (in seconds) between pruning operations.
+  /// The interval (in seconds) between pruning operations.
   ///
   /// This operation is expensive, because it requires Clang to walk through
   /// the directory structure of the module cache, stat()'ing and removing
@@ -151,7 +151,7 @@
   /// The default value is large, e.g., the operation runs once a week.
   unsigned ModuleCachePruneInterval = 7 * 24 * 60 * 60;
 
-  /// \brief The time (in seconds) after which an unused module file will be
+  /// The time (in seconds) after which an unused module file will be
   /// considered unused and will, therefore, be pruned.
   ///
   /// When the module cache is pruned, any module file that has not been
@@ -160,17 +160,17 @@
   /// regenerated often.
   unsigned ModuleCachePruneAfter = 31 * 24 * 60 * 60;
 
-  /// \brief The time in seconds when the build session started.
+  /// The time in seconds when the build session started.
   ///
   /// This time is used by other optimizations in header search and module
   /// loading.
   uint64_t BuildSessionTimestamp = 0;
 
-  /// \brief The set of macro names that should be ignored for the purposes
+  /// The set of macro names that should be ignored for the purposes
   /// of computing the module hash.
   llvm::SmallSetVector<llvm::CachedHashString, 16> ModulesIgnoreMacros;
 
-  /// \brief The set of user-provided virtual filesystem overlay files.
+  /// The set of user-provided virtual filesystem overlay files.
   std::vector<std::string> VFSOverlayFiles;
 
   /// Include the compiler builtin includes.
@@ -188,12 +188,12 @@
   /// Whether header search information should be output as for -v.
   unsigned Verbose : 1;
 
-  /// \brief If true, skip verifying input files used by modules if the
+  /// If true, skip verifying input files used by modules if the
   /// module was already verified during this build session (see
   /// \c BuildSessionTimestamp).
   unsigned ModulesValidateOncePerBuildSession : 1;
 
-  /// \brief Whether to validate system input files when a module is loaded.
+  /// Whether to validate system input files when a module is loaded.
   unsigned ModulesValidateSystemHeaders : 1;
 
   /// Whether the module includes debug information (-gmodules).
Index: cfe/trunk/include/clang/Lex/Lexer.h
===================================================================
--- cfe/trunk/include/clang/Lex/Lexer.h
+++ cfe/trunk/include/clang/Lex/Lexer.h
@@ -57,10 +57,10 @@
 /// PreprocessorOptions::PrecompiledPreambleBytes.
 /// The preamble includes the BOM, if any.
 struct PreambleBounds {
-  /// \brief Size of the preamble in bytes.
+  /// Size of the preamble in bytes.
   unsigned Size;
 
-  /// \brief Whether the preamble ends at the start of a new line.
+  /// Whether the preamble ends at the start of a new line.
   ///
   /// Used to inform the lexer as to whether it's starting at the beginning of
   /// a line after skipping the preamble.
@@ -263,7 +263,7 @@
     return getSourceLocation(BufferPtr);
   }
 
-  /// \brief Return the current location in the buffer.
+  /// Return the current location in the buffer.
   const char *getBufferLocation() const { return BufferPtr; }
 
   /// Stringify - Convert the specified string into a C string by i) escaping
@@ -322,14 +322,14 @@
                                      const SourceManager &SM,
                                      const LangOptions &LangOpts);
 
-  /// \brief Relex the token at the specified location.
+  /// Relex the token at the specified location.
   /// \returns true if there was a failure, false on success.
   static bool getRawToken(SourceLocation Loc, Token &Result,
                           const SourceManager &SM,
                           const LangOptions &LangOpts,
                           bool IgnoreWhiteSpace = false);
 
-  /// \brief Given a location any where in a source buffer, find the location
+  /// Given a location any where in a source buffer, find the location
   /// that corresponds to the beginning of the token in which the original
   /// source location lands.
   static SourceLocation GetBeginningOfToken(SourceLocation Loc,
@@ -354,7 +354,7 @@
         getTokenPrefixLength(TokStart, Characters, SM, LangOpts));
   }
 
-  /// \brief Computes the source location just past the end of the
+  /// Computes the source location just past the end of the
   /// token at this source location.
   ///
   /// This routine can be used to produce a source location that
@@ -373,7 +373,7 @@
                                             const SourceManager &SM,
                                             const LangOptions &LangOpts);
 
-  /// \brief Given a token range, produce a corresponding CharSourceRange that
+  /// Given a token range, produce a corresponding CharSourceRange that
   /// is not a token range. This allows the source range to be used by
   /// components that don't have access to the lexer and thus can't find the
   /// end of the range for themselves.
@@ -393,7 +393,7 @@
                : Range;
   }
 
-  /// \brief Returns true if the given MacroID location points at the first
+  /// Returns true if the given MacroID location points at the first
   /// token of the macro expansion.
   ///
   /// \param MacroBegin If non-null and function returns true, it is set to
@@ -403,7 +403,7 @@
                                         const LangOptions &LangOpts,
                                         SourceLocation *MacroBegin = nullptr);
 
-  /// \brief Returns true if the given MacroID location points at the last
+  /// Returns true if the given MacroID location points at the last
   /// token of the macro expansion.
   ///
   /// \param MacroEnd If non-null and function returns true, it is set to
@@ -413,7 +413,7 @@
                                       const LangOptions &LangOpts,
                                       SourceLocation *MacroEnd = nullptr);
 
-  /// \brief Accepts a range and returns a character range with file locations.
+  /// Accepts a range and returns a character range with file locations.
   ///
   /// Returns a null range if a part of the range resides inside a macro
   /// expansion or the range does not reside on the same FileID.
@@ -443,13 +443,13 @@
                                            const SourceManager &SM,
                                            const LangOptions &LangOpts);
 
-  /// \brief Returns a string for the source that the range encompasses.
+  /// Returns a string for the source that the range encompasses.
   static StringRef getSourceText(CharSourceRange Range,
                                  const SourceManager &SM,
                                  const LangOptions &LangOpts,
                                  bool *Invalid = nullptr);
 
-  /// \brief Retrieve the name of the immediate macro expansion.
+  /// Retrieve the name of the immediate macro expansion.
   ///
   /// This routine starts from a source location, and finds the name of the macro
   /// responsible for its immediate expansion. It looks through any intervening
@@ -460,7 +460,7 @@
                                          const SourceManager &SM,
                                          const LangOptions &LangOpts);
 
-  /// \brief Retrieve the name of the immediate macro expansion.
+  /// Retrieve the name of the immediate macro expansion.
   ///
   /// This routine starts from a source location, and finds the name of the
   /// macro responsible for its immediate expansion. It looks through any
@@ -480,7 +480,7 @@
   static StringRef getImmediateMacroNameForDiagnostics(
       SourceLocation Loc, const SourceManager &SM, const LangOptions &LangOpts);
 
-  /// \brief Compute the preamble of the given file.
+  /// Compute the preamble of the given file.
   ///
   /// The preamble of a file contains the initial comments, include directives,
   /// and other preprocessor directives that occur before the code in this
@@ -506,7 +506,7 @@
                                        const SourceManager &SM,
                                        const LangOptions &LangOpts);
 
-  /// \brief Checks that the given token is the first token that occurs after
+  /// Checks that the given token is the first token that occurs after
   /// the given location (this excludes comments and whitespace). Returns the
   /// location immediately after the specified token. If the token is not found
   /// or the location is inside a macro, the returned source location will be
@@ -517,10 +517,10 @@
                                          const LangOptions &LangOpts,
                                          bool SkipTrailingWhitespaceAndNewLine);
 
-  /// \brief Returns true if the given character could appear in an identifier.
+  /// Returns true if the given character could appear in an identifier.
   static bool isIdentifierBodyChar(char c, const LangOptions &LangOpts);
 
-  /// \brief Checks whether new line pointed by Str is preceded by escape
+  /// Checks whether new line pointed by Str is preceded by escape
   /// sequence.
   static bool isNewLineEscaped(const char *BufferStart, const char *Str);
 
@@ -726,7 +726,7 @@
   ///         invalid.
   uint32_t tryReadUCN(const char *&CurPtr, const char *SlashLoc, Token *Tok);
 
-  /// \brief Try to consume a UCN as part of an identifier at the current
+  /// Try to consume a UCN as part of an identifier at the current
   /// location.
   /// \param CurPtr Initially points to the range of characters in the source
   ///               buffer containing the '\'. Updated to point past the end of
@@ -740,7 +740,7 @@
   bool tryConsumeIdentifierUCN(const char *&CurPtr, unsigned Size,
                                Token &Result);
 
-  /// \brief Try to consume an identifier character encoded in UTF-8.
+  /// Try to consume an identifier character encoded in UTF-8.
   /// \param CurPtr Points to the start of the (potential) UTF-8 code unit
   ///        sequence. On success, updated to point past the end of it.
   /// \return \c true if a UTF-8 sequence mapping to an acceptable identifier
Index: cfe/trunk/include/clang/Lex/LiteralSupport.h
===================================================================
--- cfe/trunk/include/clang/Lex/LiteralSupport.h
+++ cfe/trunk/include/clang/Lex/LiteralSupport.h
@@ -112,7 +112,7 @@
 
   static bool isDigitSeparator(char C) { return C == '\''; }
 
-  /// \brief Determine whether the sequence of characters [Start, End) contains
+  /// Determine whether the sequence of characters [Start, End) contains
   /// any real digits (not digit separators).
   bool containsDigits(const char *Start, const char *End) {
     return Start != End && (Start + 1 != End || !isDigitSeparator(Start[0]));
@@ -120,7 +120,7 @@
 
   enum CheckSeparatorKind { CSK_BeforeDigits, CSK_AfterDigits };
 
-  /// \brief Ensure that we don't have a digit separator here.
+  /// Ensure that we don't have a digit separator here.
   void checkSeparator(SourceLocation TokLoc, const char *Pos,
                       CheckSeparatorKind IsAfterDigits);
 
Index: cfe/trunk/include/clang/Lex/MacroInfo.h
===================================================================
--- cfe/trunk/include/clang/Lex/MacroInfo.h
+++ cfe/trunk/include/clang/Lex/MacroInfo.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::MacroInfo and clang::MacroDirective classes.
+/// Defines the clang::MacroInfo and clang::MacroDirective classes.
 //
 //===----------------------------------------------------------------------===//
 
@@ -34,20 +34,20 @@
 class Preprocessor;
 class SourceManager;
 
-/// \brief Encapsulates the data about a macro definition (e.g. its tokens).
+/// Encapsulates the data about a macro definition (e.g. its tokens).
 ///
 /// There's an instance of this class for every #define.
 class MacroInfo {
   //===--------------------------------------------------------------------===//
   // State set when the macro is defined.
 
-  /// \brief The location the macro is defined.
+  /// The location the macro is defined.
   SourceLocation Location;
 
-  /// \brief The location of the last token in the macro.
+  /// The location of the last token in the macro.
   SourceLocation EndLocation;
 
-  /// \brief The list of arguments for a function-like macro.
+  /// The list of arguments for a function-like macro.
   ///
   /// ParameterList points to the first of NumParameters pointers.
   ///
@@ -58,61 +58,61 @@
   /// \see ParameterList
   unsigned NumParameters = 0;
 
-  /// \brief This is the list of tokens that the macro is defined to.
+  /// This is the list of tokens that the macro is defined to.
   SmallVector<Token, 8> ReplacementTokens;
 
-  /// \brief Length in characters of the macro definition.
+  /// Length in characters of the macro definition.
   mutable unsigned DefinitionLength;
   mutable bool IsDefinitionLengthCached : 1;
 
-  /// \brief True if this macro is function-like, false if it is object-like.
+  /// True if this macro is function-like, false if it is object-like.
   bool IsFunctionLike : 1;
 
-  /// \brief True if this macro is of the form "#define X(...)" or
+  /// True if this macro is of the form "#define X(...)" or
   /// "#define X(Y,Z,...)".
   ///
   /// The __VA_ARGS__ token should be replaced with the contents of "..." in an
   /// invocation.
   bool IsC99Varargs : 1;
 
-  /// \brief True if this macro is of the form "#define X(a...)".
+  /// True if this macro is of the form "#define X(a...)".
   ///
   /// The "a" identifier in the replacement list will be replaced with all
   /// arguments of the macro starting with the specified one.
   bool IsGNUVarargs : 1;
 
-  /// \brief True if this macro requires processing before expansion.
+  /// True if this macro requires processing before expansion.
   ///
   /// This is the case for builtin macros such as __LINE__, so long as they have
   /// not been redefined, but not for regular predefined macros from the
   /// "<built-in>" memory buffer (see Preprocessing::getPredefinesFileID).
   bool IsBuiltinMacro : 1;
 
-  /// \brief Whether this macro contains the sequence ", ## __VA_ARGS__"
+  /// Whether this macro contains the sequence ", ## __VA_ARGS__"
   bool HasCommaPasting : 1;
 
   //===--------------------------------------------------------------------===//
   // State that changes as the macro is used.
 
-  /// \brief True if we have started an expansion of this macro already.
+  /// True if we have started an expansion of this macro already.
   ///
   /// This disables recursive expansion, which would be quite bad for things
   /// like \#define A A.
   bool IsDisabled : 1;
 
-  /// \brief True if this macro is either defined in the main file and has
+  /// True if this macro is either defined in the main file and has
   /// been used, or if it is not defined in the main file.
   ///
   /// This is used to emit -Wunused-macros diagnostics.
   bool IsUsed : 1;
 
-  /// \brief True if this macro can be redefined without emitting a warning.
+  /// True if this macro can be redefined without emitting a warning.
   bool IsAllowRedefinitionsWithoutWarning : 1;
 
-  /// \brief Must warn if the macro is unused at the end of translation unit.
+  /// Must warn if the macro is unused at the end of translation unit.
   bool IsWarnIfUnused : 1;
 
-  /// \brief Whether this macro was used as header guard.
+  /// Whether this macro was used as header guard.
   bool UsedForHeaderGuard : 1;
 
   // Only the Preprocessor gets to create and destroy these.
@@ -120,23 +120,23 @@
   ~MacroInfo() = default;
 
 public:
-  /// \brief Return the location that the macro was defined at.
+  /// Return the location that the macro was defined at.
   SourceLocation getDefinitionLoc() const { return Location; }
 
-  /// \brief Set the location of the last token in the macro.
+  /// Set the location of the last token in the macro.
   void setDefinitionEndLoc(SourceLocation EndLoc) { EndLocation = EndLoc; }
 
-  /// \brief Return the location of the last token in the macro.
+  /// Return the location of the last token in the macro.
   SourceLocation getDefinitionEndLoc() const { return EndLocation; }
 
-  /// \brief Get length in characters of the macro definition.
+  /// Get length in characters of the macro definition.
   unsigned getDefinitionLength(const SourceManager &SM) const {
     if (IsDefinitionLengthCached)
       return DefinitionLength;
     return getDefinitionLengthSlow(SM);
   }
 
-  /// \brief Return true if the specified macro definition is equal to
+  /// Return true if the specified macro definition is equal to
   /// this macro in spelling, arguments, and whitespace.
   ///
   /// \param Syntactically if true, the macro definitions can be identical even
@@ -146,21 +146,21 @@
   bool isIdenticalTo(const MacroInfo &Other, Preprocessor &PP,
                      bool Syntactically) const;
 
-  /// \brief Set or clear the isBuiltinMacro flag.
+  /// Set or clear the isBuiltinMacro flag.
   void setIsBuiltinMacro(bool Val = true) { IsBuiltinMacro = Val; }
 
-  /// \brief Set the value of the IsUsed flag.
+  /// Set the value of the IsUsed flag.
   void setIsUsed(bool Val) { IsUsed = Val; }
 
-  /// \brief Set the value of the IsAllowRedefinitionsWithoutWarning flag.
+  /// Set the value of the IsAllowRedefinitionsWithoutWarning flag.
   void setIsAllowRedefinitionsWithoutWarning(bool Val) {
     IsAllowRedefinitionsWithoutWarning = Val;
   }
 
-  /// \brief Set the value of the IsWarnIfUnused flag.
+  /// Set the value of the IsWarnIfUnused flag.
   void setIsWarnIfUnused(bool val) { IsWarnIfUnused = val; }
 
-  /// \brief Set the specified list of identifiers as the parameter list for
+  /// Set the specified list of identifiers as the parameter list for
   /// this macro.
   void setParameterList(ArrayRef<IdentifierInfo *> List,
                        llvm::BumpPtrAllocator &PPAllocator) {
@@ -185,7 +185,7 @@
     return ArrayRef<const IdentifierInfo *>(ParameterList, NumParameters);
   }
 
-  /// \brief Return the parameter number of the specified identifier,
+  /// Return the parameter number of the specified identifier,
   /// or -1 if the identifier is not a formal parameter identifier.
   int getParameterNum(const IdentifierInfo *Arg) const {
     for (param_iterator I = param_begin(), E = param_end(); I != E; ++I)
@@ -207,7 +207,7 @@
   bool isGNUVarargs() const { return IsGNUVarargs; }
   bool isVariadic() const { return IsC99Varargs | IsGNUVarargs; }
 
-  /// \brief Return true if this macro requires processing before expansion.
+  /// Return true if this macro requires processing before expansion.
   ///
   /// This is true only for builtin macro, such as \__LINE__, whose values
   /// are not given by fixed textual expansions.  Regular predefined macros
@@ -218,19 +218,19 @@
   bool hasCommaPasting() const { return HasCommaPasting; }
   void setHasCommaPasting() { HasCommaPasting = true; }
 
-  /// \brief Return false if this macro is defined in the main file and has
+  /// Return false if this macro is defined in the main file and has
   /// not yet been used.
   bool isUsed() const { return IsUsed; }
 
-  /// \brief Return true if this macro can be redefined without warning.
+  /// Return true if this macro can be redefined without warning.
   bool isAllowRedefinitionsWithoutWarning() const {
     return IsAllowRedefinitionsWithoutWarning;
   }
 
-  /// \brief Return true if we should emit a warning if the macro is unused.
+  /// Return true if we should emit a warning if the macro is unused.
   bool isWarnIfUnused() const { return IsWarnIfUnused; }
 
-  /// \brief Return the number of tokens that this macro expands to.
+  /// Return the number of tokens that this macro expands to.
   unsigned getNumTokens() const { return ReplacementTokens.size(); }
 
   const Token &getReplacementToken(unsigned Tok) const {
@@ -245,7 +245,7 @@
   bool tokens_empty() const { return ReplacementTokens.empty(); }
   ArrayRef<Token> tokens() const { return ReplacementTokens; }
 
-  /// \brief Add the specified token to the replacement text for the macro.
+  /// Add the specified token to the replacement text for the macro.
   void AddTokenToBody(const Token &Tok) {
     assert(
         !IsDefinitionLengthCached &&
@@ -253,7 +253,7 @@
     ReplacementTokens.push_back(Tok);
   }
 
-  /// \brief Return true if this macro is enabled.
+  /// Return true if this macro is enabled.
   ///
   /// In other words, that we are not currently in an expansion of this macro.
   bool isEnabled() const { return !IsDisabled; }
@@ -268,7 +268,7 @@
     IsDisabled = true;
   }
 
-  /// \brief Determine whether this macro was used for a header guard.
+  /// Determine whether this macro was used for a header guard.
   bool isUsedForHeaderGuard() const { return UsedForHeaderGuard; }
 
   void setUsedForHeaderGuard(bool Val) { UsedForHeaderGuard = Val; }
@@ -281,7 +281,7 @@
   unsigned getDefinitionLengthSlow(const SourceManager &SM) const;
 };
 
-/// \brief Encapsulates changes to the "macros namespace" (the location where
+/// Encapsulates changes to the "macros namespace" (the location where
 /// the macro name became active, the location where it was undefined, etc.).
 ///
 /// MacroDirectives, associated with an identifier, are used to model the macro
@@ -297,20 +297,20 @@
   };
 
 protected:
-  /// \brief Previous macro directive for the same identifier, or nullptr.
+  /// Previous macro directive for the same identifier, or nullptr.
   MacroDirective *Previous = nullptr;
 
   SourceLocation Loc;
 
-  /// \brief MacroDirective kind.
+  /// MacroDirective kind.
   unsigned MDKind : 2;
 
-  /// \brief True if the macro directive was loaded from a PCH file.
+  /// True if the macro directive was loaded from a PCH file.
   unsigned IsFromPCH : 1;
 
   // Used by VisibilityMacroDirective ----------------------------------------//
 
-  /// \brief Whether the macro has public visibility (when described in a
+  /// Whether the macro has public visibility (when described in a
   /// module).
   unsigned IsPublic : 1;
 
@@ -322,16 +322,16 @@
 
   SourceLocation getLocation() const { return Loc; }
 
-  /// \brief Set previous definition of the macro with the same name.
+  /// Set previous definition of the macro with the same name.
   void setPrevious(MacroDirective *Prev) { Previous = Prev; }
 
-  /// \brief Get previous definition of the macro with the same name.
+  /// Get previous definition of the macro with the same name.
   const MacroDirective *getPrevious() const { return Previous; }
 
-  /// \brief Get previous definition of the macro with the same name.
+  /// Get previous definition of the macro with the same name.
   MacroDirective *getPrevious() { return Previous; }
 
-  /// \brief Return true if the macro directive was loaded from a PCH file.
+  /// Return true if the macro directive was loaded from a PCH file.
   bool isFromPCH() const { return IsFromPCH; }
 
   void setIsFromPCH() { IsFromPCH = true; }
@@ -374,7 +374,7 @@
     }
   };
 
-  /// \brief Traverses the macro directives history and returns the next
+  /// Traverses the macro directives history and returns the next
   /// macro definition directive along with info about its undefined location
   /// (if there is one) and if it is public or private.
   DefInfo getDefinition();
@@ -393,7 +393,7 @@
   }
   MacroInfo *getMacroInfo() { return getDefinition().getMacroInfo(); }
 
-  /// \brief Find macro definition active in the specified source location. If
+  /// Find macro definition active in the specified source location. If
   /// this macro was not defined there, return NULL.
   const DefInfo findDirectiveAtLoc(SourceLocation L, SourceManager &SM) const;
 
@@ -402,7 +402,7 @@
   static bool classof(const MacroDirective *) { return true; }
 };
 
-/// \brief A directive for a defined macro or a macro imported from a module.
+/// A directive for a defined macro or a macro imported from a module.
 class DefMacroDirective : public MacroDirective {
   MacroInfo *Info;
 
@@ -414,7 +414,7 @@
   explicit DefMacroDirective(MacroInfo *MI)
       : DefMacroDirective(MI, MI->getDefinitionLoc()) {}
 
-  /// \brief The data for the macro definition.
+  /// The data for the macro definition.
   const MacroInfo *getInfo() const { return Info; }
   MacroInfo *getInfo() { return Info; }
 
@@ -425,7 +425,7 @@
   static bool classof(const DefMacroDirective *) { return true; }
 };
 
-/// \brief A directive for an undefined macro.
+/// A directive for an undefined macro.
 class UndefMacroDirective : public MacroDirective {
 public:
   explicit UndefMacroDirective(SourceLocation UndefLoc)
@@ -440,7 +440,7 @@
   static bool classof(const UndefMacroDirective *) { return true; }
 };
 
-/// \brief A directive for setting the module visibility of a macro.
+/// A directive for setting the module visibility of a macro.
 class VisibilityMacroDirective : public MacroDirective {
 public:
   explicit VisibilityMacroDirective(SourceLocation Loc, bool Public)
@@ -448,7 +448,7 @@
     IsPublic = Public;
   }
 
-  /// \brief Determine whether this macro is part of the public API of its
+  /// Determine whether this macro is part of the public API of its
   /// module.
   bool isPublic() const { return IsPublic; }
 
@@ -478,7 +478,7 @@
   return DefDirective->getPrevious()->getDefinition();
 }
 
-/// \brief Represents a macro directive exported by a module.
+/// Represents a macro directive exported by a module.
 ///
 /// There's an instance of this class for every macro #define or #undef that is
 /// the final directive for a macro name within a module. These entities also
@@ -557,7 +557,7 @@
   unsigned getNumOverridingMacros() const { return NumOverriddenBy; }
 };
 
-/// \brief A description of the current definition of a macro.
+/// A description of the current definition of a macro.
 ///
 /// The definition of a macro comprises a set of (at least one) defining
 /// entities, which are either local MacroDirectives or imported ModuleMacros.
@@ -571,12 +571,12 @@
                   bool IsAmbiguous)
       : LatestLocalAndAmbiguous(MD, IsAmbiguous), ModuleMacros(MMs) {}
 
-  /// \brief Determine whether there is a definition of this macro.
+  /// Determine whether there is a definition of this macro.
   explicit operator bool() const {
     return getLocalDirective() || !ModuleMacros.empty();
   }
 
-  /// \brief Get the MacroInfo that should be used for this definition.
+  /// Get the MacroInfo that should be used for this definition.
   MacroInfo *getMacroInfo() const {
     if (!ModuleMacros.empty())
       return ModuleMacros.back()->getMacroInfo();
@@ -585,16 +585,16 @@
     return nullptr;
   }
 
-  /// \brief \c true if the definition is ambiguous, \c false otherwise.
+  /// \c true if the definition is ambiguous, \c false otherwise.
   bool isAmbiguous() const { return LatestLocalAndAmbiguous.getInt(); }
 
-  /// \brief Get the latest non-imported, non-\#undef'd macro definition
+  /// Get the latest non-imported, non-\#undef'd macro definition
   /// for this macro.
   DefMacroDirective *getLocalDirective() const {
     return LatestLocalAndAmbiguous.getPointer();
   }
 
-  /// \brief Get the active module macros for this macro.
+  /// Get the active module macros for this macro.
   ArrayRef<ModuleMacro *> getModuleMacros() const { return ModuleMacros; }
 
   template <typename Fn> void forAllDefinitions(Fn F) const {
Index: cfe/trunk/include/clang/Lex/ModuleLoader.h
===================================================================
--- cfe/trunk/include/clang/Lex/ModuleLoader.h
+++ cfe/trunk/include/clang/Lex/ModuleLoader.h
@@ -28,11 +28,11 @@
 class GlobalModuleIndex;
 class IdentifierInfo;
 
-/// \brief A sequence of identifier/location pairs used to describe a particular
+/// A sequence of identifier/location pairs used to describe a particular
 /// module or submodule, e.g., std.vector.
 using ModuleIdPath = ArrayRef<std::pair<IdentifierInfo *, SourceLocation>>;
 
-/// \brief Describes the result of attempting to load a module.
+/// Describes the result of attempting to load a module.
 class ModuleLoadResult {
 public:
   enum LoadResultKind {
@@ -55,18 +55,18 @@
 
   operator Module *() const { return Storage.getPointer(); }
 
-  /// \brief Determines whether the module, which failed to load, was
+  /// Determines whether the module, which failed to load, was
   /// actually a submodule that we expected to see (based on implying the
   /// submodule from header structure), but didn't materialize in the actual
   /// module.
   bool isMissingExpected() const { return Storage.getInt() == MissingExpected; }
 
-  /// \brief Determines whether the module failed to load due to a configuration
+  /// Determines whether the module failed to load due to a configuration
   /// mismatch with an explicitly-named .pcm file from the command line.
   bool isConfigMismatch() const { return Storage.getInt() == ConfigMismatch; }
 };
 
-/// \brief Abstract interface for a module loader.
+/// Abstract interface for a module loader.
 ///
 /// This abstract interface describes a module loader, which is responsible
 /// for resolving a module name (e.g., "std") to an actual module file, and
@@ -81,17 +81,17 @@
 
   virtual ~ModuleLoader();
   
-  /// \brief Returns true if this instance is building a module.
+  /// Returns true if this instance is building a module.
   bool buildingModule() const {
     return BuildingModule;
   }
 
-  /// \brief Flag indicating whether this instance is building a module.
+  /// Flag indicating whether this instance is building a module.
   void setBuildingModule(bool BuildingModuleFlag) {
     BuildingModule = BuildingModuleFlag;
   }
  
-  /// \brief Attempt to load the given module.
+  /// Attempt to load the given module.
   ///
   /// This routine attempts to load the module described by the given 
   /// parameters.
@@ -125,12 +125,12 @@
   virtual void loadModuleFromSource(SourceLocation Loc, StringRef ModuleName,
                                     StringRef Source) = 0;
 
-  /// \brief Make the given module visible.
+  /// Make the given module visible.
   virtual void makeModuleVisible(Module *Mod,
                                  Module::NameVisibilityKind Visibility,
                                  SourceLocation ImportLoc) = 0;
 
-  /// \brief Load, create, or return global module.
+  /// Load, create, or return global module.
   /// This function returns an existing global module index, if one
   /// had already been loaded or created, or loads one if it
   /// exists, or creates one if it doesn't exist.
Index: cfe/trunk/include/clang/Lex/ModuleMap.h
===================================================================
--- cfe/trunk/include/clang/Lex/ModuleMap.h
+++ cfe/trunk/include/clang/Lex/ModuleMap.h
@@ -42,13 +42,13 @@
 class HeaderSearch;
 class SourceManager;
 
-/// \brief A mechanism to observe the actions of the module map parser as it
+/// A mechanism to observe the actions of the module map parser as it
 /// reads module map files.
 class ModuleMapCallbacks {
 public:
   virtual ~ModuleMapCallbacks() = default;
 
-  /// \brief Called when a module map file has been read.
+  /// Called when a module map file has been read.
   ///
   /// \param FileStart A SourceLocation referring to the start of the file's
   /// contents.
@@ -57,12 +57,12 @@
   virtual void moduleMapFileRead(SourceLocation FileStart,
                                  const FileEntry &File, bool IsSystem) {}
 
-  /// \brief Called when a header is added during module map parsing.
+  /// Called when a header is added during module map parsing.
   ///
   /// \param Filename The header file itself.
   virtual void moduleMapAddHeader(StringRef Filename) {}
 
-  /// \brief Called when an umbrella header is added during module map parsing.
+  /// Called when an umbrella header is added during module map parsing.
   ///
   /// \param FileMgr FileManager instance
   /// \param Header The umbrella header to collect.
@@ -79,11 +79,11 @@
 
   llvm::SmallVector<std::unique_ptr<ModuleMapCallbacks>, 1> Callbacks;
   
-  /// \brief The directory used for Clang-supplied, builtin include headers,
+  /// The directory used for Clang-supplied, builtin include headers,
   /// such as "stdint.h".
   const DirectoryEntry *BuiltinIncludeDir = nullptr;
   
-  /// \brief Language options used to parse the module map itself.
+  /// Language options used to parse the module map itself.
   ///
   /// These are always simple C language options.
   LangOptions MMapLangOpts;
@@ -96,13 +96,13 @@
   /// transferred if/when we create an enclosing module.
   std::unique_ptr<Module> PendingGlobalModule;
 
-  /// \brief The top-level modules that are known.
+  /// The top-level modules that are known.
   llvm::StringMap<Module *> Modules;
 
   /// Shadow modules created while building this module map.
   llvm::SmallVector<Module*, 2> ShadowModules;
 
-  /// \brief The number of modules we have created in total.
+  /// The number of modules we have created in total.
   unsigned NumCreatedModules = 0;
 
   /// In case a module has a export_as entry, it might have a pending link
@@ -118,15 +118,15 @@
   /// information is available or add it to a pending list otherwise.
   void addLinkAsDependency(Module *Mod);
 
-  /// \brief Flags describing the role of a module header.
+  /// Flags describing the role of a module header.
   enum ModuleHeaderRole {
-    /// \brief This header is normally included in the module.
+    /// This header is normally included in the module.
     NormalHeader  = 0x0,
 
-    /// \brief This header is included but private.
+    /// This header is included but private.
     PrivateHeader = 0x1,
 
-    /// \brief This header is part of the module (for layering purposes) but
+    /// This header is part of the module (for layering purposes) but
     /// should be textually included.
     TextualHeader = 0x2,
 
@@ -144,7 +144,7 @@
   /// Convert a header role to a kind.
   static Module::HeaderKind headerRoleToKind(ModuleHeaderRole Role);
 
-  /// \brief A header that is known to reside within a given module,
+  /// A header that is known to reside within a given module,
   /// whether it was included or excluded.
   class KnownHeader {
     llvm::PointerIntPair<Module *, 2, ModuleHeaderRole> Storage;
@@ -160,24 +160,24 @@
       return A.Storage != B.Storage;
     }
 
-    /// \brief Retrieve the module the header is stored in.
+    /// Retrieve the module the header is stored in.
     Module *getModule() const { return Storage.getPointer(); }
 
-    /// \brief The role of this header within the module.
+    /// The role of this header within the module.
     ModuleHeaderRole getRole() const { return Storage.getInt(); }
 
-    /// \brief Whether this header is available in the module.
+    /// Whether this header is available in the module.
     bool isAvailable() const {
       return getModule()->isAvailable();
     }
 
-    /// \brief Whether this header is accessible from the specified module.
+    /// Whether this header is accessible from the specified module.
     bool isAccessibleFrom(Module *M) const {
       return !(getRole() & PrivateHeader) ||
              (M && M->getTopLevelModule() == getModule()->getTopLevelModule());
     }
 
-    // \brief Whether this known header is valid (i.e., it has an
+    // Whether this known header is valid (i.e., it has an
     // associated module).
     explicit operator bool() const {
       return Storage.getPointer() != nullptr;
@@ -192,7 +192,7 @@
   using HeadersMap =
       llvm::DenseMap<const FileEntry *, SmallVector<KnownHeader, 1>>;
 
-  /// \brief Mapping from each header to the module that owns the contents of
+  /// Mapping from each header to the module that owns the contents of
   /// that header.
   HeadersMap Headers;
 
@@ -203,7 +203,7 @@
   mutable llvm::DenseMap<time_t, llvm::TinyPtrVector<Module*>>
               LazyHeadersByModTime;
 
-  /// \brief Mapping from directories with umbrella headers to the module
+  /// Mapping from directories with umbrella headers to the module
   /// that is generated from the umbrella header.
   ///
   /// This mapping is used to map headers that haven't explicitly been named
@@ -211,7 +211,7 @@
   /// header.
   llvm::DenseMap<const DirectoryEntry *, Module *> UmbrellaDirs;
 
-  /// \brief A generation counter that is used to test whether modules of the
+  /// A generation counter that is used to test whether modules of the
   /// same name may shadow or are illegal redefinitions.
   ///
   /// Modules from earlier scopes may shadow modules from later ones.
@@ -220,18 +220,18 @@
 
   llvm::DenseMap<Module *, unsigned> ModuleScopeIDs;
 
-  /// \brief The set of attributes that can be attached to a module.
+  /// The set of attributes that can be attached to a module.
   struct Attributes {
-    /// \brief Whether this is a system module.
+    /// Whether this is a system module.
     unsigned IsSystem : 1;
 
-    /// \brief Whether this is an extern "C" module.
+    /// Whether this is an extern "C" module.
     unsigned IsExternC : 1;
 
-    /// \brief Whether this is an exhaustive set of configuration macros.
+    /// Whether this is an exhaustive set of configuration macros.
     unsigned IsExhaustive : 1;
 
-    /// \brief Whether files in this module can only include non-modular headers
+    /// Whether files in this module can only include non-modular headers
     /// and headers from used modules.
     unsigned NoUndeclaredIncludes : 1;
 
@@ -240,26 +240,26 @@
           NoUndeclaredIncludes(false) {}
   };
 
-  /// \brief A directory for which framework modules can be inferred.
+  /// A directory for which framework modules can be inferred.
   struct InferredDirectory {
-    /// \brief Whether to infer modules from this directory.
+    /// Whether to infer modules from this directory.
     unsigned InferModules : 1;
 
-    /// \brief The attributes to use for inferred modules.
+    /// The attributes to use for inferred modules.
     Attributes Attrs;
 
-    /// \brief If \c InferModules is non-zero, the module map file that allowed
+    /// If \c InferModules is non-zero, the module map file that allowed
     /// inferred modules.  Otherwise, nullptr.
     const FileEntry *ModuleMapFile;
 
-    /// \brief The names of modules that cannot be inferred within this
+    /// The names of modules that cannot be inferred within this
     /// directory.
     SmallVector<std::string, 2> ExcludedModules;
 
     InferredDirectory() : InferModules(false) {}
   };
 
-  /// \brief A mapping from directories to information about inferring
+  /// A mapping from directories to information about inferring
   /// framework modules from within those directories.
   llvm::DenseMap<const DirectoryEntry *, InferredDirectory> InferredDirectories;
 
@@ -269,11 +269,11 @@
 
   llvm::DenseMap<const Module *, AdditionalModMapsSet> AdditionalModMaps;
 
-  /// \brief Describes whether we haved parsed a particular file as a module
+  /// Describes whether we haved parsed a particular file as a module
   /// map.
   llvm::DenseMap<const FileEntry *, bool> ParsedModuleMap;
 
-  /// \brief Resolve the given export declaration into an actual export
+  /// Resolve the given export declaration into an actual export
   /// declaration.
   ///
   /// \param Mod The module in which we're resolving the export declaration.
@@ -289,7 +289,7 @@
   resolveExport(Module *Mod, const Module::UnresolvedExportDecl &Unresolved,
                 bool Complain) const;
 
-  /// \brief Resolve the given module id to an actual module.
+  /// Resolve the given module id to an actual module.
   ///
   /// \param Id The module-id to resolve.
   ///
@@ -327,14 +327,14 @@
   bool resolveAsBuiltinHeader(Module *M,
                               const Module::UnresolvedHeaderDirective &Header);
 
-  /// \brief Looks up the modules that \p File corresponds to.
+  /// Looks up the modules that \p File corresponds to.
   ///
   /// If \p File represents a builtin header within Clang's builtin include
   /// directory, this also loads all of the module maps to see if it will get
   /// associated with a specific module (e.g. in /usr/include).
   HeadersMap::iterator findKnownHeader(const FileEntry *File);
 
-  /// \brief Searches for a module whose umbrella directory contains \p File.
+  /// Searches for a module whose umbrella directory contains \p File.
   ///
   /// \param File The header to search for.
   ///
@@ -343,11 +343,11 @@
   KnownHeader findHeaderInUmbrellaDirs(const FileEntry *File,
                     SmallVectorImpl<const DirectoryEntry *> &IntermediateDirs);
 
-  /// \brief Given that \p File is not in the Headers map, look it up within
+  /// Given that \p File is not in the Headers map, look it up within
   /// umbrella directories and find or create a module for it.
   KnownHeader findOrCreateModuleForHeaderInUmbrellaDir(const FileEntry *File);
 
-  /// \brief A convenience method to determine if \p File is (possibly nested)
+  /// A convenience method to determine if \p File is (possibly nested)
   /// in an umbrella directory.
   bool isHeaderInUmbrellaDirs(const FileEntry *File) {
     SmallVector<const DirectoryEntry *, 2> IntermediateDirs;
@@ -358,7 +358,7 @@
                                Attributes Attrs, Module *Parent);
 
 public:
-  /// \brief Construct a new module map.
+  /// Construct a new module map.
   ///
   /// \param SourceMgr The source manager used to find module files and headers.
   /// This source manager should be shared with the header-search mechanism,
@@ -373,32 +373,32 @@
             const LangOptions &LangOpts, const TargetInfo *Target,
             HeaderSearch &HeaderInfo);
 
-  /// \brief Destroy the module map.
+  /// Destroy the module map.
   ~ModuleMap();
 
-  /// \brief Set the target information.
+  /// Set the target information.
   void setTarget(const TargetInfo &Target);
 
-  /// \brief Set the directory that contains Clang-supplied include
+  /// Set the directory that contains Clang-supplied include
   /// files, such as our stdarg.h or tgmath.h.
   void setBuiltinIncludeDir(const DirectoryEntry *Dir) {
     BuiltinIncludeDir = Dir;
   }
 
-  /// \brief Get the directory that contains Clang-supplied include files.
+  /// Get the directory that contains Clang-supplied include files.
   const DirectoryEntry *getBuiltinDir() const {
     return BuiltinIncludeDir;
   }
 
-  /// \brief Is this a compiler builtin header?
+  /// Is this a compiler builtin header?
   static bool isBuiltinHeader(StringRef FileName);
 
-  /// \brief Add a module map callback.
+  /// Add a module map callback.
   void addModuleMapCallbacks(std::unique_ptr<ModuleMapCallbacks> Callback) {
     Callbacks.push_back(std::move(Callback));
   }
 
-  /// \brief Retrieve the module that owns the given header file, if any.
+  /// Retrieve the module that owns the given header file, if any.
   ///
   /// \param File The header file that is likely to be included.
   ///
@@ -412,7 +412,7 @@
   KnownHeader findModuleForHeader(const FileEntry *File,
                                   bool AllowTextual = false);
 
-  /// \brief Retrieve all the modules that contain the given header file. This
+  /// Retrieve all the modules that contain the given header file. This
   /// may not include umbrella modules, nor information from external sources,
   /// if they have not yet been inferred / loaded.
   ///
@@ -429,7 +429,7 @@
   /// Resolve all lazy header directives for the specified module.
   void resolveHeaderDirectives(Module *Mod) const;
 
-  /// \brief Reports errors if a module must not include a specific file.
+  /// Reports errors if a module must not include a specific file.
   ///
   /// \param RequestingModule The module including a file.
   ///
@@ -448,23 +448,23 @@
                                SourceLocation FilenameLoc, StringRef Filename,
                                const FileEntry *File);
 
-  /// \brief Determine whether the given header is part of a module
+  /// Determine whether the given header is part of a module
   /// marked 'unavailable'.
   bool isHeaderInUnavailableModule(const FileEntry *Header) const;
 
-  /// \brief Determine whether the given header is unavailable as part
+  /// Determine whether the given header is unavailable as part
   /// of the specified module.
   bool isHeaderUnavailableInModule(const FileEntry *Header,
                                    const Module *RequestingModule) const;
 
-  /// \brief Retrieve a module with the given name.
+  /// Retrieve a module with the given name.
   ///
   /// \param Name The name of the module to look up.
   ///
   /// \returns The named module, if known; otherwise, returns null.
   Module *findModule(StringRef Name) const;
 
-  /// \brief Retrieve a module with the given name using lexical name lookup,
+  /// Retrieve a module with the given name using lexical name lookup,
   /// starting at the given context.
   ///
   /// \param Name The name of the module to look up.
@@ -475,7 +475,7 @@
   /// \returns The named module, if known; otherwise, returns null.
   Module *lookupModuleUnqualified(StringRef Name, Module *Context) const;
 
-  /// \brief Retrieve a module with the given name within the given context,
+  /// Retrieve a module with the given name within the given context,
   /// using direct (qualified) name lookup.
   ///
   /// \param Name The name of the module to look up.
@@ -486,7 +486,7 @@
   /// \returns The named submodule, if known; otherwose, returns null.
   Module *lookupModuleQualified(StringRef Name, Module *Context) const;
   
-  /// \brief Find a new module or submodule, or create it if it does not already
+  /// Find a new module or submodule, or create it if it does not already
   /// exist.
   ///
   /// \param Name The name of the module to find or create.
@@ -504,7 +504,7 @@
                                                bool IsFramework,
                                                bool IsExplicit);
 
-  /// \brief Create a 'global module' for a C++ Modules TS module interface
+  /// Create a 'global module' for a C++ Modules TS module interface
   /// unit.
   ///
   /// We model the global module as a submodule of the module interface unit.
@@ -512,7 +512,7 @@
   /// later, because we don't know what it will be called.
   Module *createGlobalModuleForInterfaceUnit(SourceLocation Loc);
 
-  /// \brief Create a new module for a C++ Modules TS module interface unit.
+  /// Create a new module for a C++ Modules TS module interface unit.
   /// The module must not already exist, and will be configured for the current
   /// compilation.
   ///
@@ -522,17 +522,17 @@
   Module *createModuleForInterfaceUnit(SourceLocation Loc, StringRef Name,
                                        Module *GlobalModule);
 
-  /// \brief Infer the contents of a framework module map from the given
+  /// Infer the contents of a framework module map from the given
   /// framework directory.
   Module *inferFrameworkModule(const DirectoryEntry *FrameworkDir,
                                bool IsSystem, Module *Parent);
 
-  /// \brief Create a new top-level module that is shadowed by
+  /// Create a new top-level module that is shadowed by
   /// \p ShadowingModule.
   Module *createShadowedModule(StringRef Name, bool IsFramework,
                                Module *ShadowingModule);
 
-  /// \brief Creates a new declaration scope for module names, allowing
+  /// Creates a new declaration scope for module names, allowing
   /// previously defined modules to shadow definitions from the new scope.
   ///
   /// \note Module names from earlier scopes will shadow names from the new
@@ -545,7 +545,7 @@
     return ModuleScopeIDs[ExistingModule] < CurrentModuleScopeID;
   }
 
-  /// \brief Retrieve the module map file containing the definition of the given
+  /// Retrieve the module map file containing the definition of the given
   /// module.
   ///
   /// \param Module The module whose module map file will be returned, if known.
@@ -554,7 +554,7 @@
   /// module, or nullptr if the module definition was inferred.
   const FileEntry *getContainingModuleMapFile(const Module *Module) const;
 
-  /// \brief Get the module map file that (along with the module name) uniquely
+  /// Get the module map file that (along with the module name) uniquely
   /// identifies this module.
   ///
   /// The particular module that \c Name refers to may depend on how the module
@@ -567,7 +567,7 @@
 
   void setInferredModuleAllowedBy(Module *M, const FileEntry *ModuleMap);
 
-  /// \brief Get any module map files other than getModuleMapFileForUniquing(M)
+  /// Get any module map files other than getModuleMapFileForUniquing(M)
   /// that define submodules of a top-level module \p M. This is cheaper than
   /// getting the module map file for each submodule individually, since the
   /// expected number of results is very small.
@@ -582,7 +582,7 @@
     AdditionalModMaps[M].insert(ModuleMap);
   }
 
-  /// \brief Resolve all of the unresolved exports in the given module.
+  /// Resolve all of the unresolved exports in the given module.
   ///
   /// \param Mod The module whose exports should be resolved.
   ///
@@ -592,7 +592,7 @@
   /// false otherwise.
   bool resolveExports(Module *Mod, bool Complain);
 
-  /// \brief Resolve all of the unresolved uses in the given module.
+  /// Resolve all of the unresolved uses in the given module.
   ///
   /// \param Mod The module whose uses should be resolved.
   ///
@@ -602,7 +602,7 @@
   /// false otherwise.
   bool resolveUses(Module *Mod, bool Complain);
 
-  /// \brief Resolve all of the unresolved conflicts in the given module.
+  /// Resolve all of the unresolved conflicts in the given module.
   ///
   /// \param Mod The module whose conflicts should be resolved.
   ///
@@ -612,25 +612,25 @@
   /// false otherwise.
   bool resolveConflicts(Module *Mod, bool Complain);
 
-  /// \brief Sets the umbrella header of the given module to the given
+  /// Sets the umbrella header of the given module to the given
   /// header.
   void setUmbrellaHeader(Module *Mod, const FileEntry *UmbrellaHeader,
                          Twine NameAsWritten);
 
-  /// \brief Sets the umbrella directory of the given module to the given
+  /// Sets the umbrella directory of the given module to the given
   /// directory.
   void setUmbrellaDir(Module *Mod, const DirectoryEntry *UmbrellaDir,
                       Twine NameAsWritten);
 
-  /// \brief Adds this header to the given module.
+  /// Adds this header to the given module.
   /// \param Role The role of the header wrt the module.
   void addHeader(Module *Mod, Module::Header Header,
                  ModuleHeaderRole Role, bool Imported = false);
 
-  /// \brief Marks this header as being excluded from the given module.
+  /// Marks this header as being excluded from the given module.
   void excludeHeader(Module *Mod, Module::Header Header);
 
-  /// \brief Parse the given module map file, and record any modules we 
+  /// Parse the given module map file, and record any modules we 
   /// encounter.
   ///
   /// \param File The file to be parsed.
@@ -655,7 +655,7 @@
                           FileID ID = FileID(), unsigned *Offset = nullptr,
                           SourceLocation ExternModuleLoc = SourceLocation());
 
-  /// \brief Dump the contents of the module map, for debugging purposes.
+  /// Dump the contents of the module map, for debugging purposes.
   void dump();
   
   using module_iterator = llvm::StringMap<Module *>::const_iterator;
Index: cfe/trunk/include/clang/Lex/MultipleIncludeOpt.h
===================================================================
--- cfe/trunk/include/clang/Lex/MultipleIncludeOpt.h
+++ cfe/trunk/include/clang/Lex/MultipleIncludeOpt.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the MultipleIncludeOpt interface.
+/// Defines the MultipleIncludeOpt interface.
 //
 //===----------------------------------------------------------------------===//
 
@@ -20,7 +20,7 @@
 namespace clang {
 class IdentifierInfo;
 
-/// \brief Implements the simple state machine that the Lexer class uses to
+/// Implements the simple state machine that the Lexer class uses to
 /// detect files subject to the 'multiple-include' optimization.
 ///
 /// The public methods in this class are triggered by various
@@ -113,7 +113,7 @@
   /// buffer, this method is called to disable the MIOpt if needed.
   void ExpandedMacro() { DidMacroExpansion = true; }
 
-  /// \brief Called when entering a top-level \#ifndef directive (or the
+  /// Called when entering a top-level \#ifndef directive (or the
   /// "\#if !defined" equivalent) without any preceding tokens.
   ///
   /// Note, we don't care about the input value of 'ReadAnyTokens'.  The caller
@@ -139,14 +139,14 @@
     MacroLoc = Loc;
   }
 
-  /// \brief Invoked when a top level conditional (except \#ifndef) is found.
+  /// Invoked when a top level conditional (except \#ifndef) is found.
   void EnterTopLevelConditional() {
     // If a conditional directive (except #ifndef) is found at the top level,
     // there is a chunk of the file not guarded by the controlling macro.
     Invalidate();
   }
 
-  /// \brief Called when the lexer exits the top-level conditional.
+  /// Called when the lexer exits the top-level conditional.
   void ExitTopLevelConditional() {
     // If we have a macro, that means the top of the file was ok.  Set our state
     // back to "not having read any tokens" so we can detect anything after the
@@ -159,7 +159,7 @@
     ImmediatelyAfterTopLevelIfndef = false;
   }
 
-  /// \brief Once the entire file has been lexed, if there is a controlling
+  /// Once the entire file has been lexed, if there is a controlling
   /// macro, return it.
   const IdentifierInfo *GetControllingMacroAtEndOfFile() const {
     // If we haven't read any tokens after the #endif, return the controlling
@@ -169,7 +169,7 @@
     return nullptr;
   }
 
-  /// \brief If the ControllingMacro is followed by a macro definition, return
+  /// If the ControllingMacro is followed by a macro definition, return
   /// the macro that was defined.
   const IdentifierInfo *GetDefinedMacro() const {
     return DefinedMacro;
Index: cfe/trunk/include/clang/Lex/PPCallbacks.h
===================================================================
--- cfe/trunk/include/clang/Lex/PPCallbacks.h
+++ cfe/trunk/include/clang/Lex/PPCallbacks.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines the PPCallbacks interface.
+/// Defines the PPCallbacks interface.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -29,7 +29,7 @@
   class MacroDirective;
   class MacroArgs;
 
-/// \brief This interface provides a way to observe the actions of the
+/// This interface provides a way to observe the actions of the
 /// preprocessor as it does its thing.
 ///
 /// Clients can define their hooks here to implement preprocessor level tools.
@@ -41,7 +41,7 @@
     EnterFile, ExitFile, SystemHeaderPragma, RenameFile
   };
 
-  /// \brief Callback invoked whenever a source file is entered or exited.
+  /// Callback invoked whenever a source file is entered or exited.
   ///
   /// \param Loc Indicates the new location.
   /// \param PrevFID the file that was exited if \p Reason is ExitFile.
@@ -50,7 +50,7 @@
                            FileID PrevFID = FileID()) {
   }
 
-  /// \brief Callback invoked whenever a source file is skipped as the result
+  /// Callback invoked whenever a source file is skipped as the result
   /// of header guard optimization.
   ///
   /// \param SkippedFile The file that is skipped instead of entering \#include
@@ -63,7 +63,7 @@
                            SrcMgr::CharacteristicKind FileType) {
   }
 
-  /// \brief Callback invoked whenever an inclusion directive results in a
+  /// Callback invoked whenever an inclusion directive results in a
   /// file-not-found error.
   ///
   /// \param FileName The name of the file being included, as written in the 
@@ -80,7 +80,7 @@
     return false;
   }
 
-  /// \brief Callback invoked whenever an inclusion directive of
+  /// Callback invoked whenever an inclusion directive of
   /// any kind (\c \#include, \c \#import, etc.) has been processed, regardless
   /// of whether the inclusion will actually result in an inclusion.
   ///
@@ -128,7 +128,7 @@
                                   const Module *Imported) {
   }
 
-  /// \brief Callback invoked whenever there was an explicit module-import
+  /// Callback invoked whenever there was an explicit module-import
   /// syntax.
   ///
   /// \param ImportLoc The location of import directive token.
@@ -143,54 +143,54 @@
                             const Module *Imported) {
   }
 
-  /// \brief Callback invoked when the end of the main file is reached.
+  /// Callback invoked when the end of the main file is reached.
   ///
   /// No subsequent callbacks will be made.
   virtual void EndOfMainFile() {
   }
 
-  /// \brief Callback invoked when a \#ident or \#sccs directive is read.
+  /// Callback invoked when a \#ident or \#sccs directive is read.
   /// \param Loc The location of the directive.
   /// \param str The text of the directive.
   ///
   virtual void Ident(SourceLocation Loc, StringRef str) {
   }
 
-  /// \brief Callback invoked when start reading any pragma directive.
+  /// Callback invoked when start reading any pragma directive.
   virtual void PragmaDirective(SourceLocation Loc,
                                PragmaIntroducerKind Introducer) {
   }
 
-  /// \brief Callback invoked when a \#pragma comment directive is read.
+  /// Callback invoked when a \#pragma comment directive is read.
   virtual void PragmaComment(SourceLocation Loc, const IdentifierInfo *Kind,
                              StringRef Str) {
   }
 
-  /// \brief Callback invoked when a \#pragma detect_mismatch directive is
+  /// Callback invoked when a \#pragma detect_mismatch directive is
   /// read.
   virtual void PragmaDetectMismatch(SourceLocation Loc, StringRef Name,
                                     StringRef Value) {
   }
 
-  /// \brief Callback invoked when a \#pragma clang __debug directive is read.
+  /// Callback invoked when a \#pragma clang __debug directive is read.
   /// \param Loc The location of the debug directive.
   /// \param DebugType The identifier following __debug.
   virtual void PragmaDebug(SourceLocation Loc, StringRef DebugType) {
   }
 
-  /// \brief Determines the kind of \#pragma invoking a call to PragmaMessage.
+  /// Determines the kind of \#pragma invoking a call to PragmaMessage.
   enum PragmaMessageKind {
-    /// \brief \#pragma message has been invoked.
+    /// \#pragma message has been invoked.
     PMK_Message,
 
-    /// \brief \#pragma GCC warning has been invoked.
+    /// \#pragma GCC warning has been invoked.
     PMK_Warning,
 
-    /// \brief \#pragma GCC error has been invoked.
+    /// \#pragma GCC error has been invoked.
     PMK_Error
   };
 
-  /// \brief Callback invoked when a \#pragma message directive is read.
+  /// Callback invoked when a \#pragma message directive is read.
   /// \param Loc The location of the message directive.
   /// \param Namespace The namespace of the message directive.
   /// \param Kind The type of the message directive.
@@ -199,62 +199,62 @@
                              PragmaMessageKind Kind, StringRef Str) {
   }
 
-  /// \brief Callback invoked when a \#pragma gcc diagnostic push directive
+  /// Callback invoked when a \#pragma gcc diagnostic push directive
   /// is read.
   virtual void PragmaDiagnosticPush(SourceLocation Loc,
                                     StringRef Namespace) {
   }
 
-  /// \brief Callback invoked when a \#pragma gcc diagnostic pop directive
+  /// Callback invoked when a \#pragma gcc diagnostic pop directive
   /// is read.
   virtual void PragmaDiagnosticPop(SourceLocation Loc,
                                    StringRef Namespace) {
   }
 
-  /// \brief Callback invoked when a \#pragma gcc diagnostic directive is read.
+  /// Callback invoked when a \#pragma gcc diagnostic directive is read.
   virtual void PragmaDiagnostic(SourceLocation Loc, StringRef Namespace,
                                 diag::Severity mapping, StringRef Str) {}
 
-  /// \brief Called when an OpenCL extension is either disabled or
+  /// Called when an OpenCL extension is either disabled or
   /// enabled with a pragma.
   virtual void PragmaOpenCLExtension(SourceLocation NameLoc, 
                                      const IdentifierInfo *Name,
                                      SourceLocation StateLoc, unsigned State) {
   }
 
-  /// \brief Callback invoked when a \#pragma warning directive is read.
+  /// Callback invoked when a \#pragma warning directive is read.
   virtual void PragmaWarning(SourceLocation Loc, StringRef WarningSpec,
                              ArrayRef<int> Ids) {
   }
 
-  /// \brief Callback invoked when a \#pragma warning(push) directive is read.
+  /// Callback invoked when a \#pragma warning(push) directive is read.
   virtual void PragmaWarningPush(SourceLocation Loc, int Level) {
   }
 
-  /// \brief Callback invoked when a \#pragma warning(pop) directive is read.
+  /// Callback invoked when a \#pragma warning(pop) directive is read.
   virtual void PragmaWarningPop(SourceLocation Loc) {
   }
 
-  /// \brief Callback invoked when a \#pragma clang assume_nonnull begin directive
+  /// Callback invoked when a \#pragma clang assume_nonnull begin directive
   /// is read.
   virtual void PragmaAssumeNonNullBegin(SourceLocation Loc) {}
 
-  /// \brief Callback invoked when a \#pragma clang assume_nonnull end directive
+  /// Callback invoked when a \#pragma clang assume_nonnull end directive
   /// is read.
   virtual void PragmaAssumeNonNullEnd(SourceLocation Loc) {}
 
-  /// \brief Called by Preprocessor::HandleMacroExpandedIdentifier when a
+  /// Called by Preprocessor::HandleMacroExpandedIdentifier when a
   /// macro invocation is found.
   virtual void MacroExpands(const Token &MacroNameTok,
                             const MacroDefinition &MD, SourceRange Range,
                             const MacroArgs *Args) {}
 
-  /// \brief Hook called whenever a macro definition is seen.
+  /// Hook called whenever a macro definition is seen.
   virtual void MacroDefined(const Token &MacroNameTok,
                             const MacroDirective *MD) {
   }
 
-  /// \brief Hook called whenever a macro \#undef is seen.
+  /// Hook called whenever a macro \#undef is seen.
   /// \param MacroNameTok The active Token
   /// \param MD A MacroDefinition for the named macro.
   /// \param Undef New MacroDirective if the macro was defined, null otherwise.
@@ -265,13 +265,13 @@
                               const MacroDirective *Undef) {
   }
   
-  /// \brief Hook called whenever the 'defined' operator is seen.
+  /// Hook called whenever the 'defined' operator is seen.
   /// \param MD The MacroDirective if the name was a macro, null otherwise.
   virtual void Defined(const Token &MacroNameTok, const MacroDefinition &MD,
                        SourceRange Range) {
   }
   
-  /// \brief Hook called when a source range is skipped.
+  /// Hook called when a source range is skipped.
   /// \param Range The SourceRange that was skipped. The range begins at the
   /// \#if/\#else directive and ends after the \#endif/\#else directive.
   /// \param EndifLoc The end location of the 'endif' token, which may precede
@@ -284,7 +284,7 @@
     CVK_NotEvaluated, CVK_False, CVK_True
   };
 
-  /// \brief Hook called whenever an \#if is seen.
+  /// Hook called whenever an \#if is seen.
   /// \param Loc the source location of the directive.
   /// \param ConditionRange The SourceRange of the expression being tested.
   /// \param ConditionValue The evaluated value of the condition.
@@ -294,7 +294,7 @@
                   ConditionValueKind ConditionValue) {
   }
 
-  /// \brief Hook called whenever an \#elif is seen.
+  /// Hook called whenever an \#elif is seen.
   /// \param Loc the source location of the directive.
   /// \param ConditionRange The SourceRange of the expression being tested.
   /// \param ConditionValue The evaluated value of the condition.
@@ -304,7 +304,7 @@
                     ConditionValueKind ConditionValue, SourceLocation IfLoc) {
   }
 
-  /// \brief Hook called whenever an \#ifdef is seen.
+  /// Hook called whenever an \#ifdef is seen.
   /// \param Loc the source location of the directive.
   /// \param MacroNameTok Information on the token being tested.
   /// \param MD The MacroDefinition if the name was a macro, null otherwise.
@@ -312,7 +312,7 @@
                      const MacroDefinition &MD) {
   }
 
-  /// \brief Hook called whenever an \#ifndef is seen.
+  /// Hook called whenever an \#ifndef is seen.
   /// \param Loc the source location of the directive.
   /// \param MacroNameTok Information on the token being tested.
   /// \param MD The MacroDefiniton if the name was a macro, null otherwise.
@@ -320,20 +320,20 @@
                       const MacroDefinition &MD) {
   }
 
-  /// \brief Hook called whenever an \#else is seen.
+  /// Hook called whenever an \#else is seen.
   /// \param Loc the source location of the directive.
   /// \param IfLoc the source location of the \#if/\#ifdef/\#ifndef directive.
   virtual void Else(SourceLocation Loc, SourceLocation IfLoc) {
   }
 
-  /// \brief Hook called whenever an \#endif is seen.
+  /// Hook called whenever an \#endif is seen.
   /// \param Loc the source location of the directive.
   /// \param IfLoc the source location of the \#if/\#ifdef/\#ifndef directive.
   virtual void Endif(SourceLocation Loc, SourceLocation IfLoc) {
   }
 };
 
-/// \brief Simple wrapper class for chaining callbacks.
+/// Simple wrapper class for chaining callbacks.
 class PPChainedCallbacks : public PPCallbacks {
   virtual void anchor();
   std::unique_ptr<PPCallbacks> First, Second;
@@ -499,41 +499,41 @@
     Second->SourceRangeSkipped(Range, EndifLoc);
   }
 
-  /// \brief Hook called whenever an \#if is seen.
+  /// Hook called whenever an \#if is seen.
   void If(SourceLocation Loc, SourceRange ConditionRange,
           ConditionValueKind ConditionValue) override {
     First->If(Loc, ConditionRange, ConditionValue);
     Second->If(Loc, ConditionRange, ConditionValue);
   }
 
-  /// \brief Hook called whenever an \#elif is seen.
+  /// Hook called whenever an \#elif is seen.
   void Elif(SourceLocation Loc, SourceRange ConditionRange,
             ConditionValueKind ConditionValue, SourceLocation IfLoc) override {
     First->Elif(Loc, ConditionRange, ConditionValue, IfLoc);
     Second->Elif(Loc, ConditionRange, ConditionValue, IfLoc);
   }
 
-  /// \brief Hook called whenever an \#ifdef is seen.
+  /// Hook called whenever an \#ifdef is seen.
   void Ifdef(SourceLocation Loc, const Token &MacroNameTok,
              const MacroDefinition &MD) override {
     First->Ifdef(Loc, MacroNameTok, MD);
     Second->Ifdef(Loc, MacroNameTok, MD);
   }
 
-  /// \brief Hook called whenever an \#ifndef is seen.
+  /// Hook called whenever an \#ifndef is seen.
   void Ifndef(SourceLocation Loc, const Token &MacroNameTok,
               const MacroDefinition &MD) override {
     First->Ifndef(Loc, MacroNameTok, MD);
     Second->Ifndef(Loc, MacroNameTok, MD);
   }
 
-  /// \brief Hook called whenever an \#else is seen.
+  /// Hook called whenever an \#else is seen.
   void Else(SourceLocation Loc, SourceLocation IfLoc) override {
     First->Else(Loc, IfLoc);
     Second->Else(Loc, IfLoc);
   }
 
-  /// \brief Hook called whenever an \#endif is seen.
+  /// Hook called whenever an \#endif is seen.
   void Endif(SourceLocation Loc, SourceLocation IfLoc) override {
     First->Endif(Loc, IfLoc);
     Second->Endif(Loc, IfLoc);
Index: cfe/trunk/include/clang/Lex/PPConditionalDirectiveRecord.h
===================================================================
--- cfe/trunk/include/clang/Lex/PPConditionalDirectiveRecord.h
+++ cfe/trunk/include/clang/Lex/PPConditionalDirectiveRecord.h
@@ -21,7 +21,7 @@
 
 namespace clang {
   
-/// \brief Records preprocessor conditional directive regions and allows
+/// Records preprocessor conditional directive regions and allows
 /// querying in which region source locations belong to.
 class PPConditionalDirectiveRecord : public PPCallbacks {
   SourceManager &SourceMgr;
@@ -57,25 +57,25 @@
   };
 
   typedef std::vector<CondDirectiveLoc> CondDirectiveLocsTy;
-  /// \brief The locations of conditional directives in source order.
+  /// The locations of conditional directives in source order.
   CondDirectiveLocsTy CondDirectiveLocs;
 
   void addCondDirectiveLoc(CondDirectiveLoc DirLoc);
 
 public:
-  /// \brief Construct a new preprocessing record.
+  /// Construct a new preprocessing record.
   explicit PPConditionalDirectiveRecord(SourceManager &SM);
 
   size_t getTotalMemory() const;
 
   SourceManager &getSourceManager() const { return SourceMgr; }
 
-  /// \brief Returns true if the given range intersects with a conditional
+  /// Returns true if the given range intersects with a conditional
   /// directive. if a \#if/\#endif block is fully contained within the range,
   /// this function will return false.
   bool rangeIntersectsConditionalDirective(SourceRange Range) const;
 
-  /// \brief Returns true if the given locations are in different regions,
+  /// Returns true if the given locations are in different regions,
   /// separated by conditional directive blocks.
   bool areInDifferentConditionalDirectiveRegion(SourceLocation LHS,
                                                 SourceLocation RHS) const {
Index: cfe/trunk/include/clang/Lex/Pragma.h
===================================================================
--- cfe/trunk/include/clang/Lex/Pragma.h
+++ cfe/trunk/include/clang/Lex/Pragma.h
@@ -26,22 +26,22 @@
 class Token;
 
   /**
-   * \brief Describes how the pragma was introduced, e.g., with \#pragma,
+   * Describes how the pragma was introduced, e.g., with \#pragma,
    * _Pragma, or __pragma.
    */
   enum PragmaIntroducerKind {
     /**
-     * \brief The pragma was introduced via \#pragma.
+     * The pragma was introduced via \#pragma.
      */
     PIK_HashPragma,
     
     /**
-     * \brief The pragma was introduced via the C99 _Pragma(string-literal).
+     * The pragma was introduced via the C99 _Pragma(string-literal).
      */
     PIK__Pragma,
     
     /**
-     * \brief The pragma was introduced via the Microsoft 
+     * The pragma was introduced via the Microsoft 
      * __pragma(token-string).
      */
     PIK___pragma
Index: cfe/trunk/include/clang/Lex/PreprocessingRecord.h
===================================================================
--- cfe/trunk/include/clang/Lex/PreprocessingRecord.h
+++ cfe/trunk/include/clang/Lex/PreprocessingRecord.h
@@ -39,11 +39,11 @@
 
 } // namespace clang
 
-/// \brief Allocates memory within a Clang preprocessing record.
+/// Allocates memory within a Clang preprocessing record.
 void *operator new(size_t bytes, clang::PreprocessingRecord &PR,
                    unsigned alignment = 8) noexcept;
 
-/// \brief Frees memory allocated in a Clang preprocessing record.
+/// Frees memory allocated in a Clang preprocessing record.
 void operator delete(void *ptr, clang::PreprocessingRecord &PR,
                      unsigned) noexcept;
 
@@ -55,25 +55,25 @@
 class SourceManager;
 class Token;
 
-  /// \brief Base class that describes a preprocessed entity, which may be a
+  /// Base class that describes a preprocessed entity, which may be a
   /// preprocessor directive or macro expansion.
   class PreprocessedEntity {
   public:
-    /// \brief The kind of preprocessed entity an object describes.
+    /// The kind of preprocessed entity an object describes.
     enum EntityKind {
-      /// \brief Indicates a problem trying to load the preprocessed entity.
+      /// Indicates a problem trying to load the preprocessed entity.
       InvalidKind,
 
-      /// \brief A macro expansion.
+      /// A macro expansion.
       MacroExpansionKind,
       
       /// \defgroup Preprocessing directives
       /// @{
       
-      /// \brief A macro definition.
+      /// A macro definition.
       MacroDefinitionKind,
       
-      /// \brief An inclusion directive, such as \c \#include, \c
+      /// An inclusion directive, such as \c \#include, \c
       /// \#import, or \c \#include_next.
       InclusionDirectiveKind,
 
@@ -84,10 +84,10 @@
     };
 
   private:
-    /// \brief The kind of preprocessed entity that this object describes.
+    /// The kind of preprocessed entity that this object describes.
     EntityKind Kind;
     
-    /// \brief The source range that covers this preprocessed entity.
+    /// The source range that covers this preprocessed entity.
     SourceRange Range;
     
   protected:
@@ -97,14 +97,14 @@
         : Kind(Kind), Range(Range) {}
 
   public:
-    /// \brief Retrieve the kind of preprocessed entity stored in this object.
+    /// Retrieve the kind of preprocessed entity stored in this object.
     EntityKind getKind() const { return Kind; }
     
-    /// \brief Retrieve the source range that covers this entire preprocessed 
+    /// Retrieve the source range that covers this entire preprocessed 
     /// entity.
     SourceRange getSourceRange() const LLVM_READONLY { return Range; }
 
-    /// \brief Returns true if there was a problem loading the preprocessed
+    /// Returns true if there was a problem loading the preprocessed
     /// entity.
     bool isInvalid() const { return Kind == InvalidKind; }
 
@@ -131,7 +131,7 @@
     void operator delete(void *data) noexcept;
   };
   
-  /// \brief Records the presence of a preprocessor directive.
+  /// Records the presence of a preprocessor directive.
   class PreprocessingDirective : public PreprocessedEntity {
   public:
     PreprocessingDirective(EntityKind Kind, SourceRange Range) 
@@ -144,9 +144,9 @@
     }
   };
 
-  /// \brief Record the location of a macro definition.
+  /// Record the location of a macro definition.
   class MacroDefinitionRecord : public PreprocessingDirective {
-    /// \brief The name of the macro being defined.
+    /// The name of the macro being defined.
     const IdentifierInfo *Name;
 
   public:
@@ -154,10 +154,10 @@
                                    SourceRange Range)
         : PreprocessingDirective(MacroDefinitionKind, Range), Name(Name) {}
 
-    /// \brief Retrieve the name of the macro being defined.
+    /// Retrieve the name of the macro being defined.
     const IdentifierInfo *getName() const { return Name; }
 
-    /// \brief Retrieve the location of the macro name in the definition.
+    /// Retrieve the location of the macro name in the definition.
     SourceLocation getLocation() const { return getSourceRange().getBegin(); }
     
     // Implement isa/cast/dyncast/etc.
@@ -166,9 +166,9 @@
     }
   };
   
-  /// \brief Records the location of a macro expansion.
+  /// Records the location of a macro expansion.
   class MacroExpansion : public PreprocessedEntity {
-    /// \brief The definition of this macro or the name of the macro if it is
+    /// The definition of this macro or the name of the macro if it is
     /// a builtin macro.
     llvm::PointerUnion<IdentifierInfo *, MacroDefinitionRecord *> NameOrDef;
 
@@ -181,17 +181,17 @@
         : PreprocessedEntity(MacroExpansionKind, Range), NameOrDef(Definition) {
     }
 
-    /// \brief True if it is a builtin macro.
+    /// True if it is a builtin macro.
     bool isBuiltinMacro() const { return NameOrDef.is<IdentifierInfo *>(); }
 
-    /// \brief The name of the macro being expanded.
+    /// The name of the macro being expanded.
     const IdentifierInfo *getName() const {
       if (MacroDefinitionRecord *Def = getDefinition())
         return Def->getName();
       return NameOrDef.get<IdentifierInfo *>();
     }
 
-    /// \brief The definition of the macro being expanded. May return null if
+    /// The definition of the macro being expanded. May return null if
     /// this is a builtin macro.
     MacroDefinitionRecord *getDefinition() const {
       return NameOrDef.dyn_cast<MacroDefinitionRecord *>();
@@ -203,45 +203,45 @@
     }
   };
 
-  /// \brief Record the location of an inclusion directive, such as an
+  /// Record the location of an inclusion directive, such as an
   /// \c \#include or \c \#import statement.
   class InclusionDirective : public PreprocessingDirective {
   public:
-    /// \brief The kind of inclusion directives known to the
+    /// The kind of inclusion directives known to the
     /// preprocessor.
     enum InclusionKind {
-      /// \brief An \c \#include directive.
+      /// An \c \#include directive.
       Include,
 
-      /// \brief An Objective-C \c \#import directive.
+      /// An Objective-C \c \#import directive.
       Import,
 
-      /// \brief A GNU \c \#include_next directive.
+      /// A GNU \c \#include_next directive.
       IncludeNext,
 
-      /// \brief A Clang \c \#__include_macros directive.
+      /// A Clang \c \#__include_macros directive.
       IncludeMacros
     };
 
   private:
-    /// \brief The name of the file that was included, as written in
+    /// The name of the file that was included, as written in
     /// the source.
     StringRef FileName;
 
-    /// \brief Whether the file name was in quotation marks; otherwise, it was
+    /// Whether the file name was in quotation marks; otherwise, it was
     /// in angle brackets.
     unsigned InQuotes : 1;
 
-    /// \brief The kind of inclusion directive we have.
+    /// The kind of inclusion directive we have.
     ///
     /// This is a value of type InclusionKind.
     unsigned Kind : 2;
 
-    /// \brief Whether the inclusion directive was automatically turned into
+    /// Whether the inclusion directive was automatically turned into
     /// a module import.
     unsigned ImportedModule : 1;
 
-    /// \brief The file that was included.
+    /// The file that was included.
     const FileEntry *File;
 
   public:
@@ -250,21 +250,21 @@
                        bool InQuotes, bool ImportedModule,
                        const FileEntry *File, SourceRange Range);
     
-    /// \brief Determine what kind of inclusion directive this is.
+    /// Determine what kind of inclusion directive this is.
     InclusionKind getKind() const { return static_cast<InclusionKind>(Kind); }
     
-    /// \brief Retrieve the included file name as it was written in the source.
+    /// Retrieve the included file name as it was written in the source.
     StringRef getFileName() const { return FileName; }
     
-    /// \brief Determine whether the included file name was written in quotes;
+    /// Determine whether the included file name was written in quotes;
     /// otherwise, it was written in angle brackets.
     bool wasInQuotes() const { return InQuotes; }
 
-    /// \brief Determine whether the inclusion directive was automatically
+    /// Determine whether the inclusion directive was automatically
     /// turned into a module import.
     bool importedModule() const { return ImportedModule; }
     
-    /// \brief Retrieve the file entry for the actual file that was included
+    /// Retrieve the file entry for the actual file that was included
     /// by this directive.
     const FileEntry *getFile() const { return File; }
         
@@ -274,60 +274,60 @@
     }
   };
   
-  /// \brief An abstract class that should be subclassed by any external source
+  /// An abstract class that should be subclassed by any external source
   /// of preprocessing record entries.
   class ExternalPreprocessingRecordSource {
   public:
     virtual ~ExternalPreprocessingRecordSource();
     
-    /// \brief Read a preallocated preprocessed entity from the external source.
+    /// Read a preallocated preprocessed entity from the external source.
     ///
     /// \returns null if an error occurred that prevented the preprocessed
     /// entity from being loaded.
     virtual PreprocessedEntity *ReadPreprocessedEntity(unsigned Index) = 0;
 
-    /// \brief Returns a pair of [Begin, End) indices of preallocated
+    /// Returns a pair of [Begin, End) indices of preallocated
     /// preprocessed entities that \p Range encompasses.
     virtual std::pair<unsigned, unsigned>
         findPreprocessedEntitiesInRange(SourceRange Range) = 0;
 
-    /// \brief Optionally returns true or false if the preallocated preprocessed
+    /// Optionally returns true or false if the preallocated preprocessed
     /// entity with index \p Index came from file \p FID.
     virtual Optional<bool> isPreprocessedEntityInFileID(unsigned Index,
                                                         FileID FID) {
       return None;
     }
 
-    /// \brief Read a preallocated skipped range from the external source.
+    /// Read a preallocated skipped range from the external source.
     virtual SourceRange ReadSkippedRange(unsigned Index) = 0;
   };
   
-  /// \brief A record of the steps taken while preprocessing a source file,
+  /// A record of the steps taken while preprocessing a source file,
   /// including the various preprocessing directives processed, macros 
   /// expanded, etc.
   class PreprocessingRecord : public PPCallbacks {
     SourceManager &SourceMgr;
     
-    /// \brief Allocator used to store preprocessing objects.
+    /// Allocator used to store preprocessing objects.
     llvm::BumpPtrAllocator BumpAlloc;
 
-    /// \brief The set of preprocessed entities in this record, in order they
+    /// The set of preprocessed entities in this record, in order they
     /// were seen.
     std::vector<PreprocessedEntity *> PreprocessedEntities;
     
-    /// \brief The set of preprocessed entities in this record that have been
+    /// The set of preprocessed entities in this record that have been
     /// loaded from external sources.
     ///
     /// The entries in this vector are loaded lazily from the external source,
     /// and are referenced by the iterator using negative indices.
     std::vector<PreprocessedEntity *> LoadedPreprocessedEntities;
 
-    /// \brief The set of ranges that were skipped by the preprocessor,
+    /// The set of ranges that were skipped by the preprocessor,
     std::vector<SourceRange> SkippedRanges;
 
     bool SkippedRangesAllLoaded = true;
 
-    /// \brief Global (loaded or local) ID for a preprocessed entity.
+    /// Global (loaded or local) ID for a preprocessed entity.
     /// Negative values are used to indicate preprocessed entities
     /// loaded from the external source while non-negative values are used to
     /// indicate preprocessed entities introduced by the current preprocessor.
@@ -351,60 +351,60 @@
       return isLoaded ? PPEntityID(-int(Index)-1) : PPEntityID(Index+1);
     }
 
-    /// \brief Mapping from MacroInfo structures to their definitions.
+    /// Mapping from MacroInfo structures to their definitions.
     llvm::DenseMap<const MacroInfo *, MacroDefinitionRecord *> MacroDefinitions;
 
-    /// \brief External source of preprocessed entities.
+    /// External source of preprocessed entities.
     ExternalPreprocessingRecordSource *ExternalSource = nullptr;
 
-    /// \brief Retrieve the preprocessed entity at the given ID.
+    /// Retrieve the preprocessed entity at the given ID.
     PreprocessedEntity *getPreprocessedEntity(PPEntityID PPID);
 
-    /// \brief Retrieve the loaded preprocessed entity at the given index.
+    /// Retrieve the loaded preprocessed entity at the given index.
     PreprocessedEntity *getLoadedPreprocessedEntity(unsigned Index);
     
-    /// \brief Determine the number of preprocessed entities that were
+    /// Determine the number of preprocessed entities that were
     /// loaded (or can be loaded) from an external source.
     unsigned getNumLoadedPreprocessedEntities() const {
       return LoadedPreprocessedEntities.size();
     }
 
-    /// \brief Returns a pair of [Begin, End) indices of local preprocessed
+    /// Returns a pair of [Begin, End) indices of local preprocessed
     /// entities that \p Range encompasses.
     std::pair<unsigned, unsigned>
       findLocalPreprocessedEntitiesInRange(SourceRange Range) const;
     unsigned findBeginLocalPreprocessedEntity(SourceLocation Loc) const;
     unsigned findEndLocalPreprocessedEntity(SourceLocation Loc) const;
 
-    /// \brief Allocate space for a new set of loaded preprocessed entities.
+    /// Allocate space for a new set of loaded preprocessed entities.
     ///
     /// \returns The index into the set of loaded preprocessed entities, which
     /// corresponds to the first newly-allocated entity.
     unsigned allocateLoadedEntities(unsigned NumEntities);
 
-    /// \brief Allocate space for a new set of loaded preprocessed skipped
+    /// Allocate space for a new set of loaded preprocessed skipped
     /// ranges.
     ///
     /// \returns The index into the set of loaded preprocessed ranges, which
     /// corresponds to the first newly-allocated range.
     unsigned allocateSkippedRanges(unsigned NumRanges);
 
-    /// \brief Ensures that all external skipped ranges have been loaded.
+    /// Ensures that all external skipped ranges have been loaded.
     void ensureSkippedRangesLoaded();
 
-    /// \brief Register a new macro definition.
+    /// Register a new macro definition.
     void RegisterMacroDefinition(MacroInfo *Macro, MacroDefinitionRecord *Def);
 
   public:
-    /// \brief Construct a new preprocessing record.
+    /// Construct a new preprocessing record.
     explicit PreprocessingRecord(SourceManager &SM);
 
-    /// \brief Allocate memory in the preprocessing record.
+    /// Allocate memory in the preprocessing record.
     void *Allocate(unsigned Size, unsigned Align = 8) {
       return BumpAlloc.Allocate(Size, Align);
     }
     
-    /// \brief Deallocate memory in the preprocessing record.
+    /// Deallocate memory in the preprocessing record.
     void Deallocate(void *Ptr) {}
 
     size_t getTotalMemory() const;
@@ -451,27 +451,27 @@
       PreprocessedEntity *operator->() const { return **this; }
     };
 
-    /// \brief Begin iterator for all preprocessed entities.
+    /// Begin iterator for all preprocessed entities.
     iterator begin() {
       return iterator(this, -(int)LoadedPreprocessedEntities.size());
     }
 
-    /// \brief End iterator for all preprocessed entities.
+    /// End iterator for all preprocessed entities.
     iterator end() {
       return iterator(this, PreprocessedEntities.size());
     }
 
-    /// \brief Begin iterator for local, non-loaded, preprocessed entities.
+    /// Begin iterator for local, non-loaded, preprocessed entities.
     iterator local_begin() {
       return iterator(this, 0);
     }
 
-    /// \brief End iterator for local, non-loaded, preprocessed entities.
+    /// End iterator for local, non-loaded, preprocessed entities.
     iterator local_end() {
       return iterator(this, PreprocessedEntities.size());
     }
 
-    /// \brief iterator range for the given range of loaded
+    /// iterator range for the given range of loaded
     /// preprocessed entities.
     llvm::iterator_range<iterator> getIteratorsForLoadedRange(unsigned start,
                                                               unsigned count) {
@@ -482,14 +482,14 @@
           iterator(this, int(end) - LoadedPreprocessedEntities.size()));
     }
 
-    /// \brief Returns a range of preprocessed entities that source range \p R
+    /// Returns a range of preprocessed entities that source range \p R
     /// encompasses.
     ///
     /// \param R the range to look for preprocessed entities.
     llvm::iterator_range<iterator>
     getPreprocessedEntitiesInRange(SourceRange R);
 
-    /// \brief Returns true if the preprocessed entity that \p PPEI iterator
+    /// Returns true if the preprocessed entity that \p PPEI iterator
     /// points to is coming from the file \p FID.
     ///
     /// Can be used to avoid implicit deserializations of preallocated
@@ -498,22 +498,22 @@
     /// \see getPreprocessedEntitiesInRange.
     bool isEntityInFileID(iterator PPEI, FileID FID);
 
-    /// \brief Add a new preprocessed entity to this record.
+    /// Add a new preprocessed entity to this record.
     PPEntityID addPreprocessedEntity(PreprocessedEntity *Entity);
 
-    /// \brief Set the external source for preprocessed entities.
+    /// Set the external source for preprocessed entities.
     void SetExternalSource(ExternalPreprocessingRecordSource &Source);
 
-    /// \brief Retrieve the external source for preprocessed entities.
+    /// Retrieve the external source for preprocessed entities.
     ExternalPreprocessingRecordSource *getExternalSource() const {
       return ExternalSource;
     }
 
-    /// \brief Retrieve the macro definition that corresponds to the given
+    /// Retrieve the macro definition that corresponds to the given
     /// \c MacroInfo.
     MacroDefinitionRecord *findMacroDefinition(const MacroInfo *MI);
 
-    /// \brief Retrieve all ranges that got skipped while preprocessing.
+    /// Retrieve all ranges that got skipped while preprocessing.
     const std::vector<SourceRange> &getSkippedRanges() {
       ensureSkippedRangesLoaded();
       return SkippedRanges;
@@ -539,7 +539,7 @@
     void Ifndef(SourceLocation Loc, const Token &MacroNameTok,
                 const MacroDefinition &MD) override;
 
-    /// \brief Hook called whenever the 'defined' operator is seen.
+    /// Hook called whenever the 'defined' operator is seen.
     void Defined(const Token &MacroNameTok, const MacroDefinition &MD,
                  SourceRange Range) override;
 
@@ -549,7 +549,7 @@
     void addMacroExpansion(const Token &Id, const MacroInfo *MI,
                            SourceRange Range);
 
-    /// \brief Cached result of the last \see getPreprocessedEntitiesInRange
+    /// Cached result of the last \see getPreprocessedEntitiesInRange
     /// query.
     struct {
       SourceRange Range;
Index: cfe/trunk/include/clang/Lex/Preprocessor.h
===================================================================
--- cfe/trunk/include/clang/Lex/Preprocessor.h
+++ cfe/trunk/include/clang/Lex/Preprocessor.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the clang::Preprocessor interface.
+/// Defines the clang::Preprocessor interface.
 //
 //===----------------------------------------------------------------------===//
 
@@ -83,7 +83,7 @@
 class ScratchBuffer;
 class TargetInfo;
 
-/// \brief Stores token information for comparing actual tokens with
+/// Stores token information for comparing actual tokens with
 /// predefined values.  Only handles simple tokens and identifiers.
 class TokenValue {
   tok::TokenKind Kind;
@@ -106,7 +106,7 @@
   }
 };
 
-/// \brief Context in which macro name is used.
+/// Context in which macro name is used.
 enum MacroUse {
   // other than #define or #undef
   MU_Other  = 0,
@@ -118,7 +118,7 @@
   MU_Undef  = 2
 };
 
-/// \brief Engages in a tight little dance with the lexer to efficiently
+/// Engages in a tight little dance with the lexer to efficiently
 /// preprocess tokens.
 ///
 /// Lexers know only about tokens within a single source file, and don't
@@ -140,7 +140,7 @@
   HeaderSearch      &HeaderInfo;
   ModuleLoader      &TheModuleLoader;
 
-  /// \brief External source of macros.
+  /// External source of macros.
   ExternalPreprocessorSource *ExternalSource;
 
   /// An optional PTHManager object used for getting tokens from
@@ -186,7 +186,7 @@
   unsigned CounterValue = 0;
 
   enum {
-    /// \brief Maximum depth of \#includes.
+    /// Maximum depth of \#includes.
     MaxAllowedIncludeStackDepth = 200
   };
 
@@ -210,26 +210,26 @@
 
   class ResetMacroExpansionHelper;
 
-  /// \brief Whether we have already loaded macros from the external source.
+  /// Whether we have already loaded macros from the external source.
   mutable bool ReadMacrosFromExternalSource : 1;
 
-  /// \brief True if pragmas are enabled.
+  /// True if pragmas are enabled.
   bool PragmasEnabled : 1;
 
-  /// \brief True if the current build action is a preprocessing action.
+  /// True if the current build action is a preprocessing action.
   bool PreprocessedOutput : 1;
 
-  /// \brief True if we are currently preprocessing a #if or #elif directive
+  /// True if we are currently preprocessing a #if or #elif directive
   bool ParsingIfOrElifDirective;
 
-  /// \brief True if we are pre-expanding macro arguments.
+  /// True if we are pre-expanding macro arguments.
   bool InMacroArgPreExpansion;
 
-  /// \brief Mapping/lookup information for all identifiers in
+  /// Mapping/lookup information for all identifiers in
   /// the program, including program keywords.
   mutable IdentifierTable Identifiers;
 
-  /// \brief This table contains all the selectors in the program.
+  /// This table contains all the selectors in the program.
   ///
   /// Unlike IdentifierTable above, this table *isn't* populated by the
   /// preprocessor. It is declared/expanded here because its role/lifetime is
@@ -240,82 +240,82 @@
   /// the lifetime of the preprocessor.
   SelectorTable Selectors;
 
-  /// \brief Information about builtins.
+  /// Information about builtins.
   Builtin::Context BuiltinInfo;
 
-  /// \brief Tracks all of the pragmas that the client registered
+  /// Tracks all of the pragmas that the client registered
   /// with this preprocessor.
   std::unique_ptr<PragmaNamespace> PragmaHandlers;
 
-  /// \brief Pragma handlers of the original source is stored here during the
+  /// Pragma handlers of the original source is stored here during the
   /// parsing of a model file.
   std::unique_ptr<PragmaNamespace> PragmaHandlersBackup;
 
-  /// \brief Tracks all of the comment handlers that the client registered
+  /// Tracks all of the comment handlers that the client registered
   /// with this preprocessor.
   std::vector<CommentHandler *> CommentHandlers;
 
-  /// \brief True if we want to ignore EOF token and continue later on (thus 
+  /// True if we want to ignore EOF token and continue later on (thus 
   /// avoid tearing the Lexer and etc. down).
   bool IncrementalProcessing = false;
 
   /// The kind of translation unit we are processing.
   TranslationUnitKind TUKind;
 
-  /// \brief The code-completion handler.
+  /// The code-completion handler.
   CodeCompletionHandler *CodeComplete = nullptr;
 
-  /// \brief The file that we're performing code-completion for, if any.
+  /// The file that we're performing code-completion for, if any.
   const FileEntry *CodeCompletionFile = nullptr;
 
-  /// \brief The offset in file for the code-completion point.
+  /// The offset in file for the code-completion point.
   unsigned CodeCompletionOffset = 0;
 
-  /// \brief The location for the code-completion point. This gets instantiated
+  /// The location for the code-completion point. This gets instantiated
   /// when the CodeCompletionFile gets \#include'ed for preprocessing.
   SourceLocation CodeCompletionLoc;
 
-  /// \brief The start location for the file of the code-completion point.
+  /// The start location for the file of the code-completion point.
   ///
   /// This gets instantiated when the CodeCompletionFile gets \#include'ed
   /// for preprocessing.
   SourceLocation CodeCompletionFileLoc;
 
-  /// \brief The source location of the \c import contextual keyword we just 
+  /// The source location of the \c import contextual keyword we just 
   /// lexed, if any.
   SourceLocation ModuleImportLoc;
 
-  /// \brief The module import path that we're currently processing.
+  /// The module import path that we're currently processing.
   SmallVector<std::pair<IdentifierInfo *, SourceLocation>, 2> ModuleImportPath;
 
-  /// \brief Whether the last token we lexed was an '@'.
+  /// Whether the last token we lexed was an '@'.
   bool LastTokenWasAt = false;
 
-  /// \brief Whether the module import expects an identifier next. Otherwise,
+  /// Whether the module import expects an identifier next. Otherwise,
   /// it expects a '.' or ';'.
   bool ModuleImportExpectsIdentifier = false;
   
-  /// \brief The source location of the currently-active
+  /// The source location of the currently-active
   /// \#pragma clang arc_cf_code_audited begin.
   SourceLocation PragmaARCCFCodeAuditedLoc;
 
-  /// \brief The source location of the currently-active
+  /// The source location of the currently-active
   /// \#pragma clang assume_nonnull begin.
   SourceLocation PragmaAssumeNonNullLoc;
 
-  /// \brief True if we hit the code-completion point.
+  /// True if we hit the code-completion point.
   bool CodeCompletionReached = false;
 
-  /// \brief The code completion token containing the information
+  /// The code completion token containing the information
   /// on the stem that is to be code completed.
   IdentifierInfo *CodeCompletionII = nullptr;
 
-  /// \brief The directory that the main file should be considered to occupy,
+  /// The directory that the main file should be considered to occupy,
   /// if it does not correspond to a real file (as happens when building a
   /// module).
   const DirectoryEntry *MainFileDir = nullptr;
 
-  /// \brief The number of bytes that we will initially skip when entering the
+  /// The number of bytes that we will initially skip when entering the
   /// main file, along with a flag that indicates whether skipping this number
   /// of bytes will place the lexer at the start of a line.
   ///
@@ -386,37 +386,37 @@
     State ConditionalStackState = Off;
   } PreambleConditionalStack;
 
-  /// \brief The current top of the stack that we're lexing from if
+  /// The current top of the stack that we're lexing from if
   /// not expanding a macro and we are lexing directly from source code.
   ///
   /// Only one of CurLexer, CurPTHLexer, or CurTokenLexer will be non-null.
   std::unique_ptr<Lexer> CurLexer;
 
-  /// \brief The current top of stack that we're lexing from if
+  /// The current top of stack that we're lexing from if
   /// not expanding from a macro and we are lexing from a PTH cache.
   ///
   /// Only one of CurLexer, CurPTHLexer, or CurTokenLexer will be non-null.
   std::unique_ptr<PTHLexer> CurPTHLexer;
 
-  /// \brief The current top of the stack what we're lexing from
+  /// The current top of the stack what we're lexing from
   /// if not expanding a macro.
   ///
   /// This is an alias for either CurLexer or  CurPTHLexer.
   PreprocessorLexer *CurPPLexer = nullptr;
 
-  /// \brief Used to find the current FileEntry, if CurLexer is non-null
+  /// Used to find the current FileEntry, if CurLexer is non-null
   /// and if applicable.
   ///
   /// This allows us to implement \#include_next and find directory-specific
   /// properties.
   const DirectoryLookup *CurDirLookup = nullptr;
 
-  /// \brief The current macro we are expanding, if we are expanding a macro.
+  /// The current macro we are expanding, if we are expanding a macro.
   ///
   /// One of CurLexer and CurTokenLexer must be null.
   std::unique_ptr<TokenLexer> CurTokenLexer;
 
-  /// \brief The kind of lexer we're currently working with.
+  /// The kind of lexer we're currently working with.
   enum CurLexerKind {
     CLK_Lexer,
     CLK_PTHLexer,
@@ -425,11 +425,11 @@
     CLK_LexAfterModuleImport
   } CurLexerKind = CLK_Lexer;
 
-  /// \brief If the current lexer is for a submodule that is being built, this
+  /// If the current lexer is for a submodule that is being built, this
   /// is that submodule.
   Module *CurLexerSubmodule = nullptr;
 
-  /// \brief Keeps track of the stack of files currently
+  /// Keeps track of the stack of files currently
   /// \#included, and macros currently being expanded from, not counting
   /// CurLexer/CurTokenLexer.
   struct IncludeStackInfo {
@@ -458,7 +458,7 @@
   };
   std::vector<IncludeStackInfo> IncludeMacroStack;
 
-  /// \brief Actions invoked when some preprocessor activity is
+  /// Actions invoked when some preprocessor activity is
   /// encountered (e.g. a file is \#included, etc).
   std::unique_ptr<PPCallbacks> Callbacks;
 
@@ -617,7 +617,7 @@
 
   struct SubmoduleState;
 
-  /// \brief Information about a submodule that we're currently building.
+  /// Information about a submodule that we're currently building.
   struct BuildingSubmoduleInfo {
     /// The module that we are building.
     Module *M;
@@ -643,7 +643,7 @@
   };
   SmallVector<BuildingSubmoduleInfo, 8> BuildingSubmoduleStack;
 
-  /// \brief Information about a submodule's preprocessor state.
+  /// Information about a submodule's preprocessor state.
   struct SubmoduleState {
     /// The macros for the submodule.
     MacroMap Macros;
@@ -674,7 +674,7 @@
   llvm::DenseMap<const IdentifierInfo *, llvm::TinyPtrVector<ModuleMacro *>>
       LeafModuleMacros;
 
-  /// \brief Macros that we want to warn because they are not used at the end
+  /// Macros that we want to warn because they are not used at the end
   /// of the translation unit.
   ///
   /// We store just their SourceLocations instead of
@@ -686,7 +686,7 @@
   using WarnUnusedMacroLocsTy = llvm::SmallPtrSet<SourceLocation, 32>;
   WarnUnusedMacroLocsTy WarnUnusedMacroLocs;
 
-  /// \brief A "freelist" of MacroArg objects that can be
+  /// A "freelist" of MacroArg objects that can be
   /// reused for quick allocation.
   MacroArgs *MacroArgCache = nullptr;
 
@@ -713,21 +713,21 @@
   unsigned NumFastTokenPaste = 0;
   unsigned NumSkipped = 0;
 
-  /// \brief The predefined macros that preprocessor should use from the
+  /// The predefined macros that preprocessor should use from the
   /// command line etc.
   std::string Predefines;
 
-  /// \brief The file ID for the preprocessor predefines.
+  /// The file ID for the preprocessor predefines.
   FileID PredefinesFileID;
 
   /// \{
-  /// \brief Cache of macro expanders to reduce malloc traffic.
+  /// Cache of macro expanders to reduce malloc traffic.
   enum { TokenLexerCacheSize = 8 };
   unsigned NumCachedTokenLexers;
   std::unique_ptr<TokenLexer> TokenLexerCache[TokenLexerCacheSize];
   /// \}
 
-  /// \brief Keeps macro expanded tokens for TokenLexers.
+  /// Keeps macro expanded tokens for TokenLexers.
   //
   /// Works like a stack; a TokenLexer adds the macro expanded tokens that is
   /// going to lex in the cache and when it finishes the tokens are removed
@@ -735,7 +735,7 @@
   SmallVector<Token, 16> MacroExpandedTokens;
   std::vector<std::pair<TokenLexer *, size_t>> MacroExpandingLexersStack;
 
-  /// \brief A record of the macro definitions and expansions that
+  /// A record of the macro definitions and expansions that
   /// occurred during preprocessing.
   ///
   /// This is an optional side structure that can be enabled with
@@ -745,18 +745,18 @@
   /// Cached tokens state.
   using CachedTokensTy = SmallVector<Token, 1>;
 
-  /// \brief Cached tokens are stored here when we do backtracking or
+  /// Cached tokens are stored here when we do backtracking or
   /// lookahead. They are "lexed" by the CachingLex() method.
   CachedTokensTy CachedTokens;
 
-  /// \brief The position of the cached token that CachingLex() should
+  /// The position of the cached token that CachingLex() should
   /// "lex" next.
   ///
   /// If it points beyond the CachedTokens vector, it means that a normal
   /// Lex() should be invoked.
   CachedTokensTy::size_type CachedLexPos = 0;
 
-  /// \brief Stack of backtrack positions, allowing nested backtracks.
+  /// Stack of backtrack positions, allowing nested backtracks.
   ///
   /// The EnableBacktrackAtThisPos() method pushes a position to
   /// indicate where CachedLexPos should be set when the BackTrack() method is
@@ -785,7 +785,7 @@
 
   ~Preprocessor();
 
-  /// \brief Initialize the preprocessor using information about the target.
+  /// Initialize the preprocessor using information about the target.
   ///
   /// \param Target is owned by the caller and must remain valid for the
   /// lifetime of the preprocessor.
@@ -794,7 +794,7 @@
   void Initialize(const TargetInfo &Target,
                   const TargetInfo *AuxTarget = nullptr);
 
-  /// \brief Initialize the preprocessor to parse a model file
+  /// Initialize the preprocessor to parse a model file
   ///
   /// To parse model files the preprocessor of the original source is reused to
   /// preserver the identifier table. However to avoid some duplicate
@@ -802,10 +802,10 @@
   /// to parse model files. This method does that cleanup.
   void InitializeForModelFile();
 
-  /// \brief Cleanup after model file parsing
+  /// Cleanup after model file parsing
   void FinalizeForModelFile();
 
-  /// \brief Retrieve the preprocessor options used to initialize this
+  /// Retrieve the preprocessor options used to initialize this
   /// preprocessor.
   PreprocessorOptions &getPreprocessorOpts() const { return *PPOpts; }
   
@@ -838,19 +838,19 @@
     return ExternalSource;
   }
 
-  /// \brief Retrieve the module loader associated with this preprocessor.
+  /// Retrieve the module loader associated with this preprocessor.
   ModuleLoader &getModuleLoader() const { return TheModuleLoader; }
 
   bool hadModuleLoaderFatalFailure() const {
     return TheModuleLoader.HadFatalFailure;
   }
 
-  /// \brief True if we are currently preprocessing a #if or #elif directive
+  /// True if we are currently preprocessing a #if or #elif directive
   bool isParsingIfOrElifDirective() const { 
     return ParsingIfOrElifDirective;
   }
 
-  /// \brief Control whether the preprocessor retains comments in output.
+  /// Control whether the preprocessor retains comments in output.
   void SetCommentRetentionState(bool KeepComments, bool KeepMacroComments) {
     this->KeepComments = KeepComments | KeepMacroComments;
     this->KeepMacroComments = KeepMacroComments;
@@ -879,32 +879,32 @@
   /// false if it is producing tokens to be consumed by Parse and Sema.
   bool isPreprocessedOutput() const { return PreprocessedOutput; }
 
-  /// \brief Return true if we are lexing directly from the specified lexer.
+  /// Return true if we are lexing directly from the specified lexer.
   bool isCurrentLexer(const PreprocessorLexer *L) const {
     return CurPPLexer == L;
   }
 
-  /// \brief Return the current lexer being lexed from.
+  /// Return the current lexer being lexed from.
   ///
   /// Note that this ignores any potentially active macro expansions and _Pragma
   /// expansions going on at the time.
   PreprocessorLexer *getCurrentLexer() const { return CurPPLexer; }
 
-  /// \brief Return the current file lexer being lexed from.
+  /// Return the current file lexer being lexed from.
   ///
   /// Note that this ignores any potentially active macro expansions and _Pragma
   /// expansions going on at the time.
   PreprocessorLexer *getCurrentFileLexer() const;
 
-  /// \brief Return the submodule owning the file being lexed. This may not be
+  /// Return the submodule owning the file being lexed. This may not be
   /// the current module if we have changed modules since entering the file.
   Module *getCurrentLexerSubmodule() const { return CurLexerSubmodule; }
 
-  /// \brief Returns the FileID for the preprocessor predefines.
+  /// Returns the FileID for the preprocessor predefines.
   FileID getPredefinesFileID() const { return PredefinesFileID; }
 
   /// \{
-  /// \brief Accessors for preprocessor callbacks.
+  /// Accessors for preprocessor callbacks.
   ///
   /// Note that this class takes ownership of any PPCallbacks object given to
   /// it.
@@ -925,7 +925,7 @@
            (!getLangOpts().Modules || (bool)getMacroDefinition(II));
   }
 
-  /// \brief Determine whether II is defined as a macro within the module M,
+  /// Determine whether II is defined as a macro within the module M,
   /// if that is a module that we've already preprocessed. Does not check for
   /// macros imported into M.
   bool isMacroDefinedInLocalModule(const IdentifierInfo *II, Module *M) {
@@ -969,7 +969,7 @@
                            S.isAmbiguous(*this, II));
   }
 
-  /// \brief Given an identifier, return its latest non-imported MacroDirective
+  /// Given an identifier, return its latest non-imported MacroDirective
   /// if it is \#define'd and not \#undef'd, or null if it isn't \#define'd.
   MacroDirective *getLocalMacroDirective(const IdentifierInfo *II) const {
     if (!II->hasMacroDefinition())
@@ -994,14 +994,14 @@
     return nullptr;
   }
 
-  /// \brief Given an identifier, return the latest non-imported macro
+  /// Given an identifier, return the latest non-imported macro
   /// directive for that identifier.
   ///
   /// One can iterate over all previous macro directives from the most recent
   /// one.
   MacroDirective *getLocalMacroDirectiveHistory(const IdentifierInfo *II) const;
 
-  /// \brief Add a directive to the macro directive history for this identifier.
+  /// Add a directive to the macro directive history for this identifier.
   void appendMacroDirective(IdentifierInfo *II, MacroDirective *MD);
   DefMacroDirective *appendDefMacroDirective(IdentifierInfo *II, MacroInfo *MI,
                                              SourceLocation Loc) {
@@ -1014,16 +1014,16 @@
     return appendDefMacroDirective(II, MI, MI->getDefinitionLoc());
   }
 
-  /// \brief Set a MacroDirective that was loaded from a PCH file.
+  /// Set a MacroDirective that was loaded from a PCH file.
   void setLoadedMacroDirective(IdentifierInfo *II, MacroDirective *ED,
                                MacroDirective *MD);
 
-  /// \brief Register an exported macro for a module and identifier.
+  /// Register an exported macro for a module and identifier.
   ModuleMacro *addModuleMacro(Module *Mod, IdentifierInfo *II, MacroInfo *Macro,
                               ArrayRef<ModuleMacro *> Overrides, bool &IsNew);
   ModuleMacro *getModuleMacro(Module *Mod, IdentifierInfo *II);
 
-  /// \brief Get the list of leaf (non-overridden) module macros for a name.
+  /// Get the list of leaf (non-overridden) module macros for a name.
   ArrayRef<ModuleMacro*> getLeafModuleMacros(const IdentifierInfo *II) const {
     if (II->isOutOfDate())
       updateOutOfDateIdentifier(const_cast<IdentifierInfo&>(*II));
@@ -1051,7 +1051,7 @@
 
   /// \}
 
-  /// \brief Return the name of the macro defined before \p Loc that has
+  /// Return the name of the macro defined before \p Loc that has
   /// spelling \p Tokens.  If there are multiple macros with same spelling,
   /// return the last one defined.
   StringRef getLastMacroWithSpelling(SourceLocation Loc,
@@ -1059,7 +1059,7 @@
 
   const std::string &getPredefines() const { return Predefines; }
 
-  /// \brief Set the predefines for this Preprocessor.
+  /// Set the predefines for this Preprocessor.
   ///
   /// These predefines are automatically injected when parsing the main file.
   void setPredefines(const char *P) { Predefines = P; }
@@ -1071,7 +1071,7 @@
     return &Identifiers.get(Name);
   }
 
-  /// \brief Add the specified pragma handler to this preprocessor.
+  /// Add the specified pragma handler to this preprocessor.
   ///
   /// If \p Namespace is non-null, then it is a token required to exist on the
   /// pragma line before the pragma string starts, e.g. "STDC" or "GCC".
@@ -1080,7 +1080,7 @@
     AddPragmaHandler(StringRef(), Handler);
   }
 
-  /// \brief Remove the specific pragma handler from this preprocessor.
+  /// Remove the specific pragma handler from this preprocessor.
   ///
   /// If \p Namespace is non-null, then it should be the namespace that
   /// \p Handler was added to. It is an error to remove a handler that
@@ -1093,68 +1093,68 @@
   /// Install empty handlers for all pragmas (making them ignored).
   void IgnorePragmas();
 
-  /// \brief Add the specified comment handler to the preprocessor.
+  /// Add the specified comment handler to the preprocessor.
   void addCommentHandler(CommentHandler *Handler);
 
-  /// \brief Remove the specified comment handler.
+  /// Remove the specified comment handler.
   ///
   /// It is an error to remove a handler that has not been registered.
   void removeCommentHandler(CommentHandler *Handler);
 
-  /// \brief Set the code completion handler to the given object.
+  /// Set the code completion handler to the given object.
   void setCodeCompletionHandler(CodeCompletionHandler &Handler) {
     CodeComplete = &Handler;
   }
 
-  /// \brief Retrieve the current code-completion handler.
+  /// Retrieve the current code-completion handler.
   CodeCompletionHandler *getCodeCompletionHandler() const {
     return CodeComplete;
   }
 
-  /// \brief Clear out the code completion handler.
+  /// Clear out the code completion handler.
   void clearCodeCompletionHandler() {
     CodeComplete = nullptr;
   }
 
-  /// \brief Hook used by the lexer to invoke the "natural language" code
+  /// Hook used by the lexer to invoke the "natural language" code
   /// completion point.
   void CodeCompleteNaturalLanguage();
 
-  /// \brief Set the code completion token for filtering purposes.
+  /// Set the code completion token for filtering purposes.
   void setCodeCompletionIdentifierInfo(IdentifierInfo *Filter) {
     CodeCompletionII = Filter;
   }
 
-  /// \brief Get the code completion token for filtering purposes.
+  /// Get the code completion token for filtering purposes.
   StringRef getCodeCompletionFilter() {
     if (CodeCompletionII)
       return CodeCompletionII->getName();
     return {};
   }
 
-  /// \brief Retrieve the preprocessing record, or NULL if there is no
+  /// Retrieve the preprocessing record, or NULL if there is no
   /// preprocessing record.
   PreprocessingRecord *getPreprocessingRecord() const { return Record; }
 
-  /// \brief Create a new preprocessing record, which will keep track of
+  /// Create a new preprocessing record, which will keep track of
   /// all macro expansions, macro definitions, etc.
   void createPreprocessingRecord();
 
-  /// \brief Enter the specified FileID as the main source file,
+  /// Enter the specified FileID as the main source file,
   /// which implicitly adds the builtin defines etc.
   void EnterMainSourceFile();
 
-  /// \brief Inform the preprocessor callbacks that processing is complete.
+  /// Inform the preprocessor callbacks that processing is complete.
   void EndSourceFile();
 
-  /// \brief Add a source file to the top of the include stack and
+  /// Add a source file to the top of the include stack and
   /// start lexing tokens from it instead of the current buffer.
   ///
   /// Emits a diagnostic, doesn't enter the file, and returns true on error.
   bool EnterSourceFile(FileID CurFileID, const DirectoryLookup *Dir,
                        SourceLocation Loc);
 
-  /// \brief Add a Macro to the top of the include stack and start lexing
+  /// Add a Macro to the top of the include stack and start lexing
   /// tokens from it instead of the current buffer.
   ///
   /// \param Args specifies the tokens input to a function-like macro.
@@ -1163,7 +1163,7 @@
   void EnterMacro(Token &Identifier, SourceLocation ILEnd, MacroInfo *Macro,
                   MacroArgs *Args);
 
-  /// \brief Add a "macro" context to the top of the include stack,
+  /// Add a "macro" context to the top of the include stack,
   /// which will cause the lexer to start returning the specified tokens.
   ///
   /// If \p DisableMacroExpansion is true, tokens lexed from the token stream
@@ -1188,7 +1188,7 @@
     EnterTokenStream(Toks.data(), Toks.size(), DisableMacroExpansion, false);
   }
 
-  /// \brief Pop the current lexer/macro exp off the top of the lexer stack.
+  /// Pop the current lexer/macro exp off the top of the lexer stack.
   ///
   /// This should only be used in situations where the current state of the
   /// top-of-stack lexer is known.
@@ -1209,7 +1209,7 @@
   ///
   void EnableBacktrackAtThisPos();
 
-  /// \brief Disable the last EnableBacktrackAtThisPos call.
+  /// Disable the last EnableBacktrackAtThisPos call.
   void CommitBacktrackedTokens();
 
   struct CachedTokensRange {
@@ -1217,28 +1217,28 @@
   };
 
 private:
-  /// \brief A range of cached tokens that should be erased after lexing
+  /// A range of cached tokens that should be erased after lexing
   /// when backtracking requires the erasure of such cached tokens.
   Optional<CachedTokensRange> CachedTokenRangeToErase;
 
 public:
-  /// \brief Returns the range of cached tokens that were lexed since
+  /// Returns the range of cached tokens that were lexed since
   /// EnableBacktrackAtThisPos() was previously called.
   CachedTokensRange LastCachedTokenRange();
 
-  /// \brief Erase the range of cached tokens that were lexed since
+  /// Erase the range of cached tokens that were lexed since
   /// EnableBacktrackAtThisPos() was previously called.
   void EraseCachedTokens(CachedTokensRange TokenRange);
 
-  /// \brief Make Preprocessor re-lex the tokens that were lexed since
+  /// Make Preprocessor re-lex the tokens that were lexed since
   /// EnableBacktrackAtThisPos() was previously called.
   void Backtrack();
 
-  /// \brief True if EnableBacktrackAtThisPos() was called and
+  /// True if EnableBacktrackAtThisPos() was called and
   /// caching of tokens is on.
   bool isBacktrackEnabled() const { return !BacktrackPositions.empty(); }
 
-  /// \brief Lex the next token for this preprocessor.
+  /// Lex the next token for this preprocessor.
   void Lex(Token &Result);
 
   void LexAfterModuleImport(Token &Result);
@@ -1249,7 +1249,7 @@
     return CurSubmoduleState->VisibleModules.getImportLoc(M);
   }
 
-  /// \brief Lex a string literal, which may be the concatenation of multiple
+  /// Lex a string literal, which may be the concatenation of multiple
   /// string literals and may even come from macro expansion.
   /// \returns true on success, false if a error diagnostic has been generated.
   bool LexStringLiteral(Token &Result, std::string &String,
@@ -1262,13 +1262,13 @@
                                   AllowMacroExpansion);
   }
 
-  /// \brief Complete the lexing of a string literal where the first token has
+  /// Complete the lexing of a string literal where the first token has
   /// already been lexed (see LexStringLiteral).
   bool FinishLexStringLiteral(Token &Result, std::string &String,
                               const char *DiagnosticTag,
                               bool AllowMacroExpansion);
 
-  /// \brief Lex a token.  If it's a comment, keep lexing until we get
+  /// Lex a token.  If it's a comment, keep lexing until we get
   /// something not a comment.
   ///
   /// This is useful in -E -C mode where comments would foul up preprocessor
@@ -1279,7 +1279,7 @@
     while (Result.getKind() == tok::comment);
   }
 
-  /// \brief Just like Lex, but disables macro expansion of identifier tokens.
+  /// Just like Lex, but disables macro expansion of identifier tokens.
   void LexUnexpandedToken(Token &Result) {
     // Disable macro expansion.
     bool OldVal = DisableMacroExpansion;
@@ -1291,7 +1291,7 @@
     DisableMacroExpansion = OldVal;
   }
 
-  /// \brief Like LexNonComment, but this disables macro expansion of
+  /// Like LexNonComment, but this disables macro expansion of
   /// identifier tokens.
   void LexUnexpandedNonComment(Token &Result) {
     do
@@ -1299,7 +1299,7 @@
     while (Result.getKind() == tok::comment);
   }
 
-  /// \brief Parses a simple integer literal to get its numeric value.  Floating
+  /// Parses a simple integer literal to get its numeric value.  Floating
   /// point literals and user defined literals are rejected.  Used primarily to
   /// handle pragmas that accept integer arguments.
   bool parseSimpleIntegerLiteral(Token &Tok, uint64_t &Value);
@@ -1310,7 +1310,7 @@
     MacroExpansionInDirectivesOverride = true;
   }
 
-  /// \brief Peeks ahead N tokens and returns that token without consuming any
+  /// Peeks ahead N tokens and returns that token without consuming any
   /// tokens.
   ///
   /// LookAhead(0) returns the next token that would be returned by Lex(),
@@ -1324,7 +1324,7 @@
       return PeekAhead(N+1);
   }
 
-  /// \brief When backtracking is enabled and tokens are cached,
+  /// When backtracking is enabled and tokens are cached,
   /// this allows to revert a specific number of tokens.
   ///
   /// Note that the number of tokens being reverted should be up to the last
@@ -1339,7 +1339,7 @@
     CachedLexPos -= N;
   }
 
-  /// \brief Enters a token in the token stream to be lexed next.
+  /// Enters a token in the token stream to be lexed next.
   ///
   /// If BackTrack() is called afterwards, the token will remain at the
   /// insertion point.
@@ -1369,18 +1369,18 @@
     return CachedTokens[CachedLexPos-1].getLastLoc();
   }
 
-  /// \brief Whether \p Tok is the most recent token (`CachedLexPos - 1`) in
+  /// Whether \p Tok is the most recent token (`CachedLexPos - 1`) in
   /// CachedTokens.
   bool IsPreviousCachedToken(const Token &Tok) const;
 
-  /// \brief Replace token in `CachedLexPos - 1` in CachedTokens by the tokens
+  /// Replace token in `CachedLexPos - 1` in CachedTokens by the tokens
   /// in \p NewToks.
   ///
   /// Useful when a token needs to be split in smaller ones and CachedTokens
   /// most recent token must to be updated to reflect that.
   void ReplacePreviousCachedToken(ArrayRef<Token> NewToks);
 
-  /// \brief Replace the last token with an annotation token.
+  /// Replace the last token with an annotation token.
   ///
   /// Like AnnotateCachedTokens(), this routine replaces an
   /// already-parsed (and resolved) token with an annotation
@@ -1406,19 +1406,19 @@
       CachedTokens[CachedLexPos-1] = Tok;
   }
 
-  /// \brief Recompute the current lexer kind based on the CurLexer/CurPTHLexer/
+  /// Recompute the current lexer kind based on the CurLexer/CurPTHLexer/
   /// CurTokenLexer pointers.
   void recomputeCurLexerKind();
 
-  /// \brief Returns true if incremental processing is enabled
+  /// Returns true if incremental processing is enabled
   bool isIncrementalProcessingEnabled() const { return IncrementalProcessing; }
 
-  /// \brief Enables the incremental processing
+  /// Enables the incremental processing
   void enableIncrementalProcessing(bool value = true) {
     IncrementalProcessing = value;
   }
   
-  /// \brief Specify the point at which code-completion will be performed.
+  /// Specify the point at which code-completion will be performed.
   ///
   /// \param File the file in which code completion should occur. If
   /// this file is included multiple times, code-completion will
@@ -1435,16 +1435,16 @@
   bool SetCodeCompletionPoint(const FileEntry *File,
                               unsigned Line, unsigned Column);
 
-  /// \brief Determine if we are performing code completion.
+  /// Determine if we are performing code completion.
   bool isCodeCompletionEnabled() const { return CodeCompletionFile != nullptr; }
 
-  /// \brief Returns the location of the code-completion point.
+  /// Returns the location of the code-completion point.
   ///
   /// Returns an invalid location if code-completion is not enabled or the file
   /// containing the code-completion point has not been lexed yet.
   SourceLocation getCodeCompletionLoc() const { return CodeCompletionLoc; }
 
-  /// \brief Returns the start location of the file of code-completion point.
+  /// Returns the start location of the file of code-completion point.
   ///
   /// Returns an invalid location if code-completion is not enabled or the file
   /// containing the code-completion point has not been lexed yet.
@@ -1452,11 +1452,11 @@
     return CodeCompletionFileLoc;
   }
 
-  /// \brief Returns true if code-completion is enabled and we have hit the
+  /// Returns true if code-completion is enabled and we have hit the
   /// code-completion point.
   bool isCodeCompletionReached() const { return CodeCompletionReached; }
 
-  /// \brief Note that we hit the code-completion point.
+  /// Note that we hit the code-completion point.
   void setCodeCompletionReached() {
     assert(isCodeCompletionEnabled() && "Code-completion not enabled!");
     CodeCompletionReached = true;
@@ -1464,7 +1464,7 @@
     getDiagnostics().setSuppressAllDiagnostics(true);
   }
 
-  /// \brief The location of the currently-active \#pragma clang
+  /// The location of the currently-active \#pragma clang
   /// arc_cf_code_audited begin.
   ///
   /// Returns an invalid location if there is no such pragma active.
@@ -1472,13 +1472,13 @@
     return PragmaARCCFCodeAuditedLoc;
   }
 
-  /// \brief Set the location of the currently-active \#pragma clang
+  /// Set the location of the currently-active \#pragma clang
   /// arc_cf_code_audited begin.  An invalid location ends the pragma.
   void setPragmaARCCFCodeAuditedLoc(SourceLocation Loc) {
     PragmaARCCFCodeAuditedLoc = Loc;
   }
 
-  /// \brief The location of the currently-active \#pragma clang
+  /// The location of the currently-active \#pragma clang
   /// assume_nonnull begin.
   ///
   /// Returns an invalid location if there is no such pragma active.
@@ -1486,19 +1486,19 @@
     return PragmaAssumeNonNullLoc;
   }
 
-  /// \brief Set the location of the currently-active \#pragma clang
+  /// Set the location of the currently-active \#pragma clang
   /// assume_nonnull begin.  An invalid location ends the pragma.
   void setPragmaAssumeNonNullLoc(SourceLocation Loc) {
     PragmaAssumeNonNullLoc = Loc;
   }
 
-  /// \brief Set the directory in which the main file should be considered
+  /// Set the directory in which the main file should be considered
   /// to have been found, if it is not a real file.
   void setMainFileDir(const DirectoryEntry *Dir) {
     MainFileDir = Dir;
   }
 
-  /// \brief Instruct the preprocessor to skip part of the main source file.
+  /// Instruct the preprocessor to skip part of the main source file.
   ///
   /// \param Bytes The number of bytes in the preamble to skip.
   ///
@@ -1533,7 +1533,7 @@
     return Lexer::getSpelling(loc, buffer, SourceMgr, LangOpts, invalid);
   }
 
-  /// \brief Return the 'spelling' of the Tok token.
+  /// Return the 'spelling' of the Tok token.
   ///
   /// The spelling of a token is the characters used to represent the token in
   /// the source file after trigraph expansion and escaped-newline folding.  In
@@ -1545,7 +1545,7 @@
     return Lexer::getSpelling(Tok, SourceMgr, LangOpts, Invalid);
   }
 
-  /// \brief Get the spelling of a token into a preallocated buffer, instead
+  /// Get the spelling of a token into a preallocated buffer, instead
   /// of as an std::string.
   ///
   /// The caller is required to allocate enough space for the token, which is
@@ -1562,7 +1562,7 @@
     return Lexer::getSpelling(Tok, Buffer, SourceMgr, LangOpts, Invalid);
   }
 
-  /// \brief Get the spelling of a token into a SmallVector.
+  /// Get the spelling of a token into a SmallVector.
   ///
   /// Note that the returned StringRef may not point to the
   /// supplied buffer if a copy can be avoided.
@@ -1570,14 +1570,14 @@
                         SmallVectorImpl<char> &Buffer,
                         bool *Invalid = nullptr) const;
 
-  /// \brief Relex the token at the specified location.
+  /// Relex the token at the specified location.
   /// \returns true if there was a failure, false on success.
   bool getRawToken(SourceLocation Loc, Token &Result,
                    bool IgnoreWhiteSpace = false) {
     return Lexer::getRawToken(Loc, Result, SourceMgr, LangOpts, IgnoreWhiteSpace);
   }
 
-  /// \brief Given a Token \p Tok that is a numeric constant with length 1,
+  /// Given a Token \p Tok that is a numeric constant with length 1,
   /// return the character.
   char
   getSpellingOfSingleCharacterNumericConstant(const Token &Tok,
@@ -1595,7 +1595,7 @@
     return *SourceMgr.getCharacterData(Tok.getLocation(), Invalid);
   }
 
-  /// \brief Retrieve the name of the immediate macro expansion.
+  /// Retrieve the name of the immediate macro expansion.
   ///
   /// This routine starts from a source location, and finds the name of the
   /// macro responsible for its immediate expansion. It looks through any
@@ -1607,7 +1607,7 @@
     return Lexer::getImmediateMacroName(Loc, SourceMgr, getLangOpts());
   }
 
-  /// \brief Plop the specified string into a scratch buffer and set the
+  /// Plop the specified string into a scratch buffer and set the
   /// specified token's location and length to it. 
   ///
   /// If specified, the source location provides a location of the expansion
@@ -1621,7 +1621,7 @@
   /// split token will return the split token rather than the original.
   SourceLocation SplitToken(SourceLocation TokLoc, unsigned Length);
 
-  /// \brief Computes the source location just past the end of the
+  /// Computes the source location just past the end of the
   /// token at this source location.
   ///
   /// This routine can be used to produce a source location that
@@ -1640,7 +1640,7 @@
     return Lexer::getLocForEndOfToken(Loc, Offset, SourceMgr, LangOpts);
   }
 
-  /// \brief Returns true if the given MacroID location points at the first
+  /// Returns true if the given MacroID location points at the first
   /// token of the macro expansion.
   ///
   /// \param MacroBegin If non-null and function returns true, it is set to
@@ -1651,7 +1651,7 @@
                                             MacroBegin);
   }
 
-  /// \brief Returns true if the given MacroID location points at the last
+  /// Returns true if the given MacroID location points at the last
   /// token of the macro expansion.
   ///
   /// \param MacroEnd If non-null and function returns true, it is set to
@@ -1661,20 +1661,20 @@
     return Lexer::isAtEndOfMacroExpansion(loc, SourceMgr, LangOpts, MacroEnd);
   }
 
-  /// \brief Print the token to stderr, used for debugging.
+  /// Print the token to stderr, used for debugging.
   void DumpToken(const Token &Tok, bool DumpFlags = false) const;
   void DumpLocation(SourceLocation Loc) const;
   void DumpMacro(const MacroInfo &MI) const;
   void dumpMacroInfo(const IdentifierInfo *II);
 
-  /// \brief Given a location that specifies the start of a
+  /// Given a location that specifies the start of a
   /// token, return a new location that specifies a character within the token.
   SourceLocation AdvanceToTokenCharacter(SourceLocation TokStart,
                                          unsigned Char) const {
     return Lexer::AdvanceToTokenCharacter(TokStart, Char, SourceMgr, LangOpts);
   }
 
-  /// \brief Increment the counters for the number of token paste operations
+  /// Increment the counters for the number of token paste operations
   /// performed.
   ///
   /// If fast was specified, this is a 'fast paste' case we handled.
@@ -1707,13 +1707,13 @@
   llvm::DenseMap<IdentifierInfo*,unsigned> PoisonReasons;
 
 public:
-  /// \brief Specifies the reason for poisoning an identifier.
+  /// Specifies the reason for poisoning an identifier.
   ///
   /// If that identifier is accessed while poisoned, then this reason will be
   /// used instead of the default "poisoned" diagnostic.
   void SetPoisonReason(IdentifierInfo *II, unsigned DiagID);
 
-  /// \brief Display reason for poisoned identifier.
+  /// Display reason for poisoned identifier.
   void HandlePoisonedIdentifier(Token & Tok);
 
   void MaybeHandlePoisonedIdentifier(Token & Identifier) {
@@ -1746,7 +1746,7 @@
 public:
   void PoisonSEHIdentifiers(bool Poison = true); // Borland
 
-  /// \brief Callback invoked when the lexer reads an identifier and has
+  /// Callback invoked when the lexer reads an identifier and has
   /// filled in the tokens IdentifierInfo member. 
   ///
   /// This callback potentially macro expands it or turns it into a named
@@ -1756,36 +1756,36 @@
   /// lex again.
   bool HandleIdentifier(Token &Identifier);
 
-  /// \brief Callback invoked when the lexer hits the end of the current file.
+  /// Callback invoked when the lexer hits the end of the current file.
   ///
   /// This either returns the EOF token and returns true, or
   /// pops a level off the include stack and returns false, at which point the
   /// client should call lex again.
   bool HandleEndOfFile(Token &Result, bool isEndOfMacro = false);
 
-  /// \brief Callback invoked when the current TokenLexer hits the end of its
+  /// Callback invoked when the current TokenLexer hits the end of its
   /// token stream.
   bool HandleEndOfTokenLexer(Token &Result);
 
-  /// \brief Callback invoked when the lexer sees a # token at the start of a
+  /// Callback invoked when the lexer sees a # token at the start of a
   /// line.
   ///
   /// This consumes the directive, modifies the lexer/preprocessor state, and
   /// advances the lexer(s) so that the next token read is the correct one.
   void HandleDirective(Token &Result);
 
-  /// \brief Ensure that the next token is a tok::eod token.
+  /// Ensure that the next token is a tok::eod token.
   ///
   /// If not, emit a diagnostic and consume up until the eod.
   /// If \p EnableMacros is true, then we consider macros that expand to zero
   /// tokens as being ok.
   void CheckEndOfDirective(const char *Directive, bool EnableMacros = false);
 
-  /// \brief Read and discard all tokens remaining on the current line until
+  /// Read and discard all tokens remaining on the current line until
   /// the tok::eod token is found.
   void DiscardUntilEndOfDirective();
 
-  /// \brief Returns true if the preprocessor has seen a use of
+  /// Returns true if the preprocessor has seen a use of
   /// __DATE__ or __TIME__ in the file so far.
   bool SawDateOrTime() const {
     return DATELoc != SourceLocation() || TIMELoc != SourceLocation();
@@ -1793,13 +1793,13 @@
   unsigned getCounterValue() const { return CounterValue; }
   void setCounterValue(unsigned V) { CounterValue = V; }
 
-  /// \brief Retrieves the module that we're currently building, if any.
+  /// Retrieves the module that we're currently building, if any.
   Module *getCurrentModule();
   
-  /// \brief Allocate a new MacroInfo object with the provided SourceLocation.
+  /// Allocate a new MacroInfo object with the provided SourceLocation.
   MacroInfo *AllocateMacroInfo(SourceLocation L);
 
-  /// \brief Turn the specified lexer token into a fully checked and spelled
+  /// Turn the specified lexer token into a fully checked and spelled
   /// filename, e.g. as an operand of \#include. 
   ///
   /// The caller is expected to provide a buffer that is large enough to hold
@@ -1810,7 +1810,7 @@
   /// in ""'s.
   bool GetIncludeFilenameSpelling(SourceLocation Loc,StringRef &Filename);
 
-  /// \brief Given a "foo" or \<foo> reference, look up the indicated file.
+  /// Given a "foo" or \<foo> reference, look up the indicated file.
   ///
   /// Returns null on failure.  \p isAngled indicates whether the file
   /// reference is for system \#include's or not (i.e. using <> instead of "").
@@ -1823,17 +1823,17 @@
                               ModuleMap::KnownHeader *SuggestedModule,
                               bool *IsMapped, bool SkipCache = false);
 
-  /// \brief Get the DirectoryLookup structure used to find the current
+  /// Get the DirectoryLookup structure used to find the current
   /// FileEntry, if CurLexer is non-null and if applicable. 
   ///
   /// This allows us to implement \#include_next and find directory-specific
   /// properties.
   const DirectoryLookup *GetCurDirLookup() { return CurDirLookup; }
 
-  /// \brief Return true if we're in the top-level file, not in a \#include.
+  /// Return true if we're in the top-level file, not in a \#include.
   bool isInPrimaryFile() const;
 
-  /// \brief Handle cases where the \#include name is expanded
+  /// Handle cases where the \#include name is expanded
   /// from a macro as multiple tokens, which need to be glued together. 
   ///
   /// This occurs for code like:
@@ -1849,7 +1849,7 @@
   bool ConcatenateIncludeName(SmallString<128> &FilenameBuffer,
                               SourceLocation &End);
 
-  /// \brief Lex an on-off-switch (C99 6.10.6p2) and verify that it is
+  /// Lex an on-off-switch (C99 6.10.6p2) and verify that it is
   /// followed by EOD.  Return true if the token is not a valid on-off-switch.
   bool LexOnOffSwitch(tok::OnOffSwitch &OOS);
 
@@ -1898,7 +1898,7 @@
   VisibilityMacroDirective *AllocateVisibilityMacroDirective(SourceLocation Loc,
                                                              bool isPublic);
 
-  /// \brief Lex and validate a macro name, which occurs after a
+  /// Lex and validate a macro name, which occurs after a
   /// \#define or \#undef.
   ///
   /// \param MacroNameTok Token that represents the name defined or undefined.
@@ -1942,7 +1942,7 @@
                                     bool FoundNonSkipPortion, bool FoundElse,
                                     SourceLocation ElseLoc = SourceLocation());
 
-  /// \brief A fast PTH version of SkipExcludedConditionalBlock.
+  /// A fast PTH version of SkipExcludedConditionalBlock.
   void PTHSkipExcludedConditionalBlock();
 
   /// Information about the result for evaluating an expression for a
@@ -1955,17 +1955,17 @@
     bool IncludedUndefinedIds;
   };
 
-  /// \brief Evaluate an integer constant expression that may occur after a
+  /// Evaluate an integer constant expression that may occur after a
   /// \#if or \#elif directive and return a \p DirectiveEvalResult object.
   ///
   /// If the expression is equivalent to "!defined(X)" return X in IfNDefMacro.
   DirectiveEvalResult EvaluateDirectiveExpression(IdentifierInfo *&IfNDefMacro);
 
-  /// \brief Install the standard preprocessor pragmas:
+  /// Install the standard preprocessor pragmas:
   /// \#pragma GCC poison/system_header/dependency and \#pragma once.
   void RegisterBuiltinPragmas();
 
-  /// \brief Register builtin macros such as __LINE__ with the identifier table.
+  /// Register builtin macros such as __LINE__ with the identifier table.
   void RegisterBuiltinMacros();
 
   /// If an identifier token is read that is to be expanded as a macro, handle
@@ -1973,7 +1973,7 @@
   /// otherwise the caller should lex again.
   bool HandleMacroExpandedIdentifier(Token &Tok, const MacroDefinition &MD);
 
-  /// \brief Cache macro expanded tokens for TokenLexers.
+  /// Cache macro expanded tokens for TokenLexers.
   //
   /// Works like a stack; a TokenLexer adds the macro expanded tokens that is
   /// going to lex in the cache and when it finishes the tokens are removed
@@ -1993,34 +1993,34 @@
   MacroArgs *ReadMacroCallArgumentList(Token &MacroName, MacroInfo *MI,
                                        SourceLocation &ExpansionEnd);
 
-  /// \brief If an identifier token is read that is to be expanded
+  /// If an identifier token is read that is to be expanded
   /// as a builtin macro, handle it and return the next token as 'Tok'.
   void ExpandBuiltinMacro(Token &Tok);
 
-  /// \brief Read a \c _Pragma directive, slice it up, process it, then
+  /// Read a \c _Pragma directive, slice it up, process it, then
   /// return the first token after the directive.
   /// This assumes that the \c _Pragma token has just been read into \p Tok.
   void Handle_Pragma(Token &Tok);
 
-  /// \brief Like Handle_Pragma except the pragma text is not enclosed within
+  /// Like Handle_Pragma except the pragma text is not enclosed within
   /// a string literal.
   void HandleMicrosoft__pragma(Token &Tok);
 
-  /// \brief Add a lexer to the top of the include stack and
+  /// Add a lexer to the top of the include stack and
   /// start lexing tokens from it instead of the current buffer.
   void EnterSourceFileWithLexer(Lexer *TheLexer, const DirectoryLookup *Dir);
 
-  /// \brief Add a lexer to the top of the include stack and
+  /// Add a lexer to the top of the include stack and
   /// start getting tokens from it using the PTH cache.
   void EnterSourceFileWithPTH(PTHLexer *PL, const DirectoryLookup *Dir);
 
-  /// \brief Set the FileID for the preprocessor predefines.
+  /// Set the FileID for the preprocessor predefines.
   void setPredefinesFileID(FileID FID) {
     assert(PredefinesFileID.isInvalid() && "PredefinesFileID already set!");
     PredefinesFileID = FID;
   }
 
-  /// \brief Returns true if we are lexing from a file and not a
+  /// Returns true if we are lexing from a file and not a
   /// pragma or a macro.
   static bool IsFileLexer(const Lexer* L, const PreprocessorLexer* P) {
     return L ? !L->isPragmaLexer() : P != nullptr;
@@ -2086,12 +2086,12 @@
                                      DiagnosticsEngine &Diags, Module *M);
 
   // Module inclusion testing.
-  /// \brief Find the module that owns the source or header file that
+  /// Find the module that owns the source or header file that
   /// \p Loc points to. If the location is in a file that was included
   /// into a module, or is outside any module, returns nullptr.
   Module *getModuleForLocation(SourceLocation Loc);
 
-  /// \brief We want to produce a diagnostic at location IncLoc concerning a
+  /// We want to produce a diagnostic at location IncLoc concerning a
   /// missing module import.
   ///
   /// \param IncLoc The location at which the missing import was detected.
@@ -2134,7 +2134,7 @@
   }
 
 private:
-  /// \brief After processing predefined file, initialize the conditional stack from
+  /// After processing predefined file, initialize the conditional stack from
   /// the preamble.
   void replayPreambleConditionalStack();
 
@@ -2171,12 +2171,12 @@
   // has inserted some tokens and getCommentRetentionState() is false.
   bool HandleComment(Token &Token, SourceRange Comment);
 
-  /// \brief A macro is used, update information about macros that need unused
+  /// A macro is used, update information about macros that need unused
   /// warnings.
   void markMacroAsUsed(MacroInfo *MI);
 };
 
-/// \brief Abstract base class that describes a handler that will receive
+/// Abstract base class that describes a handler that will receive
 /// source ranges for each of the comments encountered in the source file.
 class CommentHandler {
 public:
@@ -2187,7 +2187,7 @@
   virtual bool HandleComment(Preprocessor &PP, SourceRange Comment) = 0;
 };
 
-/// \brief Registry of pragma handlers added by plugins
+/// Registry of pragma handlers added by plugins
 using PragmaHandlerRegistry = llvm::Registry<PragmaHandler>;
 
 } // namespace clang
Index: cfe/trunk/include/clang/Lex/PreprocessorLexer.h
===================================================================
--- cfe/trunk/include/clang/Lex/PreprocessorLexer.h
+++ cfe/trunk/include/clang/Lex/PreprocessorLexer.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the PreprocessorLexer interface.
+/// Defines the PreprocessorLexer interface.
 //
 //===----------------------------------------------------------------------===//
 
@@ -39,21 +39,21 @@
   /// The SourceManager FileID corresponding to the file being lexed.
   const FileID FID;
 
-  /// \brief Number of SLocEntries before lexing the file.
+  /// Number of SLocEntries before lexing the file.
   unsigned InitialNumSLocEntries = 0;
 
   //===--------------------------------------------------------------------===//
   // Context-specific lexing flags set by the preprocessor.
   //===--------------------------------------------------------------------===//
 
-  /// \brief True when parsing \#XXX; turns '\\n' into a tok::eod token.
+  /// True when parsing \#XXX; turns '\\n' into a tok::eod token.
   bool ParsingPreprocessorDirective = false;
 
-  /// \brief True after \#include; turns \<xx> into a tok::angle_string_literal
+  /// True after \#include; turns \<xx> into a tok::angle_string_literal
   /// token.
   bool ParsingFilename = false;
 
-  /// \brief True if in raw mode.
+  /// True if in raw mode.
   ///
   /// Raw mode disables interpretation of tokens and is a far faster mode to
   /// lex in than non-raw-mode.  This flag:
@@ -68,11 +68,11 @@
   /// Note that in raw mode that the PP pointer may be null.
   bool LexingRawMode = false;
 
-  /// \brief A state machine that detects the \#ifndef-wrapping a file
+  /// A state machine that detects the \#ifndef-wrapping a file
   /// idiom for the multiple-include optimization.
   MultipleIncludeOpt MIOpt;
 
-  /// \brief Information about the set of \#if/\#ifdef/\#ifndef blocks
+  /// Information about the set of \#if/\#ifdef/\#ifndef blocks
   /// we are currently in.
   SmallVector<PPConditionalInfo, 4> ConditionalStack;
 
@@ -82,7 +82,7 @@
 
   virtual void IndirectLex(Token& Result) = 0;
 
-  /// \brief Return the source location for the next observable location.
+  /// Return the source location for the next observable location.
   virtual SourceLocation getSourceLocation() = 0;
 
   //===--------------------------------------------------------------------===//
@@ -114,7 +114,7 @@
     return false;
   }
 
-  /// \brief Return the top of the conditional stack.
+  /// Return the top of the conditional stack.
   /// \pre This requires that there be a conditional active.
   PPConditionalInfo &peekConditionalLevel() {
     assert(!ConditionalStack.empty() && "No conditionals active!");
@@ -130,23 +130,23 @@
   //===--------------------------------------------------------------------===//
   // Misc. lexing methods.
 
-  /// \brief After the preprocessor has parsed a \#include, lex and
+  /// After the preprocessor has parsed a \#include, lex and
   /// (potentially) macro expand the filename.
   ///
   /// If the sequence parsed is not lexically legal, emit a diagnostic and
   /// return a result EOD token.
   void LexIncludeFilename(Token &Result);
 
-  /// \brief Inform the lexer whether or not we are currently lexing a
+  /// Inform the lexer whether or not we are currently lexing a
   /// preprocessor directive.
   void setParsingPreprocessorDirective(bool f) {
     ParsingPreprocessorDirective = f;
   }
 
-  /// \brief Return true if this lexer is in raw mode or not.
+  /// Return true if this lexer is in raw mode or not.
   bool isLexingRawMode() const { return LexingRawMode; }
 
-  /// \brief Return the preprocessor object for this lexer.
+  /// Return the preprocessor object for this lexer.
   Preprocessor *getPP() const { return PP; }
 
   FileID getFileID() const {
@@ -155,7 +155,7 @@
     return FID;
   }
 
-  /// \brief Number of SLocEntries before lexing the file.
+  /// Number of SLocEntries before lexing the file.
   unsigned getInitialNumSLocEntries() const {
     return InitialNumSLocEntries;
   }
@@ -164,7 +164,7 @@
   /// getFileID(), this only works for lexers with attached preprocessors.
   const FileEntry *getFileEntry() const;
 
-  /// \brief Iterator that traverses the current stack of preprocessor
+  /// Iterator that traverses the current stack of preprocessor
   /// conditional directives (\#if/\#ifdef/\#ifndef).
   using conditional_iterator =
       SmallVectorImpl<PPConditionalInfo>::const_iterator;
Index: cfe/trunk/include/clang/Lex/PreprocessorOptions.h
===================================================================
--- cfe/trunk/include/clang/Lex/PreprocessorOptions.h
+++ cfe/trunk/include/clang/Lex/PreprocessorOptions.h
@@ -27,14 +27,14 @@
 
 namespace clang {
 
-/// \brief Enumerate the kinds of standard library that 
+/// Enumerate the kinds of standard library that 
 enum ObjCXXARCStandardLibraryKind {
   ARCXX_nolib,
 
-  /// \brief libc++
+  /// libc++
   ARCXX_libcxx,
 
-  /// \brief libstdc++
+  /// libstdc++
   ARCXX_libstdcxx
 };
   
@@ -46,42 +46,42 @@
   std::vector<std::string> Includes;
   std::vector<std::string> MacroIncludes;
 
-  /// \brief Initialize the preprocessor with the compiler and target specific
+  /// Initialize the preprocessor with the compiler and target specific
   /// predefines.
   bool UsePredefines = true;
 
-  /// \brief Whether we should maintain a detailed record of all macro
+  /// Whether we should maintain a detailed record of all macro
   /// definitions and expansions.
   bool DetailedRecord = false;
 
   /// The implicit PCH included at the start of the translation unit, or empty.
   std::string ImplicitPCHInclude;
 
-  /// \brief Headers that will be converted to chained PCHs in memory.
+  /// Headers that will be converted to chained PCHs in memory.
   std::vector<std::string> ChainedIncludes;
 
-  /// \brief When true, disables most of the normal validation performed on
+  /// When true, disables most of the normal validation performed on
   /// precompiled headers.
   bool DisablePCHValidation = false;
 
-  /// \brief When true, a PCH with compiler errors will not be rejected.
+  /// When true, a PCH with compiler errors will not be rejected.
   bool AllowPCHWithCompilerErrors = false;
 
-  /// \brief Dump declarations that are deserialized from PCH, for testing.
+  /// Dump declarations that are deserialized from PCH, for testing.
   bool DumpDeserializedPCHDecls = false;
 
-  /// \brief This is a set of names for decls that we do not want to be
+  /// This is a set of names for decls that we do not want to be
   /// deserialized, and we emit an error if they are; for testing purposes.
   std::set<std::string> DeserializedPCHDeclsToErrorOn;
 
-  /// \brief If non-zero, the implicit PCH include is actually a precompiled
+  /// If non-zero, the implicit PCH include is actually a precompiled
   /// preamble that covers this number of bytes in the main source file.
   ///
   /// The boolean indicates whether the preamble ends at the start of a new
   /// line.
   std::pair<unsigned, bool> PrecompiledPreambleBytes;
 
-  /// \brief True indicates that a preamble is being generated.
+  /// True indicates that a preamble is being generated.
   ///
   /// When the lexer is done, one of the things that need to be preserved is the
   /// conditional #if stack, so the ASTWriter/ASTReader can save/restore it when
@@ -105,22 +105,22 @@
   /// When enabled, the preprocessor will construct editor placeholder tokens.
   bool LexEditorPlaceholders = true;
 
-  /// \brief True if the SourceManager should report the original file name for
+  /// True if the SourceManager should report the original file name for
   /// contents of files that were remapped to other files. Defaults to true.
   bool RemappedFilesKeepOriginalName = true;
 
-  /// \brief The set of file remappings, which take existing files on
+  /// The set of file remappings, which take existing files on
   /// the system (the first part of each pair) and gives them the
   /// contents of other files on the system (the second part of each
   /// pair).
   std::vector<std::pair<std::string, std::string>> RemappedFiles;
 
-  /// \brief The set of file-to-buffer remappings, which take existing files
+  /// The set of file-to-buffer remappings, which take existing files
   /// on the system (the first part of each pair) and gives them the contents
   /// of the specified memory buffer (the second part of each pair).
   std::vector<std::pair<std::string, llvm::MemoryBuffer *>> RemappedFileBuffers;
 
-  /// \brief Whether the compiler instance should retain (i.e., not free)
+  /// Whether the compiler instance should retain (i.e., not free)
   /// the buffers associated with remapped files.
   ///
   /// This flag defaults to false; it can be set true only through direct
@@ -128,12 +128,12 @@
   /// compiler invocation and its buffers will be reused.
   bool RetainRemappedFileBuffers = false;
   
-  /// \brief The Objective-C++ ARC standard library that we should support,
+  /// The Objective-C++ ARC standard library that we should support,
   /// by providing appropriate definitions to retrofit the standard library
   /// with support for lifetime-qualified pointers.
   ObjCXXARCStandardLibraryKind ObjCXXARCStandardLibrary = ARCXX_nolib;
     
-  /// \brief Records the set of modules
+  /// Records the set of modules
   class FailedModulesSet {
     llvm::StringSet<> Failed;
 
@@ -147,7 +147,7 @@
     }
   };
   
-  /// \brief The set of modules that failed to build.
+  /// The set of modules that failed to build.
   ///
   /// This pointer will be shared among all of the compiler instances created
   /// to (re)build modules, so that once a module fails to build anywhere,
@@ -174,7 +174,7 @@
     RemappedFileBuffers.clear();
   }
   
-  /// \brief Reset any options that are not considered when building a
+  /// Reset any options that are not considered when building a
   /// module.
   void resetNonModularOptions() {
     Includes.clear();
Index: cfe/trunk/include/clang/Lex/Token.h
===================================================================
--- cfe/trunk/include/clang/Lex/Token.h
+++ cfe/trunk/include/clang/Lex/Token.h
@@ -102,24 +102,24 @@
     return is(K1) || isOneOf(K2, Ks...);
   }
 
-  /// \brief Return true if this is a raw identifier (when lexing
+  /// Return true if this is a raw identifier (when lexing
   /// in raw mode) or a non-keyword identifier (when lexing in non-raw mode).
   bool isAnyIdentifier() const {
     return tok::isAnyIdentifier(getKind());
   }
 
-  /// \brief Return true if this is a "literal", like a numeric
+  /// Return true if this is a "literal", like a numeric
   /// constant, string, etc.
   bool isLiteral() const {
     return tok::isLiteral(getKind());
   }
 
-  /// \brief Return true if this is any of tok::annot_* kind tokens.
+  /// Return true if this is any of tok::annot_* kind tokens.
   bool isAnnotation() const {
     return tok::isAnnotation(getKind());
   }
 
-  /// \brief Return a source location identifier for the specified
+  /// Return a source location identifier for the specified
   /// offset in the current file.
   SourceLocation getLocation() const {
     return SourceLocation::getFromRawEncoding(Loc);
@@ -153,7 +153,7 @@
                           : getLocation().getLocWithOffset(getLength());
   }
 
-  /// \brief SourceRange of the group of tokens that this annotation token
+  /// SourceRange of the group of tokens that this annotation token
   /// represents.
   SourceRange getAnnotationRange() const {
     return SourceRange(getLocation(), getAnnotationEndLoc());
@@ -165,7 +165,7 @@
 
   const char *getName() const { return tok::getTokenName(Kind); }
 
-  /// \brief Reset all flags to cleared.
+  /// Reset all flags to cleared.
   void startToken() {
     Kind = tok::unknown;
     Flags = 0;
@@ -230,22 +230,22 @@
     PtrData = val;
   }
 
-  /// \brief Set the specified flag.
+  /// Set the specified flag.
   void setFlag(TokenFlags Flag) {
     Flags |= Flag;
   }
 
-  /// \brief Get the specified flag.
+  /// Get the specified flag.
   bool getFlag(TokenFlags Flag) const {
     return (Flags & Flag) != 0;
   }
 
-  /// \brief Unset the specified flag.
+  /// Unset the specified flag.
   void clearFlag(TokenFlags Flag) {
     Flags &= ~Flag;
   }
 
-  /// \brief Return the internal represtation of the flags.
+  /// Return the internal represtation of the flags.
   ///
   /// This is only intended for low-level operations such as writing tokens to
   /// disk.
@@ -253,7 +253,7 @@
     return Flags;
   }
 
-  /// \brief Set a flag to either true or false.
+  /// Set a flag to either true or false.
   void setFlagValue(TokenFlags Flag, bool Val) {
     if (Val)
       setFlag(Flag);
@@ -265,28 +265,28 @@
   ///
   bool isAtStartOfLine() const { return getFlag(StartOfLine); }
 
-  /// \brief Return true if this token has whitespace before it.
+  /// Return true if this token has whitespace before it.
   ///
   bool hasLeadingSpace() const { return getFlag(LeadingSpace); }
 
-  /// \brief Return true if this identifier token should never
+  /// Return true if this identifier token should never
   /// be expanded in the future, due to C99 6.10.3.4p2.
   bool isExpandDisabled() const { return getFlag(DisableExpand); }
 
-  /// \brief Return true if we have an ObjC keyword identifier.
+  /// Return true if we have an ObjC keyword identifier.
   bool isObjCAtKeyword(tok::ObjCKeywordKind objcKey) const;
 
-  /// \brief Return the ObjC keyword kind.
+  /// Return the ObjC keyword kind.
   tok::ObjCKeywordKind getObjCKeywordID() const;
 
-  /// \brief Return true if this token has trigraphs or escaped newlines in it.
+  /// Return true if this token has trigraphs or escaped newlines in it.
   bool needsCleaning() const { return getFlag(NeedsCleaning); }
 
-  /// \brief Return true if this token has an empty macro before it.
+  /// Return true if this token has an empty macro before it.
   ///
   bool hasLeadingEmptyMacro() const { return getFlag(LeadingEmptyMacro); }
 
-  /// \brief Return true if this token is a string or character literal which
+  /// Return true if this token is a string or character literal which
   /// has a ud-suffix.
   bool hasUDSuffix() const { return getFlag(HasUDSuffix); }
 
@@ -308,21 +308,21 @@
   bool isEditorPlaceholder() const { return getFlag(IsEditorPlaceholder); }
 };
 
-/// \brief Information about the conditional stack (\#if directives)
+/// Information about the conditional stack (\#if directives)
 /// currently active.
 struct PPConditionalInfo {
-  /// \brief Location where the conditional started.
+  /// Location where the conditional started.
   SourceLocation IfLoc;
 
-  /// \brief True if this was contained in a skipping directive, e.g.,
+  /// True if this was contained in a skipping directive, e.g.,
   /// in a "\#if 0" block.
   bool WasSkipping;
 
-  /// \brief True if we have emitted tokens already, and now we're in
+  /// True if we have emitted tokens already, and now we're in
   /// an \#else block or something.  Only useful in Skipping blocks.
   bool FoundNonSkip;
 
-  /// \brief True if we've seen a \#else in this block.  If so,
+  /// True if we've seen a \#else in this block.  If so,
   /// \#elif/\#else directives are not allowed.
   bool FoundElse;
 };
Index: cfe/trunk/include/clang/Lex/TokenLexer.h
===================================================================
--- cfe/trunk/include/clang/Lex/TokenLexer.h
+++ cfe/trunk/include/clang/Lex/TokenLexer.h
@@ -62,18 +62,18 @@
   /// expanded.
   SourceLocation ExpandLocStart, ExpandLocEnd;
 
-  /// \brief Source location pointing at the source location entry chunk that
+  /// Source location pointing at the source location entry chunk that
   /// was reserved for the current macro expansion.
   SourceLocation MacroExpansionStart;
   
-  /// \brief The offset of the macro expansion in the
+  /// The offset of the macro expansion in the
   /// "source location address space".
   unsigned MacroStartSLocOffset;
 
-  /// \brief Location of the macro definition.
+  /// Location of the macro definition.
   SourceLocation MacroDefStart;
 
-  /// \brief Length of the macro definition.
+  /// Length of the macro definition.
   unsigned MacroDefLength;
 
   /// Lexical information about the expansion point of the macro: the identifier
@@ -216,12 +216,12 @@
   /// first token on the next line.
   void HandleMicrosoftCommentPaste(Token &Tok, SourceLocation OpLoc);
 
-  /// \brief If \p loc is a FileID and points inside the current macro
+  /// If \p loc is a FileID and points inside the current macro
   /// definition, returns the appropriate source location pointing at the
   /// macro expansion source location entry.
   SourceLocation getExpansionLocForMacroDefLoc(SourceLocation loc) const;
 
-  /// \brief Creates SLocEntries and updates the locations of macro argument
+  /// Creates SLocEntries and updates the locations of macro argument
   /// tokens to their new expanded locations.
   ///
   /// \param ArgIdSpellLoc the location of the macro argument id inside the
Index: cfe/trunk/include/clang/Lex/VariadicMacroSupport.h
===================================================================
--- cfe/trunk/include/clang/Lex/VariadicMacroSupport.h
+++ cfe/trunk/include/clang/Lex/VariadicMacroSupport.h
@@ -66,7 +66,7 @@
     ~VariadicMacroScopeGuard() { exitScope(); }
   };
 
-  /// \brief A class for tracking whether we're inside a VA_OPT during a
+  /// A class for tracking whether we're inside a VA_OPT during a
   /// traversal of the tokens of a variadic macro definition.
   class VAOptDefinitionContext {
     /// Contains all the locations of so far unmatched lparens.
@@ -116,7 +116,7 @@
     
   };
 
-  /// \brief A class for tracking whether we're inside a VA_OPT during a
+  /// A class for tracking whether we're inside a VA_OPT during a
   /// traversal of the tokens of a macro during macro expansion.
   class VAOptExpansionContext : VAOptDefinitionContext {
 
Index: cfe/trunk/include/clang/Parse/ParseAST.h
===================================================================
--- cfe/trunk/include/clang/Parse/ParseAST.h
+++ cfe/trunk/include/clang/Parse/ParseAST.h
@@ -23,7 +23,7 @@
   class CodeCompleteConsumer;
   class Sema;
 
-  /// \brief Parse the entire file specified, notifying the ASTConsumer as
+  /// Parse the entire file specified, notifying the ASTConsumer as
   /// the file is parsed.
   ///
   /// This operation inserts the parsed decls into the translation
@@ -42,7 +42,7 @@
                 CodeCompleteConsumer *CompletionConsumer = nullptr,
                 bool SkipFunctionBodies = false);
 
-  /// \brief Parse the main file known to the preprocessor, producing an 
+  /// Parse the main file known to the preprocessor, producing an 
   /// abstract syntax tree.
   void ParseAST(Sema &S, bool PrintStats = false,
                 bool SkipFunctionBodies = false);
Index: cfe/trunk/include/clang/Parse/Parser.h
===================================================================
--- cfe/trunk/include/clang/Parse/Parser.h
+++ cfe/trunk/include/clang/Parse/Parser.h
@@ -121,25 +121,25 @@
   /// Objective-C contextual keywords.
   mutable IdentifierInfo *Ident_instancetype;
 
-  /// \brief Identifier for "introduced".
+  /// Identifier for "introduced".
   IdentifierInfo *Ident_introduced;
 
-  /// \brief Identifier for "deprecated".
+  /// Identifier for "deprecated".
   IdentifierInfo *Ident_deprecated;
 
-  /// \brief Identifier for "obsoleted".
+  /// Identifier for "obsoleted".
   IdentifierInfo *Ident_obsoleted;
 
-  /// \brief Identifier for "unavailable".
+  /// Identifier for "unavailable".
   IdentifierInfo *Ident_unavailable;
   
-  /// \brief Identifier for "message".
+  /// Identifier for "message".
   IdentifierInfo *Ident_message;
 
-  /// \brief Identifier for "strict".
+  /// Identifier for "strict".
   IdentifierInfo *Ident_strict;
 
-  /// \brief Identifier for "replacement".
+  /// Identifier for "replacement".
   IdentifierInfo *Ident_replacement;
 
   /// Identifiers used by the 'external_source_symbol' attribute.
@@ -205,7 +205,7 @@
   /// ColonProtectionRAIIObject RAII object.
   bool ColonIsSacred;
 
-  /// \brief When true, we are directly inside an Objective-C message
+  /// When true, we are directly inside an Objective-C message
   /// send expression.
   ///
   /// This is managed by the \c InMessageExpressionRAIIObject class, and
@@ -215,7 +215,7 @@
   /// The "depth" of the template parameters currently being parsed.
   unsigned TemplateParameterDepth;
 
-  /// \brief RAII class that manages the template parameter depth.
+  /// RAII class that manages the template parameter depth.
   class TemplateParameterDepthRAII {
     unsigned &Depth;
     unsigned AddedLevels;
@@ -241,11 +241,11 @@
   /// Factory object for creating AttributeList objects.
   AttributeFactory AttrFactory;
 
-  /// \brief Gathers and cleans up TemplateIdAnnotations when parsing of a
+  /// Gathers and cleans up TemplateIdAnnotations when parsing of a
   /// top-level declaration is finished.
   SmallVector<TemplateIdAnnotation *, 16> TemplateIds;
 
-  /// \brief Identifiers which have been declared within a tentative parse.
+  /// Identifiers which have been declared within a tentative parse.
   SmallVector<IdentifierInfo *, 8> TentativelyDeclaredIdentifiers;
 
   IdentifierInfo *getSEHExceptKeyword();
@@ -400,11 +400,11 @@
            isTokenBrace() || Tok.is(tok::code_completion) || Tok.isAnnotation();
   }
 
-  /// \brief Returns true if the current token is '=' or is a type of '='.
+  /// Returns true if the current token is '=' or is a type of '='.
   /// For typos, give a fixit to '='
   bool isTokenEqualOrEqualTypo();
 
-  /// \brief Return the current token to the token stream and make the given
+  /// Return the current token to the token stream and make the given
   /// token the current token.
   void UnconsumeToken(Token &Consumed) {
       Token Next = Tok;
@@ -474,7 +474,7 @@
     return PrevTokLocation;
   }
 
-  /// \brief Consume the current code-completion token.
+  /// Consume the current code-completion token.
   ///
   /// This routine can be called to consume the code-completion token and
   /// continue processing in special cases where \c cutOffParsing() isn't
@@ -493,7 +493,7 @@
   /// \returns the source location of the code-completion token.
   SourceLocation handleUnexpectedCodeCompletionToken();
 
-  /// \brief Abruptly cut off parsing; mainly used when we have reached the
+  /// Abruptly cut off parsing; mainly used when we have reached the
   /// code-completion point.
   void cutOffParsing() {
     if (PP.isCodeCompletionEnabled())
@@ -502,7 +502,7 @@
     Tok.setKind(tok::eof);
   }
 
-  /// \brief Determine if we're at the end of the file or at a transition
+  /// Determine if we're at the end of the file or at a transition
   /// between modules.
   bool isEofOrEom() {
     tok::TokenKind Kind = Tok.getKind();
@@ -510,34 +510,34 @@
            Kind == tok::annot_module_end || Kind == tok::annot_module_include;
   }
 
-  /// \brief Checks if the \p Level is valid for use in a fold expression.
+  /// Checks if the \p Level is valid for use in a fold expression.
   bool isFoldOperator(prec::Level Level) const;
 
-  /// \brief Checks if the \p Kind is a valid operator for fold expressions.
+  /// Checks if the \p Kind is a valid operator for fold expressions.
   bool isFoldOperator(tok::TokenKind Kind) const;
 
-  /// \brief Initialize all pragma handlers.
+  /// Initialize all pragma handlers.
   void initializePragmaHandlers();
 
-  /// \brief Destroy and reset all pragma handlers.
+  /// Destroy and reset all pragma handlers.
   void resetPragmaHandlers();
 
-  /// \brief Handle the annotation token produced for #pragma unused(...)
+  /// Handle the annotation token produced for #pragma unused(...)
   void HandlePragmaUnused();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma GCC visibility...
   void HandlePragmaVisibility();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma pack...
   void HandlePragmaPack();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma ms_struct...
   void HandlePragmaMSStruct();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma comment...
   void HandlePragmaMSComment();
 
@@ -553,43 +553,43 @@
   bool HandlePragmaMSInitSeg(StringRef PragmaName,
                              SourceLocation PragmaLocation);
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma align...
   void HandlePragmaAlign();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma clang __debug dump...
   void HandlePragmaDump();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma weak id...
   void HandlePragmaWeak();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma weak id = id...
   void HandlePragmaWeakAlias();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma redefine_extname...
   void HandlePragmaRedefineExtname();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma STDC FP_CONTRACT...
   void HandlePragmaFPContract();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma clang fp ...
   void HandlePragmaFP();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma OPENCL EXTENSION...
   void HandlePragmaOpenCLExtension();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma clang __debug captured
   StmtResult HandlePragmaCaptured();
 
-  /// \brief Handle the annotation token produced for
+  /// Handle the annotation token produced for
   /// #pragma clang loop and #pragma unroll.
   bool HandlePragmaLoopHint(LoopHint &Hint);
 
@@ -628,13 +628,13 @@
     Tok.setAnnotationValue(T.getAsOpaquePtr());
   }
 
-  /// \brief Read an already-translated primary expression out of an annotation
+  /// Read an already-translated primary expression out of an annotation
   /// token.
   static ExprResult getExprAnnotation(const Token &Tok) {
     return ExprResult::getFromOpaquePointer(Tok.getAnnotationValue());
   }
 
-  /// \brief Set the primary expression corresponding to the given annotation
+  /// Set the primary expression corresponding to the given annotation
   /// token.
   static void setExprAnnotation(Token &Tok, ExprResult ER) {
     Tok.setAnnotationValue(ER.getAsOpaquePointer());
@@ -718,7 +718,7 @@
   /// otherwise emits a diagnostic and returns true.
   bool TryKeywordIdentFallback(bool DisableKeyword);
 
-  /// \brief Get the TemplateIdAnnotation from the token.
+  /// Get the TemplateIdAnnotation from the token.
   TemplateIdAnnotation *takeTemplateIdAnnotation(const Token &tok);
 
   /// TentativeParsingAction - An object that is used as a kind of "tentative
@@ -816,14 +816,14 @@
                         unsigned Diag = diag::err_expected,
                         StringRef DiagMsg = "");
 
-  /// \brief The parser expects a semicolon and, if present, will consume it.
+  /// The parser expects a semicolon and, if present, will consume it.
   ///
   /// If the next token is not a semicolon, this emits the specified diagnostic,
   /// or, if there's just some closing-delimiter noise (e.g., ')' or ']') prior
   /// to the semicolon, consumes that extra token.
   bool ExpectAndConsumeSemi(unsigned DiagID);
 
-  /// \brief The kind of extra semi diagnostic to emit.
+  /// The kind of extra semi diagnostic to emit.
   enum ExtraSemiKind {
     OutsideFunction = 0,
     InsideStruct = 1,
@@ -831,7 +831,7 @@
     AfterMemberFunctionDefinition = 3
   };
 
-  /// \brief Consume any extra semi-colons until the end of the line.
+  /// Consume any extra semi-colons until the end of the line.
   void ConsumeExtraSemi(ExtraSemiKind Kind, unsigned TST = TST_unspecified);
 
   /// Return false if the next token is an identifier. An 'expected identifier'
@@ -895,7 +895,7 @@
   void ExitScope();
 
 private:
-  /// \brief RAII object used to modify the scope flags for the current scope.
+  /// RAII object used to modify the scope flags for the current scope.
   class ParseScopeFlags {
     Scope *CurScope;
     unsigned OldFlags;
@@ -924,10 +924,10 @@
 
 public:
 
-  /// \brief Control flags for SkipUntil functions.
+  /// Control flags for SkipUntil functions.
   enum SkipUntilFlags {
     StopAtSemi = 1 << 0,  ///< Stop skipping at semicolon
-    /// \brief Stop skipping at specified token, but don't skip the token itself
+    /// Stop skipping at specified token, but don't skip the token itself
     StopBeforeMatch = 1 << 1,
     StopAtCodeCompletion = 1 << 2 ///< Stop at code completion
   };
@@ -1049,7 +1049,7 @@
     Decl *D;
     CachedTokens Toks;
 
-    /// \brief Whether this member function had an associated template
+    /// Whether this member function had an associated template
     /// scope. When true, D is a template declaration.
     /// otherwise, it is a member function declaration.
     bool TemplateScope;
@@ -1095,7 +1095,7 @@
     /// Method - The method declaration.
     Decl *Method;
 
-    /// \brief Whether this member function had an associated template
+    /// Whether this member function had an associated template
     /// scope. When true, D is a template declaration.
     /// otherwise, it is a member function declaration.
     bool TemplateScope;
@@ -1107,7 +1107,7 @@
     /// scope at the appropriate times.
     SmallVector<LateParsedDefaultArgument, 8> DefaultArgs;
   
-    /// \brief The set of tokens that make up an exception-specification that
+    /// The set of tokens that make up an exception-specification that
     /// has not yet been parsed.
     CachedTokens *ExceptionSpecTokens;
   };
@@ -1139,7 +1139,7 @@
   /// entities.
   typedef SmallVector<LateParsedDeclaration*,2> LateParsedDeclarationsContainer;
 
-  /// \brief Representation of a class that has been parsed, including
+  /// Representation of a class that has been parsed, including
   /// any member function declarations or definitions that need to be
   /// parsed after the corresponding top-level class is complete.
   struct ParsingClass {
@@ -1147,19 +1147,19 @@
       : TopLevelClass(TopLevelClass), TemplateScope(false),
         IsInterface(IsInterface), TagOrTemplate(TagOrTemplate) { }
 
-    /// \brief Whether this is a "top-level" class, meaning that it is
+    /// Whether this is a "top-level" class, meaning that it is
     /// not nested within another class.
     bool TopLevelClass : 1;
 
-    /// \brief Whether this class had an associated template
+    /// Whether this class had an associated template
     /// scope. When true, TagOrTemplate is a template declaration;
     /// otherwise, it is a tag declaration.
     bool TemplateScope : 1;
 
-    /// \brief Whether this class is an __interface.
+    /// Whether this class is an __interface.
     bool IsInterface : 1;
 
-    /// \brief The class or class template whose definition we are parsing.
+    /// The class or class template whose definition we are parsing.
     Decl *TagOrTemplate;
 
     /// LateParsedDeclarations - Method declarations, inline definitions and
@@ -1168,7 +1168,7 @@
     LateParsedDeclarationsContainer LateParsedDeclarations;
   };
 
-  /// \brief The stack of classes that is currently being
+  /// The stack of classes that is currently being
   /// parsed. Nested and local classes will be pushed onto this stack
   /// when they are parsed, and removed afterward.
   std::stack<ParsingClass *> ClassStack;
@@ -1178,7 +1178,7 @@
     return *ClassStack.top();
   }
 
-  /// \brief RAII object used to manage the parsing of a class definition.
+  /// RAII object used to manage the parsing of a class definition.
   class ParsingClassDefinition {
     Parser &P;
     bool Popped;
@@ -1191,7 +1191,7 @@
         State(P.PushParsingClass(TagOrTemplate, TopLevelClass, IsInterface)) {
     }
 
-    /// \brief Pop this class of the stack.
+    /// Pop this class of the stack.
     void Pop() {
       assert(!Popped && "Nested class has already been popped");
       Popped = true;
@@ -1204,7 +1204,7 @@
     }
   };
 
-  /// \brief Contains information about any template-specific
+  /// Contains information about any template-specific
   /// information that has been parsed prior to parsing declaration
   /// specifiers.
   struct ParsedTemplateInfo {
@@ -1224,31 +1224,31 @@
         ExternLoc(ExternLoc), TemplateLoc(TemplateLoc),
         LastParameterListWasEmpty(false){ }
 
-    /// \brief The kind of template we are parsing.
+    /// The kind of template we are parsing.
     enum {
-      /// \brief We are not parsing a template at all.
+      /// We are not parsing a template at all.
       NonTemplate = 0,
-      /// \brief We are parsing a template declaration.
+      /// We are parsing a template declaration.
       Template,
-      /// \brief We are parsing an explicit specialization.
+      /// We are parsing an explicit specialization.
       ExplicitSpecialization,
-      /// \brief We are parsing an explicit instantiation.
+      /// We are parsing an explicit instantiation.
       ExplicitInstantiation
     } Kind;
 
-    /// \brief The template parameter lists, for template declarations
+    /// The template parameter lists, for template declarations
     /// and explicit specializations.
     TemplateParameterLists *TemplateParams;
 
-    /// \brief The location of the 'extern' keyword, if any, for an explicit
+    /// The location of the 'extern' keyword, if any, for an explicit
     /// instantiation
     SourceLocation ExternLoc;
 
-    /// \brief The location of the 'template' keyword, for an explicit
+    /// The location of the 'template' keyword, for an explicit
     /// instantiation.
     SourceLocation TemplateLoc;
 
-    /// \brief Whether the last template parameter list was empty.
+    /// Whether the last template parameter list was empty.
     bool LastParameterListWasEmpty;
 
     SourceRange getSourceRange() const LLVM_READONLY;
@@ -1742,11 +1742,11 @@
   StmtResult ParseStatement(SourceLocation *TrailingElseLoc = nullptr,
                             bool AllowOpenMPStandalone = false);
   enum AllowedConstructsKind {
-    /// \brief Allow any declarations, statements, OpenMP directives.
+    /// Allow any declarations, statements, OpenMP directives.
     ACK_Any,
-    /// \brief Allow only statements and non-standalone OpenMP directives.
+    /// Allow only statements and non-standalone OpenMP directives.
     ACK_StatementsOpenMPNonStandalone,
-    /// \brief Allow statements and all executable OpenMP directives
+    /// Allow statements and all executable OpenMP directives
     ACK_StatementsOpenMPAnyExecutable
   };
   StmtResult
@@ -1787,34 +1787,34 @@
                                  SourceLocation *TrailingElseLoc,
                                  ParsedAttributesWithRange &Attrs);
 
-  /// \brief Describes the behavior that should be taken for an __if_exists
+  /// Describes the behavior that should be taken for an __if_exists
   /// block.
   enum IfExistsBehavior {
-    /// \brief Parse the block; this code is always used.
+    /// Parse the block; this code is always used.
     IEB_Parse,
-    /// \brief Skip the block entirely; this code is never used.
+    /// Skip the block entirely; this code is never used.
     IEB_Skip,
-    /// \brief Parse the block as a dependent block, which may be used in
+    /// Parse the block as a dependent block, which may be used in
     /// some template instantiations but not others.
     IEB_Dependent
   };
 
-  /// \brief Describes the condition of a Microsoft __if_exists or
+  /// Describes the condition of a Microsoft __if_exists or
   /// __if_not_exists block.
   struct IfExistsCondition {
-    /// \brief The location of the initial keyword.
+    /// The location of the initial keyword.
     SourceLocation KeywordLoc;
-    /// \brief Whether this is an __if_exists block (rather than an
+    /// Whether this is an __if_exists block (rather than an
     /// __if_not_exists block).
     bool IsIfExists;
 
-    /// \brief Nested-name-specifier preceding the name.
+    /// Nested-name-specifier preceding the name.
     CXXScopeSpec SS;
 
-    /// \brief The name we're looking for.
+    /// The name we're looking for.
     UnqualifiedId Name;
 
-    /// \brief The behavior of this __if_exists or __if_not_exists block
+    /// The behavior of this __if_exists or __if_not_exists block
     /// should.
     IfExistsBehavior Behavior;
   };
@@ -1947,7 +1947,7 @@
   Decl *ParseFunctionStatementBody(Decl *Decl, ParseScope &BodyScope);
   Decl *ParseFunctionTryBlock(Decl *Decl, ParseScope &BodyScope);
 
-  /// \brief When in code-completion, skip parsing of the function/method body
+  /// When in code-completion, skip parsing of the function/method body
   /// unless the body contains the code-completion point.
   ///
   /// \returns true if the function body was skipped.
@@ -1995,7 +1995,7 @@
   /// specifier or if we're not sure.
   bool isKnownToBeTypeSpecifier(const Token &Tok) const;
 
-  /// \brief Return true if we know that we are definitely looking at a
+  /// Return true if we know that we are definitely looking at a
   /// decl-specifier, and isn't part of an expression such as a function-style
   /// cast. Return false if it's no a decl-specifier, or we're not sure.
   bool isKnownToBeDeclarationSpecifier() {
@@ -2023,19 +2023,19 @@
     return isDeclarationSpecifier(true);
   }
 
-  /// \brief Determine whether this is a C++1z for-range-identifier.
+  /// Determine whether this is a C++1z for-range-identifier.
   bool isForRangeIdentifier();
 
-  /// \brief Determine whether we are currently at the start of an Objective-C
+  /// Determine whether we are currently at the start of an Objective-C
   /// class message that appears to be missing the open bracket '['.
   bool isStartOfObjCClassMessageMissingOpenBracket();
 
-  /// \brief Starting with a scope specifier, identifier, or
+  /// Starting with a scope specifier, identifier, or
   /// template-id that refers to the current class, determine whether
   /// this is a constructor declarator.
   bool isConstructorDeclarator(bool Unqualified, bool DeductionGuide = false);
 
-  /// \brief Specifies the context in which type-id/expression
+  /// Specifies the context in which type-id/expression
   /// disambiguation will occur.
   enum TentativeCXXTypeIdContext {
     TypeIdInParens,
@@ -2058,7 +2058,7 @@
     return isTypeIdInParens(isAmbiguous);
   }
 
-  /// \brief Checks if the current tokens form type-id or expression.
+  /// Checks if the current tokens form type-id or expression.
   /// It is similar to isTypeIdInParens but does not suppose that type-id
   /// is in parenthesis.
   bool isTypeIdUnambiguously() {
@@ -2096,7 +2096,7 @@
     InitStmtDecl,  ///< Disambiguated as a simple-declaration init-statement.
     Error          ///< Can't be any of the above!
   };
-  /// \brief Disambiguates between the different kinds of things that can happen
+  /// Disambiguates between the different kinds of things that can happen
   /// after 'if (' or 'switch ('. This could be one of two different kinds of
   /// declaration (depending on whether there is a ';' later) or an expression.
   ConditionOrInitStatement
@@ -2114,7 +2114,7 @@
     True, False, Ambiguous, Error
   };
 
-  /// \brief Based only on the given token kind, determine whether we know that
+  /// Based only on the given token kind, determine whether we know that
   /// we're at the start of an expression or a type-specifier-seq (which may
   /// be an expression, in C++).
   ///
@@ -2142,7 +2142,7 @@
   /// a type-specifier other than a cv-qualifier.
   bool isCXXDeclarationSpecifierAType();
 
-  /// \brief Determine whether an identifier has been tentatively declared as a
+  /// Determine whether an identifier has been tentatively declared as a
   /// non-type. Such tentative declarations should not be found to name a type
   /// during a tentative parse, but also should not be annotated as a non-type.
   bool isTentativelyDeclared(IdentifierInfo *II);
@@ -2227,16 +2227,16 @@
   void ProhibitCXX11Attributes(ParsedAttributesWithRange &Attrs,
                                unsigned DiagID);
 
-  /// \brief Skip C++11 and C2x attributes and return the end location of the
+  /// Skip C++11 and C2x attributes and return the end location of the
   /// last one.
   /// \returns SourceLocation() if there are no attributes.
   SourceLocation SkipCXX11Attributes();
 
-  /// \brief Diagnose and skip C++11 and C2x attributes that appear in syntactic
+  /// Diagnose and skip C++11 and C2x attributes that appear in syntactic
   /// locations where attributes are not allowed.
   void DiagnoseAndSkipCXX11Attributes();
 
-  /// \brief Parses syntax-generic attribute arguments for attributes which are
+  /// Parses syntax-generic attribute arguments for attributes which are
   /// known to the implementation, and adds them to the given ParsedAttributes
   /// list with the given attribute syntax. Returns the number of arguments
   /// parsed for the attribute.
@@ -2309,7 +2309,7 @@
                                     SourceLocation *EndLoc = nullptr);
   void ParseCXX11Attributes(ParsedAttributesWithRange &attrs,
                             SourceLocation *EndLoc = nullptr);
-  /// \brief Parses a C++11 (or C2x)-style attribute argument list. Returns true
+  /// Parses a C++11 (or C2x)-style attribute argument list. Returns true
   /// if this results in adding an attribute to the ParsedAttributes list.
   bool ParseCXX11AttributeArgs(IdentifierInfo *AttrName,
                                SourceLocation AttrNameLoc,
@@ -2345,7 +2345,7 @@
   void ParseBorlandTypeAttributes(ParsedAttributes &attrs);
   void ParseOpenCLKernelAttributes(ParsedAttributes &attrs);
   void ParseOpenCLQualifiers(ParsedAttributes &Attrs);
-  /// \brief Parses opencl_unroll_hint attribute if language is OpenCL v2.0
+  /// Parses opencl_unroll_hint attribute if language is OpenCL v2.0
   /// or higher.
   /// \return false if error happens.
   bool MaybeParseOpenCLUnrollHintAttribute(ParsedAttributes &Attrs) {
@@ -2353,7 +2353,7 @@
       return ParseOpenCLUnrollHintAttribute(Attrs);
     return true;
   }
-  /// \brief Parses opencl_unroll_hint attribute.
+  /// Parses opencl_unroll_hint attribute.
   /// \return false if error happens.
   bool ParseOpenCLUnrollHintAttribute(ParsedAttributes &Attrs);
   void ParseNullabilityTypeSpecifiers(ParsedAttributes &attrs);
@@ -2633,18 +2633,18 @@
   DeclGroupPtrTy ParseOMPDeclareSimdClauses(DeclGroupPtrTy Ptr,
                                             CachedTokens &Toks,
                                             SourceLocation Loc);
-  /// \brief Parses declarative OpenMP directives.
+  /// Parses declarative OpenMP directives.
   DeclGroupPtrTy ParseOpenMPDeclarativeDirectiveWithExtDecl(
       AccessSpecifier &AS, ParsedAttributesWithRange &Attrs,
       DeclSpec::TST TagType = DeclSpec::TST_unspecified,
       Decl *TagDecl = nullptr);
-  /// \brief Parse 'omp declare reduction' construct.
+  /// Parse 'omp declare reduction' construct.
   DeclGroupPtrTy ParseOpenMPDeclareReductionDirective(AccessSpecifier AS);
   /// Parses initializer for provided omp_priv declaration inside the reduction
   /// initializer.
   void ParseOpenMPReductionInitializerForDecl(VarDecl *OmpPrivParm);
 
-  /// \brief Parses simple list of variables.
+  /// Parses simple list of variables.
   ///
   /// \param Kind Kind of the directive.
   /// \param Callback Callback function to be called for the list elements.
@@ -2656,7 +2656,7 @@
       const llvm::function_ref<void(CXXScopeSpec &, DeclarationNameInfo)> &
           Callback,
       bool AllowScopeSpecifier);
-  /// \brief Parses declarative or executable directive.
+  /// Parses declarative or executable directive.
   ///
   /// \param Allowed ACK_Any, if any directives are allowed,
   /// ACK_StatementsOpenMPAnyExecutable - if any executable directives are
@@ -2665,7 +2665,7 @@
   ///
   StmtResult
   ParseOpenMPDeclarativeOrExecutableDirective(AllowedConstructsKind Allowed);
-  /// \brief Parses clause of kind \a CKind for directive of a kind \a Kind.
+  /// Parses clause of kind \a CKind for directive of a kind \a Kind.
   ///
   /// \param DKind Kind of current directive.
   /// \param CKind Kind of current clause.
@@ -2674,7 +2674,7 @@
   ///
   OMPClause *ParseOpenMPClause(OpenMPDirectiveKind DKind,
                                OpenMPClauseKind CKind, bool FirstClause);
-  /// \brief Parses clause with a single expression of a kind \a Kind.
+  /// Parses clause with a single expression of a kind \a Kind.
   ///
   /// \param Kind Kind of current clause.
   /// \param ParseOnly true to skip the clause's semantic actions and return
@@ -2682,14 +2682,14 @@
   ///
   OMPClause *ParseOpenMPSingleExprClause(OpenMPClauseKind Kind,
                                          bool ParseOnly);
-  /// \brief Parses simple clause of a kind \a Kind.
+  /// Parses simple clause of a kind \a Kind.
   ///
   /// \param Kind Kind of current clause.
   /// \param ParseOnly true to skip the clause's semantic actions and return
   /// nullptr.
   ///
   OMPClause *ParseOpenMPSimpleClause(OpenMPClauseKind Kind, bool ParseOnly);
-  /// \brief Parses clause with a single expression and an additional argument
+  /// Parses clause with a single expression and an additional argument
   /// of a kind \a Kind.
   ///
   /// \param Kind Kind of current clause.
@@ -2698,14 +2698,14 @@
   ///
   OMPClause *ParseOpenMPSingleExprWithArgClause(OpenMPClauseKind Kind,
                                                 bool ParseOnly);
-  /// \brief Parses clause without any additional arguments.
+  /// Parses clause without any additional arguments.
   ///
   /// \param Kind Kind of current clause.
   /// \param ParseOnly true to skip the clause's semantic actions and return
   /// nullptr.
   ///
   OMPClause *ParseOpenMPClause(OpenMPClauseKind Kind, bool ParseOnly = false);
-  /// \brief Parses clause with the list of variables of a kind \a Kind.
+  /// Parses clause with the list of variables of a kind \a Kind.
   ///
   /// \param Kind Kind of current clause.
   /// \param ParseOnly true to skip the clause's semantic actions and return
Index: cfe/trunk/include/clang/Parse/RAIIObjectsForParser.h
===================================================================
--- cfe/trunk/include/clang/Parse/RAIIObjectsForParser.h
+++ cfe/trunk/include/clang/Parse/RAIIObjectsForParser.h
@@ -25,7 +25,7 @@
   // TODO: move ParsingClassDefinition here.
   // TODO: move TentativeParsingAction here.
 
-  /// \brief A RAII object used to temporarily suppress access-like
+  /// A RAII object used to temporarily suppress access-like
   /// checking.  Access-like checks are those associated with
   /// controlling the use of a declaration, like C++ access control
   /// errors and deprecation warnings.  They are contextually
@@ -84,7 +84,7 @@
     }
   };
 
-  /// \brief RAII object used to inform the actions that we're
+  /// RAII object used to inform the actions that we're
   /// currently parsing a declaration.  This is active when parsing a
   /// variable's initializer, but not when parsing the body of a
   /// class or function definition.
@@ -288,7 +288,7 @@
     }
   };
   
-  /// \brief RAII object that makes '>' behave either as an operator
+  /// RAII object that makes '>' behave either as an operator
   /// or as the closing angle bracket for a template argument list.
   class GreaterThanIsOperatorScope {
     bool &GreaterThanIsOperator;
@@ -320,7 +320,7 @@
     }
   };
   
-  /// \brief RAII object that makes sure paren/bracket/brace count is correct
+  /// RAII object that makes sure paren/bracket/brace count is correct
   /// after declaration/statement parsing, even when there's a parsing error.
   class ParenBraceBracketBalancer {
     Parser &P;
@@ -361,7 +361,7 @@
     }
   };
 
-  /// \brief RAII class that helps handle the parsing of an open/close delimiter
+  /// RAII class that helps handle the parsing of an open/close delimiter
   /// pair, such as braces { ... } or parentheses ( ... ).
   class BalancedDelimiterTracker : public GreaterThanIsOperatorScope {
     Parser& P;
@@ -441,7 +441,7 @@
     void skipToEnd();
   };
 
-  /// \brief RAIIObject to destroy the contents of a SmallVector of
+  /// RAIIObject to destroy the contents of a SmallVector of
   /// TemplateIdAnnotation pointers and clear the vector.
   class DestroyTemplateIdAnnotationsRAIIObj {
     SmallVectorImpl<TemplateIdAnnotation *> &Container;
Index: cfe/trunk/include/clang/Rewrite/Core/RewriteBuffer.h
===================================================================
--- cfe/trunk/include/clang/Rewrite/Core/RewriteBuffer.h
+++ cfe/trunk/include/clang/Rewrite/Core/RewriteBuffer.h
@@ -48,7 +48,7 @@
     Initialize(Input.begin(), Input.end());
   }
 
-  /// \brief Write to \p Stream the result of applying all changes to the
+  /// Write to \p Stream the result of applying all changes to the
   /// original buffer.
   /// Note that it isn't safe to use this function to overwrite memory mapped
   /// files in-place (PR17960). Consider using a higher-level utility such as
Index: cfe/trunk/include/clang/Rewrite/Core/Rewriter.h
===================================================================
--- cfe/trunk/include/clang/Rewrite/Core/Rewriter.h
+++ cfe/trunk/include/clang/Rewrite/Core/Rewriter.h
@@ -37,15 +37,15 @@
 
 public:
   struct RewriteOptions {
-    /// \brief Given a source range, true to include previous inserts at the
+    /// Given a source range, true to include previous inserts at the
     /// beginning of the range as part of the range itself (true by default).
     bool IncludeInsertsAtBeginOfRange = true;
 
-    /// \brief Given a source range, true to include previous inserts at the
+    /// Given a source range, true to include previous inserts at the
     /// end of the range as part of the range itself (true by default).
     bool IncludeInsertsAtEndOfRange = true;
 
-    /// \brief If true and removing some text leaves a blank line
+    /// If true and removing some text leaves a blank line
     /// also remove the empty line (false by default).
     bool RemoveLineIfEmpty = false;
 
@@ -105,7 +105,7 @@
     return InsertText(Loc, Str);
   }
 
-  /// \brief Insert the specified string after the token in the
+  /// Insert the specified string after the token in the
   /// specified location.
   bool InsertTextAfterToken(SourceLocation Loc, StringRef Str);
 
@@ -122,13 +122,13 @@
   bool RemoveText(SourceLocation Start, unsigned Length,
                   RewriteOptions opts = RewriteOptions());
 
-  /// \brief Remove the specified text region.
+  /// Remove the specified text region.
   bool RemoveText(CharSourceRange range,
                   RewriteOptions opts = RewriteOptions()) {
     return RemoveText(range.getBegin(), getRangeSize(range, opts), opts);
   }
 
-  /// \brief Remove the specified text region.
+  /// Remove the specified text region.
   bool RemoveText(SourceRange range, RewriteOptions opts = RewriteOptions()) {
     return RemoveText(range.getBegin(), getRangeSize(range, opts), opts);
   }
@@ -151,7 +151,7 @@
   /// operation.
   bool ReplaceText(SourceRange range, SourceRange replacementRange);
 
-  /// \brief Increase indentation for the lines between the given source range.
+  /// Increase indentation for the lines between the given source range.
   /// To determine what the indentation should be, 'parentIndent' is used
   /// that should be at a source location with an indentation one degree
   /// lower than the given range.
Index: cfe/trunk/include/clang/Rewrite/Frontend/FixItRewriter.h
===================================================================
--- cfe/trunk/include/clang/Rewrite/Frontend/FixItRewriter.h
+++ cfe/trunk/include/clang/Rewrite/Frontend/FixItRewriter.h
@@ -36,7 +36,7 @@
   FixItOptions() = default;
   virtual ~FixItOptions();
 
-  /// \brief This file is about to be rewritten. Return the name of the file
+  /// This file is about to be rewritten. Return the name of the file
   /// that is okay to write to.
   ///
   /// \param fd out parameter for file descriptor. After the call it may be set
@@ -48,52 +48,52 @@
   /// if this is false.
   bool InPlace = false;
 
-  /// \brief Whether to abort fixing a file when not all errors could be fixed.
+  /// Whether to abort fixing a file when not all errors could be fixed.
   bool FixWhatYouCan = false;
 
-  /// \brief Whether to only fix warnings and not errors.
+  /// Whether to only fix warnings and not errors.
   bool FixOnlyWarnings = false;
 
-  /// \brief If true, only pass the diagnostic to the actual diagnostic consumer
+  /// If true, only pass the diagnostic to the actual diagnostic consumer
   /// if it is an error or a fixit was applied as part of the diagnostic.
   /// It basically silences warnings without accompanying fixits.
   bool Silent = false;
 };
 
 class FixItRewriter : public DiagnosticConsumer {
-  /// \brief The diagnostics machinery.
+  /// The diagnostics machinery.
   DiagnosticsEngine &Diags;
 
   edit::EditedSource Editor;
 
-  /// \brief The rewriter used to perform the various code
+  /// The rewriter used to perform the various code
   /// modifications.
   Rewriter Rewrite;
 
-  /// \brief The diagnostic client that performs the actual formatting
+  /// The diagnostic client that performs the actual formatting
   /// of error messages.
   DiagnosticConsumer *Client;
   std::unique_ptr<DiagnosticConsumer> Owner;
 
-  /// \brief Turn an input path into an output path. NULL implies overwriting
+  /// Turn an input path into an output path. NULL implies overwriting
   /// the original.
   FixItOptions *FixItOpts;
 
-  /// \brief The number of rewriter failures.
+  /// The number of rewriter failures.
   unsigned NumFailures = 0;
 
-  /// \brief Whether the previous diagnostic was not passed to the consumer.
+  /// Whether the previous diagnostic was not passed to the consumer.
   bool PrevDiagSilenced = false;
 
 public:
-  /// \brief Initialize a new fix-it rewriter.
+  /// Initialize a new fix-it rewriter.
   FixItRewriter(DiagnosticsEngine &Diags, SourceManager &SourceMgr,
                 const LangOptions &LangOpts, FixItOptions *FixItOpts);
 
-  /// \brief Destroy the fix-it rewriter.
+  /// Destroy the fix-it rewriter.
   ~FixItRewriter() override;
 
-  /// \brief Check whether there are modifications for a given file.
+  /// Check whether there are modifications for a given file.
   bool IsModified(FileID ID) const {
     return Rewrite.getRewriteBufferFor(ID) != nullptr;
   }
@@ -104,12 +104,12 @@
   iterator buffer_begin() { return Rewrite.buffer_begin(); }
   iterator buffer_end() { return Rewrite.buffer_end(); }
 
-  /// \brief Write a single modified source file.
+  /// Write a single modified source file.
   ///
   /// \returns true if there was an error, false otherwise.
   bool WriteFixedFile(FileID ID, raw_ostream &OS);
 
-  /// \brief Write the modified source files.
+  /// Write the modified source files.
   ///
   /// \returns true if there was an error, false otherwise.
   bool WriteFixedFiles(
@@ -126,7 +126,7 @@
   void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel,
                         const Diagnostic &Info) override;
 
-  /// \brief Emit a diagnostic via the adapted diagnostic client.
+  /// Emit a diagnostic via the adapted diagnostic client.
   void Diag(SourceLocation Loc, unsigned DiagID);
 };
 
Index: cfe/trunk/include/clang/Rewrite/Frontend/FrontendActions.h
===================================================================
--- cfe/trunk/include/clang/Rewrite/Frontend/FrontendActions.h
+++ cfe/trunk/include/clang/Rewrite/Frontend/FrontendActions.h
@@ -46,7 +46,7 @@
   ~FixItAction() override;
 };
 
-/// \brief Emits changes to temporary files and uses them for the original
+/// Emits changes to temporary files and uses them for the original
 /// frontend action.
 class FixItRecompile : public WrapperFrontendAction {
 public:
Index: cfe/trunk/include/clang/Sema/AnalysisBasedWarnings.h
===================================================================
--- cfe/trunk/include/clang/Sema/AnalysisBasedWarnings.h
+++ cfe/trunk/include/clang/Sema/AnalysisBasedWarnings.h
@@ -54,34 +54,34 @@
   /// \name Statistics
   /// @{
 
-  /// \brief Number of function CFGs built and analyzed.
+  /// Number of function CFGs built and analyzed.
   unsigned NumFunctionsAnalyzed;
 
-  /// \brief Number of functions for which the CFG could not be successfully
+  /// Number of functions for which the CFG could not be successfully
   /// built.
   unsigned NumFunctionsWithBadCFGs;
 
-  /// \brief Total number of blocks across all CFGs.
+  /// Total number of blocks across all CFGs.
   unsigned NumCFGBlocks;
 
-  /// \brief Largest number of CFG blocks for a single function analyzed.
+  /// Largest number of CFG blocks for a single function analyzed.
   unsigned MaxCFGBlocksPerFunction;
 
-  /// \brief Total number of CFGs with variables analyzed for uninitialized
+  /// Total number of CFGs with variables analyzed for uninitialized
   /// uses.
   unsigned NumUninitAnalysisFunctions;
 
-  /// \brief Total number of variables analyzed for uninitialized uses.
+  /// Total number of variables analyzed for uninitialized uses.
   unsigned NumUninitAnalysisVariables;
 
-  /// \brief Max number of variables analyzed for uninitialized uses in a single
+  /// Max number of variables analyzed for uninitialized uses in a single
   /// function.
   unsigned MaxUninitAnalysisVariablesPerFunction;
 
-  /// \brief Total number of block visits during uninitialized use analysis.
+  /// Total number of block visits during uninitialized use analysis.
   unsigned NumUninitAnalysisBlockVisits;
 
-  /// \brief Max number of block visits during uninitialized use analysis of
+  /// Max number of block visits during uninitialized use analysis of
   /// a single function.
   unsigned MaxUninitAnalysisBlockVisitsPerFunction;
 
Index: cfe/trunk/include/clang/Sema/AttributeList.h
===================================================================
--- cfe/trunk/include/clang/Sema/AttributeList.h
+++ cfe/trunk/include/clang/Sema/AttributeList.h
@@ -36,20 +36,20 @@
 class IdentifierInfo;
 class LangOptions;
 
-/// \brief Represents information about a change in availability for
+/// Represents information about a change in availability for
 /// an entity, which is part of the encoding of the 'availability'
 /// attribute.
 struct AvailabilityChange {
-  /// \brief The location of the keyword indicating the kind of change.
+  /// The location of the keyword indicating the kind of change.
   SourceLocation KeywordLoc;
 
-  /// \brief The version number at which the change occurred.
+  /// The version number at which the change occurred.
   VersionTuple Version;
 
-  /// \brief The source range covering the version number.
+  /// The source range covering the version number.
   SourceRange VersionRange;
 
-  /// \brief Determine whether this availability change is valid.
+  /// Determine whether this availability change is valid.
   bool isValid() const { return !Version.empty(); }
 };
 
@@ -78,7 +78,7 @@
 
 } // namespace
 
-/// \brief Wraps an identifier and optional source location for the identifier.
+/// Wraps an identifier and optional source location for the identifier.
 struct IdentifierLoc {
   SourceLocation Loc;
   IdentifierInfo *Ident;
@@ -87,7 +87,7 @@
                                IdentifierInfo *Ident);
 };
 
-/// \brief A union of the various pointer types that can be passed to an
+/// A union of the various pointer types that can be passed to an
 /// AttributeList as an argument.
 using ArgsUnion = llvm::PointerUnion<Expr *, IdentifierLoc *>;
 using ArgsVector = llvm::SmallVector<ArgsUnion, 12U>;
@@ -175,7 +175,7 @@
   /// A cached value.
   mutable unsigned ProcessingCache : 8;
 
-  /// \brief The location of the 'unavailable' keyword in an
+  /// The location of the 'unavailable' keyword in an
   /// availability attribute.
   SourceLocation UnavailableLoc;
   
@@ -524,7 +524,7 @@
     return getPropertyDataBuffer();
   }
 
-  /// \brief Get an index into the attribute spelling list
+  /// Get an index into the attribute spelling list
   /// defined in Attr.td. This index is used by an attribute
   /// to pretty print itself.
   unsigned getAttributeSpellingListIndex() const;
@@ -547,7 +547,7 @@
   bool isKnownToGCC() const;
   bool isSupportedByPragmaAttribute() const;
 
-  /// \brief If the parsed attribute has a semantic equivalent, and it would
+  /// If the parsed attribute has a semantic equivalent, and it would
   /// have a semantic Spelling enumeration (due to having semantically-distinct
   /// spelling variations), return the value of that semantic spelling. If the
   /// parsed attribute does not have a semantic equivalent, or would not have
Index: cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h
===================================================================
--- cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h
+++ cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h
@@ -47,102 +47,102 @@
 class Preprocessor;
 class Sema;
 
-/// \brief Default priority values for code-completion results based
+/// Default priority values for code-completion results based
 /// on their kind.
 enum {
-  /// \brief Priority for the next initialization in a constructor initializer
+  /// Priority for the next initialization in a constructor initializer
   /// list.
   CCP_NextInitializer = 7,
 
-  /// \brief Priority for an enumeration constant inside a switch whose
+  /// Priority for an enumeration constant inside a switch whose
   /// condition is of the enumeration type.
   CCP_EnumInCase = 7,
 
-  /// \brief Priority for a send-to-super completion.
+  /// Priority for a send-to-super completion.
   CCP_SuperCompletion = 20,
 
-  /// \brief Priority for a declaration that is in the local scope.
+  /// Priority for a declaration that is in the local scope.
   CCP_LocalDeclaration = 34,
 
-  /// \brief Priority for a member declaration found from the current
+  /// Priority for a member declaration found from the current
   /// method or member function.
   CCP_MemberDeclaration = 35,
 
-  /// \brief Priority for a language keyword (that isn't any of the other
+  /// Priority for a language keyword (that isn't any of the other
   /// categories).
   CCP_Keyword = 40,
 
-  /// \brief Priority for a code pattern.
+  /// Priority for a code pattern.
   CCP_CodePattern = 40,
 
-  /// \brief Priority for a non-type declaration.
+  /// Priority for a non-type declaration.
   CCP_Declaration = 50,
 
-  /// \brief Priority for a type.
+  /// Priority for a type.
   CCP_Type = CCP_Declaration,
 
-  /// \brief Priority for a constant value (e.g., enumerator).
+  /// Priority for a constant value (e.g., enumerator).
   CCP_Constant = 65,
 
-  /// \brief Priority for a preprocessor macro.
+  /// Priority for a preprocessor macro.
   CCP_Macro = 70,
 
-  /// \brief Priority for a nested-name-specifier.
+  /// Priority for a nested-name-specifier.
   CCP_NestedNameSpecifier = 75,
 
-  /// \brief Priority for a result that isn't likely to be what the user wants,
+  /// Priority for a result that isn't likely to be what the user wants,
   /// but is included for completeness.
   CCP_Unlikely = 80,
 
-  /// \brief Priority for the Objective-C "_cmd" implicit parameter.
+  /// Priority for the Objective-C "_cmd" implicit parameter.
   CCP_ObjC_cmd = CCP_Unlikely
 };
 
-/// \brief Priority value deltas that are added to code-completion results
+/// Priority value deltas that are added to code-completion results
 /// based on the context of the result.
 enum {
-  /// \brief The result is in a base class.
+  /// The result is in a base class.
   CCD_InBaseClass = 2,
 
-  /// \brief The result is a C++ non-static member function whose qualifiers
+  /// The result is a C++ non-static member function whose qualifiers
   /// exactly match the object type on which the member function can be called.
   CCD_ObjectQualifierMatch = -1,
 
-  /// \brief The selector of the given message exactly matches the selector
+  /// The selector of the given message exactly matches the selector
   /// of the current method, which might imply that some kind of delegation
   /// is occurring.
   CCD_SelectorMatch = -3,
 
-  /// \brief Adjustment to the "bool" type in Objective-C, where the typedef
+  /// Adjustment to the "bool" type in Objective-C, where the typedef
   /// "BOOL" is preferred.
   CCD_bool_in_ObjC = 1,
 
-  /// \brief Adjustment for KVC code pattern priorities when it doesn't look
+  /// Adjustment for KVC code pattern priorities when it doesn't look
   /// like the
   CCD_ProbablyNotObjCCollection = 15,
 
-  /// \brief An Objective-C method being used as a property.
+  /// An Objective-C method being used as a property.
   CCD_MethodAsProperty = 2,
 
-  /// \brief An Objective-C block property completed as a setter with a
+  /// An Objective-C block property completed as a setter with a
   /// block placeholder.
   CCD_BlockPropertySetter = 3
 };
 
-/// \brief Priority value factors by which we will divide or multiply the
+/// Priority value factors by which we will divide or multiply the
 /// priority of a code-completion result.
 enum {
-  /// \brief Divide by this factor when a code-completion result's type exactly
+  /// Divide by this factor when a code-completion result's type exactly
   /// matches the type we expect.
   CCF_ExactTypeMatch = 4,
 
-  /// \brief Divide by this factor when a code-completion result's type is
+  /// Divide by this factor when a code-completion result's type is
   /// similar to the type we expect (e.g., both arithmetic types, both
   /// Objective-C object pointer types).
   CCF_SimilarTypeMatch = 2
 };
 
-/// \brief A simplified classification of types used when determining
+/// A simplified classification of types used when determining
 /// "similar" types for code completion.
 enum SimplifiedTypeClass {
   STC_Arithmetic,
@@ -156,14 +156,14 @@
   STC_Void
 };
 
-/// \brief Determine the simplified type class of the given canonical type.
+/// Determine the simplified type class of the given canonical type.
 SimplifiedTypeClass getSimplifiedTypeClass(CanQualType T);
 
-/// \brief Determine the type that this declaration will have if it is used
+/// Determine the type that this declaration will have if it is used
 /// as a type or in an expression.
 QualType getDeclUsageType(ASTContext &C, const NamedDecl *ND);
 
-/// \brief Determine the priority to be given to a macro code completion result
+/// Determine the priority to be given to a macro code completion result
 /// with the given name.
 ///
 /// \param MacroName The name of the macro.
@@ -176,53 +176,53 @@
                                const LangOptions &LangOpts,
                                bool PreferredTypeIsPointer = false);
 
-/// \brief Determine the libclang cursor kind associated with the given
+/// Determine the libclang cursor kind associated with the given
 /// declaration.
 CXCursorKind getCursorKindForDecl(const Decl *D);
 
-/// \brief The context in which code completion occurred, so that the
+/// The context in which code completion occurred, so that the
 /// code-completion consumer can process the results accordingly.
 class CodeCompletionContext {
 public:
   enum Kind {
-    /// \brief An unspecified code-completion context.
+    /// An unspecified code-completion context.
     CCC_Other,
 
-    /// \brief An unspecified code-completion context where we should also add
+    /// An unspecified code-completion context where we should also add
     /// macro completions.
     CCC_OtherWithMacros,
 
-    /// \brief Code completion occurred within a "top-level" completion context,
+    /// Code completion occurred within a "top-level" completion context,
     /// e.g., at namespace or global scope.
     CCC_TopLevel,
 
-    /// \brief Code completion occurred within an Objective-C interface,
+    /// Code completion occurred within an Objective-C interface,
     /// protocol, or category interface.
     CCC_ObjCInterface,
 
-    /// \brief Code completion occurred within an Objective-C implementation
+    /// Code completion occurred within an Objective-C implementation
     /// or category implementation.
     CCC_ObjCImplementation,
 
-    /// \brief Code completion occurred within the instance variable list of
+    /// Code completion occurred within the instance variable list of
     /// an Objective-C interface, implementation, or category implementation.
     CCC_ObjCIvarList,
 
-    /// \brief Code completion occurred within a class, struct, or union.
+    /// Code completion occurred within a class, struct, or union.
     CCC_ClassStructUnion,
 
-    /// \brief Code completion occurred where a statement (or declaration) is
+    /// Code completion occurred where a statement (or declaration) is
     /// expected in a function, method, or block.
     CCC_Statement,
 
-    /// \brief Code completion occurred where an expression is expected.
+    /// Code completion occurred where an expression is expected.
     CCC_Expression,
 
-    /// \brief Code completion occurred where an Objective-C message receiver
+    /// Code completion occurred where an Objective-C message receiver
     /// is expected.
     CCC_ObjCMessageReceiver,
 
-    /// \brief Code completion occurred on the right-hand side of a member
+    /// Code completion occurred on the right-hand side of a member
     /// access expression using the dot operator.
     ///
     /// The results of this completion are the members of the type being
@@ -230,7 +230,7 @@
     /// \c CodeCompletionContext::getType().
     CCC_DotMemberAccess,
 
-    /// \brief Code completion occurred on the right-hand side of a member
+    /// Code completion occurred on the right-hand side of a member
     /// access expression using the arrow operator.
     ///
     /// The results of this completion are the members of the type being
@@ -238,7 +238,7 @@
     /// \c CodeCompletionContext::getType().
     CCC_ArrowMemberAccess,
 
-    /// \brief Code completion occurred on the right-hand side of an Objective-C
+    /// Code completion occurred on the right-hand side of an Objective-C
     /// property access expression.
     ///
     /// The results of this completion are the members of the type being
@@ -246,81 +246,81 @@
     /// \c CodeCompletionContext::getType().
     CCC_ObjCPropertyAccess,
 
-    /// \brief Code completion occurred after the "enum" keyword, to indicate
+    /// Code completion occurred after the "enum" keyword, to indicate
     /// an enumeration name.
     CCC_EnumTag,
 
-    /// \brief Code completion occurred after the "union" keyword, to indicate
+    /// Code completion occurred after the "union" keyword, to indicate
     /// a union name.
     CCC_UnionTag,
 
-    /// \brief Code completion occurred after the "struct" or "class" keyword,
+    /// Code completion occurred after the "struct" or "class" keyword,
     /// to indicate a struct or class name.
     CCC_ClassOrStructTag,
 
-    /// \brief Code completion occurred where a protocol name is expected.
+    /// Code completion occurred where a protocol name is expected.
     CCC_ObjCProtocolName,
 
-    /// \brief Code completion occurred where a namespace or namespace alias
+    /// Code completion occurred where a namespace or namespace alias
     /// is expected.
     CCC_Namespace,
 
-    /// \brief Code completion occurred where a type name is expected.
+    /// Code completion occurred where a type name is expected.
     CCC_Type,
 
-    /// \brief Code completion occurred where a new name is expected.
+    /// Code completion occurred where a new name is expected.
     CCC_Name,
 
-    /// \brief Code completion occurred where a new name is expected and a
+    /// Code completion occurred where a new name is expected and a
     /// qualified name is permissible.
     CCC_PotentiallyQualifiedName,
 
-    /// \brief Code completion occurred where an macro is being defined.
+    /// Code completion occurred where an macro is being defined.
     CCC_MacroName,
 
-    /// \brief Code completion occurred where a macro name is expected
+    /// Code completion occurred where a macro name is expected
     /// (without any arguments, in the case of a function-like macro).
     CCC_MacroNameUse,
 
-    /// \brief Code completion occurred within a preprocessor expression.
+    /// Code completion occurred within a preprocessor expression.
     CCC_PreprocessorExpression,
 
-    /// \brief Code completion occurred where a preprocessor directive is
+    /// Code completion occurred where a preprocessor directive is
     /// expected.
     CCC_PreprocessorDirective,
 
-    /// \brief Code completion occurred in a context where natural language is
+    /// Code completion occurred in a context where natural language is
     /// expected, e.g., a comment or string literal.
     ///
     /// This context usually implies that no completions should be added,
     /// unless they come from an appropriate natural-language dictionary.
     CCC_NaturalLanguage,
 
-    /// \brief Code completion for a selector, as in an \@selector expression.
+    /// Code completion for a selector, as in an \@selector expression.
     CCC_SelectorName,
 
-    /// \brief Code completion within a type-qualifier list.
+    /// Code completion within a type-qualifier list.
     CCC_TypeQualifiers,
 
-    /// \brief Code completion in a parenthesized expression, which means that
+    /// Code completion in a parenthesized expression, which means that
     /// we may also have types here in C and Objective-C (as well as in C++).
     CCC_ParenthesizedExpression,
 
-    /// \brief Code completion where an Objective-C instance message is
+    /// Code completion where an Objective-C instance message is
     /// expected.
     CCC_ObjCInstanceMessage,
 
-    /// \brief Code completion where an Objective-C class message is expected.
+    /// Code completion where an Objective-C class message is expected.
     CCC_ObjCClassMessage,
 
-    /// \brief Code completion where the name of an Objective-C class is
+    /// Code completion where the name of an Objective-C class is
     /// expected.
     CCC_ObjCInterfaceName,
 
-    /// \brief Code completion where an Objective-C category name is expected.
+    /// Code completion where an Objective-C category name is expected.
     CCC_ObjCCategoryName,
 
-    /// \brief An unknown context, in which we are recovering from a parsing
+    /// An unknown context, in which we are recovering from a parsing
     /// error and don't know which completions we should give.
     CCC_Recovery
   };
@@ -330,29 +330,29 @@
 private:
   Kind CCKind;
 
-  /// \brief The type that would prefer to see at this point (e.g., the type
+  /// The type that would prefer to see at this point (e.g., the type
   /// of an initializer or function parameter).
   QualType PreferredType;
 
-  /// \brief The type of the base object in a member access expression.
+  /// The type of the base object in a member access expression.
   QualType BaseType;
 
-  /// \brief The identifiers for Objective-C selector parts.
+  /// The identifiers for Objective-C selector parts.
   ArrayRef<IdentifierInfo *> SelIdents;
 
-  /// \brief The scope specifier that comes before the completion token e.g.
+  /// The scope specifier that comes before the completion token e.g.
   /// "a::b::"
   llvm::Optional<CXXScopeSpec> ScopeSpecifier;
 
-  /// \brief A set of declaration contexts visited by Sema when doing lookup for
+  /// A set of declaration contexts visited by Sema when doing lookup for
   /// code completion.
   VisitedContextSet VisitedContexts;
 
 public:
-  /// \brief Construct a new code-completion context of the given kind.
+  /// Construct a new code-completion context of the given kind.
   CodeCompletionContext(Kind CCKind) : CCKind(CCKind), SelIdents(None) {}
 
-  /// \brief Construct a new code-completion context of the given kind.
+  /// Construct a new code-completion context of the given kind.
   CodeCompletionContext(Kind CCKind, QualType T,
                         ArrayRef<IdentifierInfo *> SelIdents = None)
       : CCKind(CCKind), SelIdents(SelIdents) {
@@ -364,38 +364,38 @@
       PreferredType = T;
   }
 
-  /// \brief Retrieve the kind of code-completion context.
+  /// Retrieve the kind of code-completion context.
   Kind getKind() const { return CCKind; }
 
-  /// \brief Retrieve the type that this expression would prefer to have, e.g.,
+  /// Retrieve the type that this expression would prefer to have, e.g.,
   /// if the expression is a variable initializer or a function argument, the
   /// type of the corresponding variable or function parameter.
   QualType getPreferredType() const { return PreferredType; }
 
-  /// \brief Retrieve the type of the base object in a member-access
+  /// Retrieve the type of the base object in a member-access
   /// expression.
   QualType getBaseType() const { return BaseType; }
 
-  /// \brief Retrieve the Objective-C selector identifiers.
+  /// Retrieve the Objective-C selector identifiers.
   ArrayRef<IdentifierInfo *> getSelIdents() const { return SelIdents; }
 
-  /// \brief Determines whether we want C++ constructors as results within this
+  /// Determines whether we want C++ constructors as results within this
   /// context.
   bool wantConstructorResults() const;
 
-  /// \brief Sets the scope specifier that comes before the completion token.
+  /// Sets the scope specifier that comes before the completion token.
   /// This is expected to be set in code completions on qualfied specifiers
   /// (e.g. "a::b::").
   void setCXXScopeSpecifier(CXXScopeSpec SS) {
     this->ScopeSpecifier = std::move(SS);
   }
 
-  /// \brief Adds a visited context.
+  /// Adds a visited context.
   void addVisitedContext(DeclContext *Ctx) {
     VisitedContexts.insert(Ctx);
   }
 
-  /// \brief Retrieves all visited contexts.
+  /// Retrieves all visited contexts.
   const VisitedContextSet &getVisitedContexts() const {
     return VisitedContexts;
   }
@@ -407,10 +407,10 @@
   }
 };
 
-/// \brief Get string representation of \p Kind, useful for for debugging.
+/// Get string representation of \p Kind, useful for for debugging.
 llvm::StringRef getCompletionKindString(CodeCompletionContext::Kind Kind);
 
-/// \brief A "string" used to describe how code completion can
+/// A "string" used to describe how code completion can
 /// be performed for an entity.
 ///
 /// A code completion string typically shows how a particular entity can be
@@ -419,97 +419,97 @@
 /// arguments, etc.
 class CodeCompletionString {
 public:
-  /// \brief The different kinds of "chunks" that can occur within a code
+  /// The different kinds of "chunks" that can occur within a code
   /// completion string.
   enum ChunkKind {
-    /// \brief The piece of text that the user is expected to type to
+    /// The piece of text that the user is expected to type to
     /// match the code-completion string, typically a keyword or the name of a
     /// declarator or macro.
     CK_TypedText,
 
-    /// \brief A piece of text that should be placed in the buffer, e.g.,
+    /// A piece of text that should be placed in the buffer, e.g.,
     /// parentheses or a comma in a function call.
     CK_Text,
 
-    /// \brief A code completion string that is entirely optional. For example,
+    /// A code completion string that is entirely optional. For example,
     /// an optional code completion string that describes the default arguments
     /// in a function call.
     CK_Optional,
 
-    /// \brief A string that acts as a placeholder for, e.g., a function
+    /// A string that acts as a placeholder for, e.g., a function
     /// call argument.
     CK_Placeholder,
 
-    /// \brief A piece of text that describes something about the result but
+    /// A piece of text that describes something about the result but
     /// should not be inserted into the buffer.
     CK_Informative,
-    /// \brief A piece of text that describes the type of an entity or, for
+    /// A piece of text that describes the type of an entity or, for
     /// functions and methods, the return type.
     CK_ResultType,
 
-    /// \brief A piece of text that describes the parameter that corresponds
+    /// A piece of text that describes the parameter that corresponds
     /// to the code-completion location within a function call, message send,
     /// macro invocation, etc.
     CK_CurrentParameter,
 
-    /// \brief A left parenthesis ('(').
+    /// A left parenthesis ('(').
     CK_LeftParen,
 
-    /// \brief A right parenthesis (')').
+    /// A right parenthesis (')').
     CK_RightParen,
 
-    /// \brief A left bracket ('[').
+    /// A left bracket ('[').
     CK_LeftBracket,
 
-    /// \brief A right bracket (']').
+    /// A right bracket (']').
     CK_RightBracket,
 
-    /// \brief A left brace ('{').
+    /// A left brace ('{').
     CK_LeftBrace,
 
-    /// \brief A right brace ('}').
+    /// A right brace ('}').
     CK_RightBrace,
 
-    /// \brief A left angle bracket ('<').
+    /// A left angle bracket ('<').
     CK_LeftAngle,
 
-    /// \brief A right angle bracket ('>').
+    /// A right angle bracket ('>').
     CK_RightAngle,
 
-    /// \brief A comma separator (',').
+    /// A comma separator (',').
     CK_Comma,
 
-    /// \brief A colon (':').
+    /// A colon (':').
     CK_Colon,
 
-    /// \brief A semicolon (';').
+    /// A semicolon (';').
     CK_SemiColon,
 
-    /// \brief An '=' sign.
+    /// An '=' sign.
     CK_Equal,
 
-    /// \brief Horizontal whitespace (' ').
+    /// Horizontal whitespace (' ').
     CK_HorizontalSpace,
 
-    /// \brief Vertical whitespace ('\\n' or '\\r\\n', depending on the
+    /// Vertical whitespace ('\\n' or '\\r\\n', depending on the
     /// platform).
     CK_VerticalSpace
   };
 
-  /// \brief One piece of the code completion string.
+  /// One piece of the code completion string.
   struct Chunk {
-    /// \brief The kind of data stored in this piece of the code completion
+    /// The kind of data stored in this piece of the code completion
     /// string.
     ChunkKind Kind = CK_Text;
 
     union {
-      /// \brief The text string associated with a CK_Text, CK_Placeholder,
+      /// The text string associated with a CK_Text, CK_Placeholder,
       /// CK_Informative, or CK_Comma chunk.
       /// The string is owned by the chunk and will be deallocated
       /// (with delete[]) when the chunk is destroyed.
       const char *Text;
 
-      /// \brief The code completion string associated with a CK_Optional chunk.
+      /// The code completion string associated with a CK_Optional chunk.
       /// The optional code completion string is owned by the chunk, and will
       /// be deallocated (with delete) when the chunk is destroyed.
       CodeCompletionString *Optional;
@@ -519,22 +519,22 @@
 
     explicit Chunk(ChunkKind Kind, const char *Text = "");
 
-    /// \brief Create a new text chunk.
+    /// Create a new text chunk.
     static Chunk CreateText(const char *Text);
 
-    /// \brief Create a new optional chunk.
+    /// Create a new optional chunk.
     static Chunk CreateOptional(CodeCompletionString *Optional);
 
-    /// \brief Create a new placeholder chunk.
+    /// Create a new placeholder chunk.
     static Chunk CreatePlaceholder(const char *Placeholder);
 
-    /// \brief Create a new informative chunk.
+    /// Create a new informative chunk.
     static Chunk CreateInformative(const char *Informative);
 
-    /// \brief Create a new result type chunk.
+    /// Create a new result type chunk.
     static Chunk CreateResultType(const char *ResultType);
 
-    /// \brief Create a new current-parameter chunk.
+    /// Create a new current-parameter chunk.
     static Chunk CreateCurrentParameter(const char *CurrentParameter);
   };
 
@@ -542,22 +542,22 @@
   friend class CodeCompletionBuilder;
   friend class CodeCompletionResult;
 
-  /// \brief The number of chunks stored in this string.
+  /// The number of chunks stored in this string.
   unsigned NumChunks : 16;
 
-  /// \brief The number of annotations for this code-completion result.
+  /// The number of annotations for this code-completion result.
   unsigned NumAnnotations : 16;
 
-  /// \brief The priority of this code-completion string.
+  /// The priority of this code-completion string.
   unsigned Priority : 16;
 
-  /// \brief The availability of this code-completion result.
+  /// The availability of this code-completion result.
   unsigned Availability : 2;
   
-  /// \brief The name of the parent context.
+  /// The name of the parent context.
   StringRef ParentName;
 
-  /// \brief A brief documentation comment attached to the declaration of
+  /// A brief documentation comment attached to the declaration of
   /// entity being completed by this result.
   const char *BriefComment;
   
@@ -584,22 +584,22 @@
     return begin()[I];
   }
 
-  /// \brief Returns the text in the TypedText chunk.
+  /// Returns the text in the TypedText chunk.
   const char *getTypedText() const;
 
-  /// \brief Retrieve the priority of this code completion result.
+  /// Retrieve the priority of this code completion result.
   unsigned getPriority() const { return Priority; }
 
-  /// \brief Retrieve the availability of this code completion result.
+  /// Retrieve the availability of this code completion result.
   unsigned getAvailability() const { return Availability; }
 
-  /// \brief Retrieve the number of annotations for this code completion result.
+  /// Retrieve the number of annotations for this code completion result.
   unsigned getAnnotationCount() const;
 
-  /// \brief Retrieve the annotation string specified by \c AnnotationNr.
+  /// Retrieve the annotation string specified by \c AnnotationNr.
   const char *getAnnotation(unsigned AnnotationNr) const;
   
-  /// \brief Retrieve the name of the parent context.
+  /// Retrieve the name of the parent context.
   StringRef getParentContextName() const {
     return ParentName;
   }
@@ -608,19 +608,19 @@
     return BriefComment;
   }
   
-  /// \brief Retrieve a string representation of the code completion string,
+  /// Retrieve a string representation of the code completion string,
   /// which is mainly useful for debugging.
   std::string getAsString() const;
 };
 
-/// \brief An allocator used specifically for the purpose of code completion.
+/// An allocator used specifically for the purpose of code completion.
 class CodeCompletionAllocator : public llvm::BumpPtrAllocator {
 public:
-  /// \brief Copy the given string into this allocator.
+  /// Copy the given string into this allocator.
   const char *CopyString(const Twine &String);
 };
 
-/// \brief Allocator for a cached set of global code completions.
+/// Allocator for a cached set of global code completions.
 class GlobalCodeCompletionAllocator : public CodeCompletionAllocator {};
 
 class CodeCompletionTUInfo {
@@ -656,7 +656,7 @@
 
 namespace clang {
 
-/// \brief A builder class used to construct new code-completion strings.
+/// A builder class used to construct new code-completion strings.
 class CodeCompletionBuilder {
 public:
   using Chunk = CodeCompletionString::Chunk;
@@ -669,7 +669,7 @@
   StringRef ParentName;
   const char *BriefComment = nullptr;
   
-  /// \brief The chunks stored in this string.
+  /// The chunks stored in this string.
   SmallVector<Chunk, 4> Chunks;
 
   SmallVector<const char *, 2> Annotations;
@@ -685,44 +685,44 @@
       : Allocator(Allocator), CCTUInfo(CCTUInfo), Priority(Priority),
         Availability(Availability) {}
 
-  /// \brief Retrieve the allocator into which the code completion
+  /// Retrieve the allocator into which the code completion
   /// strings should be allocated.
   CodeCompletionAllocator &getAllocator() const { return Allocator; }
 
   CodeCompletionTUInfo &getCodeCompletionTUInfo() const { return CCTUInfo; }
 
-  /// \brief Take the resulting completion string.
+  /// Take the resulting completion string.
   ///
   /// This operation can only be performed once.
   CodeCompletionString *TakeString();
 
-  /// \brief Add a new typed-text chunk.
+  /// Add a new typed-text chunk.
   void AddTypedTextChunk(const char *Text);
 
-  /// \brief Add a new text chunk.
+  /// Add a new text chunk.
   void AddTextChunk(const char *Text);
 
-  /// \brief Add a new optional chunk.
+  /// Add a new optional chunk.
   void AddOptionalChunk(CodeCompletionString *Optional);
 
-  /// \brief Add a new placeholder chunk.
+  /// Add a new placeholder chunk.
   void AddPlaceholderChunk(const char *Placeholder);
 
-  /// \brief Add a new informative chunk.
+  /// Add a new informative chunk.
   void AddInformativeChunk(const char *Text);
 
-  /// \brief Add a new result-type chunk.
+  /// Add a new result-type chunk.
   void AddResultTypeChunk(const char *ResultType);
 
-  /// \brief Add a new current-parameter chunk.
+  /// Add a new current-parameter chunk.
   void AddCurrentParameterChunk(const char *CurrentParameter);
 
-  /// \brief Add a new chunk.
+  /// Add a new chunk.
   void AddChunk(CodeCompletionString::ChunkKind CK, const char *Text = "");
 
   void AddAnnotation(const char *A) { Annotations.push_back(A); }
 
-  /// \brief Add the parent context information to this code completion.
+  /// Add the parent context information to this code completion.
   void addParentContext(const DeclContext *DC);
 
   const char *getBriefComment() const { return BriefComment; }
@@ -731,10 +731,10 @@
   StringRef getParentName() const { return ParentName; }
 };
 
-/// \brief Captures a result of code completion.
+/// Captures a result of code completion.
 class CodeCompletionResult {
 public:
-  /// \brief Describes the kind of result generated.
+  /// Describes the kind of result generated.
   enum ResultKind {
     /// Refers to a declaration.
     RK_Declaration = 0,
@@ -749,63 +749,63 @@
     RK_Pattern
   };
 
-  /// \brief When Kind == RK_Declaration or RK_Pattern, the declaration we are
+  /// When Kind == RK_Declaration or RK_Pattern, the declaration we are
   /// referring to. In the latter case, the declaration might be NULL.
   const NamedDecl *Declaration = nullptr;
 
   union {
-    /// \brief When Kind == RK_Keyword, the string representing the keyword
+    /// When Kind == RK_Keyword, the string representing the keyword
     /// or symbol's spelling.
     const char *Keyword;
 
-    /// \brief When Kind == RK_Pattern, the code-completion string that
+    /// When Kind == RK_Pattern, the code-completion string that
     /// describes the completion text to insert.
     CodeCompletionString *Pattern;
 
-    /// \brief When Kind == RK_Macro, the identifier that refers to a macro.
+    /// When Kind == RK_Macro, the identifier that refers to a macro.
     const IdentifierInfo *Macro;
   };
 
-  /// \brief The priority of this particular code-completion result.
+  /// The priority of this particular code-completion result.
   unsigned Priority;
 
-  /// \brief Specifies which parameter (of a function, Objective-C method,
+  /// Specifies which parameter (of a function, Objective-C method,
   /// macro, etc.) we should start with when formatting the result.
   unsigned StartParameter = 0;
 
-  /// \brief The kind of result stored here.
+  /// The kind of result stored here.
   ResultKind Kind;
 
-  /// \brief The cursor kind that describes this result.
+  /// The cursor kind that describes this result.
   CXCursorKind CursorKind;
 
-  /// \brief The availability of this result.
+  /// The availability of this result.
   CXAvailabilityKind Availability = CXAvailability_Available;
 
-  /// \brief Whether this result is hidden by another name.
+  /// Whether this result is hidden by another name.
   bool Hidden : 1;
 
-  /// \brief Whether this result was found via lookup into a base class.
+  /// Whether this result was found via lookup into a base class.
   bool QualifierIsInformative : 1;
 
-  /// \brief Whether this declaration is the beginning of a
+  /// Whether this declaration is the beginning of a
   /// nested-name-specifier and, therefore, should be followed by '::'.
   bool StartsNestedNameSpecifier : 1;
 
-  /// \brief Whether all parameters (of a function, Objective-C
+  /// Whether all parameters (of a function, Objective-C
   /// method, etc.) should be considered "informative".
   bool AllParametersAreInformative : 1;
 
-  /// \brief Whether we're completing a declaration of the given entity,
+  /// Whether we're completing a declaration of the given entity,
   /// rather than a use of that entity.
   bool DeclaringEntity : 1;
 
-  /// \brief If the result should have a nested-name-specifier, this is it.
+  /// If the result should have a nested-name-specifier, this is it.
   /// When \c QualifierIsInformative, the nested-name-specifier is
   /// informative rather than required.
   NestedNameSpecifier *Qualifier = nullptr;
 
-  /// \brief Build a result that refers to a declaration.
+  /// Build a result that refers to a declaration.
   CodeCompletionResult(const NamedDecl *Declaration,
                        unsigned Priority,
                        NestedNameSpecifier *Qualifier = nullptr,
@@ -818,14 +818,14 @@
     computeCursorKindAndAvailability(Accessible);
   }
 
-  /// \brief Build a result that refers to a keyword or symbol.
+  /// Build a result that refers to a keyword or symbol.
   CodeCompletionResult(const char *Keyword, unsigned Priority = CCP_Keyword)
       : Keyword(Keyword), Priority(Priority), Kind(RK_Keyword),
         CursorKind(CXCursor_NotImplemented), Hidden(false),
         QualifierIsInformative(false), StartsNestedNameSpecifier(false),
         AllParametersAreInformative(false), DeclaringEntity(false) {}
 
-  /// \brief Build a result that refers to a macro.
+  /// Build a result that refers to a macro.
   CodeCompletionResult(const IdentifierInfo *Macro,
                        unsigned Priority = CCP_Macro)
       : Macro(Macro), Priority(Priority), Kind(RK_Macro),
@@ -833,7 +833,7 @@
         QualifierIsInformative(false), StartsNestedNameSpecifier(false),
         AllParametersAreInformative(false), DeclaringEntity(false) {}
 
-  /// \brief Build a result that refers to a pattern.
+  /// Build a result that refers to a pattern.
   CodeCompletionResult(CodeCompletionString *Pattern,
                        unsigned Priority = CCP_CodePattern,
                        CXCursorKind CursorKind = CXCursor_NotImplemented,
@@ -844,7 +844,7 @@
         QualifierIsInformative(false), StartsNestedNameSpecifier(false),
         AllParametersAreInformative(false), DeclaringEntity(false) {}
 
-  /// \brief Build a result that refers to a pattern with an associated
+  /// Build a result that refers to a pattern with an associated
   /// declaration.
   CodeCompletionResult(CodeCompletionString *Pattern, const NamedDecl *D,
                        unsigned Priority)
@@ -855,19 +855,19 @@
     computeCursorKindAndAvailability();
   }  
   
-  /// \brief Retrieve the declaration stored in this result.
+  /// Retrieve the declaration stored in this result.
   const NamedDecl *getDeclaration() const {
     assert(Kind == RK_Declaration && "Not a declaration result");
     return Declaration;
   }
 
-  /// \brief Retrieve the keyword stored in this result.
+  /// Retrieve the keyword stored in this result.
   const char *getKeyword() const {
     assert(Kind == RK_Keyword && "Not a keyword result");
     return Keyword;
   }
 
-  /// \brief Create a new code-completion string that describes how to insert
+  /// Create a new code-completion string that describes how to insert
   /// this result into a program.
   ///
   /// \param S The semantic analysis that created the result.
@@ -886,7 +886,7 @@
                                            CodeCompletionTUInfo &CCTUInfo,
                                            bool IncludeBriefComments);
 
-  /// \brief Retrieve the name that should be used to order a result.
+  /// Retrieve the name that should be used to order a result.
   ///
   /// If the name needs to be constructed as a string, that string will be
   /// saved into Saved and the returned StringRef will refer to it.
@@ -916,46 +916,46 @@
 raw_ostream &operator<<(raw_ostream &OS,
                               const CodeCompletionString &CCS);
 
-/// \brief Abstract interface for a consumer of code-completion
+/// Abstract interface for a consumer of code-completion
 /// information.
 class CodeCompleteConsumer {
 protected:
   const CodeCompleteOptions CodeCompleteOpts;
 
-  /// \brief Whether the output format for the code-completion consumer is
+  /// Whether the output format for the code-completion consumer is
   /// binary.
   bool OutputIsBinary;
 
 public:
   class OverloadCandidate {
   public:
-    /// \brief Describes the type of overload candidate.
+    /// Describes the type of overload candidate.
     enum CandidateKind {
-      /// \brief The candidate is a function declaration.
+      /// The candidate is a function declaration.
       CK_Function,
 
-      /// \brief The candidate is a function template.
+      /// The candidate is a function template.
       CK_FunctionTemplate,
 
-      /// \brief The "candidate" is actually a variable, expression, or block
+      /// The "candidate" is actually a variable, expression, or block
       /// for which we only have a function prototype.
       CK_FunctionType
     };
 
   private:
-    /// \brief The kind of overload candidate.
+    /// The kind of overload candidate.
     CandidateKind Kind;
 
     union {
-      /// \brief The function overload candidate, available when
+      /// The function overload candidate, available when
       /// Kind == CK_Function.
       FunctionDecl *Function;
 
-      /// \brief The function template overload candidate, available when
+      /// The function template overload candidate, available when
       /// Kind == CK_FunctionTemplate.
       FunctionTemplateDecl *FunctionTemplate;
 
-      /// \brief The function type that describes the entity being called,
+      /// The function type that describes the entity being called,
       /// when Kind == CK_FunctionType.
       const FunctionType *Type;
     };
@@ -970,24 +970,24 @@
     OverloadCandidate(const FunctionType *Type)
         : Kind(CK_FunctionType), Type(Type) {}
 
-    /// \brief Determine the kind of overload candidate.
+    /// Determine the kind of overload candidate.
     CandidateKind getKind() const { return Kind; }
 
-    /// \brief Retrieve the function overload candidate or the templated
+    /// Retrieve the function overload candidate or the templated
     /// function declaration for a function template.
     FunctionDecl *getFunction() const;
 
-    /// \brief Retrieve the function template overload candidate.
+    /// Retrieve the function template overload candidate.
     FunctionTemplateDecl *getFunctionTemplate() const {
       assert(getKind() == CK_FunctionTemplate && "Not a function template");
       return FunctionTemplate;
     }
 
-    /// \brief Retrieve the function type of the entity, regardless of how the
+    /// Retrieve the function type of the entity, regardless of how the
     /// function is stored.
     const FunctionType *getFunctionType() const;
 
-    /// \brief Create a new code-completion string that describes the function
+    /// Create a new code-completion string that describes the function
     /// signature of this overload candidate.
     CodeCompletionString *CreateSignatureString(unsigned CurrentArg,
                                                 Sema &S,
@@ -1000,46 +1000,46 @@
                        bool OutputIsBinary)
       : CodeCompleteOpts(CodeCompleteOpts), OutputIsBinary(OutputIsBinary) {}
 
-  /// \brief Whether the code-completion consumer wants to see macros.
+  /// Whether the code-completion consumer wants to see macros.
   bool includeMacros() const {
     return CodeCompleteOpts.IncludeMacros;
   }
 
-  /// \brief Whether the code-completion consumer wants to see code patterns.
+  /// Whether the code-completion consumer wants to see code patterns.
   bool includeCodePatterns() const {
     return CodeCompleteOpts.IncludeCodePatterns;
   }
 
-  /// \brief Whether to include global (top-level) declaration results.
+  /// Whether to include global (top-level) declaration results.
   bool includeGlobals() const { return CodeCompleteOpts.IncludeGlobals; }
 
-  /// \brief Whether to include declarations in namespace contexts (including
+  /// Whether to include declarations in namespace contexts (including
   /// the global namespace). If this is false, `includeGlobals()` will be
   /// ignored.
   bool includeNamespaceLevelDecls() const {
     return CodeCompleteOpts.IncludeNamespaceLevelDecls;
   }
 
-  /// \brief Whether to include brief documentation comments within the set of
+  /// Whether to include brief documentation comments within the set of
   /// code completions returned.
   bool includeBriefComments() const {
     return CodeCompleteOpts.IncludeBriefComments;
   }
 
-  /// \brief Hint whether to load data from the external AST in order to provide
+  /// Hint whether to load data from the external AST in order to provide
   /// full results. If false, declarations from the preamble may be omitted.
   bool loadExternal() const {
     return CodeCompleteOpts.LoadExternal;
   }
 
-  /// \brief Determine whether the output of this consumer is binary.
+  /// Determine whether the output of this consumer is binary.
   bool isOutputBinary() const { return OutputIsBinary; }
 
-  /// \brief Deregisters and destroys this code-completion consumer.
+  /// Deregisters and destroys this code-completion consumer.
   virtual ~CodeCompleteConsumer();
 
   /// \name Code-completion filtering
-  /// \brief Check if the result should be filtered out.
+  /// Check if the result should be filtered out.
   virtual bool isResultFilteredOut(StringRef Filter,
                                    CodeCompletionResult Results) {
     return false;
@@ -1047,7 +1047,7 @@
 
   /// \name Code-completion callbacks
   //@{
-  /// \brief Process the finalized code-completion results.
+  /// Process the finalized code-completion results.
   virtual void ProcessCodeCompleteResults(Sema &S,
                                           CodeCompletionContext Context,
                                           CodeCompletionResult *Results,
@@ -1066,30 +1066,30 @@
                                          unsigned NumCandidates) {}
   //@}
 
-  /// \brief Retrieve the allocator that will be used to allocate
+  /// Retrieve the allocator that will be used to allocate
   /// code completion strings.
   virtual CodeCompletionAllocator &getAllocator() = 0;
 
   virtual CodeCompletionTUInfo &getCodeCompletionTUInfo() = 0;
 };
 
-/// \brief A simple code-completion consumer that prints the results it
+/// A simple code-completion consumer that prints the results it
 /// receives in a simple format.
 class PrintingCodeCompleteConsumer : public CodeCompleteConsumer {
-  /// \brief The raw output stream.
+  /// The raw output stream.
   raw_ostream &OS;
 
   CodeCompletionTUInfo CCTUInfo;
 
 public:
-  /// \brief Create a new printing code-completion consumer that prints its
+  /// Create a new printing code-completion consumer that prints its
   /// results to the given raw output stream.
   PrintingCodeCompleteConsumer(const CodeCompleteOptions &CodeCompleteOpts,
                                raw_ostream &OS)
       : CodeCompleteConsumer(CodeCompleteOpts, false), OS(OS),
         CCTUInfo(std::make_shared<GlobalCodeCompletionAllocator>()) {}
 
-  /// \brief Prints the finalized code-completion results.
+  /// Prints the finalized code-completion results.
   void ProcessCodeCompleteResults(Sema &S, CodeCompletionContext Context,
                                   CodeCompletionResult *Results,
                                   unsigned NumResults) override;
Index: cfe/trunk/include/clang/Sema/DeclSpec.h
===================================================================
--- cfe/trunk/include/clang/Sema/DeclSpec.h
+++ cfe/trunk/include/clang/Sema/DeclSpec.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file defines the classes used to store parsed information about
+/// This file defines the classes used to store parsed information about
 /// declaration-specifiers and declarators.
 ///
 /// \verbatim
@@ -48,7 +48,7 @@
   class Declarator;
   struct TemplateIdAnnotation;
 
-/// \brief Represents a C++ nested-name-specifier or a global scope specifier.
+/// Represents a C++ nested-name-specifier or a global scope specifier.
 ///
 /// These can be in 3 states:
 ///   1) Not present, identified by isEmpty()
@@ -72,12 +72,12 @@
   SourceLocation getBeginLoc() const { return Range.getBegin(); }
   SourceLocation getEndLoc() const { return Range.getEnd(); }
 
-  /// \brief Retrieve the representation of the nested-name-specifier.
+  /// Retrieve the representation of the nested-name-specifier.
   NestedNameSpecifier *getScopeRep() const { 
     return Builder.getRepresentation(); 
   }
 
-  /// \brief Extend the current nested-name-specifier by another
+  /// Extend the current nested-name-specifier by another
   /// nested-name-specifier component of the form 'type::'.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -91,7 +91,7 @@
   void Extend(ASTContext &Context, SourceLocation TemplateKWLoc, TypeLoc TL,
               SourceLocation ColonColonLoc);
 
-  /// \brief Extend the current nested-name-specifier by another 
+  /// Extend the current nested-name-specifier by another 
   /// nested-name-specifier component of the form 'identifier::'.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -105,7 +105,7 @@
   void Extend(ASTContext &Context, IdentifierInfo *Identifier,
               SourceLocation IdentifierLoc, SourceLocation ColonColonLoc);
 
-  /// \brief Extend the current nested-name-specifier by another 
+  /// Extend the current nested-name-specifier by another 
   /// nested-name-specifier component of the form 'namespace::'.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -119,7 +119,7 @@
   void Extend(ASTContext &Context, NamespaceDecl *Namespace,
               SourceLocation NamespaceLoc, SourceLocation ColonColonLoc);
 
-  /// \brief Extend the current nested-name-specifier by another 
+  /// Extend the current nested-name-specifier by another 
   /// nested-name-specifier component of the form 'namespace-alias::'.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -134,11 +134,11 @@
   void Extend(ASTContext &Context, NamespaceAliasDecl *Alias,
               SourceLocation AliasLoc, SourceLocation ColonColonLoc);
 
-  /// \brief Turn this (empty) nested-name-specifier into the global
+  /// Turn this (empty) nested-name-specifier into the global
   /// nested-name-specifier '::'.
   void MakeGlobal(ASTContext &Context, SourceLocation ColonColonLoc);
   
-  /// \brief Turns this (empty) nested-name-specifier into '__super'
+  /// Turns this (empty) nested-name-specifier into '__super'
   /// nested-name-specifier.
   ///
   /// \param Context The AST context in which this nested-name-specifier
@@ -154,7 +154,7 @@
   void MakeSuper(ASTContext &Context, CXXRecordDecl *RD,
                  SourceLocation SuperLoc, SourceLocation ColonColonLoc);
 
-  /// \brief Make a new nested-name-specifier from incomplete source-location
+  /// Make a new nested-name-specifier from incomplete source-location
   /// information.
   ///
   /// FIXME: This routine should be used very, very rarely, in cases where we
@@ -163,18 +163,18 @@
   void MakeTrivial(ASTContext &Context, NestedNameSpecifier *Qualifier, 
                    SourceRange R);
   
-  /// \brief Adopt an existing nested-name-specifier (with source-range 
+  /// Adopt an existing nested-name-specifier (with source-range 
   /// information).
   void Adopt(NestedNameSpecifierLoc Other);
   
-  /// \brief Retrieve a nested-name-specifier with location information, copied
+  /// Retrieve a nested-name-specifier with location information, copied
   /// into the given AST context.
   ///
   /// \param Context The context into which this nested-name-specifier will be
   /// copied.
   NestedNameSpecifierLoc getWithLocInContext(ASTContext &Context) const;
 
-  /// \brief Retrieve the location of the name in the last qualifier
+  /// Retrieve the location of the name in the last qualifier
   /// in this nested name specifier.
   ///
   /// For example, the location of \c bar
@@ -195,7 +195,7 @@
   /// A scope specifier is present, and it refers to a real scope.
   bool isValid() const { return isNotEmpty() && getScopeRep() != nullptr; }
 
-  /// \brief Indicate that this nested-name-specifier is invalid.
+  /// Indicate that this nested-name-specifier is invalid.
   void SetInvalid(SourceRange R) { 
     assert(R.isValid() && "Must have a valid source range");
     if (Range.getBegin().isInvalid())
@@ -213,21 +213,21 @@
     Builder.Clear();
   }
 
-  /// \brief Retrieve the data associated with the source-location information.
+  /// Retrieve the data associated with the source-location information.
   char *location_data() const { return Builder.getBuffer().first; }
   
-  /// \brief Retrieve the size of the data associated with source-location 
+  /// Retrieve the size of the data associated with source-location 
   /// information.
   unsigned location_size() const { return Builder.getBuffer().second; }
 };
 
-/// \brief Captures information about "declaration specifiers".
+/// Captures information about "declaration specifiers".
 ///
 /// "Declaration specifiers" encompasses storage-class-specifiers,
 /// type-specifiers, type-qualifiers, and function-specifiers.
 class DeclSpec {
 public:
-  /// \brief storage-class-specifier
+  /// storage-class-specifier
   /// \note The order of these enumerators is important for diagnostics.
   enum SCS {
     SCS_unspecified = 0,
@@ -525,7 +525,7 @@
 
   bool hasTagDefinition() const;
 
-  /// \brief Turn a type-specifier-type into a string like "_Bool" or "union".
+  /// Turn a type-specifier-type into a string like "_Bool" or "union".
   static const char *getSpecifierName(DeclSpec::TST T,
                                       const PrintingPolicy &Policy);
   static const char *getSpecifierName(DeclSpec::TQ Q);
@@ -546,7 +546,7 @@
   SourceLocation getUnalignedSpecLoc() const { return TQ_unalignedLoc; }
   SourceLocation getPipeLoc() const { return TQ_pipeLoc; }
 
-  /// \brief Clear out all of the type qualifiers.
+  /// Clear out all of the type qualifiers.
   void ClearTypeQualifiers() {
     TypeQualifiers = 0;
     TQ_constLoc = SourceLocation();
@@ -587,7 +587,7 @@
     FS_noreturnLoc = SourceLocation();
   }
 
-  /// \brief Return true if any type-specifier has been found.
+  /// Return true if any type-specifier has been found.
   bool hasTypeSpecifier() const {
     return getTypeSpecType() != DeclSpec::TST_unspecified ||
            getTypeSpecWidth() != DeclSpec::TSW_unspecified ||
@@ -595,7 +595,7 @@
            getTypeSpecSign() != DeclSpec::TSS_unspecified;
   }
 
-  /// \brief Return a bitmask of which flavors of specifiers this
+  /// Return a bitmask of which flavors of specifiers this
   /// DeclSpec includes.
   unsigned getParsedSpecifiers() const;
 
@@ -714,7 +714,7 @@
     return Attrs.getPool();
   }
 
-  /// \brief Concatenates two attribute lists.
+  /// Concatenates two attribute lists.
   ///
   /// The GCC attribute syntax allows for the following:
   ///
@@ -756,13 +756,13 @@
   ObjCDeclSpec *getObjCQualifiers() const { return ObjCQualifiers; }
   void setObjCQualifiers(ObjCDeclSpec *quals) { ObjCQualifiers = quals; }
 
-  /// \brief Checks if this DeclSpec can stand alone, without a Declarator.
+  /// Checks if this DeclSpec can stand alone, without a Declarator.
   ///
   /// Only tag declspecs can stand alone.
   bool isMissingDeclaratorOk();
 };
 
-/// \brief Captures information about "declaration specifiers" specific to
+/// Captures information about "declaration specifiers" specific to
 /// Objective-C.
 class ObjCDeclSpec {
 public:
@@ -884,45 +884,45 @@
 
 };
 
-/// \brief Describes the kind of unqualified-id parsed.
+/// Describes the kind of unqualified-id parsed.
 enum class UnqualifiedIdKind {
-  /// \brief An identifier.
+  /// An identifier.
   IK_Identifier,
-  /// \brief An overloaded operator name, e.g., operator+.
+  /// An overloaded operator name, e.g., operator+.
   IK_OperatorFunctionId,
-  /// \brief A conversion function name, e.g., operator int.
+  /// A conversion function name, e.g., operator int.
   IK_ConversionFunctionId,
-  /// \brief A user-defined literal name, e.g., operator "" _i.
+  /// A user-defined literal name, e.g., operator "" _i.
   IK_LiteralOperatorId,
-  /// \brief A constructor name.
+  /// A constructor name.
   IK_ConstructorName,
-  /// \brief A constructor named via a template-id.
+  /// A constructor named via a template-id.
   IK_ConstructorTemplateId,
-  /// \brief A destructor name.
+  /// A destructor name.
   IK_DestructorName,
-  /// \brief A template-id, e.g., f<int>.
+  /// A template-id, e.g., f<int>.
   IK_TemplateId,
-  /// \brief An implicit 'self' parameter
+  /// An implicit 'self' parameter
   IK_ImplicitSelfParam,
-  /// \brief A deduction-guide name (a template-name)
+  /// A deduction-guide name (a template-name)
   IK_DeductionGuideName
 };
 
-/// \brief Represents a C++ unqualified-id that has been parsed. 
+/// Represents a C++ unqualified-id that has been parsed. 
 class UnqualifiedId {
 private:
   UnqualifiedId(const UnqualifiedId &Other) = delete;
   const UnqualifiedId &operator=(const UnqualifiedId &) = delete;
 
 public:
-  /// \brief Describes the kind of unqualified-id parsed.
+  /// Describes the kind of unqualified-id parsed.
   UnqualifiedIdKind Kind;
 
   struct OFI {
-    /// \brief The kind of overloaded operator.
+    /// The kind of overloaded operator.
     OverloadedOperatorKind Operator;
 
-    /// \brief The source locations of the individual tokens that name
+    /// The source locations of the individual tokens that name
     /// the operator, e.g., the "new", "[", and "]" tokens in 
     /// operator new []. 
     ///
@@ -932,50 +932,50 @@
     unsigned SymbolLocations[3];
   };
 
-  /// \brief Anonymous union that holds extra data associated with the
+  /// Anonymous union that holds extra data associated with the
   /// parsed unqualified-id.
   union {
-    /// \brief When Kind == IK_Identifier, the parsed identifier, or when
+    /// When Kind == IK_Identifier, the parsed identifier, or when
     /// Kind == IK_UserLiteralId, the identifier suffix.
     IdentifierInfo *Identifier;
     
-    /// \brief When Kind == IK_OperatorFunctionId, the overloaded operator
+    /// When Kind == IK_OperatorFunctionId, the overloaded operator
     /// that we parsed.
     struct OFI OperatorFunctionId;
     
-    /// \brief When Kind == IK_ConversionFunctionId, the type that the 
+    /// When Kind == IK_ConversionFunctionId, the type that the 
     /// conversion function names.
     UnionParsedType ConversionFunctionId;
 
-    /// \brief When Kind == IK_ConstructorName, the class-name of the type
+    /// When Kind == IK_ConstructorName, the class-name of the type
     /// whose constructor is being referenced.
     UnionParsedType ConstructorName;
     
-    /// \brief When Kind == IK_DestructorName, the type referred to by the
+    /// When Kind == IK_DestructorName, the type referred to by the
     /// class-name.
     UnionParsedType DestructorName;
 
-    /// \brief When Kind == IK_DeductionGuideName, the parsed template-name.
+    /// When Kind == IK_DeductionGuideName, the parsed template-name.
     UnionParsedTemplateTy TemplateName;
     
-    /// \brief When Kind == IK_TemplateId or IK_ConstructorTemplateId,
+    /// When Kind == IK_TemplateId or IK_ConstructorTemplateId,
     /// the template-id annotation that contains the template name and
     /// template arguments.
     TemplateIdAnnotation *TemplateId;
   };
   
-  /// \brief The location of the first token that describes this unqualified-id,
+  /// The location of the first token that describes this unqualified-id,
   /// which will be the location of the identifier, "operator" keyword,
   /// tilde (for a destructor), or the template name of a template-id.
   SourceLocation StartLocation;
   
-  /// \brief The location of the last token that describes this unqualified-id.
+  /// The location of the last token that describes this unqualified-id.
   SourceLocation EndLocation;
 
   UnqualifiedId()
       : Kind(UnqualifiedIdKind::IK_Identifier), Identifier(nullptr) {}
 
-  /// \brief Clear out this unqualified-id, setting it to default (invalid) 
+  /// Clear out this unqualified-id, setting it to default (invalid) 
   /// state.
   void clear() {
     Kind = UnqualifiedIdKind::IK_Identifier;
@@ -984,17 +984,17 @@
     EndLocation = SourceLocation();
   }
   
-  /// \brief Determine whether this unqualified-id refers to a valid name.
+  /// Determine whether this unqualified-id refers to a valid name.
   bool isValid() const { return StartLocation.isValid(); }
 
-  /// \brief Determine whether this unqualified-id refers to an invalid name.
+  /// Determine whether this unqualified-id refers to an invalid name.
   bool isInvalid() const { return !isValid(); }
   
-  /// \brief Determine what kind of name we have.
+  /// Determine what kind of name we have.
   UnqualifiedIdKind getKind() const { return Kind; }
   void setKind(UnqualifiedIdKind kind) { Kind = kind; } 
   
-  /// \brief Specify that this unqualified-id was parsed as an identifier.
+  /// Specify that this unqualified-id was parsed as an identifier.
   ///
   /// \param Id the parsed identifier.
   /// \param IdLoc the location of the parsed identifier.
@@ -1004,7 +1004,7 @@
     StartLocation = EndLocation = IdLoc;
   }
   
-  /// \brief Specify that this unqualified-id was parsed as an 
+  /// Specify that this unqualified-id was parsed as an 
   /// operator-function-id.
   ///
   /// \param OperatorLoc the location of the 'operator' keyword.
@@ -1017,7 +1017,7 @@
                              OverloadedOperatorKind Op,
                              SourceLocation SymbolLocations[3]);
   
-  /// \brief Specify that this unqualified-id was parsed as a 
+  /// Specify that this unqualified-id was parsed as a 
   /// conversion-function-id.
   ///
   /// \param OperatorLoc the location of the 'operator' keyword.
@@ -1034,7 +1034,7 @@
     ConversionFunctionId = Ty;
   }
 
-  /// \brief Specific that this unqualified-id was parsed as a
+  /// Specific that this unqualified-id was parsed as a
   /// literal-operator-id.
   ///
   /// \param Id the parsed identifier.
@@ -1050,7 +1050,7 @@
     EndLocation = IdLoc;
   }
   
-  /// \brief Specify that this unqualified-id was parsed as a constructor name.
+  /// Specify that this unqualified-id was parsed as a constructor name.
   ///
   /// \param ClassType the class type referred to by the constructor name.
   ///
@@ -1066,7 +1066,7 @@
     ConstructorName = ClassType;
   }
 
-  /// \brief Specify that this unqualified-id was parsed as a
+  /// Specify that this unqualified-id was parsed as a
   /// template-id that names a constructor.
   ///
   /// \param TemplateId the template-id annotation that describes the parsed
@@ -1074,7 +1074,7 @@
   /// \p TemplateId and will free it on destruction.
   void setConstructorTemplateId(TemplateIdAnnotation *TemplateId);
 
-  /// \brief Specify that this unqualified-id was parsed as a destructor name.
+  /// Specify that this unqualified-id was parsed as a destructor name.
   ///
   /// \param TildeLoc the location of the '~' that introduces the destructor
   /// name.
@@ -1089,14 +1089,14 @@
     DestructorName = ClassType;
   }
   
-  /// \brief Specify that this unqualified-id was parsed as a template-id.
+  /// Specify that this unqualified-id was parsed as a template-id.
   ///
   /// \param TemplateId the template-id annotation that describes the parsed
   /// template-id. This UnqualifiedId instance will take ownership of the
   /// \p TemplateId and will free it on destruction.
   void setTemplateId(TemplateIdAnnotation *TemplateId);
 
-  /// \brief Specify that this unqualified-id was parsed as a template-name for
+  /// Specify that this unqualified-id was parsed as a template-name for
   /// a deduction-guide.
   ///
   /// \param Template The parsed template-name.
@@ -1108,7 +1108,7 @@
     StartLocation = EndLocation = TemplateLoc;
   }
   
-  /// \brief Return the source range that covers this unqualified-id.
+  /// Return the source range that covers this unqualified-id.
   SourceRange getSourceRange() const LLVM_READONLY { 
     return SourceRange(StartLocation, EndLocation); 
   }
@@ -1116,10 +1116,10 @@
   SourceLocation getLocEnd() const LLVM_READONLY { return EndLocation; }
 };
 
-/// \brief A set of tokens that has been cached for later parsing.
+/// A set of tokens that has been cached for later parsing.
 typedef SmallVector<Token, 4> CachedTokens;
 
-/// \brief One instance of this struct is used for each type in a
+/// One instance of this struct is used for each type in a
 /// declarator that is parsed.
 ///
 /// This is intended to be a small value object.
@@ -1240,7 +1240,7 @@
     /// Can this declaration be a constructor-style initializer?
     unsigned isAmbiguous : 1;
 
-    /// \brief Whether the ref-qualifier (if any) is an lvalue reference.
+    /// Whether the ref-qualifier (if any) is an lvalue reference.
     /// Otherwise, it's an rvalue reference.
     unsigned RefQualifierIsLValueRef : 1;
 
@@ -1276,34 +1276,34 @@
     /// number of declarations in the function prototype.
     unsigned NumExceptionsOrDecls;
 
-    /// \brief The location of the ref-qualifier, if any.
+    /// The location of the ref-qualifier, if any.
     ///
     /// If this is an invalid location, there is no ref-qualifier.
     unsigned RefQualifierLoc;
 
-    /// \brief The location of the const-qualifier, if any.
+    /// The location of the const-qualifier, if any.
     ///
     /// If this is an invalid location, there is no const-qualifier.
     unsigned ConstQualifierLoc;
 
-    /// \brief The location of the volatile-qualifier, if any.
+    /// The location of the volatile-qualifier, if any.
     ///
     /// If this is an invalid location, there is no volatile-qualifier.
     unsigned VolatileQualifierLoc;
 
-    /// \brief The location of the restrict-qualifier, if any.
+    /// The location of the restrict-qualifier, if any.
     ///
     /// If this is an invalid location, there is no restrict-qualifier.
     unsigned RestrictQualifierLoc;
 
-    /// \brief The location of the 'mutable' qualifer in a lambda-declarator, if
+    /// The location of the 'mutable' qualifer in a lambda-declarator, if
     /// any.
     unsigned MutableLoc;
 
-    /// \brief The beginning location of the exception specification, if any.
+    /// The beginning location of the exception specification, if any.
     unsigned ExceptionSpecLocBeg;
 
-    /// \brief The end location of the exception specification, if any.
+    /// The end location of the exception specification, if any.
     unsigned ExceptionSpecLocEnd;
 
     /// Params - This is a pointer to a new[]'d array of ParamInfo objects that
@@ -1312,16 +1312,16 @@
     ParamInfo *Params;
 
     union {
-      /// \brief Pointer to a new[]'d array of TypeAndRange objects that
+      /// Pointer to a new[]'d array of TypeAndRange objects that
       /// contain the types in the function's dynamic exception specification
       /// and their locations, if there is one.
       TypeAndRange *Exceptions;
 
-      /// \brief Pointer to the expression in the noexcept-specifier of this
+      /// Pointer to the expression in the noexcept-specifier of this
       /// function, if it has one.
       Expr *NoexceptExpr;
   
-      /// \brief Pointer to the cached tokens for an exception-specification
+      /// Pointer to the cached tokens for an exception-specification
       /// that has not yet been parsed.
       CachedTokens *ExceptionSpecTokens;
 
@@ -1331,11 +1331,11 @@
       NamedDecl **DeclsInPrototype;
     };
 
-    /// \brief If HasTrailingReturnType is true, this is the trailing return
+    /// If HasTrailingReturnType is true, this is the trailing return
     /// type specified.
     UnionParsedType TrailingReturnType;
 
-    /// \brief Reset the parameter list to having zero parameters.
+    /// Reset the parameter list to having zero parameters.
     ///
     /// This is used in various places for error recovery.
     void freeParams() {
@@ -1396,62 +1396,62 @@
       return SourceRange(getExceptionSpecLocBeg(), getExceptionSpecLocEnd());
     }
 
-    /// \brief Retrieve the location of the ref-qualifier, if any.
+    /// Retrieve the location of the ref-qualifier, if any.
     SourceLocation getRefQualifierLoc() const {
       return SourceLocation::getFromRawEncoding(RefQualifierLoc);
     }
 
-    /// \brief Retrieve the location of the 'const' qualifier, if any.
+    /// Retrieve the location of the 'const' qualifier, if any.
     SourceLocation getConstQualifierLoc() const {
       return SourceLocation::getFromRawEncoding(ConstQualifierLoc);
     }
 
-    /// \brief Retrieve the location of the 'volatile' qualifier, if any.
+    /// Retrieve the location of the 'volatile' qualifier, if any.
     SourceLocation getVolatileQualifierLoc() const {
       return SourceLocation::getFromRawEncoding(VolatileQualifierLoc);
     }
 
-    /// \brief Retrieve the location of the 'restrict' qualifier, if any.
+    /// Retrieve the location of the 'restrict' qualifier, if any.
     SourceLocation getRestrictQualifierLoc() const {
       return SourceLocation::getFromRawEncoding(RestrictQualifierLoc);
     }
 
-    /// \brief Retrieve the location of the 'mutable' qualifier, if any.
+    /// Retrieve the location of the 'mutable' qualifier, if any.
     SourceLocation getMutableLoc() const {
       return SourceLocation::getFromRawEncoding(MutableLoc);
     }
 
-    /// \brief Determine whether this function declaration contains a 
+    /// Determine whether this function declaration contains a 
     /// ref-qualifier.
     bool hasRefQualifier() const { return getRefQualifierLoc().isValid(); }
 
-    /// \brief Determine whether this lambda-declarator contains a 'mutable'
+    /// Determine whether this lambda-declarator contains a 'mutable'
     /// qualifier.
     bool hasMutableQualifier() const { return getMutableLoc().isValid(); }
 
-    /// \brief Get the type of exception specification this function has.
+    /// Get the type of exception specification this function has.
     ExceptionSpecificationType getExceptionSpecType() const {
       return static_cast<ExceptionSpecificationType>(ExceptionSpecType);
     }
 
-    /// \brief Get the number of dynamic exception specifications.
+    /// Get the number of dynamic exception specifications.
     unsigned getNumExceptions() const {
       assert(ExceptionSpecType != EST_None);
       return NumExceptionsOrDecls;
     }
 
-    /// \brief Get the non-parameter decls defined within this function
+    /// Get the non-parameter decls defined within this function
     /// prototype. Typically these are tag declarations.
     ArrayRef<NamedDecl *> getDeclsInPrototype() const {
       assert(ExceptionSpecType == EST_None);
       return llvm::makeArrayRef(DeclsInPrototype, NumExceptionsOrDecls);
     }
 
-    /// \brief Determine whether this function declarator had a
+    /// Determine whether this function declarator had a
     /// trailing-return-type.
     bool hasTrailingReturnType() const { return HasTrailingReturnType; }
 
-    /// \brief Get the trailing-return-type for this function declarator.
+    /// Get the trailing-return-type for this function declarator.
     ParsedType getTrailingReturnType() const { return TrailingReturnType; }
   };
 
@@ -1512,7 +1512,7 @@
     }
   }
 
-  /// \brief If there are attributes applied to this declaratorchunk, return
+  /// If there are attributes applied to this declaratorchunk, return
   /// them.
   const AttributeList *getAttrs() const {
     return Common.AttrList;
@@ -1522,7 +1522,7 @@
     return Common.AttrList;
   }
 
-  /// \brief Return a DeclaratorChunk for a pointer.
+  /// Return a DeclaratorChunk for a pointer.
   static DeclaratorChunk getPointer(unsigned TypeQuals, SourceLocation Loc,
                                     SourceLocation ConstQualLoc,
                                     SourceLocation VolatileQualLoc,
@@ -1542,7 +1542,7 @@
     return I;
   }
 
-  /// \brief Return a DeclaratorChunk for a reference.
+  /// Return a DeclaratorChunk for a reference.
   static DeclaratorChunk getReference(unsigned TypeQuals, SourceLocation Loc,
                                       bool lvalue) {
     DeclaratorChunk I;
@@ -1554,7 +1554,7 @@
     return I;
   }
 
-  /// \brief Return a DeclaratorChunk for an array.
+  /// Return a DeclaratorChunk for an array.
   static DeclaratorChunk getArray(unsigned TypeQuals,
                                   bool isStatic, bool isStar, Expr *NumElts,
                                   SourceLocation LBLoc, SourceLocation RBLoc) {
@@ -1599,7 +1599,7 @@
                                      TypeResult TrailingReturnType =
                                                     TypeResult());
 
-  /// \brief Return a DeclaratorChunk for a block.
+  /// Return a DeclaratorChunk for a block.
   static DeclaratorChunk getBlockPointer(unsigned TypeQuals,
                                          SourceLocation Loc) {
     DeclaratorChunk I;
@@ -1610,7 +1610,7 @@
     return I;
   }
 
-  /// \brief Return a DeclaratorChunk for a block.
+  /// Return a DeclaratorChunk for a block.
   static DeclaratorChunk getPipe(unsigned TypeQuals,
                                  SourceLocation Loc) {
     DeclaratorChunk I;
@@ -1634,7 +1634,7 @@
     return I;
   }
 
-  /// \brief Return a DeclaratorChunk for a paren.
+  /// Return a DeclaratorChunk for a paren.
   static DeclaratorChunk getParen(SourceLocation LParenLoc,
                                   SourceLocation RParenLoc) {
     DeclaratorChunk I;
@@ -1702,7 +1702,7 @@
   }
 };
 
-/// \brief Described the kind of function definition (if any) provided for
+/// Described the kind of function definition (if any) provided for
 /// a function.
 enum FunctionDefinitionKind {
   FDK_Declaration,
@@ -1741,7 +1741,7 @@
 };
 
 
-/// \brief Information about one declarator, including the parsed type
+/// Information about one declarator, including the parsed type
 /// information and the identifier.
 ///
 /// When the declarator is fully formed, this is turned into the appropriate
@@ -1761,7 +1761,7 @@
   UnqualifiedId Name;
   SourceRange Range;
 
-  /// \brief Where we are parsing this declarator.
+  /// Where we are parsing this declarator.
   DeclaratorContext Context;
 
   /// The C++17 structured binding, if any. This is an alternative to a Name.
@@ -1785,10 +1785,10 @@
   /// Actually a FunctionDefinitionKind.
   unsigned FunctionDefinition : 2;
 
-  /// \brief Is this Declarator a redeclaration?
+  /// Is this Declarator a redeclaration?
   unsigned Redeclaration : 1;
 
-  /// \brief true if the declaration is preceded by \c __extension__.
+  /// true if the declaration is preceded by \c __extension__.
   unsigned Extension : 1;
 
   /// Indicates whether this is an Objective-C instance variable.
@@ -1803,7 +1803,7 @@
   /// Attrs - Attributes.
   ParsedAttributes Attrs;
 
-  /// \brief The asm label, if specified.
+  /// The asm label, if specified.
   Expr *AsmLabel;
 
 #ifndef _MSC_VER
@@ -1818,11 +1818,11 @@
   };
 #endif
 
-  /// \brief If this is the second or subsequent declarator in this declaration,
+  /// If this is the second or subsequent declarator in this declaration,
   /// the location of the comma before this declarator.
   SourceLocation CommaLoc;
 
-  /// \brief If provided, the source location of the ellipsis used to describe
+  /// If provided, the source location of the ellipsis used to describe
   /// this declarator as a parameter pack.
   SourceLocation EllipsisLoc;
   
@@ -1860,7 +1860,7 @@
   const CXXScopeSpec &getCXXScopeSpec() const { return SS; }
   CXXScopeSpec &getCXXScopeSpec() { return SS; }
 
-  /// \brief Retrieve the name specified by this declarator.
+  /// Retrieve the name specified by this declarator.
   UnqualifiedId &getName() { return Name; }
 
   const DecompositionDeclarator &getDecompositionDeclarator() const {
@@ -1876,7 +1876,7 @@
             Context == DeclaratorContext::LambdaExprParameterContext);
   }
 
-  /// \brief Get the source range that spans this declarator.
+  /// Get the source range that spans this declarator.
   SourceRange getSourceRange() const LLVM_READONLY { return Range; }
   SourceLocation getLocStart() const LLVM_READONLY { return Range.getBegin(); }
   SourceLocation getLocEnd() const LLVM_READONLY { return Range.getEnd(); }
@@ -1904,7 +1904,7 @@
       Range.setEnd(SR.getEnd());
   }
 
-  /// \brief Reset the contents of this Declarator.
+  /// Reset the contents of this Declarator.
   void clear() {
     SS.clear();
     Name.clear();
@@ -2123,7 +2123,7 @@
   }
   SourceLocation getIdentifierLoc() const { return Name.StartLocation; }
 
-  /// \brief Set the name of this declarator to be the given identifier.
+  /// Set the name of this declarator to be the given identifier.
   void SetIdentifier(IdentifierInfo *Id, SourceLocation IdLoc) {
     Name.setIdentifier(Id, IdLoc);
   }
@@ -2147,12 +2147,12 @@
       SetRangeEnd(EndLoc);
   }
 
-  /// \brief Add a new innermost chunk to this declarator.
+  /// Add a new innermost chunk to this declarator.
   void AddInnermostTypeInfo(const DeclaratorChunk &TI) {
     DeclTypeInfo.insert(DeclTypeInfo.begin(), TI);
   }
 
-  /// \brief Return the number of types applied to this declarator.
+  /// Return the number of types applied to this declarator.
   unsigned getNumTypeObjects() const { return DeclTypeInfo.size(); }
 
   /// Return the specified TypeInfo from this declarator.  TypeInfo #0 is
@@ -2259,7 +2259,7 @@
     return const_cast<Declarator*>(this)->getFunctionTypeInfo();
   }
 
-  /// \brief Determine whether the declaration that will be produced from 
+  /// Determine whether the declaration that will be produced from 
   /// this declaration will be a function.
   /// 
   /// A declaration can declare a function even if the declarator itself
@@ -2267,7 +2267,7 @@
   /// type. This routine checks for both cases.
   bool isDeclarationOfFunction() const;
 
-  /// \brief Return true if this declaration appears in a context where a
+  /// Return true if this declaration appears in a context where a
   /// function declarator would be a function declaration.
   bool isFunctionDeclarationContext() const {
     if (getDeclSpec().getStorageClassSpec() == DeclSpec::SCS_typedef)
@@ -2348,7 +2348,7 @@
     llvm_unreachable("unknown context kind!");
   }
   
-  /// \brief Return true if a function declarator at this position would be a
+  /// Return true if a function declarator at this position would be a
   /// function declaration.
   bool isFunctionDeclaratorAFunctionDeclaration() const {
     if (!isFunctionDeclarationContext())
@@ -2361,7 +2361,7 @@
     return true;
   }
 
-  /// \brief Determine whether a trailing return type was written (at any
+  /// Determine whether a trailing return type was written (at any
   /// level) within this declarator.
   bool hasTrailingReturnType() const {
     for (const auto &Chunk : type_objects())
@@ -2401,7 +2401,7 @@
     return false;
   }
 
-  /// \brief Return a source range list of C++11 attributes associated
+  /// Return a source range list of C++11 attributes associated
   /// with the declarator.
   void getCXX11AttributeRanges(SmallVectorImpl<SourceRange> &Ranges) {
     AttributeList *AttrList = Attrs.getList();
@@ -2470,7 +2470,7 @@
   bool isRedeclaration() const { return Redeclaration; }
 };
 
-/// \brief This little struct is used to capture information about
+/// This little struct is used to capture information about
 /// structure field declarators, which is basically just a bitfield size.
 struct FieldDeclarator {
   Declarator D;
@@ -2480,7 +2480,7 @@
         BitfieldSize(nullptr) {}
 };
 
-/// \brief Represents a C++11 virt-specifier-seq.
+/// Represents a C++11 virt-specifier-seq.
 class VirtSpecifiers {
 public:
   enum Specifier {
@@ -2530,9 +2530,9 @@
   ListInit    //!< [a{b}]
 };
 
-/// \brief Represents a complete lambda introducer.
+/// Represents a complete lambda introducer.
 struct LambdaIntroducer {
-  /// \brief An individual capture in a lambda introducer.
+  /// An individual capture in a lambda introducer.
   struct LambdaCapture {
     LambdaCaptureKind Kind;
     SourceLocation Loc;
@@ -2557,7 +2557,7 @@
   LambdaIntroducer()
     : Default(LCD_None) {}
 
-  /// \brief Append a capture in a lambda introducer.
+  /// Append a capture in a lambda introducer.
   void addCapture(LambdaCaptureKind Kind,
                   SourceLocation Loc,
                   IdentifierInfo* Id,
Index: cfe/trunk/include/clang/Sema/DelayedDiagnostic.h
===================================================================
--- cfe/trunk/include/clang/Sema/DelayedDiagnostic.h
+++ cfe/trunk/include/clang/Sema/DelayedDiagnostic.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Defines the classes clang::DelayedDiagnostic and 
+/// Defines the classes clang::DelayedDiagnostic and 
 /// clang::AccessedEntity.
 ///
 /// DelayedDiangostic is used to record diagnostics that are being
@@ -265,7 +265,7 @@
   };
 };
 
-/// \brief A collection of diagnostics which were delayed.
+/// A collection of diagnostics which were delayed.
 class DelayedDiagnosticPool {
   const DelayedDiagnosticPool *Parent;
   SmallVector<DelayedDiagnostic, 4> Diagnostics;
Index: cfe/trunk/include/clang/Sema/ExternalSemaSource.h
===================================================================
--- cfe/trunk/include/clang/Sema/ExternalSemaSource.h
+++ cfe/trunk/include/clang/Sema/ExternalSemaSource.h
@@ -39,7 +39,7 @@
 class VarDecl;
 struct LateParsedTemplate;
 
-/// \brief A simple structure that captures a vtable use for the purposes of
+/// A simple structure that captures a vtable use for the purposes of
 /// the \c ExternalSemaSource.
 struct ExternalVTableUse {
   CXXRecordDecl *Record;
@@ -47,7 +47,7 @@
   bool DefinitionRequired;
 };
   
-/// \brief An abstract interface that should be implemented by
+/// An abstract interface that should be implemented by
 /// external AST sources that also provide information for semantic
 /// analysis.
 class ExternalSemaSource : public ExternalASTSource {
@@ -58,15 +58,15 @@
 
   ~ExternalSemaSource() override;
 
-  /// \brief Initialize the semantic source with the Sema instance
+  /// Initialize the semantic source with the Sema instance
   /// being used to perform semantic analysis on the abstract syntax
   /// tree.
   virtual void InitializeSema(Sema &S) {}
 
-  /// \brief Inform the semantic consumer that Sema is no longer available.
+  /// Inform the semantic consumer that Sema is no longer available.
   virtual void ForgetSema() {}
 
-  /// \brief Load the contents of the global method pool for a given
+  /// Load the contents of the global method pool for a given
   /// selector.
   virtual void ReadMethodPool(Selector Sel);
 
@@ -74,12 +74,12 @@
   /// selector if necessary.
   virtual void updateOutOfDateSelector(Selector Sel);
 
-  /// \brief Load the set of namespaces that are known to the external source,
+  /// Load the set of namespaces that are known to the external source,
   /// which will be used during typo correction.
   virtual void ReadKnownNamespaces(
                            SmallVectorImpl<NamespaceDecl *> &Namespaces);
 
-  /// \brief Load the set of used but not defined functions or variables with
+  /// Load the set of used but not defined functions or variables with
   /// internal linkage, or used but not defined internal functions.
   virtual void
   ReadUndefinedButUsed(llvm::MapVector<NamedDecl *, SourceLocation> &Undefined);
@@ -87,7 +87,7 @@
   virtual void ReadMismatchingDeleteExpressions(llvm::MapVector<
       FieldDecl *, llvm::SmallVector<std::pair<SourceLocation, bool>, 4>> &);
 
-  /// \brief Do last resort, unqualified lookup on a LookupResult that
+  /// Do last resort, unqualified lookup on a LookupResult that
   /// Sema cannot find.
   ///
   /// \param R a LookupResult that is being recovered.
@@ -97,7 +97,7 @@
   /// \return true to tell Sema to recover using the LookupResult.
   virtual bool LookupUnqualified(LookupResult &R, Scope *S) { return false; }
 
-  /// \brief Read the set of tentative definitions known to the external Sema
+  /// Read the set of tentative definitions known to the external Sema
   /// source.
   ///
   /// The external source should append its own tentative definitions to the
@@ -107,7 +107,7 @@
   virtual void ReadTentativeDefinitions(
                                   SmallVectorImpl<VarDecl *> &TentativeDefs) {}
   
-  /// \brief Read the set of unused file-scope declarations known to the
+  /// Read the set of unused file-scope declarations known to the
   /// external Sema source.
   ///
   /// The external source should append its own unused, filed-scope to the
@@ -117,7 +117,7 @@
   virtual void ReadUnusedFileScopedDecls(
                  SmallVectorImpl<const DeclaratorDecl *> &Decls) {}
   
-  /// \brief Read the set of delegating constructors known to the
+  /// Read the set of delegating constructors known to the
   /// external Sema source.
   ///
   /// The external source should append its own delegating constructors to the
@@ -127,7 +127,7 @@
   virtual void ReadDelegatingConstructors(
                  SmallVectorImpl<CXXConstructorDecl *> &Decls) {}
 
-  /// \brief Read the set of ext_vector type declarations known to the
+  /// Read the set of ext_vector type declarations known to the
   /// external Sema source.
   ///
   /// The external source should append its own ext_vector type declarations to
@@ -136,7 +136,7 @@
   /// introduce the same declarations repeatedly.
   virtual void ReadExtVectorDecls(SmallVectorImpl<TypedefNameDecl *> &Decls) {}
 
-  /// \brief Read the set of potentially unused typedefs known to the source.
+  /// Read the set of potentially unused typedefs known to the source.
   ///
   /// The external source should append its own potentially unused local
   /// typedefs to the given vector of declarations. Note that this routine may
@@ -145,7 +145,7 @@
   virtual void ReadUnusedLocalTypedefNameCandidates(
       llvm::SmallSetVector<const TypedefNameDecl *, 4> &Decls) {}
 
-  /// \brief Read the set of referenced selectors known to the
+  /// Read the set of referenced selectors known to the
   /// external Sema source.
   ///
   /// The external source should append its own referenced selectors to the 
@@ -155,7 +155,7 @@
   virtual void ReadReferencedSelectors(
                  SmallVectorImpl<std::pair<Selector, SourceLocation> > &Sels) {}
 
-  /// \brief Read the set of weak, undeclared identifiers known to the
+  /// Read the set of weak, undeclared identifiers known to the
   /// external Sema source.
   ///
   /// The external source should append its own weak, undeclared identifiers to
@@ -165,14 +165,14 @@
   virtual void ReadWeakUndeclaredIdentifiers(
                  SmallVectorImpl<std::pair<IdentifierInfo *, WeakInfo> > &WI) {}
 
-  /// \brief Read the set of used vtables known to the external Sema source.
+  /// Read the set of used vtables known to the external Sema source.
   ///
   /// The external source should append its own used vtables to the given
   /// vector. Note that this routine may be invoked multiple times; the external
   /// source should take care not to introduce the same vtables repeatedly.
   virtual void ReadUsedVTables(SmallVectorImpl<ExternalVTableUse> &VTables) {}
 
-  /// \brief Read the set of pending instantiations known to the external
+  /// Read the set of pending instantiations known to the external
   /// Sema source.
   ///
   /// The external source should append its own pending instantiations to the
@@ -183,7 +183,7 @@
                  SmallVectorImpl<std::pair<ValueDecl *, 
                                            SourceLocation> > &Pending) {}
 
-  /// \brief Read the set of late parsed template functions for this source.
+  /// Read the set of late parsed template functions for this source.
   ///
   /// The external source should insert its own late parsed template functions
   /// into the map. Note that this routine may be invoked multiple times; the
@@ -209,7 +209,7 @@
     return TypoCorrection();
   }
 
-  /// \brief Produces a diagnostic note if the external source contains a
+  /// Produces a diagnostic note if the external source contains a
   /// complete definition for \p T.
   ///
   /// \param Loc the location at which a complete type was required but not
Index: cfe/trunk/include/clang/Sema/IdentifierResolver.h
===================================================================
--- cfe/trunk/include/clang/Sema/IdentifierResolver.h
+++ cfe/trunk/include/clang/Sema/IdentifierResolver.h
@@ -54,7 +54,7 @@
     /// The decl must already be part of the decl chain.
     void RemoveDecl(NamedDecl *D);
 
-    /// \brief Insert the given declaration at the given position in the list.
+    /// Insert the given declaration at the given position in the list.
     void InsertDecl(DeclsTy::iterator Pos, NamedDecl *D) {
       Decls.insert(Pos, D);
     }
@@ -163,11 +163,11 @@
   /// The decl must already be part of the decl chain.
   void RemoveDecl(NamedDecl *D);
 
-  /// \brief Insert the given declaration after the given iterator
+  /// Insert the given declaration after the given iterator
   /// position.
   void InsertDeclAfter(iterator Pos, NamedDecl *D);
 
-  /// \brief Try to add the given declaration to the top level scope, if it
+  /// Try to add the given declaration to the top level scope, if it
   /// (or a redeclaration of it) hasn't already been added.
   ///
   /// \param D The externally-produced declaration to add.
Index: cfe/trunk/include/clang/Sema/Initialization.h
===================================================================
--- cfe/trunk/include/clang/Sema/Initialization.h
+++ cfe/trunk/include/clang/Sema/Initialization.h
@@ -45,49 +45,49 @@
 class ObjCMethodDecl;
 class Sema;
 
-/// \brief Describes an entity that is being initialized.
+/// Describes an entity that is being initialized.
 class InitializedEntity {
 public:
-  /// \brief Specifies the kind of entity being initialized.
+  /// Specifies the kind of entity being initialized.
   enum EntityKind {
-    /// \brief The entity being initialized is a variable.
+    /// The entity being initialized is a variable.
     EK_Variable,
 
-    /// \brief The entity being initialized is a function parameter.
+    /// The entity being initialized is a function parameter.
     EK_Parameter,
 
-    /// \brief The entity being initialized is the result of a function call.
+    /// The entity being initialized is the result of a function call.
     EK_Result,
 
-    /// \brief The entity being initialized is an exception object that
+    /// The entity being initialized is an exception object that
     /// is being thrown.
     EK_Exception,
 
-    /// \brief The entity being initialized is a non-static data member 
+    /// The entity being initialized is a non-static data member 
     /// subobject.
     EK_Member,
 
-    /// \brief The entity being initialized is an element of an array.
+    /// The entity being initialized is an element of an array.
     EK_ArrayElement,
 
-    /// \brief The entity being initialized is an object (or array of
+    /// The entity being initialized is an object (or array of
     /// objects) allocated via new.
     EK_New,
 
-    /// \brief The entity being initialized is a temporary object.
+    /// The entity being initialized is a temporary object.
     EK_Temporary,
 
-    /// \brief The entity being initialized is a base member subobject.
+    /// The entity being initialized is a base member subobject.
     EK_Base,
 
-    /// \brief The initialization is being done by a delegating constructor.
+    /// The initialization is being done by a delegating constructor.
     EK_Delegating,
 
-    /// \brief The entity being initialized is an element of a vector.
+    /// The entity being initialized is an element of a vector.
     /// or vector.
     EK_VectorElement,
 
-    /// \brief The entity being initialized is a field of block descriptor for
+    /// The entity being initialized is a field of block descriptor for
     /// the copied-in c++ object.
     EK_BlockElement,
 
@@ -95,27 +95,27 @@
     /// copied-in lambda object that's used in the lambda to block conversion.
     EK_LambdaToBlockConversionBlockElement,
 
-    /// \brief The entity being initialized is the real or imaginary part of a
+    /// The entity being initialized is the real or imaginary part of a
     /// complex number.
     EK_ComplexElement,
 
-    /// \brief The entity being initialized is the field that captures a 
+    /// The entity being initialized is the field that captures a 
     /// variable in a lambda.
     EK_LambdaCapture,
 
-    /// \brief The entity being initialized is the initializer for a compound
+    /// The entity being initialized is the initializer for a compound
     /// literal.
     EK_CompoundLiteralInit,
 
-    /// \brief The entity being implicitly initialized back to the formal
+    /// The entity being implicitly initialized back to the formal
     /// result type.
     EK_RelatedResult,
 
-    /// \brief The entity being initialized is a function parameter; function
+    /// The entity being initialized is a function parameter; function
     /// is member of group of audited CF APIs.
     EK_Parameter_CF_Audited,
 
-    /// \brief The entity being initialized is a structured binding of a
+    /// The entity being initialized is a structured binding of a
     /// decomposition declaration.
     EK_Binding,
 
@@ -125,73 +125,73 @@
   };
   
 private:
-  /// \brief The kind of entity being initialized.
+  /// The kind of entity being initialized.
   EntityKind Kind;
 
-  /// \brief If non-NULL, the parent entity in which this
+  /// If non-NULL, the parent entity in which this
   /// initialization occurs.
   const InitializedEntity *Parent = nullptr;
 
-  /// \brief The type of the object or reference being initialized.
+  /// The type of the object or reference being initialized.
   QualType Type;
 
-  /// \brief The mangling number for the next reference temporary to be created.
+  /// The mangling number for the next reference temporary to be created.
   mutable unsigned ManglingNumber = 0;
 
   struct LN {
-    /// \brief When Kind == EK_Result, EK_Exception, EK_New, the
+    /// When Kind == EK_Result, EK_Exception, EK_New, the
     /// location of the 'return', 'throw', or 'new' keyword,
     /// respectively. When Kind == EK_Temporary, the location where
     /// the temporary is being created.
     unsigned Location;
 
-    /// \brief Whether the entity being initialized may end up using the
+    /// Whether the entity being initialized may end up using the
     /// named return value optimization (NRVO).
     bool NRVO;
   };
 
   struct VD {
-    /// \brief The VarDecl, FieldDecl, or BindingDecl being initialized.
+    /// The VarDecl, FieldDecl, or BindingDecl being initialized.
     ValueDecl *VariableOrMember;
 
-    /// \brief When Kind == EK_Member, whether this is an implicit member
+    /// When Kind == EK_Member, whether this is an implicit member
     /// initialization in a copy or move constructor. These can perform array
     /// copies.
     bool IsImplicitFieldInit;
   };
 
   struct C {
-    /// \brief The name of the variable being captured by an EK_LambdaCapture.
+    /// The name of the variable being captured by an EK_LambdaCapture.
     IdentifierInfo *VarID;
 
-    /// \brief The source location at which the capture occurs.
+    /// The source location at which the capture occurs.
     unsigned Location;
   };
 
   union {
-    /// \brief When Kind == EK_Variable, EK_Member or EK_Binding, the variable.
+    /// When Kind == EK_Variable, EK_Member or EK_Binding, the variable.
     VD Variable;
     
-    /// \brief When Kind == EK_RelatedResult, the ObjectiveC method where
+    /// When Kind == EK_RelatedResult, the ObjectiveC method where
     /// result type was implicitly changed to accommodate ARC semantics.
     ObjCMethodDecl *MethodDecl;
 
-    /// \brief When Kind == EK_Parameter, the ParmVarDecl, with the
+    /// When Kind == EK_Parameter, the ParmVarDecl, with the
     /// low bit indicating whether the parameter is "consumed".
     uintptr_t Parameter;
     
-    /// \brief When Kind == EK_Temporary or EK_CompoundLiteralInit, the type
+    /// When Kind == EK_Temporary or EK_CompoundLiteralInit, the type
     /// source information for the temporary.
     TypeSourceInfo *TypeInfo;
 
     struct LN LocAndNRVO;
     
-    /// \brief When Kind == EK_Base, the base specifier that provides the 
+    /// When Kind == EK_Base, the base specifier that provides the 
     /// base class. The lower bit specifies whether the base is an inherited
     /// virtual base.
     uintptr_t Base;
 
-    /// \brief When Kind == EK_ArrayElement, EK_VectorElement, or
+    /// When Kind == EK_ArrayElement, EK_VectorElement, or
     /// EK_ComplexElement, the index of the array or vector element being
     /// initialized. 
     unsigned Index;
@@ -201,11 +201,11 @@
 
   InitializedEntity() = default;
 
-  /// \brief Create the initialization entity for a variable.
+  /// Create the initialization entity for a variable.
   InitializedEntity(VarDecl *Var, EntityKind EK = EK_Variable)
       : Kind(EK), Type(Var->getType()), Variable{Var, false} {}
   
-  /// \brief Create the initialization entity for the result of a
+  /// Create the initialization entity for the result of a
   /// function, throwing an object, performing an explicit cast, or
   /// initializing a parameter for which there is no declaration.
   InitializedEntity(EntityKind Kind, SourceLocation Loc, QualType Type,
@@ -215,17 +215,17 @@
     LocAndNRVO.NRVO = NRVO;
   }
   
-  /// \brief Create the initialization entity for a member subobject.
+  /// Create the initialization entity for a member subobject.
   InitializedEntity(FieldDecl *Member, const InitializedEntity *Parent,
                     bool Implicit) 
       : Kind(EK_Member), Parent(Parent), Type(Member->getType()),
         Variable{Member, Implicit} {}
   
-  /// \brief Create the initialization entity for an array element.
+  /// Create the initialization entity for an array element.
   InitializedEntity(ASTContext &Context, unsigned Index, 
                     const InitializedEntity &Parent);
 
-  /// \brief Create the initialization entity for a lambda capture.
+  /// Create the initialization entity for a lambda capture.
   InitializedEntity(IdentifierInfo *VarID, QualType FieldType, SourceLocation Loc)
       : Kind(EK_LambdaCapture), Type(FieldType) {
     Capture.VarID = VarID;
@@ -233,18 +233,18 @@
   }
   
 public:
-  /// \brief Create the initialization entity for a variable.
+  /// Create the initialization entity for a variable.
   static InitializedEntity InitializeVariable(VarDecl *Var) {
     return InitializedEntity(Var);
   }
 
-  /// \brief Create the initialization entity for a parameter.
+  /// Create the initialization entity for a parameter.
   static InitializedEntity InitializeParameter(ASTContext &Context,
                                                const ParmVarDecl *Parm) {
     return InitializeParameter(Context, Parm, Parm->getType());
   }
 
-  /// \brief Create the initialization entity for a parameter, but use
+  /// Create the initialization entity for a parameter, but use
   /// another type.
   static InitializedEntity InitializeParameter(ASTContext &Context,
                                                const ParmVarDecl *Parm,
@@ -262,7 +262,7 @@
     return Entity;
   }
 
-  /// \brief Create the initialization entity for a parameter that is
+  /// Create the initialization entity for a parameter that is
   /// only known by its type.
   static InitializedEntity InitializeParameter(ASTContext &Context,
                                                QualType Type,
@@ -275,7 +275,7 @@
     return Entity;
   }
 
-  /// \brief Create the initialization entity for the result of a function.
+  /// Create the initialization entity for the result of a function.
   static InitializedEntity InitializeResult(SourceLocation ReturnLoc,
                                             QualType Type, bool NRVO) {
     return InitializedEntity(EK_Result, ReturnLoc, Type, NRVO);
@@ -292,28 +292,28 @@
                              BlockVarLoc, Type, NRVO);
   }
 
-  /// \brief Create the initialization entity for an exception object.
+  /// Create the initialization entity for an exception object.
   static InitializedEntity InitializeException(SourceLocation ThrowLoc,
                                                QualType Type, bool NRVO) {
     return InitializedEntity(EK_Exception, ThrowLoc, Type, NRVO);
   }
 
-  /// \brief Create the initialization entity for an object allocated via new.
+  /// Create the initialization entity for an object allocated via new.
   static InitializedEntity InitializeNew(SourceLocation NewLoc, QualType Type) {
     return InitializedEntity(EK_New, NewLoc, Type);
   }
   
-  /// \brief Create the initialization entity for a temporary.
+  /// Create the initialization entity for a temporary.
   static InitializedEntity InitializeTemporary(QualType Type) {
     return InitializeTemporary(nullptr, Type);
   }
 
-  /// \brief Create the initialization entity for a temporary.
+  /// Create the initialization entity for a temporary.
   static InitializedEntity InitializeTemporary(TypeSourceInfo *TypeInfo) {
     return InitializeTemporary(TypeInfo, TypeInfo->getType());
   }
   
-  /// \brief Create the initialization entity for a temporary.
+  /// Create the initialization entity for a temporary.
   static InitializedEntity InitializeTemporary(TypeSourceInfo *TypeInfo,
                                                QualType Type) {
     InitializedEntity Result(EK_Temporary, SourceLocation(), Type);
@@ -321,7 +321,7 @@
     return Result;
   }
   
-  /// \brief Create the initialization entity for a related result.
+  /// Create the initialization entity for a related result.
   static InitializedEntity InitializeRelatedResult(ObjCMethodDecl *MD,
                                                    QualType Type) {
     InitializedEntity Result(EK_RelatedResult, SourceLocation(), Type);
@@ -329,18 +329,18 @@
     return Result;
   }
 
-  /// \brief Create the initialization entity for a base class subobject.
+  /// Create the initialization entity for a base class subobject.
   static InitializedEntity
   InitializeBase(ASTContext &Context, const CXXBaseSpecifier *Base,
                  bool IsInheritedVirtualBase,
                  const InitializedEntity *Parent = nullptr);
 
-  /// \brief Create the initialization entity for a delegated constructor.
+  /// Create the initialization entity for a delegated constructor.
   static InitializedEntity InitializeDelegation(QualType Type) {
     return InitializedEntity(EK_Delegating, SourceLocation(), Type);
   }
   
-  /// \brief Create the initialization entity for a member subobject.
+  /// Create the initialization entity for a member subobject.
   static InitializedEntity
   InitializeMember(FieldDecl *Member,
                    const InitializedEntity *Parent = nullptr,
@@ -348,7 +348,7 @@
     return InitializedEntity(Member, Parent, Implicit);
   }
   
-  /// \brief Create the initialization entity for a member subobject.
+  /// Create the initialization entity for a member subobject.
   static InitializedEntity
   InitializeMember(IndirectFieldDecl *Member,
                    const InitializedEntity *Parent = nullptr,
@@ -356,26 +356,26 @@
     return InitializedEntity(Member->getAnonField(), Parent, Implicit);
   }
 
-  /// \brief Create the initialization entity for an array element.
+  /// Create the initialization entity for an array element.
   static InitializedEntity InitializeElement(ASTContext &Context, 
                                              unsigned Index, 
                                              const InitializedEntity &Parent) {
     return InitializedEntity(Context, Index, Parent);
   }
 
-  /// \brief Create the initialization entity for a structured binding.
+  /// Create the initialization entity for a structured binding.
   static InitializedEntity InitializeBinding(VarDecl *Binding) {
     return InitializedEntity(Binding, EK_Binding);
   }
 
-  /// \brief Create the initialization entity for a lambda capture.
+  /// Create the initialization entity for a lambda capture.
   static InitializedEntity InitializeLambdaCapture(IdentifierInfo *VarID,
                                                    QualType FieldType,
                                                    SourceLocation Loc) {
     return InitializedEntity(VarID, FieldType, Loc);
   }
 
-  /// \brief Create the entity for a compound literal initializer.
+  /// Create the entity for a compound literal initializer.
   static InitializedEntity InitializeCompoundLiteralInit(TypeSourceInfo *TSI) {
     InitializedEntity Result(EK_CompoundLiteralInit, SourceLocation(),
                              TSI->getType());
@@ -383,18 +383,18 @@
     return Result;
   }
 
-  /// \brief Determine the kind of initialization.
+  /// Determine the kind of initialization.
   EntityKind getKind() const { return Kind; }
   
-  /// \brief Retrieve the parent of the entity being initialized, when
+  /// Retrieve the parent of the entity being initialized, when
   /// the initialization itself is occurring within the context of a
   /// larger initialization.
   const InitializedEntity *getParent() const { return Parent; }
 
-  /// \brief Retrieve type being initialized.
+  /// Retrieve type being initialized.
   QualType getType() const { return Type; }
   
-  /// \brief Retrieve complete type-source information for the object being 
+  /// Retrieve complete type-source information for the object being 
   /// constructed, if known.
   TypeSourceInfo *getTypeSourceInfo() const {
     if (Kind == EK_Temporary || Kind == EK_CompoundLiteralInit)
@@ -403,17 +403,17 @@
     return nullptr;
   }
   
-  /// \brief Retrieve the name of the entity being initialized.
+  /// Retrieve the name of the entity being initialized.
   DeclarationName getName() const;
 
-  /// \brief Retrieve the variable, parameter, or field being
+  /// Retrieve the variable, parameter, or field being
   /// initialized.
   ValueDecl *getDecl() const;
   
-  /// \brief Retrieve the ObjectiveC method being initialized.
+  /// Retrieve the ObjectiveC method being initialized.
   ObjCMethodDecl *getMethodDecl() const { return MethodDecl; }
 
-  /// \brief Determine whether this initialization allows the named return 
+  /// Determine whether this initialization allows the named return 
   /// value optimization, which also applies to thrown objects.
   bool allowsNRVO() const;
 
@@ -422,52 +422,52 @@
             getKind() == EK_Parameter_CF_Audited);
   }
 
-  /// \brief Determine whether this initialization consumes the
+  /// Determine whether this initialization consumes the
   /// parameter.
   bool isParameterConsumed() const {
     assert(isParameterKind() && "Not a parameter");
     return (Parameter & 1);
   }
                                   
-  /// \brief Retrieve the base specifier.
+  /// Retrieve the base specifier.
   const CXXBaseSpecifier *getBaseSpecifier() const {
     assert(getKind() == EK_Base && "Not a base specifier");
     return reinterpret_cast<const CXXBaseSpecifier *>(Base & ~0x1);
   }
 
-  /// \brief Return whether the base is an inherited virtual base.
+  /// Return whether the base is an inherited virtual base.
   bool isInheritedVirtualBase() const {
     assert(getKind() == EK_Base && "Not a base specifier");
     return Base & 0x1;
   }
 
-  /// \brief Determine whether this is an array new with an unknown bound.
+  /// Determine whether this is an array new with an unknown bound.
   bool isVariableLengthArrayNew() const {
     return getKind() == EK_New && dyn_cast_or_null<IncompleteArrayType>(
                                       getType()->getAsArrayTypeUnsafe());
   }
 
-  /// \brief Is this the implicit initialization of a member of a class from
+  /// Is this the implicit initialization of a member of a class from
   /// a defaulted constructor?
   bool isImplicitMemberInitializer() const {
     return getKind() == EK_Member && Variable.IsImplicitFieldInit;
   }
 
-  /// \brief Determine the location of the 'return' keyword when initializing
+  /// Determine the location of the 'return' keyword when initializing
   /// the result of a function call.
   SourceLocation getReturnLoc() const {
     assert(getKind() == EK_Result && "No 'return' location!");
     return SourceLocation::getFromRawEncoding(LocAndNRVO.Location);
   }
 
-  /// \brief Determine the location of the 'throw' keyword when initializing
+  /// Determine the location of the 'throw' keyword when initializing
   /// an exception object.
   SourceLocation getThrowLoc() const {
     assert(getKind() == EK_Exception && "No 'throw' location!");
     return SourceLocation::getFromRawEncoding(LocAndNRVO.Location);
   }
 
-  /// \brief If this is an array, vector, or complex number element, get the
+  /// If this is an array, vector, or complex number element, get the
   /// element's index.
   unsigned getElementIndex() const {
     assert(getKind() == EK_ArrayElement || getKind() == EK_VectorElement ||
@@ -475,7 +475,7 @@
     return Index;
   }
 
-  /// \brief If this is already the initializer for an array or vector
+  /// If this is already the initializer for an array or vector
   /// element, sets the element index.
   void setElementIndex(unsigned Index) {
     assert(getKind() == EK_ArrayElement || getKind() == EK_VectorElement ||
@@ -483,13 +483,13 @@
     this->Index = Index;
   }
 
-  /// \brief For a lambda capture, return the capture's name.
+  /// For a lambda capture, return the capture's name.
   StringRef getCapturedVarName() const {
     assert(getKind() == EK_LambdaCapture && "Not a lambda capture!");
     return Capture.VarID->getName();
   }
 
-  /// \brief Determine the location of the capture when initializing
+  /// Determine the location of the capture when initializing
   /// field from a captured variable in a lambda.
   SourceLocation getCaptureLoc() const {
     assert(getKind() == EK_LambdaCapture && "Not a lambda capture!");
@@ -510,12 +510,12 @@
   unsigned dumpImpl(raw_ostream &OS) const;
 };
   
-/// \brief Describes the kind of initialization being performed, along with 
+/// Describes the kind of initialization being performed, along with 
 /// location information for tokens related to the initialization (equal sign,
 /// parentheses).
 class InitializationKind {
 public:
-  /// \brief The kind of initialization being performed.
+  /// The kind of initialization being performed.
   enum InitKind {
     /// Direct initialization
     IK_Direct,
@@ -534,7 +534,7 @@
   };
   
 private:
-  /// \brief The context of the initialization.
+  /// The context of the initialization.
   enum InitContext {
     /// Normal context
     IC_Normal,
@@ -555,13 +555,13 @@
     IC_FunctionalCast
   };
   
-  /// \brief The kind of initialization being performed.
+  /// The kind of initialization being performed.
   InitKind Kind : 8;
 
-  /// \brief The context of the initialization.
+  /// The context of the initialization.
   InitContext Context : 8;
   
-  /// \brief The source locations involved in the initialization.
+  /// The source locations involved in the initialization.
   SourceLocation Locations[3];
   
   InitializationKind(InitKind Kind, InitContext Context, SourceLocation Loc1, 
@@ -573,7 +573,7 @@
   }
   
 public:
-  /// \brief Create a direct initialization.
+  /// Create a direct initialization.
   static InitializationKind CreateDirect(SourceLocation InitLoc,
                                          SourceLocation LParenLoc,
                                          SourceLocation RParenLoc) {
@@ -593,14 +593,14 @@
                               RBraceLoc);
   }
 
-  /// \brief Create a direct initialization due to a cast that isn't a C-style 
+  /// Create a direct initialization due to a cast that isn't a C-style 
   /// or functional cast.
   static InitializationKind CreateCast(SourceRange TypeRange) {
     return InitializationKind(IK_Direct, IC_StaticCast, TypeRange.getBegin(),
                               TypeRange.getBegin(), TypeRange.getEnd());
   }
   
-  /// \brief Create a direct initialization for a C-style cast.
+  /// Create a direct initialization for a C-style cast.
   static InitializationKind CreateCStyleCast(SourceLocation StartLoc,
                                              SourceRange TypeRange,
                                              bool InitList) {
@@ -611,7 +611,7 @@
                               TypeRange.getEnd());
   }
 
-  /// \brief Create a direct initialization for a functional cast.
+  /// Create a direct initialization for a functional cast.
   static InitializationKind CreateFunctionalCast(SourceRange TypeRange,
                                                  bool InitList) {
     return InitializationKind(InitList ? IK_DirectList : IK_Direct,
@@ -619,7 +619,7 @@
                               TypeRange.getBegin(), TypeRange.getEnd());
   }
 
-  /// \brief Create a copy initialization.
+  /// Create a copy initialization.
   static InitializationKind CreateCopy(SourceLocation InitLoc,
                                        SourceLocation EqualLoc,
                                        bool AllowExplicitConvs = false) {
@@ -628,12 +628,12 @@
                               InitLoc, EqualLoc, EqualLoc);
   }
   
-  /// \brief Create a default initialization.
+  /// Create a default initialization.
   static InitializationKind CreateDefault(SourceLocation InitLoc) {
     return InitializationKind(IK_Default, IC_Normal, InitLoc, InitLoc, InitLoc);
   }
   
-  /// \brief Create a value initialization.
+  /// Create a value initialization.
   static InitializationKind CreateValue(SourceLocation InitLoc,
                                         SourceLocation LParenLoc,
                                         SourceLocation RParenLoc,
@@ -642,7 +642,7 @@
                               InitLoc, LParenLoc, RParenLoc);
   }
 
-  /// \brief Create an initialization from an initializer (which, for direct
+  /// Create an initialization from an initializer (which, for direct
   /// initialization from a parenthesized list, will be a ParenListExpr).
   static InitializationKind CreateForInit(SourceLocation Loc, bool DirectInit,
                                           Expr *Init) {
@@ -653,45 +653,45 @@
     return CreateDirect(Loc, Init->getLocStart(), Init->getLocEnd());
   }
   
-  /// \brief Determine the initialization kind.
+  /// Determine the initialization kind.
   InitKind getKind() const {
     return Kind;
   }
   
-  /// \brief Determine whether this initialization is an explicit cast.
+  /// Determine whether this initialization is an explicit cast.
   bool isExplicitCast() const {
     return Context >= IC_StaticCast;
   }
   
-  /// \brief Determine whether this initialization is a C-style cast.
+  /// Determine whether this initialization is a C-style cast.
   bool isCStyleOrFunctionalCast() const { 
     return Context >= IC_CStyleCast; 
   }
 
-  /// \brief Determine whether this is a C-style cast.
+  /// Determine whether this is a C-style cast.
   bool isCStyleCast() const {
     return Context == IC_CStyleCast;
   }
 
-  /// \brief Determine whether this is a functional-style cast.
+  /// Determine whether this is a functional-style cast.
   bool isFunctionalCast() const {
     return Context == IC_FunctionalCast;
   }
 
-  /// \brief Determine whether this initialization is an implicit
+  /// Determine whether this initialization is an implicit
   /// value-initialization, e.g., as occurs during aggregate
   /// initialization.
   bool isImplicitValueInit() const { return Context == IC_Implicit; }
 
-  /// \brief Retrieve the location at which initialization is occurring.
+  /// Retrieve the location at which initialization is occurring.
   SourceLocation getLocation() const { return Locations[0]; }
   
-  /// \brief Retrieve the source range that covers the initialization.
+  /// Retrieve the source range that covers the initialization.
   SourceRange getRange() const { 
     return SourceRange(Locations[0], Locations[2]);
   }
   
-  /// \brief Retrieve the location of the equal sign for copy initialization
+  /// Retrieve the location of the equal sign for copy initialization
   /// (if present).
   SourceLocation getEqualLoc() const {
     assert(Kind == IK_Copy && "Only copy initialization has an '='");
@@ -700,11 +700,11 @@
 
   bool isCopyInit() const { return Kind == IK_Copy; }
 
-  /// \brief Retrieve whether this initialization allows the use of explicit
+  /// Retrieve whether this initialization allows the use of explicit
   ///        constructors.
   bool AllowExplicit() const { return !isCopyInit(); }
 
-  /// \brief Retrieve whether this initialization allows the use of explicit
+  /// Retrieve whether this initialization allows the use of explicit
   /// conversion functions when binding a reference. If the reference is the
   /// first parameter in a copy or move constructor, such conversions are
   /// permitted even though we are performing copy-initialization.
@@ -718,7 +718,7 @@
     return Kind == IK_Direct || Kind == IK_Value || Kind == IK_DirectList;
   }
   
-  /// \brief Retrieve the source range containing the locations of the open
+  /// Retrieve the source range containing the locations of the open
   /// and closing parentheses or braces for value, direct, and direct list
   /// initializations.
   SourceRange getParenOrBraceRange() const {
@@ -729,159 +729,159 @@
   }
 };
 
-/// \brief Describes the sequence of initializations required to initialize
+/// Describes the sequence of initializations required to initialize
 /// a given object or reference with a set of arguments.
 class InitializationSequence {
 public:
-  /// \brief Describes the kind of initialization sequence computed.
+  /// Describes the kind of initialization sequence computed.
   enum SequenceKind {
-    /// \brief A failed initialization sequence. The failure kind tells what
+    /// A failed initialization sequence. The failure kind tells what
     /// happened.
     FailedSequence = 0,
 
-    /// \brief A dependent initialization, which could not be
+    /// A dependent initialization, which could not be
     /// type-checked due to the presence of dependent types or
     /// dependently-typed expressions.
     DependentSequence,
 
-    /// \brief A normal sequence.
+    /// A normal sequence.
     NormalSequence
   };
   
-  /// \brief Describes the kind of a particular step in an initialization
+  /// Describes the kind of a particular step in an initialization
   /// sequence.
   enum StepKind {
-    /// \brief Resolve the address of an overloaded function to a specific
+    /// Resolve the address of an overloaded function to a specific
     /// function declaration.
     SK_ResolveAddressOfOverloadedFunction,
 
-    /// \brief Perform a derived-to-base cast, producing an rvalue.
+    /// Perform a derived-to-base cast, producing an rvalue.
     SK_CastDerivedToBaseRValue,
 
-    /// \brief Perform a derived-to-base cast, producing an xvalue.
+    /// Perform a derived-to-base cast, producing an xvalue.
     SK_CastDerivedToBaseXValue,
 
-    /// \brief Perform a derived-to-base cast, producing an lvalue.
+    /// Perform a derived-to-base cast, producing an lvalue.
     SK_CastDerivedToBaseLValue,
 
-    /// \brief Reference binding to an lvalue.
+    /// Reference binding to an lvalue.
     SK_BindReference,
 
-    /// \brief Reference binding to a temporary.
+    /// Reference binding to a temporary.
     SK_BindReferenceToTemporary,
 
-    /// \brief An optional copy of a temporary object to another
+    /// An optional copy of a temporary object to another
     /// temporary object, which is permitted (but not required) by
     /// C++98/03 but not C++0x.
     SK_ExtraneousCopyToTemporary,
 
-    /// \brief Direct-initialization from a reference-related object in the
+    /// Direct-initialization from a reference-related object in the
     /// final stage of class copy-initialization.
     SK_FinalCopy,
 
-    /// \brief Perform a user-defined conversion, either via a conversion
+    /// Perform a user-defined conversion, either via a conversion
     /// function or via a constructor.
     SK_UserConversion,
 
-    /// \brief Perform a qualification conversion, producing an rvalue.
+    /// Perform a qualification conversion, producing an rvalue.
     SK_QualificationConversionRValue,
 
-    /// \brief Perform a qualification conversion, producing an xvalue.
+    /// Perform a qualification conversion, producing an xvalue.
     SK_QualificationConversionXValue,
 
-    /// \brief Perform a qualification conversion, producing an lvalue.
+    /// Perform a qualification conversion, producing an lvalue.
     SK_QualificationConversionLValue,
 
-    /// \brief Perform a conversion adding _Atomic to a type.
+    /// Perform a conversion adding _Atomic to a type.
     SK_AtomicConversion,
 
-    /// \brief Perform a load from a glvalue, producing an rvalue.
+    /// Perform a load from a glvalue, producing an rvalue.
     SK_LValueToRValue,
 
-    /// \brief Perform an implicit conversion sequence.
+    /// Perform an implicit conversion sequence.
     SK_ConversionSequence,
 
-    /// \brief Perform an implicit conversion sequence without narrowing.
+    /// Perform an implicit conversion sequence without narrowing.
     SK_ConversionSequenceNoNarrowing,
 
-    /// \brief Perform list-initialization without a constructor.
+    /// Perform list-initialization without a constructor.
     SK_ListInitialization,
 
-    /// \brief Unwrap the single-element initializer list for a reference.
+    /// Unwrap the single-element initializer list for a reference.
     SK_UnwrapInitList,
 
-    /// \brief Rewrap the single-element initializer list for a reference.
+    /// Rewrap the single-element initializer list for a reference.
     SK_RewrapInitList,
 
-    /// \brief Perform initialization via a constructor.
+    /// Perform initialization via a constructor.
     SK_ConstructorInitialization,
 
-    /// \brief Perform initialization via a constructor, taking arguments from
+    /// Perform initialization via a constructor, taking arguments from
     /// a single InitListExpr.
     SK_ConstructorInitializationFromList,
 
-    /// \brief Zero-initialize the object
+    /// Zero-initialize the object
     SK_ZeroInitialization,
 
-    /// \brief C assignment
+    /// C assignment
     SK_CAssignment,
 
-    /// \brief Initialization by string
+    /// Initialization by string
     SK_StringInit,
 
-    /// \brief An initialization that "converts" an Objective-C object
+    /// An initialization that "converts" an Objective-C object
     /// (not a point to an object) to another Objective-C object type.
     SK_ObjCObjectConversion,
 
-    /// \brief Array indexing for initialization by elementwise copy.
+    /// Array indexing for initialization by elementwise copy.
     SK_ArrayLoopIndex,
 
-    /// \brief Array initialization by elementwise copy.
+    /// Array initialization by elementwise copy.
     SK_ArrayLoopInit,
 
-    /// \brief Array initialization (from an array rvalue).
+    /// Array initialization (from an array rvalue).
     SK_ArrayInit,
 
-    /// \brief Array initialization (from an array rvalue) as a GNU extension.
+    /// Array initialization (from an array rvalue) as a GNU extension.
     SK_GNUArrayInit,
 
-    /// \brief Array initialization from a parenthesized initializer list.
+    /// Array initialization from a parenthesized initializer list.
     /// This is a GNU C++ extension.
     SK_ParenthesizedArrayInit,
 
-    /// \brief Pass an object by indirect copy-and-restore.
+    /// Pass an object by indirect copy-and-restore.
     SK_PassByIndirectCopyRestore,
 
-    /// \brief Pass an object by indirect restore.
+    /// Pass an object by indirect restore.
     SK_PassByIndirectRestore,
 
-    /// \brief Produce an Objective-C object pointer.
+    /// Produce an Objective-C object pointer.
     SK_ProduceObjCObject,
 
-    /// \brief Construct a std::initializer_list from an initializer list.
+    /// Construct a std::initializer_list from an initializer list.
     SK_StdInitializerList,
 
-    /// \brief Perform initialization via a constructor taking a single
+    /// Perform initialization via a constructor taking a single
     /// std::initializer_list argument.
     SK_StdInitializerListConstructorCall,
 
-    /// \brief Initialize an OpenCL sampler from an integer.
+    /// Initialize an OpenCL sampler from an integer.
     SK_OCLSamplerInit,
 
-    /// \brief Initialize queue_t from 0.
+    /// Initialize queue_t from 0.
     SK_OCLZeroQueue,
 
-    /// \brief Passing zero to a function where OpenCL event_t is expected.
+    /// Passing zero to a function where OpenCL event_t is expected.
     SK_OCLZeroEvent
   };
   
-  /// \brief A single step in the initialization sequence.
+  /// A single step in the initialization sequence.
   class Step {
   public:
-    /// \brief The kind of conversion or initialization step we are taking.
+    /// The kind of conversion or initialization step we are taking.
     StepKind Kind;
     
-    // \brief The type that results from this initialization.
+    // The type that results from this initialization.
     QualType Type;
 
     struct F {
@@ -891,7 +891,7 @@
     };
 
     union {
-      /// \brief When Kind == SK_ResolvedOverloadedFunction or Kind ==
+      /// When Kind == SK_ResolvedOverloadedFunction or Kind ==
       /// SK_UserConversion, the function that the expression should be 
       /// resolved to or the conversion function to call, respectively.
       /// When Kind == SK_ConstructorInitialization or SK_ListConstruction,
@@ -903,11 +903,11 @@
       /// For construct decls, the naming class is the target type.
       struct F Function;
 
-      /// \brief When Kind = SK_ConversionSequence, the implicit conversion
+      /// When Kind = SK_ConversionSequence, the implicit conversion
       /// sequence.
       ImplicitConversionSequence *ICS;
 
-      /// \brief When Kind = SK_RewrapInitList, the syntactic form of the
+      /// When Kind = SK_RewrapInitList, the syntactic form of the
       /// wrapping list.
       InitListExpr *WrappingSyntacticList;
     };
@@ -916,154 +916,154 @@
   };
   
 private:
-  /// \brief The kind of initialization sequence computed.
+  /// The kind of initialization sequence computed.
   enum SequenceKind SequenceKind;
   
-  /// \brief Steps taken by this initialization.
+  /// Steps taken by this initialization.
   SmallVector<Step, 4> Steps;
   
 public:
-  /// \brief Describes why initialization failed.
+  /// Describes why initialization failed.
   enum FailureKind {
-    /// \brief Too many initializers provided for a reference.
+    /// Too many initializers provided for a reference.
     FK_TooManyInitsForReference,
 
-    /// \brief Reference initialized from a parenthesized initializer list.
+    /// Reference initialized from a parenthesized initializer list.
     FK_ParenthesizedListInitForReference,
 
-    /// \brief Array must be initialized with an initializer list.
+    /// Array must be initialized with an initializer list.
     FK_ArrayNeedsInitList,
 
-    /// \brief Array must be initialized with an initializer list or a 
+    /// Array must be initialized with an initializer list or a 
     /// string literal.
     FK_ArrayNeedsInitListOrStringLiteral,
 
-    /// \brief Array must be initialized with an initializer list or a
+    /// Array must be initialized with an initializer list or a
     /// wide string literal.
     FK_ArrayNeedsInitListOrWideStringLiteral,
 
-    /// \brief Initializing a wide char array with narrow string literal.
+    /// Initializing a wide char array with narrow string literal.
     FK_NarrowStringIntoWideCharArray,
 
-    /// \brief Initializing char array with wide string literal.
+    /// Initializing char array with wide string literal.
     FK_WideStringIntoCharArray,
 
-    /// \brief Initializing wide char array with incompatible wide string
+    /// Initializing wide char array with incompatible wide string
     /// literal.
     FK_IncompatWideStringIntoWideChar,
 
-    /// \brief Initializing char8_t array with plain string literal.
+    /// Initializing char8_t array with plain string literal.
     FK_PlainStringIntoUTF8Char,
 
-    /// \brief Initializing char array with UTF-8 string literal.
+    /// Initializing char array with UTF-8 string literal.
     FK_UTF8StringIntoPlainChar,
 
-    /// \brief Array type mismatch.
+    /// Array type mismatch.
     FK_ArrayTypeMismatch,
 
-    /// \brief Non-constant array initializer
+    /// Non-constant array initializer
     FK_NonConstantArrayInit,
 
-    /// \brief Cannot resolve the address of an overloaded function.
+    /// Cannot resolve the address of an overloaded function.
     FK_AddressOfOverloadFailed,
 
-    /// \brief Overloading due to reference initialization failed.
+    /// Overloading due to reference initialization failed.
     FK_ReferenceInitOverloadFailed,
 
-    /// \brief Non-const lvalue reference binding to a temporary.
+    /// Non-const lvalue reference binding to a temporary.
     FK_NonConstLValueReferenceBindingToTemporary,
 
-    /// \brief Non-const lvalue reference binding to a bit-field.
+    /// Non-const lvalue reference binding to a bit-field.
     FK_NonConstLValueReferenceBindingToBitfield,
 
-    /// \brief Non-const lvalue reference binding to a vector element.
+    /// Non-const lvalue reference binding to a vector element.
     FK_NonConstLValueReferenceBindingToVectorElement,
 
-    /// \brief Non-const lvalue reference binding to an lvalue of unrelated
+    /// Non-const lvalue reference binding to an lvalue of unrelated
     /// type.
     FK_NonConstLValueReferenceBindingToUnrelated,
 
-    /// \brief Rvalue reference binding to an lvalue.
+    /// Rvalue reference binding to an lvalue.
     FK_RValueReferenceBindingToLValue,
 
-    /// \brief Reference binding drops qualifiers.
+    /// Reference binding drops qualifiers.
     FK_ReferenceInitDropsQualifiers,
 
-    /// \brief Reference binding failed.
+    /// Reference binding failed.
     FK_ReferenceInitFailed,
 
-    /// \brief Implicit conversion failed.
+    /// Implicit conversion failed.
     FK_ConversionFailed,
 
-    /// \brief Implicit conversion failed.
+    /// Implicit conversion failed.
     FK_ConversionFromPropertyFailed,
 
-    /// \brief Too many initializers for scalar
+    /// Too many initializers for scalar
     FK_TooManyInitsForScalar,
 
-    /// \brief Scalar initialized from a parenthesized initializer list.
+    /// Scalar initialized from a parenthesized initializer list.
     FK_ParenthesizedListInitForScalar,
 
-    /// \brief Reference initialization from an initializer list
+    /// Reference initialization from an initializer list
     FK_ReferenceBindingToInitList,
 
-    /// \brief Initialization of some unused destination type with an
+    /// Initialization of some unused destination type with an
     /// initializer list.
     FK_InitListBadDestinationType,
 
-    /// \brief Overloading for a user-defined conversion failed.
+    /// Overloading for a user-defined conversion failed.
     FK_UserConversionOverloadFailed,
 
-    /// \brief Overloading for initialization by constructor failed.
+    /// Overloading for initialization by constructor failed.
     FK_ConstructorOverloadFailed,
 
-    /// \brief Overloading for list-initialization by constructor failed.
+    /// Overloading for list-initialization by constructor failed.
     FK_ListConstructorOverloadFailed,
 
-    /// \brief Default-initialization of a 'const' object.
+    /// Default-initialization of a 'const' object.
     FK_DefaultInitOfConst,
 
-    /// \brief Initialization of an incomplete type.
+    /// Initialization of an incomplete type.
     FK_Incomplete,
 
-    /// \brief Variable-length array must not have an initializer.
+    /// Variable-length array must not have an initializer.
     FK_VariableLengthArrayHasInitializer,
 
-    /// \brief List initialization failed at some point.
+    /// List initialization failed at some point.
     FK_ListInitializationFailed,
 
-    /// \brief Initializer has a placeholder type which cannot be
+    /// Initializer has a placeholder type which cannot be
     /// resolved by initialization.
     FK_PlaceholderType,
 
-    /// \brief Trying to take the address of a function that doesn't support
+    /// Trying to take the address of a function that doesn't support
     /// having its address taken.
     FK_AddressOfUnaddressableFunction,
 
-    /// \brief List-copy-initialization chose an explicit constructor.
+    /// List-copy-initialization chose an explicit constructor.
     FK_ExplicitConstructor,
   };
   
 private:
-  /// \brief The reason why initialization failed.
+  /// The reason why initialization failed.
   FailureKind Failure;
 
-  /// \brief The failed result of overload resolution.
+  /// The failed result of overload resolution.
   OverloadingResult FailedOverloadResult;
   
-  /// \brief The candidate set created when initialization failed.
+  /// The candidate set created when initialization failed.
   OverloadCandidateSet FailedCandidateSet;
 
-  /// \brief The incomplete type that caused a failure.
+  /// The incomplete type that caused a failure.
   QualType FailedIncompleteType;
 
-  /// \brief The fixit that needs to be applied to make this initialization
+  /// The fixit that needs to be applied to make this initialization
   /// succeed.
   std::string ZeroInitializationFixit;
   SourceLocation ZeroInitializationFixitLoc;
 
 public:
-  /// \brief Call for initializations are invalid but that would be valid
+  /// Call for initializations are invalid but that would be valid
   /// zero initialzations if Fixit was applied.
   void SetZeroInitializationFixit(const std::string& Fixit, SourceLocation L) {
     ZeroInitializationFixit = Fixit;
@@ -1071,12 +1071,12 @@
   }
 
 private:
-  /// \brief Prints a follow-up note that highlights the location of
+  /// Prints a follow-up note that highlights the location of
   /// the initialized entity, if it's remote.
   void PrintInitLocationNote(Sema &S, const InitializedEntity &Entity);
 
 public:
-  /// \brief Try to perform initialization of the given entity, creating a 
+  /// Try to perform initialization of the given entity, creating a 
   /// record of the steps required to perform the initialization.
   ///
   /// The generated initialization sequence will either contain enough
@@ -1107,7 +1107,7 @@
 
   ~InitializationSequence();
   
-  /// \brief Perform the actual initialization of the given entity based on
+  /// Perform the actual initialization of the given entity based on
   /// the computed initialization sequence.
   ///
   /// \param S the semantic analysis object.
@@ -1134,7 +1134,7 @@
                      MultiExprArg Args,
                      QualType *ResultType = nullptr);
   
-  /// \brief Diagnose an potentially-invalid initialization sequence.
+  /// Diagnose an potentially-invalid initialization sequence.
   ///
   /// \returns true if the initialization sequence was ill-formed, 
   /// false otherwise.
@@ -1143,16 +1143,16 @@
                 const InitializationKind &Kind,
                 ArrayRef<Expr *> Args);
   
-  /// \brief Determine the kind of initialization sequence computed.
+  /// Determine the kind of initialization sequence computed.
   enum SequenceKind getKind() const { return SequenceKind; }
   
-  /// \brief Set the kind of sequence computed.
+  /// Set the kind of sequence computed.
   void setSequenceKind(enum SequenceKind SK) { SequenceKind = SK; }
   
-  /// \brief Determine whether the initialization sequence is valid.
+  /// Determine whether the initialization sequence is valid.
   explicit operator bool() const { return !Failed(); }
 
-  /// \brief Determine whether the initialization sequence is invalid.
+  /// Determine whether the initialization sequence is invalid.
   bool Failed() const { return SequenceKind == FailedSequence; }
 
   using step_iterator = SmallVectorImpl<Step>::const_iterator;
@@ -1164,18 +1164,18 @@
 
   step_range steps() const { return {step_begin(), step_end()}; }
 
-  /// \brief Determine whether this initialization is a direct reference 
+  /// Determine whether this initialization is a direct reference 
   /// binding (C++ [dcl.init.ref]).
   bool isDirectReferenceBinding() const;
   
-  /// \brief Determine whether this initialization failed due to an ambiguity.
+  /// Determine whether this initialization failed due to an ambiguity.
   bool isAmbiguous() const;
   
-  /// \brief Determine whether this initialization is direct call to a 
+  /// Determine whether this initialization is direct call to a 
   /// constructor.
   bool isConstructorInitialization() const;
 
-  /// \brief Returns whether the last step in this initialization sequence is a
+  /// Returns whether the last step in this initialization sequence is a
   /// narrowing conversion, defined by C++0x [dcl.init.list]p7.
   ///
   /// If this function returns true, *isInitializerConstant will be set to
@@ -1186,7 +1186,7 @@
                          bool *isInitializerConstant,
                          APValue *ConstantValue) const;
 
-  /// \brief Add a new step in the initialization that resolves the address
+  /// Add a new step in the initialization that resolves the address
   /// of an overloaded function to a specific function declaration.
   ///
   /// \param Function the function to which the overloaded function reference
@@ -1195,7 +1195,7 @@
                                         DeclAccessPair Found,
                                         bool HadMultipleCandidates);
 
-  /// \brief Add a new step in the initialization that performs a derived-to-
+  /// Add a new step in the initialization that performs a derived-to-
   /// base cast.
   ///
   /// \param BaseType the base type to which we will be casting.
@@ -1205,14 +1205,14 @@
   void AddDerivedToBaseCastStep(QualType BaseType,
                                 ExprValueKind Category);
      
-  /// \brief Add a new step binding a reference to an object.
+  /// Add a new step binding a reference to an object.
   ///
   /// \param BindingTemporary True if we are binding a reference to a temporary
   /// object (thereby extending its lifetime); false if we are binding to an
   /// lvalue or an lvalue treated as an rvalue.
   void AddReferenceBindingStep(QualType T, bool BindingTemporary);
 
-  /// \brief Add a new step that makes an extraneous copy of the input
+  /// Add a new step that makes an extraneous copy of the input
   /// to a temporary of the same class type.
   ///
   /// This extraneous copy only occurs during reference binding in
@@ -1224,40 +1224,40 @@
   /// \param T The type of the temporary being created.
   void AddExtraneousCopyToTemporary(QualType T);
 
-  /// \brief Add a new step that makes a copy of the input to an object of
+  /// Add a new step that makes a copy of the input to an object of
   /// the given type, as the final step in class copy-initialization.
   void AddFinalCopy(QualType T);
 
-  /// \brief Add a new step invoking a conversion function, which is either
+  /// Add a new step invoking a conversion function, which is either
   /// a constructor or a conversion function.
   void AddUserConversionStep(FunctionDecl *Function,
                              DeclAccessPair FoundDecl,
                              QualType T,
                              bool HadMultipleCandidates);
 
-  /// \brief Add a new step that performs a qualification conversion to the
+  /// Add a new step that performs a qualification conversion to the
   /// given type.
   void AddQualificationConversionStep(QualType Ty,
                                      ExprValueKind Category);
 
-  /// \brief Add a new step that performs conversion from non-atomic to atomic
+  /// Add a new step that performs conversion from non-atomic to atomic
   /// type.
   void AddAtomicConversionStep(QualType Ty);
 
-  /// \brief Add a new step that performs a load of the given type.
+  /// Add a new step that performs a load of the given type.
   ///
   /// Although the term "LValueToRValue" is conventional, this applies to both
   /// lvalues and xvalues.
   void AddLValueToRValueStep(QualType Ty);
 
-  /// \brief Add a new step that applies an implicit conversion sequence.
+  /// Add a new step that applies an implicit conversion sequence.
   void AddConversionSequenceStep(const ImplicitConversionSequence &ICS,
                                  QualType T, bool TopLevelOfInitList = false);
 
-  /// \brief Add a list-initialization step.
+  /// Add a list-initialization step.
   void AddListInitializationStep(QualType T);
 
-  /// \brief Add a constructor-initialization step.
+  /// Add a constructor-initialization step.
   ///
   /// \param FromInitList The constructor call is syntactically an initializer
   /// list.
@@ -1268,59 +1268,59 @@
                                         bool HadMultipleCandidates,
                                         bool FromInitList, bool AsInitList);
 
-  /// \brief Add a zero-initialization step.
+  /// Add a zero-initialization step.
   void AddZeroInitializationStep(QualType T);
 
-  /// \brief Add a C assignment step.
+  /// Add a C assignment step.
   //
   // FIXME: It isn't clear whether this should ever be needed;
   // ideally, we would handle everything needed in C in the common
   // path. However, that isn't the case yet.
   void AddCAssignmentStep(QualType T);
 
-  /// \brief Add a string init step.
+  /// Add a string init step.
   void AddStringInitStep(QualType T);
 
-  /// \brief Add an Objective-C object conversion step, which is
+  /// Add an Objective-C object conversion step, which is
   /// always a no-op.
   void AddObjCObjectConversionStep(QualType T);
 
-  /// \brief Add an array initialization loop step.
+  /// Add an array initialization loop step.
   void AddArrayInitLoopStep(QualType T, QualType EltTy);
 
-  /// \brief Add an array initialization step.
+  /// Add an array initialization step.
   void AddArrayInitStep(QualType T, bool IsGNUExtension);
 
-  /// \brief Add a parenthesized array initialization step.
+  /// Add a parenthesized array initialization step.
   void AddParenthesizedArrayInitStep(QualType T);
 
-  /// \brief Add a step to pass an object by indirect copy-restore.
+  /// Add a step to pass an object by indirect copy-restore.
   void AddPassByIndirectCopyRestoreStep(QualType T, bool shouldCopy);
 
-  /// \brief Add a step to "produce" an Objective-C object (by
+  /// Add a step to "produce" an Objective-C object (by
   /// retaining it).
   void AddProduceObjCObjectStep(QualType T);
 
-  /// \brief Add a step to construct a std::initializer_list object from an
+  /// Add a step to construct a std::initializer_list object from an
   /// initializer list.
   void AddStdInitializerListConstructionStep(QualType T);
 
-  /// \brief Add a step to initialize an OpenCL sampler from an integer
+  /// Add a step to initialize an OpenCL sampler from an integer
   /// constant.
   void AddOCLSamplerInitStep(QualType T);
 
-  /// \brief Add a step to initialize an OpenCL event_t from a NULL
+  /// Add a step to initialize an OpenCL event_t from a NULL
   /// constant.
   void AddOCLZeroEventStep(QualType T);
 
-  /// \brief Add a step to initialize an OpenCL queue_t from 0.
+  /// Add a step to initialize an OpenCL queue_t from 0.
   void AddOCLZeroQueueStep(QualType T);
 
-  /// \brief Add steps to unwrap a initializer list for a reference around a
+  /// Add steps to unwrap a initializer list for a reference around a
   /// single element and rewrap it at the end.
   void RewrapReferenceInitList(QualType T, InitListExpr *Syntactic);
 
-  /// \brief Note that this initialization sequence failed.
+  /// Note that this initialization sequence failed.
   void SetFailed(FailureKind Failure) {
     SequenceKind = FailedSequence;
     this->Failure = Failure;
@@ -1328,40 +1328,40 @@
            "Incomplete type failure requires a type!");
   }
   
-  /// \brief Note that this initialization sequence failed due to failed
+  /// Note that this initialization sequence failed due to failed
   /// overload resolution.
   void SetOverloadFailure(FailureKind Failure, OverloadingResult Result);
   
-  /// \brief Retrieve a reference to the candidate set when overload
+  /// Retrieve a reference to the candidate set when overload
   /// resolution fails.
   OverloadCandidateSet &getFailedCandidateSet() {
     return FailedCandidateSet;
   }
 
-  /// \brief Get the overloading result, for when the initialization
+  /// Get the overloading result, for when the initialization
   /// sequence failed due to a bad overload.
   OverloadingResult getFailedOverloadResult() const {
     return FailedOverloadResult;
   }
 
-  /// \brief Note that this initialization sequence failed due to an
+  /// Note that this initialization sequence failed due to an
   /// incomplete type.
   void setIncompleteTypeFailure(QualType IncompleteType) {
     FailedIncompleteType = IncompleteType;
     SetFailed(FK_Incomplete);
   }
 
-  /// \brief Determine why initialization failed.
+  /// Determine why initialization failed.
   FailureKind getFailureKind() const {
     assert(Failed() && "Not an initialization failure!");
     return Failure;
   }
 
-  /// \brief Dump a representation of this initialization sequence to 
+  /// Dump a representation of this initialization sequence to 
   /// the given stream, for debugging purposes.
   void dump(raw_ostream &OS) const;
   
-  /// \brief Dump a representation of this initialization sequence to 
+  /// Dump a representation of this initialization sequence to 
   /// standard error, for debugging purposes.
   void dump() const;
 };
Index: cfe/trunk/include/clang/Sema/Lookup.h
===================================================================
--- cfe/trunk/include/clang/Sema/Lookup.h
+++ cfe/trunk/include/clang/Sema/Lookup.h
@@ -37,7 +37,7 @@
 
 class CXXBasePaths;
 
-/// @brief Represents the results of name lookup.
+/// Represents the results of name lookup.
 ///
 /// An instance of the LookupResult class captures the results of a
 /// single name lookup, which can return no result (nothing found),
@@ -47,28 +47,28 @@
 class LookupResult {
 public:
   enum LookupResultKind {
-    /// @brief No entity found met the criteria.
+    /// No entity found met the criteria.
     NotFound = 0,
 
-    /// @brief No entity found met the criteria within the current 
+    /// No entity found met the criteria within the current 
     /// instantiation,, but there were dependent base classes of the 
     /// current instantiation that could not be searched.
     NotFoundInCurrentInstantiation,
     
-    /// @brief Name lookup found a single declaration that met the
+    /// Name lookup found a single declaration that met the
     /// criteria.  getFoundDecl() will return this declaration.
     Found,
 
-    /// @brief Name lookup found a set of overloaded functions that
+    /// Name lookup found a set of overloaded functions that
     /// met the criteria.
     FoundOverloaded,
 
-    /// @brief Name lookup found an unresolvable value declaration
+    /// Name lookup found an unresolvable value declaration
     /// and cannot yet complete.  This only happens in C++ dependent
     /// contexts with dependent using declarations.
     FoundUnresolvedValue,
 
-    /// @brief Name lookup results in an ambiguity; use
+    /// Name lookup results in an ambiguity; use
     /// getAmbiguityKind to figure out what kind of ambiguity
     /// we have.
     Ambiguous
@@ -232,7 +232,7 @@
     return NameInfo;
   }
 
-  /// \brief Sets the name info to look up.
+  /// Sets the name info to look up.
   void setLookupNameInfo(const DeclarationNameInfo &NameInfo) {
     this->NameInfo = NameInfo;
   }
@@ -242,7 +242,7 @@
     return NameInfo.getName();
   }
 
-  /// \brief Sets the name to look up.
+  /// Sets the name to look up.
   void setLookupName(DeclarationName Name) {
     NameInfo.setName(Name);
   }
@@ -268,13 +268,13 @@
            Redecl ? Sema::ForVisibleRedeclaration : Sema::NotForRedeclaration;
   }
 
-  /// \brief Specify whether hidden declarations are visible, e.g.,
+  /// Specify whether hidden declarations are visible, e.g.,
   /// for recovery reasons.
   void setAllowHidden(bool AH) {
     AllowHidden = AH;
   }
 
-  /// \brief Determine whether this lookup is permitted to see hidden
+  /// Determine whether this lookup is permitted to see hidden
   /// declarations, such as those in modules that have not yet been imported.
   bool isHiddenDeclarationVisible(NamedDecl *ND) const {
     return AllowHidden ||
@@ -324,16 +324,16 @@
   iterator begin() const { return iterator(Decls.begin()); }
   iterator end() const { return iterator(Decls.end()); }
 
-  /// \brief Return true if no decls were found
+  /// Return true if no decls were found
   bool empty() const { return Decls.empty(); }
 
-  /// \brief Return the base paths structure that's associated with
+  /// Return the base paths structure that's associated with
   /// these results, or null if none is.
   CXXBasePaths *getBasePaths() const {
     return Paths;
   }
 
-  /// \brief Determine whether the given declaration is visible to the
+  /// Determine whether the given declaration is visible to the
   /// program.
   static bool isVisible(Sema &SemaRef, NamedDecl *D) {
     // If this declaration is not hidden, it's visible.
@@ -345,7 +345,7 @@
     return isVisibleSlow(SemaRef, D);
   }
 
-  /// \brief Retrieve the accepted (re)declaration of the given declaration,
+  /// Retrieve the accepted (re)declaration of the given declaration,
   /// if there is one.
   NamedDecl *getAcceptableDecl(NamedDecl *D) const {
     if (!D->isInIdentifierNamespace(IDNS))
@@ -362,18 +362,18 @@
   NamedDecl *getAcceptableDeclSlow(NamedDecl *D) const;
 
 public:
-  /// \brief Returns the identifier namespace mask for this lookup.
+  /// Returns the identifier namespace mask for this lookup.
   unsigned getIdentifierNamespace() const {
     return IDNS;
   }
 
-  /// \brief Returns whether these results arose from performing a
+  /// Returns whether these results arose from performing a
   /// lookup into a class.
   bool isClassLookup() const {
     return NamingClass != nullptr;
   }
 
-  /// \brief Returns the 'naming class' for this lookup, i.e. the
+  /// Returns the 'naming class' for this lookup, i.e. the
   /// class which was looked into to find these results.
   ///
   /// C++0x [class.access.base]p5:
@@ -393,72 +393,72 @@
     return NamingClass;
   }
 
-  /// \brief Sets the 'naming class' for this lookup.
+  /// Sets the 'naming class' for this lookup.
   void setNamingClass(CXXRecordDecl *Record) {
     NamingClass = Record;
   }
 
-  /// \brief Returns the base object type associated with this lookup;
+  /// Returns the base object type associated with this lookup;
   /// important for [class.protected].  Most lookups do not have an
   /// associated base object.
   QualType getBaseObjectType() const {
     return BaseObjectType;
   }
 
-  /// \brief Sets the base object type for this lookup.
+  /// Sets the base object type for this lookup.
   void setBaseObjectType(QualType T) {
     BaseObjectType = T;
   }
 
-  /// \brief Add a declaration to these results with its natural access.
+  /// Add a declaration to these results with its natural access.
   /// Does not test the acceptance criteria.
   void addDecl(NamedDecl *D) {
     addDecl(D, D->getAccess());
   }
 
-  /// \brief Add a declaration to these results with the given access.
+  /// Add a declaration to these results with the given access.
   /// Does not test the acceptance criteria.
   void addDecl(NamedDecl *D, AccessSpecifier AS) {
     Decls.addDecl(D, AS);
     ResultKind = Found;
   }
 
-  /// \brief Add all the declarations from another set of lookup
+  /// Add all the declarations from another set of lookup
   /// results.
   void addAllDecls(const LookupResult &Other) {
     Decls.append(Other.Decls.begin(), Other.Decls.end());
     ResultKind = Found;
   }
 
-  /// \brief Determine whether no result was found because we could not
+  /// Determine whether no result was found because we could not
   /// search into dependent base classes of the current instantiation.
   bool wasNotFoundInCurrentInstantiation() const {
     return ResultKind == NotFoundInCurrentInstantiation;
   }
   
-  /// \brief Note that while no result was found in the current instantiation,
+  /// Note that while no result was found in the current instantiation,
   /// there were dependent base classes that could not be searched.
   void setNotFoundInCurrentInstantiation() {
     assert(ResultKind == NotFound && Decls.empty());
     ResultKind = NotFoundInCurrentInstantiation;
   }
 
-  /// \brief Determine whether the lookup result was shadowed by some other
+  /// Determine whether the lookup result was shadowed by some other
   /// declaration that lookup ignored.
   bool isShadowed() const { return Shadowed; }
 
-  /// \brief Note that we found and ignored a declaration while performing
+  /// Note that we found and ignored a declaration while performing
   /// lookup.
   void setShadowed() { Shadowed = true; }
 
-  /// \brief Resolves the result kind of the lookup, possibly hiding
+  /// Resolves the result kind of the lookup, possibly hiding
   /// decls.
   ///
   /// This should be called in any environment where lookup might
   /// generate multiple lookup results.
   void resolveKind();
 
-  /// \brief Re-resolves the result kind of the lookup after a set of
+  /// Re-resolves the result kind of the lookup after a set of
   /// removals has been performed.
   void resolveKindAfterFilter() {
     if (Decls.empty()) {
@@ -498,7 +498,7 @@
     return dyn_cast<DeclClass>(getFoundDecl());
   }
 
-  /// \brief Fetch the unique decl found by this lookup.  Asserts
+  /// Fetch the unique decl found by this lookup.  Asserts
   /// that one was found.
   ///
   /// This is intended for users who have examined the result kind
@@ -515,31 +515,31 @@
     return *begin();
   }
 
-  /// \brief Asks if the result is a single tag decl.
+  /// Asks if the result is a single tag decl.
   bool isSingleTagDecl() const {
     return getResultKind() == Found && isa<TagDecl>(getFoundDecl());
   }
 
-  /// \brief Make these results show that the name was found in
+  /// Make these results show that the name was found in
   /// base classes of different types.
   ///
   /// The given paths object is copied and invalidated.
   void setAmbiguousBaseSubobjectTypes(CXXBasePaths &P);
 
-  /// \brief Make these results show that the name was found in
+  /// Make these results show that the name was found in
   /// distinct base classes of the same type.
   ///
   /// The given paths object is copied and invalidated.
   void setAmbiguousBaseSubobjects(CXXBasePaths &P);
 
-  /// \brief Make these results show that the name was found in
+  /// Make these results show that the name was found in
   /// different contexts and a tag decl was hidden by an ordinary
   /// decl in a different context.
   void setAmbiguousQualifiedTagHiding() {
     setAmbiguous(AmbiguousTagHiding);
   }
 
-  /// \brief Clears out any current state.
+  /// Clears out any current state.
   void clear() {
     ResultKind = NotFound;
     Decls.clear();
@@ -549,7 +549,7 @@
     Shadowed = false;
   }
 
-  /// \brief Clears out any current state and re-initializes for a
+  /// Clears out any current state and re-initializes for a
   /// different kind of lookup.
   void clear(Sema::LookupNameKind Kind) {
     clear();
@@ -557,7 +557,7 @@
     configure();
   }
 
-  /// \brief Change this lookup's redeclaration kind.
+  /// Change this lookup's redeclaration kind.
   void setRedeclarationKind(Sema::RedeclarationKind RK) {
     Redecl = (RK != Sema::NotForRedeclaration);
     ExternalRedecl = (RK == Sema::ForExternalRedeclaration);
@@ -596,7 +596,7 @@
     return NameInfo.getLoc();
   }
 
-  /// \brief Get the Sema object that this lookup result is searching
+  /// Get the Sema object that this lookup result is searching
   /// with.
   Sema &getSema() const { return *SemaPtr; }
 
@@ -725,22 +725,22 @@
   bool Redecl;
   bool ExternalRedecl;
 
-  /// \brief True if tag declarations should be hidden if non-tags
+  /// True if tag declarations should be hidden if non-tags
   ///   are present
   bool HideTags = true;
 
   bool Diagnose = false;
 
-  /// \brief True if we should allow hidden declarations to be 'visible'.
+  /// True if we should allow hidden declarations to be 'visible'.
   bool AllowHidden = false;
 
-  /// \brief True if the found declarations were shadowed by some other
+  /// True if the found declarations were shadowed by some other
   /// declaration that we skipped. This only happens when \c LookupKind
   /// is \c LookupRedeclarationWithLinkage.
   bool Shadowed = false;
 };
 
-/// \brief Consumes visible declarations found when searching for
+/// Consumes visible declarations found when searching for
 /// all visible names within a given scope or context.
 ///
 /// This abstract class is meant to be subclassed by clients of \c
@@ -748,15 +748,15 @@
 /// FoundDecl() function to process declarations as they are found.
 class VisibleDeclConsumer {
 public:
-  /// \brief Destroys the visible declaration consumer.
+  /// Destroys the visible declaration consumer.
   virtual ~VisibleDeclConsumer();
 
-  /// \brief Determine whether hidden declarations (from unimported
+  /// Determine whether hidden declarations (from unimported
   /// modules) should be given to this consumer. By default, they
   /// are not included.
   virtual bool includeHiddenDecls() const;
 
-  /// \brief Invoked each time \p Sema::LookupVisibleDecls() finds a
+  /// Invoked each time \p Sema::LookupVisibleDecls() finds a
   /// declaration visible from the current scope or context.
   ///
   /// \param ND the declaration found.
@@ -771,14 +771,14 @@
   virtual void FoundDecl(NamedDecl *ND, NamedDecl *Hiding, DeclContext *Ctx,
                          bool InBaseClass) = 0;
 
-  /// \brief Callback to inform the client that Sema entered into a new context
+  /// Callback to inform the client that Sema entered into a new context
   /// to find a visible declaration.
   //
   /// \param Ctx the context which Sema entered.
   virtual void EnteredContext(DeclContext *Ctx) {}
 };
 
-/// \brief A class for storing results from argument-dependent lookup.
+/// A class for storing results from argument-dependent lookup.
 class ADLResult {
 private:
   /// A map from canonical decls to the 'most recent' decl.
Index: cfe/trunk/include/clang/Sema/LoopHint.h
===================================================================
--- cfe/trunk/include/clang/Sema/LoopHint.h
+++ cfe/trunk/include/clang/Sema/LoopHint.h
@@ -17,7 +17,7 @@
 
 namespace clang {
 
-/// \brief Loop optimization hint for loop and unroll pragmas.
+/// Loop optimization hint for loop and unroll pragmas.
 struct LoopHint {
   // Source range of the directive.
   SourceRange Range;
Index: cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h
===================================================================
--- cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h
+++ cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h
@@ -33,7 +33,7 @@
   class VarDecl;
 
 
-/// \brief An abstract interface that should be implemented by
+/// An abstract interface that should be implemented by
 /// external AST sources that also provide information for semantic
 /// analysis.
 class MultiplexExternalSemaSource : public ExternalSemaSource {
@@ -43,7 +43,7 @@
 
 public:
   
-  ///\brief Constructs a new multiplexing external sema source and appends the
+  ///Constructs a new multiplexing external sema source and appends the
   /// given element to it.
   ///
   ///\param[in] s1 - A non-null (old) ExternalSemaSource.
@@ -53,7 +53,7 @@
 
   ~MultiplexExternalSemaSource() override;
 
-  ///\brief Appends new source to the source list.
+  ///Appends new source to the source list.
   ///
   ///\param[in] source - An ExternalSemaSource.
   ///
@@ -63,45 +63,45 @@
   // ExternalASTSource.
   //===--------------------------------------------------------------------===//
 
-  /// \brief Resolve a declaration ID into a declaration, potentially
+  /// Resolve a declaration ID into a declaration, potentially
   /// building a new declaration.
   Decl *GetExternalDecl(uint32_t ID) override;
 
-  /// \brief Complete the redeclaration chain if it's been extended since the
+  /// Complete the redeclaration chain if it's been extended since the
   /// previous generation of the AST source.
   void CompleteRedeclChain(const Decl *D) override;
 
-  /// \brief Resolve a selector ID into a selector.
+  /// Resolve a selector ID into a selector.
   Selector GetExternalSelector(uint32_t ID) override;
 
-  /// \brief Returns the number of selectors known to the external AST
+  /// Returns the number of selectors known to the external AST
   /// source.
   uint32_t GetNumExternalSelectors() override;
 
-  /// \brief Resolve the offset of a statement in the decl stream into
+  /// Resolve the offset of a statement in the decl stream into
   /// a statement.
   Stmt *GetExternalDeclStmt(uint64_t Offset) override;
 
-  /// \brief Resolve the offset of a set of C++ base specifiers in the decl
+  /// Resolve the offset of a set of C++ base specifiers in the decl
   /// stream into an array of specifiers.
   CXXBaseSpecifier *GetExternalCXXBaseSpecifiers(uint64_t Offset) override;
 
-  /// \brief Resolve a handle to a list of ctor initializers into the list of
+  /// Resolve a handle to a list of ctor initializers into the list of
   /// initializers themselves.
   CXXCtorInitializer **GetExternalCXXCtorInitializers(uint64_t Offset) override;
 
   ExtKind hasExternalDefinitions(const Decl *D) override;
 
-  /// \brief Find all declarations with the given name in the
+  /// Find all declarations with the given name in the
   /// given context.
   bool FindExternalVisibleDeclsByName(const DeclContext *DC,
                                       DeclarationName Name) override;
 
-  /// \brief Ensures that the table of all visible declarations inside this
+  /// Ensures that the table of all visible declarations inside this
   /// context is up to date.
   void completeVisibleDeclsMap(const DeclContext *DC) override;
 
-  /// \brief Finds all declarations lexically contained within the given
+  /// Finds all declarations lexically contained within the given
   /// DeclContext, after applying an optional filter predicate.
   ///
   /// \param IsKindWeWant a predicate function that returns true if the passed
@@ -111,17 +111,17 @@
                            llvm::function_ref<bool(Decl::Kind)> IsKindWeWant,
                            SmallVectorImpl<Decl *> &Result) override;
 
-  /// \brief Get the decls that are contained in a file in the Offset/Length
+  /// Get the decls that are contained in a file in the Offset/Length
   /// range. \p Length can be 0 to indicate a point at \p Offset instead of
   /// a range. 
   void FindFileRegionDecls(FileID File, unsigned Offset,unsigned Length,
                            SmallVectorImpl<Decl *> &Decls) override;
 
-  /// \brief Gives the external AST source an opportunity to complete
+  /// Gives the external AST source an opportunity to complete
   /// an incomplete type.
   void CompleteType(TagDecl *Tag) override;
 
-  /// \brief Gives the external AST source an opportunity to complete an
+  /// Gives the external AST source an opportunity to complete an
   /// incomplete Objective-C class.
   ///
   /// This routine will only be invoked if the "externally completed" bit is
@@ -129,30 +129,30 @@
   /// \c ObjCInterfaceDecl::setExternallyCompleted().
   void CompleteType(ObjCInterfaceDecl *Class) override;
 
-  /// \brief Loads comment ranges.
+  /// Loads comment ranges.
   void ReadComments() override;
 
-  /// \brief Notify ExternalASTSource that we started deserialization of
+  /// Notify ExternalASTSource that we started deserialization of
   /// a decl or type so until FinishedDeserializing is called there may be
   /// decls that are initializing. Must be paired with FinishedDeserializing.
   void StartedDeserializing() override;
 
-  /// \brief Notify ExternalASTSource that we finished the deserialization of
+  /// Notify ExternalASTSource that we finished the deserialization of
   /// a decl or type. Must be paired with StartedDeserializing.
   void FinishedDeserializing() override;
 
-  /// \brief Function that will be invoked when we begin parsing a new
+  /// Function that will be invoked when we begin parsing a new
   /// translation unit involving this external AST source.
   void StartTranslationUnit(ASTConsumer *Consumer) override;
 
-  /// \brief Print any statistics that have been gathered regarding
+  /// Print any statistics that have been gathered regarding
   /// the external AST source.
   void PrintStats() override;
 
-  /// \brief Retrieve the module that corresponds to the given module ID.
+  /// Retrieve the module that corresponds to the given module ID.
   Module *getModule(unsigned ID) override;
 
-  /// \brief Perform layout on the given record.
+  /// Perform layout on the given record.
   ///
   /// This routine allows the external AST source to provide an specific 
   /// layout for a record, overriding the layout that would normally be
@@ -195,15 +195,15 @@
   // ExternalSemaSource.
   //===--------------------------------------------------------------------===//
 
-  /// \brief Initialize the semantic source with the Sema instance
+  /// Initialize the semantic source with the Sema instance
   /// being used to perform semantic analysis on the abstract syntax
   /// tree.
   void InitializeSema(Sema &S) override;
 
-  /// \brief Inform the semantic consumer that Sema is no longer available.
+  /// Inform the semantic consumer that Sema is no longer available.
   void ForgetSema() override;
 
-  /// \brief Load the contents of the global method pool for a given
+  /// Load the contents of the global method pool for a given
   /// selector.
   void ReadMethodPool(Selector Sel) override;
 
@@ -211,12 +211,12 @@
   /// selector if necessary.
   void updateOutOfDateSelector(Selector Sel) override;
 
-  /// \brief Load the set of namespaces that are known to the external source,
+  /// Load the set of namespaces that are known to the external source,
   /// which will be used during typo correction.
   void
   ReadKnownNamespaces(SmallVectorImpl<NamespaceDecl*> &Namespaces) override;
 
-  /// \brief Load the set of used but not defined functions or variables with
+  /// Load the set of used but not defined functions or variables with
   /// internal linkage, or used but not defined inline functions.
   void ReadUndefinedButUsed(
       llvm::MapVector<NamedDecl *, SourceLocation> &Undefined) override;
@@ -225,7 +225,7 @@
       FieldDecl *, llvm::SmallVector<std::pair<SourceLocation, bool>, 4>> &
                                             Exprs) override;
 
-  /// \brief Do last resort, unqualified lookup on a LookupResult that
+  /// Do last resort, unqualified lookup on a LookupResult that
   /// Sema cannot find.
   ///
   /// \param R a LookupResult that is being recovered.
@@ -235,7 +235,7 @@
   /// \return true to tell Sema to recover using the LookupResult.
   bool LookupUnqualified(LookupResult &R, Scope *S) override;
 
-  /// \brief Read the set of tentative definitions known to the external Sema
+  /// Read the set of tentative definitions known to the external Sema
   /// source.
   ///
   /// The external source should append its own tentative definitions to the
@@ -244,7 +244,7 @@
   /// introduce the same declarations repeatedly.
   void ReadTentativeDefinitions(SmallVectorImpl<VarDecl*> &Defs) override;
 
-  /// \brief Read the set of unused file-scope declarations known to the
+  /// Read the set of unused file-scope declarations known to the
   /// external Sema source.
   ///
   /// The external source should append its own unused, filed-scope to the
@@ -254,7 +254,7 @@
   void ReadUnusedFileScopedDecls(
                         SmallVectorImpl<const DeclaratorDecl*> &Decls) override;
 
-  /// \brief Read the set of delegating constructors known to the
+  /// Read the set of delegating constructors known to the
   /// external Sema source.
   ///
   /// The external source should append its own delegating constructors to the
@@ -264,7 +264,7 @@
   void ReadDelegatingConstructors(
                           SmallVectorImpl<CXXConstructorDecl*> &Decls) override;
 
-  /// \brief Read the set of ext_vector type declarations known to the
+  /// Read the set of ext_vector type declarations known to the
   /// external Sema source.
   ///
   /// The external source should append its own ext_vector type declarations to
@@ -273,7 +273,7 @@
   /// introduce the same declarations repeatedly.
   void ReadExtVectorDecls(SmallVectorImpl<TypedefNameDecl*> &Decls) override;
 
-  /// \brief Read the set of potentially unused typedefs known to the source.
+  /// Read the set of potentially unused typedefs known to the source.
   ///
   /// The external source should append its own potentially unused local
   /// typedefs to the given vector of declarations. Note that this routine may
@@ -282,7 +282,7 @@
   void ReadUnusedLocalTypedefNameCandidates(
       llvm::SmallSetVector<const TypedefNameDecl *, 4> &Decls) override;
 
-  /// \brief Read the set of referenced selectors known to the
+  /// Read the set of referenced selectors known to the
   /// external Sema source.
   ///
   /// The external source should append its own referenced selectors to the 
@@ -292,7 +292,7 @@
   void ReadReferencedSelectors(SmallVectorImpl<std::pair<Selector,
                                               SourceLocation> > &Sels) override;
 
-  /// \brief Read the set of weak, undeclared identifiers known to the
+  /// Read the set of weak, undeclared identifiers known to the
   /// external Sema source.
   ///
   /// The external source should append its own weak, undeclared identifiers to
@@ -302,14 +302,14 @@
   void ReadWeakUndeclaredIdentifiers(
            SmallVectorImpl<std::pair<IdentifierInfo*, WeakInfo> > &WI) override;
 
-  /// \brief Read the set of used vtables known to the external Sema source.
+  /// Read the set of used vtables known to the external Sema source.
   ///
   /// The external source should append its own used vtables to the given
   /// vector. Note that this routine may be invoked multiple times; the external
   /// source should take care not to introduce the same vtables repeatedly.
   void ReadUsedVTables(SmallVectorImpl<ExternalVTableUse> &VTables) override;
 
-  /// \brief Read the set of pending instantiations known to the external
+  /// Read the set of pending instantiations known to the external
   /// Sema source.
   ///
   /// The external source should append its own pending instantiations to the
@@ -319,7 +319,7 @@
   void ReadPendingInstantiations(
      SmallVectorImpl<std::pair<ValueDecl*, SourceLocation> >& Pending) override;
 
-  /// \brief Read the set of late parsed template functions for this source.
+  /// Read the set of late parsed template functions for this source.
   ///
   /// The external source should insert its own late parsed template functions
   /// into the map. Note that this routine may be invoked multiple times; the
@@ -338,7 +338,7 @@
                              bool EnteringContext,
                              const ObjCObjectPointerType *OPT) override;
 
-  /// \brief Produces a diagnostic note if one of the attached sources
+  /// Produces a diagnostic note if one of the attached sources
   /// contains a complete definition for \p T. Queries the sources in list
   /// order until the first one claims that a diagnostic was produced.
   ///
Index: cfe/trunk/include/clang/Sema/ObjCMethodList.h
===================================================================
--- cfe/trunk/include/clang/Sema/ObjCMethodList.h
+++ cfe/trunk/include/clang/Sema/ObjCMethodList.h
@@ -21,13 +21,13 @@
 
 class ObjCMethodDecl;
 
-/// \brief a linked list of methods with the same selector name but different
+/// a linked list of methods with the same selector name but different
 /// signatures.
 struct ObjCMethodList {
   // NOTE: If you add any members to this struct, make sure to serialize them.
-  /// \brief If there is more than one decl with this signature.
+  /// If there is more than one decl with this signature.
   llvm::PointerIntPair<ObjCMethodDecl *, 1> MethodAndHasMoreThanOneDecl;
-  /// \brief The next list object and 2 bits for extra info.
+  /// The next list object and 2 bits for extra info.
   llvm::PointerIntPair<ObjCMethodList *, 2> NextAndExtraBits;
 
   ObjCMethodList() { }
Index: cfe/trunk/include/clang/Sema/Overload.h
===================================================================
--- cfe/trunk/include/clang/Sema/Overload.h
+++ cfe/trunk/include/clang/Sema/Overload.h
@@ -244,12 +244,12 @@
     /// or a function conversion.
     ImplicitConversionKind Third : 8;
 
-    /// \brief Whether this is the deprecated conversion of a
+    /// Whether this is the deprecated conversion of a
     /// string literal to a pointer to non-const character data
     /// (C++ 4.2p2).
     unsigned DeprecatedStringLiteralToCharPtr : 1;
 
-    /// \brief Whether the qualification conversion involves a change in the
+    /// Whether the qualification conversion involves a change in the
     /// Objective-C lifetime (for automatic reference counting).
     unsigned QualificationIncludesObjCLifetime : 1;
     
@@ -265,21 +265,21 @@
     /// direct binding (C++ [dcl.init.ref]).
     unsigned DirectBinding : 1;
 
-    /// \brief Whether this is an lvalue reference binding (otherwise, it's
+    /// Whether this is an lvalue reference binding (otherwise, it's
     /// an rvalue reference binding).
     unsigned IsLvalueReference : 1;
     
-    /// \brief Whether we're binding to a function lvalue.
+    /// Whether we're binding to a function lvalue.
     unsigned BindsToFunctionLvalue : 1;
     
-    /// \brief Whether we're binding to an rvalue.
+    /// Whether we're binding to an rvalue.
     unsigned BindsToRvalue : 1;
     
-    /// \brief Whether this binds an implicit object argument to a 
+    /// Whether this binds an implicit object argument to a 
     /// non-static member function without a ref-qualifier.
     unsigned BindsImplicitObjectArgumentWithoutRefQualifier : 1;
     
-    /// \brief Whether this binds a reference to an object with a different
+    /// Whether this binds a reference to an object with a different
     /// Objective-C lifetime qualifier.
     unsigned ObjCLifetimeConversionBinding : 1;
     
@@ -342,7 +342,7 @@
   /// UserDefinedConversionSequence - Represents a user-defined
   /// conversion sequence (C++ 13.3.3.1.2).
   struct UserDefinedConversionSequence {
-    /// \brief Represents the standard conversion that occurs before
+    /// Represents the standard conversion that occurs before
     /// the actual user-defined conversion.
     ///
     /// C++11 13.3.3.1.2p1:
@@ -377,7 +377,7 @@
     /// aggregate initialization from an initializer list.
     FunctionDecl* ConversionFunction;
 
-    /// \brief The declaration that we found via name lookup, which might be
+    /// The declaration that we found via name lookup, which might be
     /// the same as \c ConversionFunction or it might be a using declaration
     /// that refers to \c ConversionFunction.
     DeclAccessPair FoundConversionFunction;
@@ -506,7 +506,7 @@
     /// ConversionKind - The kind of implicit conversion sequence.
     unsigned ConversionKind : 30;
 
-    /// \brief Whether the target is really a std::initializer_list, and the
+    /// Whether the target is really a std::initializer_list, and the
     /// sequence only represents the worst element conversion.
     unsigned StdInitializerListElement : 1;
 
@@ -572,7 +572,7 @@
       return Kind(ConversionKind);
     }
     
-    /// \brief Return a ranking of the implicit conversion sequence
+    /// Return a ranking of the implicit conversion sequence
     /// kind, where smaller ranks represent better conversion
     /// sequences.
     ///
@@ -641,7 +641,7 @@
       Standard.setAllToTypes(T);
     }
 
-    /// \brief Whether the target is really a std::initializer_list, and the
+    /// Whether the target is really a std::initializer_list, and the
     /// sequence only represents the worst element conversion.
     bool isStdInitializerListElement() const {
       return StdInitializerListElement;
@@ -775,7 +775,7 @@
     /// Actually an OverloadFailureKind.
     unsigned char FailureKind;
 
-    /// \brief The number of call arguments that were explicitly provided,
+    /// The number of call arguments that were explicitly provided,
     /// to be used while performing partial ordering of function templates.
     unsigned ExplicitCallArguments;
 
@@ -905,13 +905,13 @@
     SourceLocation getLocation() const { return Loc; }
     CandidateSetKind getKind() const { return Kind; }
 
-    /// \brief Determine when this overload candidate will be new to the
+    /// Determine when this overload candidate will be new to the
     /// overload set.
     bool isNewCandidate(Decl *F) {
       return Functions.insert(F->getCanonicalDecl()).second;
     }
 
-    /// \brief Clear out all of the candidates.
+    /// Clear out all of the candidates.
     void clear(CandidateSetKind CSK);
 
     using iterator = SmallVectorImpl<OverloadCandidate>::iterator;
@@ -922,7 +922,7 @@
     size_t size() const { return Candidates.size(); }
     bool empty() const { return Candidates.empty(); }
 
-    /// \brief Allocate storage for conversion sequences for NumConversions
+    /// Allocate storage for conversion sequences for NumConversions
     /// conversions.
     ConversionSequenceList
     allocateConversionSequences(unsigned NumConversions) {
@@ -936,7 +936,7 @@
       return ConversionSequenceList(Conversions, NumConversions);
     }
 
-    /// \brief Add a new candidate with NumConversions conversion sequence slots
+    /// Add a new candidate with NumConversions conversion sequence slots
     /// to the overload set.
     OverloadCandidate &addCandidate(unsigned NumConversions = 0,
                                     ConversionSequenceList Conversions = None) {
Index: cfe/trunk/include/clang/Sema/Ownership.h
===================================================================
--- cfe/trunk/include/clang/Sema/Ownership.h
+++ cfe/trunk/include/clang/Sema/Ownership.h
@@ -39,7 +39,7 @@
 class TemplateName;
 class TemplateParameterList;
 
-  /// \brief Wrapper for void* pointer.
+  /// Wrapper for void* pointer.
   /// \tparam PtrTy Either a pointer type like 'T*' or a type that behaves like
   ///               a pointer.
   ///
@@ -60,7 +60,7 @@
 
     static OpaquePtr make(PtrTy P) { OpaquePtr OP; OP.set(P); return OP; }
 
-    /// \brief Returns plain pointer to the entity pointed by this wrapper.
+    /// Returns plain pointer to the entity pointed by this wrapper.
     /// \tparam PointeeT Type of pointed entity.
     ///
     /// It is identical to getPtrAs<PointeeT*>.
@@ -68,7 +68,7 @@
       return get();
     }
 
-    /// \brief Returns pointer converted to the specified type.
+    /// Returns pointer converted to the specified type.
     /// \tparam PtrT Result pointer type.  There must be implicit conversion
     ///              from PtrTy to PtrT.
     ///
Index: cfe/trunk/include/clang/Sema/ParsedTemplate.h
===================================================================
--- cfe/trunk/include/clang/Sema/ParsedTemplate.h
+++ cfe/trunk/include/clang/Sema/ParsedTemplate.h
@@ -26,32 +26,32 @@
 #include <new>
 
 namespace clang {  
-  /// \brief Represents the parsed form of a C++ template argument.
+  /// Represents the parsed form of a C++ template argument.
   class ParsedTemplateArgument {
   public:
-    /// \brief Describes the kind of template argument that was parsed.
+    /// Describes the kind of template argument that was parsed.
     enum KindType {
-      /// \brief A template type parameter, stored as a type.
+      /// A template type parameter, stored as a type.
       Type,
-      /// \brief A non-type template parameter, stored as an expression.
+      /// A non-type template parameter, stored as an expression.
       NonType,
-      /// \brief A template template argument, stored as a template name.
+      /// A template template argument, stored as a template name.
       Template
     };
 
-    /// \brief Build an empty template argument. 
+    /// Build an empty template argument. 
     ///
     /// This template argument is invalid.
     ParsedTemplateArgument() : Kind(Type), Arg(nullptr) { }
     
-    /// \brief Create a template type argument or non-type template argument.
+    /// Create a template type argument or non-type template argument.
     ///
     /// \param Arg the template type argument or non-type template argument.
     /// \param Loc the location of the type.
     ParsedTemplateArgument(KindType Kind, void *Arg, SourceLocation Loc)
       : Kind(Kind), Arg(Arg), Loc(Loc) { }
     
-    /// \brief Create a template template argument.
+    /// Create a template template argument.
     ///
     /// \param SS the C++ scope specifier that precedes the template name, if
     /// any.
@@ -67,34 +67,34 @@
         Arg(Template.getAsOpaquePtr()), 
         SS(SS), Loc(TemplateLoc), EllipsisLoc() { }
     
-    /// \brief Determine whether the given template argument is invalid.
+    /// Determine whether the given template argument is invalid.
     bool isInvalid() const { return Arg == nullptr; }
     
-    /// \brief Determine what kind of template argument we have.
+    /// Determine what kind of template argument we have.
     KindType getKind() const { return Kind; }
     
-    /// \brief Retrieve the template type argument's type.
+    /// Retrieve the template type argument's type.
     ParsedType getAsType() const {
       assert(Kind == Type && "Not a template type argument");
       return ParsedType::getFromOpaquePtr(Arg);
     }
     
-    /// \brief Retrieve the non-type template argument's expression.
+    /// Retrieve the non-type template argument's expression.
     Expr *getAsExpr() const {
       assert(Kind == NonType && "Not a non-type template argument");
       return static_cast<Expr*>(Arg);
     }
     
-    /// \brief Retrieve the template template argument's template name.
+    /// Retrieve the template template argument's template name.
     ParsedTemplateTy getAsTemplate() const {
       assert(Kind == Template && "Not a template template argument");
       return ParsedTemplateTy::getFromOpaquePtr(Arg);
     }
     
-    /// \brief Retrieve the location of the template argument.
+    /// Retrieve the location of the template argument.
     SourceLocation getLocation() const { return Loc; }
     
-    /// \brief Retrieve the nested-name-specifier that precedes the template
+    /// Retrieve the nested-name-specifier that precedes the template
     /// name in a template template argument.
     const CXXScopeSpec &getScopeSpec() const {
       assert(Kind == Template && 
@@ -102,7 +102,7 @@
       return SS;
     }
     
-    /// \brief Retrieve the location of the ellipsis that makes a template
+    /// Retrieve the location of the ellipsis that makes a template
     /// template argument into a pack expansion.
     SourceLocation getEllipsisLoc() const {
       assert(Kind == Template && 
@@ -110,7 +110,7 @@
       return EllipsisLoc;
     }
     
-    /// \brief Retrieve a pack expansion of the given template template
+    /// Retrieve a pack expansion of the given template template
     /// argument.
     ///
     /// \param EllipsisLoc The location of the ellipsis.
@@ -120,24 +120,24 @@
   private:
     KindType Kind;
     
-    /// \brief The actual template argument representation, which may be
+    /// The actual template argument representation, which may be
     /// an \c Sema::TypeTy* (for a type), an Expr* (for an
     /// expression), or an Sema::TemplateTy (for a template).
     void *Arg;
 
-    /// \brief The nested-name-specifier that can accompany a template template
+    /// The nested-name-specifier that can accompany a template template
     /// argument.
     CXXScopeSpec SS;
 
-    /// \brief the location of the template argument.
+    /// the location of the template argument.
     SourceLocation Loc;
 
-    /// \brief The ellipsis location that can accompany a template template
+    /// The ellipsis location that can accompany a template template
     /// argument (turning it into a template template argument expansion).
     SourceLocation EllipsisLoc;
   };
   
-  /// \brief Information about a template-id annotation
+  /// Information about a template-id annotation
   /// token.
   ///
   /// A template-id annotation token contains the template declaration, 
@@ -149,7 +149,7 @@
       : private llvm::TrailingObjects<TemplateIdAnnotation,
                                       ParsedTemplateArgument> {
     friend TrailingObjects;
-    /// \brief The nested-name-specifier that precedes the template name.
+    /// The nested-name-specifier that precedes the template name.
     CXXScopeSpec SS;
 
     /// TemplateKWLoc - The location of the template keyword.
@@ -184,12 +184,12 @@
     /// NumArgs - The number of template arguments.
     unsigned NumArgs;
     
-    /// \brief Retrieves a pointer to the template arguments
+    /// Retrieves a pointer to the template arguments
     ParsedTemplateArgument *getTemplateArgs() { 
       return getTrailingObjects<ParsedTemplateArgument>(); 
     }
 
-    /// \brief Creates a new TemplateIdAnnotation with NumArgs arguments and
+    /// Creates a new TemplateIdAnnotation with NumArgs arguments and
     /// appends it to List.
     static TemplateIdAnnotation *
     Create(CXXScopeSpec SS, SourceLocation TemplateKWLoc,
Index: cfe/trunk/include/clang/Sema/Scope.h
===================================================================
--- cfe/trunk/include/clang/Sema/Scope.h
+++ cfe/trunk/include/clang/Sema/Scope.h
@@ -42,74 +42,74 @@
   /// ScopeFlags - These are bitfields that are or'd together when creating a
   /// scope, which defines the sorts of things the scope contains.
   enum ScopeFlags {
-    /// \brief This indicates that the scope corresponds to a function, which
+    /// This indicates that the scope corresponds to a function, which
     /// means that labels are set here.
     FnScope       = 0x01,
 
-    /// \brief This is a while, do, switch, for, etc that can have break
+    /// This is a while, do, switch, for, etc that can have break
     /// statements embedded into it.
     BreakScope    = 0x02,
 
-    /// \brief This is a while, do, for, which can have continue statements
+    /// This is a while, do, for, which can have continue statements
     /// embedded into it.
     ContinueScope = 0x04,
 
-    /// \brief This is a scope that can contain a declaration.  Some scopes
+    /// This is a scope that can contain a declaration.  Some scopes
     /// just contain loop constructs but don't contain decls.
     DeclScope = 0x08,
 
-    /// \brief The controlling scope in a if/switch/while/for statement.
+    /// The controlling scope in a if/switch/while/for statement.
     ControlScope = 0x10,
 
-    /// \brief The scope of a struct/union/class definition.
+    /// The scope of a struct/union/class definition.
     ClassScope = 0x20,
 
-    /// \brief This is a scope that corresponds to a block/closure object.
+    /// This is a scope that corresponds to a block/closure object.
     /// Blocks serve as top-level scopes for some objects like labels, they
     /// also prevent things like break and continue.  BlockScopes always have
     /// the FnScope and DeclScope flags set as well.
     BlockScope = 0x40,
 
-    /// \brief This is a scope that corresponds to the
+    /// This is a scope that corresponds to the
     /// template parameters of a C++ template. Template parameter
     /// scope starts at the 'template' keyword and ends when the
     /// template declaration ends.
     TemplateParamScope = 0x80,
 
-    /// \brief This is a scope that corresponds to the
+    /// This is a scope that corresponds to the
     /// parameters within a function prototype.
     FunctionPrototypeScope = 0x100,
 
-    /// \brief This is a scope that corresponds to the parameters within
+    /// This is a scope that corresponds to the parameters within
     /// a function prototype for a function declaration (as opposed to any
     /// other kind of function declarator). Always has FunctionPrototypeScope
     /// set as well.
     FunctionDeclarationScope = 0x200,
 
-    /// \brief This is a scope that corresponds to the Objective-C
+    /// This is a scope that corresponds to the Objective-C
     /// \@catch statement.
     AtCatchScope = 0x400,
     
-    /// \brief This scope corresponds to an Objective-C method body.
+    /// This scope corresponds to an Objective-C method body.
     /// It always has FnScope and DeclScope set as well.
     ObjCMethodScope = 0x800,
 
-    /// \brief This is a scope that corresponds to a switch statement.
+    /// This is a scope that corresponds to a switch statement.
     SwitchScope = 0x1000,
 
-    /// \brief This is the scope of a C++ try statement.
+    /// This is the scope of a C++ try statement.
     TryScope = 0x2000,
 
-    /// \brief This is the scope for a function-level C++ try or catch scope.
+    /// This is the scope for a function-level C++ try or catch scope.
     FnTryCatchScope = 0x4000,
 
-    /// \brief This is the scope of OpenMP executable directive.
+    /// This is the scope of OpenMP executable directive.
     OpenMPDirectiveScope = 0x8000,
 
-    /// \brief This is the scope of some OpenMP loop directive.
+    /// This is the scope of some OpenMP loop directive.
     OpenMPLoopDirectiveScope = 0x10000,
 
-    /// \brief This is the scope of some OpenMP simd directive.
+    /// This is the scope of some OpenMP simd directive.
     /// For example, it is used for 'omp simd', 'omp for simd'.
     /// This flag is propagated to children scopes.
     OpenMPSimdDirectiveScope = 0x20000,
@@ -146,7 +146,7 @@
   /// depth 0.
   unsigned short Depth;
 
-  /// \brief Declarations with static linkage are mangled with the number of
+  /// Declarations with static linkage are mangled with the number of
   /// scopes seen as a component.
   unsigned short MSLastManglingNumber;
 
@@ -198,7 +198,7 @@
   using UsingDirectivesTy = SmallVector<UsingDirectiveDecl *, 2>;
   UsingDirectivesTy UsingDirectives;
 
-  /// \brief Used to determine if errors occurred in this scope.
+  /// Used to determine if errors occurred in this scope.
   DiagnosticErrorTrap ErrorTrap;
 
   /// A lattice consisting of undefined, a single NRVO candidate variable in
@@ -401,12 +401,12 @@
     return false;
   }
 
-  /// \brief Determines whether this scope is the OpenMP directive scope
+  /// Determines whether this scope is the OpenMP directive scope
   bool isOpenMPDirectiveScope() const {
     return (getFlags() & Scope::OpenMPDirectiveScope);
   }
 
-  /// \brief Determine whether this scope is some OpenMP loop directive scope
+  /// Determine whether this scope is some OpenMP loop directive scope
   /// (for example, 'omp for', 'omp simd').
   bool isOpenMPLoopDirectiveScope() const {
     if (getFlags() & Scope::OpenMPLoopDirectiveScope) {
@@ -417,34 +417,34 @@
     return false;
   }
 
-  /// \brief Determine whether this scope is (or is nested into) some OpenMP
+  /// Determine whether this scope is (or is nested into) some OpenMP
   /// loop simd directive scope (for example, 'omp simd', 'omp for simd').
   bool isOpenMPSimdDirectiveScope() const {
     return getFlags() & Scope::OpenMPSimdDirectiveScope;
   }
 
-  /// \brief Determine whether this scope is a loop having OpenMP loop
+  /// Determine whether this scope is a loop having OpenMP loop
   /// directive attached.
   bool isOpenMPLoopScope() const {
     const Scope *P = getParent();
     return P && P->isOpenMPLoopDirectiveScope();
   }
 
-  /// \brief Determine whether this scope is a C++ 'try' block.
+  /// Determine whether this scope is a C++ 'try' block.
   bool isTryScope() const { return getFlags() & Scope::TryScope; }
 
-  /// \brief Determine whether this scope is a SEH '__try' block.
+  /// Determine whether this scope is a SEH '__try' block.
   bool isSEHTryScope() const { return getFlags() & Scope::SEHTryScope; }
 
-  /// \brief Determine whether this scope is a SEH '__except' block.
+  /// Determine whether this scope is a SEH '__except' block.
   bool isSEHExceptScope() const { return getFlags() & Scope::SEHExceptScope; }
 
-  /// \brief Determine whether this scope is a compound statement scope.
+  /// Determine whether this scope is a compound statement scope.
   bool isCompoundStmtScope() const {
     return getFlags() & Scope::CompoundStmtScope;
   }
 
-  /// \brief Returns if rhs has a higher scope depth than this.
+  /// Returns if rhs has a higher scope depth than this.
   ///
   /// The caller is responsible for calling this only if one of the two scopes
   /// is an ancestor of the other.
@@ -487,7 +487,7 @@
   /// Init - This is used by the parser to implement scope caching.
   void Init(Scope *parent, unsigned flags);
 
-  /// \brief Sets up the specified scope flags and adjusts the scope state
+  /// Sets up the specified scope flags and adjusts the scope state
   /// variables accordingly.
   void AddFlags(unsigned Flags);
 
Index: cfe/trunk/include/clang/Sema/ScopeInfo.h
===================================================================
--- cfe/trunk/include/clang/Sema/ScopeInfo.h
+++ cfe/trunk/include/clang/Sema/ScopeInfo.h
@@ -61,15 +61,15 @@
 
 namespace sema {
 
-/// \brief Contains information about the compound statement currently being
+/// Contains information about the compound statement currently being
 /// parsed.
 class CompoundScopeInfo {
 public:
-  /// \brief Whether this compound stamement contains `for' or `while' loops
+  /// Whether this compound stamement contains `for' or `while' loops
   /// with empty bodies.
   bool HasEmptyLoopBodies = false;
 
-  /// \brief Whether this compound statement corresponds to a GNU statement
+  /// Whether this compound statement corresponds to a GNU statement
   /// expression.
   bool IsStmtExpr;
 
@@ -91,7 +91,7 @@
       : PD(PD), Loc(Loc), stmt(stmt) {}
 };
     
-/// \brief Retains information about a function, method, or block that is
+/// Retains information about a function, method, or block that is
 /// currently being parsed.
 class FunctionScopeInfo {
 protected:
@@ -103,29 +103,29 @@
   };
   
 public:
-  /// \brief What kind of scope we are describing.
+  /// What kind of scope we are describing.
   ScopeKind Kind : 3;
 
-  /// \brief Whether this function contains a VLA, \@try, try, C++
+  /// Whether this function contains a VLA, \@try, try, C++
   /// initializer, or anything else that can't be jumped past.
   bool HasBranchProtectedScope : 1;
 
-  /// \brief Whether this function contains any switches or direct gotos.
+  /// Whether this function contains any switches or direct gotos.
   bool HasBranchIntoScope : 1;
 
-  /// \brief Whether this function contains any indirect gotos.
+  /// Whether this function contains any indirect gotos.
   bool HasIndirectGoto : 1;
 
-  /// \brief Whether a statement was dropped because it was invalid.
+  /// Whether a statement was dropped because it was invalid.
   bool HasDroppedStmt : 1;
 
-  /// \brief True if current scope is for OpenMP declare reduction combiner.
+  /// True if current scope is for OpenMP declare reduction combiner.
   bool HasOMPDeclareReductionCombiner : 1;
 
-  /// \brief Whether there is a fallthrough statement in this function.
+  /// Whether there is a fallthrough statement in this function.
   bool HasFallthroughStmt : 1;
 
-  /// \brief Whether we make reference to a declaration that could be
+  /// Whether we make reference to a declaration that could be
   /// unavailable.
   bool HasPotentialAvailabilityViolations : 1;
 
@@ -151,11 +151,11 @@
   /// false if there is an invocation of an initializer on 'self'.
   bool ObjCWarnForNoInitDelegation : 1;
 
-  /// \brief True only when this function has not already built, or attempted
+  /// True only when this function has not already built, or attempted
   /// to build, the initial and final coroutine suspend points
   bool NeedsCoroutineSuspends : 1;
 
-  /// \brief An enumeration represeting the kind of the first coroutine statement
+  /// An enumeration represeting the kind of the first coroutine statement
   /// in the function. One of co_return, co_await, or co_yield.
   unsigned char FirstCoroutineStmtKind : 2;
 
@@ -172,38 +172,38 @@
   /// First SEH '__try' statement in the current function.
   SourceLocation FirstSEHTryLoc;
 
-  /// \brief Used to determine if errors occurred in this function or block.
+  /// Used to determine if errors occurred in this function or block.
   DiagnosticErrorTrap ErrorTrap;
 
   /// SwitchStack - This is the current set of active switch statements in the
   /// block.
   SmallVector<SwitchStmt*, 8> SwitchStack;
 
-  /// \brief The list of return statements that occur within the function or
+  /// The list of return statements that occur within the function or
   /// block, if there is any chance of applying the named return value
   /// optimization, or if we need to infer a return type.
   SmallVector<ReturnStmt*, 4> Returns;
 
-  /// \brief The promise object for this coroutine, if any.
+  /// The promise object for this coroutine, if any.
   VarDecl *CoroutinePromise = nullptr;
 
-  /// \brief A mapping between the coroutine function parameters that were moved
+  /// A mapping between the coroutine function parameters that were moved
   /// to the coroutine frame, and their move statements.
   llvm::SmallMapVector<ParmVarDecl *, Stmt *, 4> CoroutineParameterMoves;
 
-  /// \brief The initial and final coroutine suspend points.
+  /// The initial and final coroutine suspend points.
   std::pair<Stmt *, Stmt *> CoroutineSuspends;
 
-  /// \brief The stack of currently active compound stamement scopes in the
+  /// The stack of currently active compound stamement scopes in the
   /// function.
   SmallVector<CompoundScopeInfo, 4> CompoundScopes;
 
-  /// \brief A list of PartialDiagnostics created but delayed within the
+  /// A list of PartialDiagnostics created but delayed within the
   /// current function scope.  These diagnostics are vetted for reachability
   /// prior to being emitted.
   SmallVector<PossiblyUnreachableDiag, 4> PossiblyUnreachableDiags;
   
-  /// \brief A list of parameters which have the nonnull attribute and are
+  /// A list of parameters which have the nonnull attribute and are
   /// modified in the function.
   llvm::SmallPtrSet<const ParmVarDecl *, 8> ModifiedNonNullParams;
 
@@ -464,7 +464,7 @@
     CoroutineSuspends.second = Final;
   }
 
-  /// \brief Clear out the information in this function scope, making it
+  /// Clear out the information in this function scope, making it
   /// suitable for reuse.
   void Clear();
 };
@@ -501,21 +501,21 @@
   /// a non-trivial copy constructor.
   llvm::PointerIntPair<void *, 2, CaptureKind> InitExprAndCaptureKind;
 
-  /// \brief The source location at which the first capture occurred.
+  /// The source location at which the first capture occurred.
   SourceLocation Loc;
 
-  /// \brief The location of the ellipsis that expands a parameter pack.
+  /// The location of the ellipsis that expands a parameter pack.
   SourceLocation EllipsisLoc;
 
-  /// \brief The type as it was captured, which is in effect the type of the
+  /// The type as it was captured, which is in effect the type of the
   /// non-static data member that would hold the capture.
   QualType CaptureType;
 
-  /// \brief Whether an explicit capture has been odr-used in the body of the
+  /// Whether an explicit capture has been odr-used in the body of the
   /// lambda.
   bool ODRUsed = false;
 
-  /// \brief Whether an explicit capture has been non-odr-used in the body of
+  /// Whether an explicit capture has been non-odr-used in the body of
   /// the lambda.
   bool NonODRUsed = false;
 
@@ -574,14 +574,14 @@
     return VarAndNestedAndThis.getPointer();
   }
 
-  /// \brief Retrieve the location at which this variable was captured.
+  /// Retrieve the location at which this variable was captured.
   SourceLocation getLocation() const { return Loc; }
 
-  /// \brief Retrieve the source location of the ellipsis, whose presence
+  /// Retrieve the source location of the ellipsis, whose presence
   /// indicates that the capture is a pack expansion.
   SourceLocation getEllipsisLoc() const { return EllipsisLoc; }
 
-  /// \brief Retrieve the capture type for this capture, which is effectively
+  /// Retrieve the capture type for this capture, which is effectively
   /// the type of the non-static data member in the lambda/block structure
   /// that would store this capture.
   QualType getCaptureType() const {
@@ -620,7 +620,7 @@
   /// Captures - The captures.
   SmallVector<Capture, 4> Captures;
 
-  /// \brief - Whether the target type of return statements in this context
+  /// - Whether the target type of return statements in this context
   /// is deduced (e.g. a lambda or block with omitted return type).
   bool HasImplicitReturnType = false;
 
@@ -649,24 +649,24 @@
   void addThisCapture(bool isNested, SourceLocation Loc,
                       Expr *Cpy, bool ByCopy);
 
-  /// \brief Determine whether the C++ 'this' is captured.
+  /// Determine whether the C++ 'this' is captured.
   bool isCXXThisCaptured() const { return CXXThisCaptureIndex != 0; }
   
-  /// \brief Retrieve the capture of C++ 'this', if it has been captured.
+  /// Retrieve the capture of C++ 'this', if it has been captured.
   Capture &getCXXThisCapture() {
     assert(isCXXThisCaptured() && "this has not been captured");
     return Captures[CXXThisCaptureIndex - 1];
   }
   
-  /// \brief Determine whether the given variable has been captured.
+  /// Determine whether the given variable has been captured.
   bool isCaptured(VarDecl *Var) const {
     return CaptureMap.count(Var);
   }
 
-  /// \brief Determine whether the given variable-array type has been captured.
+  /// Determine whether the given variable-array type has been captured.
   bool isVLATypeCaptured(const VariableArrayType *VAT) const;
 
-  /// \brief Retrieve the capture of the given variable, if it has been
+  /// Retrieve the capture of the given variable, if it has been
   /// captured already.
   Capture &getCapture(VarDecl *Var) {
     assert(isCaptured(Var) && "Variable has not been captured");
@@ -686,7 +686,7 @@
   }
 };
 
-/// \brief Retains information about a block that is currently being parsed.
+/// Retains information about a block that is currently being parsed.
 class BlockScopeInfo final : public CapturingScopeInfo {
 public:
   BlockDecl *TheDecl;
@@ -712,22 +712,22 @@
   }
 };
 
-/// \brief Retains information about a captured region.
+/// Retains information about a captured region.
 class CapturedRegionScopeInfo final : public CapturingScopeInfo {
 public:
-  /// \brief The CapturedDecl for this statement.
+  /// The CapturedDecl for this statement.
   CapturedDecl *TheCapturedDecl;
 
-  /// \brief The captured record type.
+  /// The captured record type.
   RecordDecl *TheRecordDecl;
 
-  /// \brief This is the enclosing scope of the captured region.
+  /// This is the enclosing scope of the captured region.
   Scope *TheScope;
 
-  /// \brief The implicit parameter for the captured variables.
+  /// The implicit parameter for the captured variables.
   ImplicitParamDecl *ContextParam;
 
-  /// \brief The kind of captured region.
+  /// The kind of captured region.
   unsigned short CapRegionKind;
 
   unsigned short OpenMPLevel;
@@ -743,7 +743,7 @@
 
   ~CapturedRegionScopeInfo() override;
 
-  /// \brief A descriptive name for the kind of captured region this is.
+  /// A descriptive name for the kind of captured region this is.
   StringRef getRegionName() const {
     switch (CapRegionKind) {
     case CR_Default:
@@ -761,40 +761,40 @@
 
 class LambdaScopeInfo final : public CapturingScopeInfo {
 public:
-  /// \brief The class that describes the lambda.
+  /// The class that describes the lambda.
   CXXRecordDecl *Lambda = nullptr;
 
-  /// \brief The lambda's compiler-generated \c operator().
+  /// The lambda's compiler-generated \c operator().
   CXXMethodDecl *CallOperator = nullptr;
 
-  /// \brief Source range covering the lambda introducer [...].
+  /// Source range covering the lambda introducer [...].
   SourceRange IntroducerRange;
 
-  /// \brief Source location of the '&' or '=' specifying the default capture
+  /// Source location of the '&' or '=' specifying the default capture
   /// type, if any.
   SourceLocation CaptureDefaultLoc;
 
-  /// \brief The number of captures in the \c Captures list that are
+  /// The number of captures in the \c Captures list that are
   /// explicit captures.
   unsigned NumExplicitCaptures = 0;
 
-  /// \brief Whether this is a mutable lambda.
+  /// Whether this is a mutable lambda.
   bool Mutable = false;
 
-  /// \brief Whether the (empty) parameter list is explicit.
+  /// Whether the (empty) parameter list is explicit.
   bool ExplicitParams = false;
 
-  /// \brief Whether any of the capture expressions requires cleanups.
+  /// Whether any of the capture expressions requires cleanups.
   CleanupInfo Cleanup;
 
-  /// \brief Whether the lambda contains an unexpanded parameter pack.
+  /// Whether the lambda contains an unexpanded parameter pack.
   bool ContainsUnexpandedParameterPack = false;
 
-  /// \brief If this is a generic lambda, use this as the depth of 
+  /// If this is a generic lambda, use this as the depth of 
   /// each 'auto' parameter, during initial AST construction.
   unsigned AutoTemplateParameterDepth = 0;
 
-  /// \brief Store the list of the auto parameters for a generic lambda.
+  /// Store the list of the auto parameters for a generic lambda.
   /// If this is a generic lambda, store the list of the auto 
   /// parameters converted into TemplateTypeParmDecls into a vector
   /// that can be used to construct the generic lambda's template
@@ -806,7 +806,7 @@
   /// store a reference to it (cache it to avoid reconstructing it).
   TemplateParameterList *GLTemplateParameterList = nullptr;
   
-  /// \brief Contains all variable-referring-expressions (i.e. DeclRefExprs
+  /// Contains all variable-referring-expressions (i.e. DeclRefExprs
   ///  or MemberExprs) that refer to local variables in a generic lambda
   ///  or a lambda in a potentially-evaluated-if-used context.
   ///  
@@ -821,7 +821,7 @@
   ///  enclosing lambda if all intervening lambdas can capture the variable.
   llvm::SmallVector<Expr*, 4> PotentiallyCapturingExprs;
 
-  /// \brief Contains all variable-referring-expressions that refer
+  /// Contains all variable-referring-expressions that refer
   ///  to local variables that are usable as constant expressions and
   ///  do not involve an odr-use (they may still need to be captured
   ///  if the enclosing full-expression is instantiation dependent).
@@ -843,7 +843,7 @@
     Kind = SK_Lambda;
   }
 
-  /// \brief Note when all explicit captures have been added.
+  /// Note when all explicit captures have been added.
   void finishedExplicitCaptures() {
     NumExplicitCaptures = Captures.size();
   }
@@ -858,7 +858,7 @@
     return !AutoTemplateParams.empty() || GLTemplateParameterList;
   }
 
-  /// \brief Add a variable that might potentially be captured by the 
+  /// Add a variable that might potentially be captured by the 
   /// lambda and therefore the enclosing lambdas. 
   /// 
   /// This is also used by enclosing lambda's to speculatively capture 
@@ -888,7 +888,7 @@
     return PotentialThisCaptureLocation.isValid(); 
   }
 
-  /// \brief Mark a variable's reference in a lambda as non-odr using.
+  /// Mark a variable's reference in a lambda as non-odr using.
   ///
   /// For generic lambdas, if a variable is named in a potentially evaluated 
   /// expression, where the enclosing full expression is dependent then we 
Index: cfe/trunk/include/clang/Sema/Sema.h
===================================================================
--- cfe/trunk/include/clang/Sema/Sema.h
+++ cfe/trunk/include/clang/Sema/Sema.h
@@ -277,10 +277,10 @@
   Sema(const Sema &) = delete;
   void operator=(const Sema &) = delete;
 
-  ///\brief Source of additional semantic information.
+  ///Source of additional semantic information.
   ExternalSemaSource *ExternalSource;
 
-  ///\brief Whether Sema has generated a multiplexer and has to delete it.
+  ///Whether Sema has generated a multiplexer and has to delete it.
   bool isMultiplexExternalSource;
 
   static bool mightHaveNonExternalLinkage(const DeclaratorDecl *FD);
@@ -320,16 +320,16 @@
   DiagnosticsEngine &Diags;
   SourceManager &SourceMgr;
 
-  /// \brief Flag indicating whether or not to collect detailed statistics.
+  /// Flag indicating whether or not to collect detailed statistics.
   bool CollectStats;
 
-  /// \brief Code-completion consumer.
+  /// Code-completion consumer.
   CodeCompleteConsumer *CodeCompleter;
 
   /// CurContext - This is the current declaration context of parsing.
   DeclContext *CurContext;
 
-  /// \brief Generally null except when we temporarily switch decl contexts,
+  /// Generally null except when we temporarily switch decl contexts,
   /// like in \see ActOnObjCTemporaryExitContainerContext.
   DeclContext *OriginalLexicalContext;
 
@@ -339,17 +339,17 @@
 
   bool MSStructPragmaOn; // True when \#pragma ms_struct on
 
-  /// \brief Controls member pointer representation format under the MS ABI.
+  /// Controls member pointer representation format under the MS ABI.
   LangOptions::PragmaMSPointersToMembersKind
       MSPointerToMemberRepresentationMethod;
 
   /// Stack of active SEH __finally scopes.  Can be empty.
   SmallVector<Scope*, 2> CurrentSEHFinally;
 
-  /// \brief Source location for newly created implicit MSInheritanceAttrs
+  /// Source location for newly created implicit MSInheritanceAttrs
   SourceLocation ImplicitMSInheritanceAttrLoc;
 
-  /// \brief pragma clang section kind
+  /// pragma clang section kind
   enum PragmaClangSectionKind {
     PCSK_Invalid      = 0,
     PCSK_BSS          = 1,
@@ -440,7 +440,7 @@
   // FIXME: We should serialize / deserialize these if they occur in a PCH (but
   // we shouldn't do so if they're in a module).
 
-  /// \brief Whether to insert vtordisps prior to virtual bases in the Microsoft
+  /// Whether to insert vtordisps prior to virtual bases in the Microsoft
   /// C++ ABI.  Possible values are 0, 1, and 2, which mean:
   ///
   /// 0: Suppress all vtordisps
@@ -489,7 +489,7 @@
   /// VisContext - Manages the stack for \#pragma GCC visibility.
   void *VisContext; // Really a "PragmaVisStack*"
 
-  /// \brief This represents the stack of attributes that were pushed by
+  /// This represents the stack of attributes that were pushed by
   /// \#pragma clang attribute.
   struct PragmaAttributeEntry {
     SourceLocation Loc;
@@ -499,16 +499,16 @@
   };
   SmallVector<PragmaAttributeEntry, 2> PragmaAttributeStack;
 
-  /// \brief The declaration that is currently receiving an attribute from the
+  /// The declaration that is currently receiving an attribute from the
   /// #pragma attribute stack.
   const Decl *PragmaAttributeCurrentTargetDecl;
 
-  /// \brief This represents the last location of a "#pragma clang optimize off"
+  /// This represents the last location of a "#pragma clang optimize off"
   /// directive if such a directive has not been closed by an "on" yet. If
   /// optimizations are currently "on", this is set to an invalid location.
   SourceLocation OptimizeOffPragmaLocation;
 
-  /// \brief Flag indicating if Sema is building a recovery call expression.
+  /// Flag indicating if Sema is building a recovery call expression.
   ///
   /// This flag is used to avoid building recovery call expressions
   /// if Sema is already doing so, which would cause infinite recursions.
@@ -522,7 +522,7 @@
   /// element type here is ExprWithCleanups::Object.
   SmallVector<BlockDecl*, 8> ExprCleanupObjects;
 
-  /// \brief Store a list of either DeclRefExprs or MemberExprs
+  /// Store a list of either DeclRefExprs or MemberExprs
   ///  that contain a reference to a variable (constant) that may or may not
   ///  be odr-used in this Expr, and we won't know until all lvalue-to-rvalue
   ///  and discarded value conversions have been applied to all subexpressions
@@ -532,7 +532,7 @@
 
   std::unique_ptr<sema::FunctionScopeInfo> PreallocatedFunctionScope;
 
-  /// \brief Stack containing information about each of the nested
+  /// Stack containing information about each of the nested
   /// function, block, and method scopes that are currently active.
   SmallVector<sema::FunctionScopeInfo *, 4> FunctionScopes;
 
@@ -550,14 +550,14 @@
 
   typedef llvm::SmallSetVector<NamedDecl *, 16> NamedDeclSetType;
 
-  /// \brief Set containing all declared private fields that are not used.
+  /// Set containing all declared private fields that are not used.
   NamedDeclSetType UnusedPrivateFields;
 
-  /// \brief Set containing all typedefs that are likely unused.
+  /// Set containing all typedefs that are likely unused.
   llvm::SmallSetVector<const TypedefNameDecl *, 4>
       UnusedLocalTypedefNameCandidates;
 
-  /// \brief Delete-expressions to be analyzed at the end of translation unit
+  /// Delete-expressions to be analyzed at the end of translation unit
   ///
   /// This list contains class members, and locations of delete-expressions
   /// that could not be proven as to whether they mismatch with new-expression
@@ -577,21 +577,21 @@
   /// we are currently parsing the initializer.
   llvm::SmallPtrSet<const Decl*, 4> ParsingInitForAutoVars;
 
-  /// \brief Look for a locally scoped extern "C" declaration by the given name.
+  /// Look for a locally scoped extern "C" declaration by the given name.
   NamedDecl *findLocallyScopedExternCDecl(DeclarationName Name);
 
   typedef LazyVector<VarDecl *, ExternalSemaSource,
                      &ExternalSemaSource::ReadTentativeDefinitions, 2, 2>
     TentativeDefinitionsType;
 
-  /// \brief All the tentative definitions encountered in the TU.
+  /// All the tentative definitions encountered in the TU.
   TentativeDefinitionsType TentativeDefinitions;
 
   typedef LazyVector<const DeclaratorDecl *, ExternalSemaSource,
                      &ExternalSemaSource::ReadUnusedFileScopedDecls, 2, 2>
     UnusedFileScopedDeclsType;
 
-  /// \brief The set of file scoped decls seen so far that have not been used
+  /// The set of file scoped decls seen so far that have not been used
   /// and must warn if not used. Only contains the first declaration.
   UnusedFileScopedDeclsType UnusedFileScopedDecls;
 
@@ -599,17 +599,17 @@
                      &ExternalSemaSource::ReadDelegatingConstructors, 2, 2>
     DelegatingCtorDeclsType;
 
-  /// \brief All the delegating constructors seen so far in the file, used for
+  /// All the delegating constructors seen so far in the file, used for
   /// cycle detection at the end of the TU.
   DelegatingCtorDeclsType DelegatingCtorDecls;
 
-  /// \brief All the overriding functions seen during a class definition
+  /// All the overriding functions seen during a class definition
   /// that had their exception spec checks delayed, plus the overridden
   /// function.
   SmallVector<std::pair<const CXXMethodDecl*, const CXXMethodDecl*>, 2>
     DelayedExceptionSpecChecks;
 
-  /// \brief All the members seen during a class definition which were both
+  /// All the members seen during a class definition which were both
   /// explicitly defaulted and had explicitly-specified exception
   /// specifications, along with the function type containing their
   /// user-specified exception specification. Those exception specifications
@@ -624,7 +624,7 @@
       LateParsedTemplateMapT;
   LateParsedTemplateMapT LateParsedTemplateMap;
 
-  /// \brief Callback to the parser to parse templated functions when needed.
+  /// Callback to the parser to parse templated functions when needed.
   typedef void LateTemplateParserCB(void *P, LateParsedTemplate &LPT);
   typedef void LateTemplateParserCleanupCB(void *P);
   LateTemplateParserCB *LateTemplateParser;
@@ -651,7 +651,7 @@
   /// A class which encapsulates the logic for delaying diagnostics
   /// during parsing and other processing.
   class DelayedDiagnostics {
-    /// \brief The current pool of diagnostics into which delayed
+    /// The current pool of diagnostics into which delayed
     /// diagnostics should go.
     sema::DelayedDiagnosticPool *CurPool;
 
@@ -734,7 +734,7 @@
     }
   };
 
-  /// \brief RAII object to handle the state changes required to synthesize
+  /// RAII object to handle the state changes required to synthesize
   /// a function body.
   class SynthesizedFunctionScope {
     Sema &S;
@@ -787,7 +787,7 @@
   llvm::DenseMap<IdentifierInfo*,AsmLabelAttr*> ExtnameUndeclaredIdentifiers;
 
 
-  /// \brief Load weak undeclared identifiers from the external source.
+  /// Load weak undeclared identifiers from the external source.
   void LoadExternalWeakUndeclaredIdentifiers();
 
   /// WeakTopLevelDecl - Translation-unit scoped declarations generated by
@@ -804,77 +804,77 @@
   /// For example, user-defined classes, built-in "id" type, etc.
   Scope *TUScope;
 
-  /// \brief The C++ "std" namespace, where the standard library resides.
+  /// The C++ "std" namespace, where the standard library resides.
   LazyDeclPtr StdNamespace;
 
-  /// \brief The C++ "std::bad_alloc" class, which is defined by the C++
+  /// The C++ "std::bad_alloc" class, which is defined by the C++
   /// standard library.
   LazyDeclPtr StdBadAlloc;
 
-  /// \brief The C++ "std::align_val_t" enum class, which is defined by the C++
+  /// The C++ "std::align_val_t" enum class, which is defined by the C++
   /// standard library.
   LazyDeclPtr StdAlignValT;
 
-  /// \brief The C++ "std::experimental" namespace, where the experimental parts
+  /// The C++ "std::experimental" namespace, where the experimental parts
   /// of the standard library resides.
   NamespaceDecl *StdExperimentalNamespaceCache;
 
-  /// \brief The C++ "std::initializer_list" template, which is defined in
+  /// The C++ "std::initializer_list" template, which is defined in
   /// \<initializer_list>.
   ClassTemplateDecl *StdInitializerList;
 
-  /// \brief The C++ "type_info" declaration, which is defined in \<typeinfo>.
+  /// The C++ "type_info" declaration, which is defined in \<typeinfo>.
   RecordDecl *CXXTypeInfoDecl;
 
-  /// \brief The MSVC "_GUID" struct, which is defined in MSVC header files.
+  /// The MSVC "_GUID" struct, which is defined in MSVC header files.
   RecordDecl *MSVCGuidDecl;
 
-  /// \brief Caches identifiers/selectors for NSFoundation APIs.
+  /// Caches identifiers/selectors for NSFoundation APIs.
   std::unique_ptr<NSAPI> NSAPIObj;
 
-  /// \brief The declaration of the Objective-C NSNumber class.
+  /// The declaration of the Objective-C NSNumber class.
   ObjCInterfaceDecl *NSNumberDecl;
 
-  /// \brief The declaration of the Objective-C NSValue class.
+  /// The declaration of the Objective-C NSValue class.
   ObjCInterfaceDecl *NSValueDecl;
 
-  /// \brief Pointer to NSNumber type (NSNumber *).
+  /// Pointer to NSNumber type (NSNumber *).
   QualType NSNumberPointer;
 
-  /// \brief Pointer to NSValue type (NSValue *).
+  /// Pointer to NSValue type (NSValue *).
   QualType NSValuePointer;
 
-  /// \brief The Objective-C NSNumber methods used to create NSNumber literals.
+  /// The Objective-C NSNumber methods used to create NSNumber literals.
   ObjCMethodDecl *NSNumberLiteralMethods[NSAPI::NumNSNumberLiteralMethods];
 
-  /// \brief The declaration of the Objective-C NSString class.
+  /// The declaration of the Objective-C NSString class.
   ObjCInterfaceDecl *NSStringDecl;
 
-  /// \brief Pointer to NSString type (NSString *).
+  /// Pointer to NSString type (NSString *).
   QualType NSStringPointer;
 
-  /// \brief The declaration of the stringWithUTF8String: method.
+  /// The declaration of the stringWithUTF8String: method.
   ObjCMethodDecl *StringWithUTF8StringMethod;
 
-  /// \brief The declaration of the valueWithBytes:objCType: method.
+  /// The declaration of the valueWithBytes:objCType: method.
   ObjCMethodDecl *ValueWithBytesObjCTypeMethod;
 
-  /// \brief The declaration of the Objective-C NSArray class.
+  /// The declaration of the Objective-C NSArray class.
   ObjCInterfaceDecl *NSArrayDecl;
 
-  /// \brief The declaration of the arrayWithObjects:count: method.
+  /// The declaration of the arrayWithObjects:count: method.
   ObjCMethodDecl *ArrayWithObjectsMethod;
 
-  /// \brief The declaration of the Objective-C NSDictionary class.
+  /// The declaration of the Objective-C NSDictionary class.
   ObjCInterfaceDecl *NSDictionaryDecl;
 
-  /// \brief The declaration of the dictionaryWithObjects:forKeys:count: method.
+  /// The declaration of the dictionaryWithObjects:forKeys:count: method.
   ObjCMethodDecl *DictionaryWithObjectsMethod;
 
-  /// \brief id<NSCopying> type.
+  /// id<NSCopying> type.
   QualType QIDNSCopying;
 
-  /// \brief will hold 'respondsToSelector:'
+  /// will hold 'respondsToSelector:'
   Selector RespondsToSelectorSel;
 
   /// A flag to remember whether the implicit forms of operator new and delete
@@ -885,43 +885,43 @@
   /// references to fields.  This is really a
   bool AllowAbstractFieldReference;
 
-  /// \brief Describes how the expressions currently being parsed are
+  /// Describes how the expressions currently being parsed are
   /// evaluated at run-time, if at all.
   enum class ExpressionEvaluationContext {
-    /// \brief The current expression and its subexpressions occur within an
+    /// The current expression and its subexpressions occur within an
     /// unevaluated operand (C++11 [expr]p7), such as the subexpression of
     /// \c sizeof, where the type of the expression may be significant but
     /// no code will be generated to evaluate the value of the expression at
     /// run time.
     Unevaluated,
 
-    /// \brief The current expression occurs within a braced-init-list within
+    /// The current expression occurs within a braced-init-list within
     /// an unevaluated operand. This is mostly like a regular unevaluated
     /// context, except that we still instantiate constexpr functions that are
     /// referenced here so that we can perform narrowing checks correctly.
     UnevaluatedList,
 
-    /// \brief The current expression occurs within a discarded statement.
+    /// The current expression occurs within a discarded statement.
     /// This behaves largely similarly to an unevaluated operand in preventing
     /// definitions from being required, but not in other ways.
     DiscardedStatement,
 
-    /// \brief The current expression occurs within an unevaluated
+    /// The current expression occurs within an unevaluated
     /// operand that unconditionally permits abstract references to
     /// fields, such as a SIZE operator in MS-style inline assembly.
     UnevaluatedAbstract,
 
-    /// \brief The current context is "potentially evaluated" in C++11 terms,
+    /// The current context is "potentially evaluated" in C++11 terms,
     /// but the expression is evaluated at compile-time (like the values of
     /// cases in a switch statement).
     ConstantEvaluated,
 
-    /// \brief The current expression is potentially evaluated at run time,
+    /// The current expression is potentially evaluated at run time,
     /// which means that code may be generated to evaluate the value of the
     /// expression at run time.
     PotentiallyEvaluated,
 
-    /// \brief The current expression is potentially evaluated, but any
+    /// The current expression is potentially evaluated, but any
     /// declarations referenced inside that expression are only used if
     /// in fact the current expression is used.
     ///
@@ -932,49 +932,49 @@
     PotentiallyEvaluatedIfUsed
   };
 
-  /// \brief Data structure used to record current or nested
+  /// Data structure used to record current or nested
   /// expression evaluation contexts.
   struct ExpressionEvaluationContextRecord {
-    /// \brief The expression evaluation context.
+    /// The expression evaluation context.
     ExpressionEvaluationContext Context;
 
-    /// \brief Whether the enclosing context needed a cleanup.
+    /// Whether the enclosing context needed a cleanup.
     CleanupInfo ParentCleanup;
 
-    /// \brief Whether we are in a decltype expression.
+    /// Whether we are in a decltype expression.
     bool IsDecltype;
 
-    /// \brief The number of active cleanup objects when we entered
+    /// The number of active cleanup objects when we entered
     /// this expression evaluation context.
     unsigned NumCleanupObjects;
 
-    /// \brief The number of typos encountered during this expression evaluation
+    /// The number of typos encountered during this expression evaluation
     /// context (i.e. the number of TypoExprs created).
     unsigned NumTypos;
 
     llvm::SmallPtrSet<Expr*, 2> SavedMaybeODRUseExprs;
 
-    /// \brief The lambdas that are present within this context, if it
+    /// The lambdas that are present within this context, if it
     /// is indeed an unevaluated context.
     SmallVector<LambdaExpr *, 2> Lambdas;
 
-    /// \brief The declaration that provides context for lambda expressions
+    /// The declaration that provides context for lambda expressions
     /// and block literals if the normal declaration context does not
     /// suffice, e.g., in a default function argument.
     Decl *ManglingContextDecl;
 
-    /// \brief The context information used to mangle lambda expressions
+    /// The context information used to mangle lambda expressions
     /// and block literals within this context.
     ///
     /// This mangling information is allocated lazily, since most contexts
     /// do not have lambda expressions or block literals.
     std::unique_ptr<MangleNumberingContext> MangleNumbering;
 
-    /// \brief If we are processing a decltype type, a set of call expressions
+    /// If we are processing a decltype type, a set of call expressions
     /// for which we have deferred checking the completeness of the return type.
     SmallVector<CallExpr *, 8> DelayedDecltypeCalls;
 
-    /// \brief If we are processing a decltype type, a set of temporary binding
+    /// If we are processing a decltype type, a set of temporary binding
     /// expressions for which we have deferred checking the destructor.
     SmallVector<CXXBindTemporaryExpr *, 8> DelayedDecltypeBinds;
 
@@ -988,7 +988,7 @@
         NumTypos(0),
         ManglingContextDecl(ManglingContextDecl), MangleNumbering() { }
 
-    /// \brief Retrieve the mangling numbering context, used to consistently
+    /// Retrieve the mangling numbering context, used to consistently
     /// number constructs like lambdas for mangling.
     MangleNumberingContext &getMangleNumberingContext(ASTContext &Ctx);
 
@@ -1005,7 +1005,7 @@
   /// A stack of expression evaluation contexts.
   SmallVector<ExpressionEvaluationContextRecord, 8> ExprEvalContexts;
 
-  /// \brief Compute the mangling number context for a lambda expression or
+  /// Compute the mangling number context for a lambda expression or
   /// block literal.
   ///
   /// \param DC - The DeclContext containing the lambda expression or
@@ -1054,15 +1054,15 @@
     {}
   };
 
-  /// \brief A cache of special member function overload resolution results
+  /// A cache of special member function overload resolution results
   /// for C++ records.
   llvm::FoldingSet<SpecialMemberOverloadResultEntry> SpecialMemberCache;
 
-  /// \brief A cache of the flags available in enumerations with the flag_bits
+  /// A cache of the flags available in enumerations with the flag_bits
   /// attribute.
   mutable llvm::DenseMap<const EnumDecl*, llvm::APInt> FlagBitsCache;
 
-  /// \brief The kind of translation unit we are processing.
+  /// The kind of translation unit we are processing.
   ///
   /// When we're processing a complete translation unit, Sema will perform
   /// end-of-translation-unit semantic tasks (such as creating
@@ -1073,13 +1073,13 @@
 
   llvm::BumpPtrAllocator BumpAlloc;
 
-  /// \brief The number of SFINAE diagnostics that have been trapped.
+  /// The number of SFINAE diagnostics that have been trapped.
   unsigned NumSFINAEErrors;
 
   typedef llvm::DenseMap<ParmVarDecl *, llvm::TinyPtrVector<ParmVarDecl *>>
     UnparsedDefaultArgInstantiationsMap;
 
-  /// \brief A mapping from parameters with unparsed default arguments to the
+  /// A mapping from parameters with unparsed default arguments to the
   /// set of instantiations of each parameter.
   ///
   /// This mapping is a temporary data structure used when parsing
@@ -1161,7 +1161,7 @@
   bool isSelfExpr(Expr *RExpr);
   bool isSelfExpr(Expr *RExpr, const ObjCMethodDecl *Method);
 
-  /// \brief Cause the active diagnostic on the DiagosticsEngine to be
+  /// Cause the active diagnostic on the DiagosticsEngine to be
   /// emitted. This is closely coupled to the SemaDiagnosticBuilder class and
   /// should not be used elsewhere.
   void EmitCurrentDiagnostic(unsigned DiagID);
@@ -1186,7 +1186,7 @@
        CodeCompleteConsumer *CompletionConsumer = nullptr);
   ~Sema();
 
-  /// \brief Perform initialization that occurs after the parser has been
+  /// Perform initialization that occurs after the parser has been
   /// initialized but before it parses anything.
   void Initialize();
 
@@ -1202,7 +1202,7 @@
   ASTMutationListener *getASTMutationListener() const;
   ExternalSemaSource* getExternalSource() const { return ExternalSource; }
 
-  ///\brief Registers an external source. If an external source already exists,
+  ///Registers an external source. If an external source already exists,
   /// creates a multiplex external source and appends to it.
   ///
   ///\param[in] E - A non-null external sema source.
@@ -1211,7 +1211,7 @@
 
   void PrintStats() const;
 
-  /// \brief Helper class that creates diagnostics with optional
+  /// Helper class that creates diagnostics with optional
   /// template instantiation stacks.
   ///
   /// This class provides a wrapper around the basic DiagnosticBuilder
@@ -1266,29 +1266,29 @@
     }
   };
 
-  /// \brief Emit a diagnostic.
+  /// Emit a diagnostic.
   SemaDiagnosticBuilder Diag(SourceLocation Loc, unsigned DiagID) {
     DiagnosticBuilder DB = Diags.Report(Loc, DiagID);
     return SemaDiagnosticBuilder(DB, *this, DiagID);
   }
 
-  /// \brief Emit a partial diagnostic.
+  /// Emit a partial diagnostic.
   SemaDiagnosticBuilder Diag(SourceLocation Loc, const PartialDiagnostic& PD);
 
-  /// \brief Build a partial diagnostic.
+  /// Build a partial diagnostic.
   PartialDiagnostic PDiag(unsigned DiagID = 0); // in SemaInternal.h
 
   bool findMacroSpelling(SourceLocation &loc, StringRef name);
 
-  /// \brief Get a string to suggest for zero-initialization of a type.
+  /// Get a string to suggest for zero-initialization of a type.
   std::string
   getFixItZeroInitializerForType(QualType T, SourceLocation Loc) const;
   std::string getFixItZeroLiteralForType(QualType T, SourceLocation Loc) const;
 
-  /// \brief Calls \c Lexer::getLocForEndOfToken()
+  /// Calls \c Lexer::getLocForEndOfToken()
   SourceLocation getLocForEndOfToken(SourceLocation Loc, unsigned Offset = 0);
 
-  /// \brief Retrieve the module loader associated with the preprocessor.
+  /// Retrieve the module loader associated with the preprocessor.
   ModuleLoader &getModuleLoader() const;
 
   void emitAndClearUnusedLocalTypedefWarnings();
@@ -1304,7 +1304,7 @@
   void PushBlockScope(Scope *BlockScope, BlockDecl *Block);
   sema::LambdaScopeInfo *PushLambdaScope();
 
-  /// \brief This is used to inform Sema what the current TemplateParameterDepth
+  /// This is used to inform Sema what the current TemplateParameterDepth
   /// is during Parsing.  Currently it is used to pass on the depth
   /// when parsing generic lambda 'auto' parameters.
   void RecordParsingTemplateParameterDepth(unsigned Depth);
@@ -1334,7 +1334,7 @@
 
   bool hasAnyUnrecoverableErrorsInThisFunction() const;
 
-  /// \brief Retrieve the current block, if any.
+  /// Retrieve the current block, if any.
   sema::BlockScopeInfo *getCurBlock();
 
   /// Retrieve the current lambda scope info, if any.
@@ -1344,10 +1344,10 @@
   sema::LambdaScopeInfo *
   getCurLambda(bool IgnoreNonLambdaCapturingScope = false);
 
-  /// \brief Retrieve the current generic lambda info, if any.
+  /// Retrieve the current generic lambda info, if any.
   sema::LambdaScopeInfo *getCurGenericLambda();
 
-  /// \brief Retrieve the current captured region, if any.
+  /// Retrieve the current captured region, if any.
   sema::CapturedRegionScopeInfo *getCurCapturedRegion();
 
   /// WeakTopLevelDeclDecls - access to \#pragma weak-generated Decls
@@ -1377,7 +1377,7 @@
 
   bool CheckFunctionReturnType(QualType T, SourceLocation Loc);
 
-  /// \brief Build a function type.
+  /// Build a function type.
   ///
   /// This routine checks the function type according to C++ rules and
   /// under the assumption that the result type and parameter types have
@@ -1426,7 +1426,7 @@
   TypeSourceInfo *GetTypeSourceInfoForDeclarator(Declarator &D, QualType T,
                                                TypeSourceInfo *ReturnTypeInfo);
 
-  /// \brief Package the given type and TSI into a ParsedType.
+  /// Package the given type and TSI into a ParsedType.
   ParsedType CreateParsedType(QualType T, TypeSourceInfo *TInfo);
   DeclarationNameInfo GetNameForDeclarator(Declarator &D);
   DeclarationNameInfo GetNameFromUnqualifiedId(const UnqualifiedId &Name);
@@ -1464,11 +1464,11 @@
 
   TypeResult ActOnTypeName(Scope *S, Declarator &D);
 
-  /// \brief The parser has parsed the context-sensitive type 'instancetype'
+  /// The parser has parsed the context-sensitive type 'instancetype'
   /// in an Objective-C message declaration. Return the appropriate type.
   ParsedType ActOnObjCInstanceType(SourceLocation Loc);
 
-  /// \brief Abstract class used to diagnose incomplete types.
+  /// Abstract class used to diagnose incomplete types.
   struct TypeDiagnoser {
     TypeDiagnoser() {}
 
@@ -1537,10 +1537,10 @@
   VisibleModuleSet VisibleModules;
 
 public:
-  /// \brief Get the module owning an entity.
+  /// Get the module owning an entity.
   Module *getOwningModule(Decl *Entity) { return Entity->getOwningModule(); }
 
-  /// \brief Make a merged definition of an existing hidden definition \p ND
+  /// Make a merged definition of an existing hidden definition \p ND
   /// visible at the specified location.
   void makeMergedDefinitionVisible(NamedDecl *ND);
 
@@ -1694,7 +1694,7 @@
                                       SourceLocation NameLoc,
                                       bool IsTemplateTypeArg);
 
-  /// \brief Describes the result of the name lookup and resolution performed
+  /// Describes the result of the name lookup and resolution performed
   /// by \c ClassifyName().
   enum NameClassificationKind {
     NC_Unknown,
@@ -1785,7 +1785,7 @@
     }
   };
 
-  /// \brief Perform name lookup on the given name, classifying it based on
+  /// Perform name lookup on the given name, classifying it based on
   /// the results of name lookup and the following token.
   ///
   /// This routine is used by the parser to resolve identifiers and help direct
@@ -1988,7 +1988,7 @@
     return D && isa<ObjCMethodDecl>(D);
   }
 
-  /// \brief Determine whether we can delay parsing the body of a function or
+  /// Determine whether we can delay parsing the body of a function or
   /// function template until it is used, assuming we don't care about emitting
   /// code for that function.
   ///
@@ -1998,7 +1998,7 @@
   /// or has an 'auto' return type in C++14. These cases are essentially bugs.
   bool canDelayFunctionBody(const Declarator &D);
 
-  /// \brief Determine whether we can skip parsing the body of a function
+  /// Determine whether we can skip parsing the body of a function
   /// definition, assuming we don't care about analyzing its body or emitting
   /// code for that function.
   ///
@@ -2017,11 +2017,11 @@
   /// attribute for which parsing is delayed.
   void ActOnFinishDelayedAttribute(Scope *S, Decl *D, ParsedAttributes &Attrs);
 
-  /// \brief Diagnose any unused parameters in the given sequence of
+  /// Diagnose any unused parameters in the given sequence of
   /// ParmVarDecl pointers.
   void DiagnoseUnusedParameters(ArrayRef<ParmVarDecl *> Parameters);
 
-  /// \brief Diagnose whether the size of parameters or return value of a
+  /// Diagnose whether the size of parameters or return value of a
   /// function or obj-c method definition is pass-by-value and larger than a
   /// specified threshold.
   void
@@ -2033,7 +2033,7 @@
                               SourceLocation AsmLoc,
                               SourceLocation RParenLoc);
 
-  /// \brief Handle a C++11 empty-declaration and attribute-declaration.
+  /// Handle a C++11 empty-declaration and attribute-declaration.
   Decl *ActOnEmptyDeclaration(Scope *S,
                               AttributeList *AttrList,
                               SourceLocation SemiLoc);
@@ -2050,7 +2050,7 @@
                                  SourceLocation ModuleLoc, ModuleDeclKind MDK,
                                  ModuleIdPath Path);
 
-  /// \brief The parser has processed a module import declaration.
+  /// The parser has processed a module import declaration.
   ///
   /// \param AtLoc The location of the '@' symbol, if any.
   ///
@@ -2060,17 +2060,17 @@
   DeclResult ActOnModuleImport(SourceLocation AtLoc, SourceLocation ImportLoc,
                                ModuleIdPath Path);
 
-  /// \brief The parser has processed a module import translated from a
+  /// The parser has processed a module import translated from a
   /// #include or similar preprocessing directive.
   void ActOnModuleInclude(SourceLocation DirectiveLoc, Module *Mod);
   void BuildModuleInclude(SourceLocation DirectiveLoc, Module *Mod);
 
-  /// \brief The parsed has entered a submodule.
+  /// The parsed has entered a submodule.
   void ActOnModuleBegin(SourceLocation DirectiveLoc, Module *Mod);
-  /// \brief The parser has left a submodule.
+  /// The parser has left a submodule.
   void ActOnModuleEnd(SourceLocation DirectiveLoc, Module *Mod);
 
-  /// \brief Create an implicit import of the given module at the given
+  /// Create an implicit import of the given module at the given
   /// source location, for error recovery, if possible.
   ///
   /// This routine is typically used when an entity found by name lookup
@@ -2089,7 +2089,7 @@
     PartialSpecialization
   };
 
-  /// \brief Diagnose that the specified declaration needs to be visible but
+  /// Diagnose that the specified declaration needs to be visible but
   /// isn't, and suggest a module import that would resolve the problem.
   void diagnoseMissingImport(SourceLocation Loc, NamedDecl *Decl,
                              MissingImportKind MIK, bool Recover = true);
@@ -2102,23 +2102,23 @@
   Decl *ActOnFinishExportDecl(Scope *S, Decl *ExportDecl,
                               SourceLocation RBraceLoc);
 
-  /// \brief We've found a use of a templated declaration that would trigger an
+  /// We've found a use of a templated declaration that would trigger an
   /// implicit instantiation. Check that any relevant explicit specializations
   /// and partial specializations are visible, and diagnose if not.
   void checkSpecializationVisibility(SourceLocation Loc, NamedDecl *Spec);
 
-  /// \brief We've found a use of a template specialization that would select a
+  /// We've found a use of a template specialization that would select a
   /// partial specialization. Check that the partial specialization is visible,
   /// and diagnose if not.
   void checkPartialSpecializationVisibility(SourceLocation Loc,
                                             NamedDecl *Spec);
 
-  /// \brief Retrieve a suitable printing policy.
+  /// Retrieve a suitable printing policy.
   PrintingPolicy getPrintingPolicy() const {
     return getPrintingPolicy(Context, PP);
   }
 
-  /// \brief Retrieve a suitable printing policy.
+  /// Retrieve a suitable printing policy.
   static PrintingPolicy getPrintingPolicy(const ASTContext &Ctx,
                                           const Preprocessor &PP);
 
@@ -2262,7 +2262,7 @@
 
   typedef void *SkippedDefinitionContext;
 
-  /// \brief Invoked when we enter a tag definition that we're skipping.
+  /// Invoked when we enter a tag definition that we're skipping.
   SkippedDefinitionContext ActOnTagStartSkippedDefinition(Scope *S, Decl *TD);
 
   Decl *ActOnObjCContainerStartDefinition(Decl *IDecl);
@@ -2284,7 +2284,7 @@
 
   void ActOnObjCContainerFinishDefinition();
 
-  /// \brief Invoked when we must temporarily exit the objective-c container
+  /// Invoked when we must temporarily exit the objective-c container
   /// scope for parsing/looking-up C constructs.
   ///
   /// Must be followed by a call to \see ActOnObjCReenterContainerContext
@@ -2354,7 +2354,7 @@
   /// Add this decl to the scope shadowed decl chains.
   void PushOnScopeChains(NamedDecl *D, Scope *S, bool AddToContext = true);
 
-  /// \brief Make the given externally-produced declaration visible at the
+  /// Make the given externally-produced declaration visible at the
   /// top level scope.
   ///
   /// \param D The externally-produced declaration to push.
@@ -2381,18 +2381,18 @@
                                 TypeSourceInfo *TInfo);
   bool isIncompatibleTypedef(TypeDecl *Old, TypedefNameDecl *New);
 
-  /// \brief Describes the kind of merge to perform for availability
+  /// Describes the kind of merge to perform for availability
   /// attributes (including "deprecated", "unavailable", and "availability").
   enum AvailabilityMergeKind {
-    /// \brief Don't merge availability attributes at all.
+    /// Don't merge availability attributes at all.
     AMK_None,
-    /// \brief Merge availability attributes for a redeclaration, which requires
+    /// Merge availability attributes for a redeclaration, which requires
     /// an exact match.
     AMK_Redeclaration,
-    /// \brief Merge availability attributes for an override, which requires
+    /// Merge availability attributes for an override, which requires
     /// an exact match or a weakening of constraints.
     AMK_Override,
-    /// \brief Merge availability attributes for an implementation of
+    /// Merge availability attributes for an implementation of
     /// a protocol requirement.
     AMK_ProtocolImplementation,
   };
@@ -2494,7 +2494,7 @@
   bool IsOverload(FunctionDecl *New, FunctionDecl *Old, bool IsForUsingDecl,
                   bool ConsiderCudaAttrs = true);
 
-  /// \brief Checks availability of the function depending on the current
+  /// Checks availability of the function depending on the current
   /// function context.Inside an unavailable function,unavailability is ignored.
   ///
   /// \returns true if \p FD is unavailable and current context is inside
@@ -2582,7 +2582,7 @@
   ExprResult CheckConvertedConstantExpression(Expr *From, QualType T,
                                               APValue &Value, CCEKind CCE);
 
-  /// \brief Abstract base class used to perform a contextual implicit
+  /// Abstract base class used to perform a contextual implicit
   /// conversion from an expression to any type passing a filter.
   class ContextualImplicitConverter {
   public:
@@ -2593,38 +2593,38 @@
                                 bool SuppressConversion = false)
         : Suppress(Suppress), SuppressConversion(SuppressConversion) {}
 
-    /// \brief Determine whether the specified type is a valid destination type
+    /// Determine whether the specified type is a valid destination type
     /// for this conversion.
     virtual bool match(QualType T) = 0;
 
-    /// \brief Emits a diagnostic complaining that the expression does not have
+    /// Emits a diagnostic complaining that the expression does not have
     /// integral or enumeration type.
     virtual SemaDiagnosticBuilder
     diagnoseNoMatch(Sema &S, SourceLocation Loc, QualType T) = 0;
 
-    /// \brief Emits a diagnostic when the expression has incomplete class type.
+    /// Emits a diagnostic when the expression has incomplete class type.
     virtual SemaDiagnosticBuilder
     diagnoseIncomplete(Sema &S, SourceLocation Loc, QualType T) = 0;
 
-    /// \brief Emits a diagnostic when the only matching conversion function
+    /// Emits a diagnostic when the only matching conversion function
     /// is explicit.
     virtual SemaDiagnosticBuilder diagnoseExplicitConv(
         Sema &S, SourceLocation Loc, QualType T, QualType ConvTy) = 0;
 
-    /// \brief Emits a note for the explicit conversion function.
+    /// Emits a note for the explicit conversion function.
     virtual SemaDiagnosticBuilder
     noteExplicitConv(Sema &S, CXXConversionDecl *Conv, QualType ConvTy) = 0;
 
-    /// \brief Emits a diagnostic when there are multiple possible conversion
+    /// Emits a diagnostic when there are multiple possible conversion
     /// functions.
     virtual SemaDiagnosticBuilder
     diagnoseAmbiguous(Sema &S, SourceLocation Loc, QualType T) = 0;
 
-    /// \brief Emits a note for one of the candidate conversions.
+    /// Emits a note for one of the candidate conversions.
     virtual SemaDiagnosticBuilder
     noteAmbiguous(Sema &S, CXXConversionDecl *Conv, QualType ConvTy) = 0;
 
-    /// \brief Emits a diagnostic when we picked a conversion function
+    /// Emits a diagnostic when we picked a conversion function
     /// (for cases when we are not allowed to pick a conversion function).
     virtual SemaDiagnosticBuilder diagnoseConversion(
         Sema &S, SourceLocation Loc, QualType T, QualType ConvTy) = 0;
@@ -2649,7 +2649,7 @@
       return diagnoseNotInt(S, Loc, T);
     }
 
-    /// \brief Emits a diagnostic complaining that the expression does not have
+    /// Emits a diagnostic complaining that the expression does not have
     /// integral or enumeration type.
     virtual SemaDiagnosticBuilder
     diagnoseNotInt(Sema &S, SourceLocation Loc, QualType T) = 0;
@@ -2984,7 +2984,7 @@
   /// the ability to distinguish among them.
   //@{
 
-  /// @brief Describes the kind of name lookup to perform.
+  /// Describes the kind of name lookup to perform.
   enum LookupNameKind {
     /// Ordinary name lookup, which finds ordinary names (functions,
     /// variables, typedefs, etc.) in C and most kinds of names
@@ -3026,22 +3026,22 @@
     LookupObjCProtocolName,
     /// Look up implicit 'self' parameter of an objective-c method.
     LookupObjCImplicitSelfParam,
-    /// \brief Look up the name of an OpenMP user-defined reduction operation.
+    /// Look up the name of an OpenMP user-defined reduction operation.
     LookupOMPReductionName,
-    /// \brief Look up any declaration with any name.
+    /// Look up any declaration with any name.
     LookupAnyName
   };
 
-  /// \brief Specifies whether (or how) name lookup is being performed for a
+  /// Specifies whether (or how) name lookup is being performed for a
   /// redeclaration (vs. a reference).
   enum RedeclarationKind {
-    /// \brief The lookup is a reference to this name that is not for the
+    /// The lookup is a reference to this name that is not for the
     /// purpose of redeclaring the name.
     NotForRedeclaration = 0,
-    /// \brief The lookup results will be used for redeclaration of a name,
+    /// The lookup results will be used for redeclaration of a name,
     /// if an entity by that name already exists and is visible.
     ForVisibleRedeclaration,
-    /// \brief The lookup results will be used for redeclaration of a name
+    /// The lookup results will be used for redeclaration of a name
     /// with external linkage; non-visible lookup results with external linkage
     /// may also be found.
     ForExternalRedeclaration
@@ -3058,23 +3058,23 @@
     return ForExternalRedeclaration;
   }
 
-  /// \brief The possible outcomes of name lookup for a literal operator.
+  /// The possible outcomes of name lookup for a literal operator.
   enum LiteralOperatorLookupResult {
-    /// \brief The lookup resulted in an error.
+    /// The lookup resulted in an error.
     LOLR_Error,
-    /// \brief The lookup found no match but no diagnostic was issued.
+    /// The lookup found no match but no diagnostic was issued.
     LOLR_ErrorNoDiagnostic,
-    /// \brief The lookup found a single 'cooked' literal operator, which
+    /// The lookup found a single 'cooked' literal operator, which
     /// expects a normal literal to be built and passed to it.
     LOLR_Cooked,
-    /// \brief The lookup found a single 'raw' literal operator, which expects
+    /// The lookup found a single 'raw' literal operator, which expects
     /// a string literal containing the spelling of the literal token.
     LOLR_Raw,
-    /// \brief The lookup found an overload set of literal operator templates,
+    /// The lookup found an overload set of literal operator templates,
     /// which expect the characters of the spelling of the literal token to be
     /// passed as a non-type template argument pack.
     LOLR_Template,
-    /// \brief The lookup found an overload set of literal operator templates,
+    /// The lookup found an overload set of literal operator templates,
     /// which expect the character type and characters of the spelling of the
     /// string literal token to be passed as template arguments.
     LOLR_StringTemplate
@@ -3104,25 +3104,25 @@
     TypoExprState &operator=(TypoExprState &&other) noexcept;
   };
 
-  /// \brief The set of unhandled TypoExprs and their associated state.
+  /// The set of unhandled TypoExprs and their associated state.
   llvm::MapVector<TypoExpr *, TypoExprState> DelayedTypos;
 
-  /// \brief Creates a new TypoExpr AST node.
+  /// Creates a new TypoExpr AST node.
   TypoExpr *createDelayedTypo(std::unique_ptr<TypoCorrectionConsumer> TCC,
                               TypoDiagnosticGenerator TDG,
                               TypoRecoveryCallback TRC);
 
-  // \brief The set of known/encountered (unique, canonicalized) NamespaceDecls.
+  // The set of known/encountered (unique, canonicalized) NamespaceDecls.
   //
   // The boolean value will be true to indicate that the namespace was loaded
   // from an AST/PCH file, or false otherwise.
   llvm::MapVector<NamespaceDecl*, bool> KnownNamespaces;
 
-  /// \brief Whether we have already loaded known namespaces from an extenal
+  /// Whether we have already loaded known namespaces from an extenal
   /// source.
   bool LoadedExternalKnownNamespaces;
 
-  /// \brief Helper for CorrectTypo and CorrectTypoDelayed used to create and
+  /// Helper for CorrectTypo and CorrectTypoDelayed used to create and
   /// populate a new TypoCorrectionConsumer. Returns nullptr if typo correction
   /// should be skipped entirely.
   std::unique_ptr<TypoCorrectionConsumer>
@@ -3137,10 +3137,10 @@
 public:
   const TypoExprState &getTypoExprState(TypoExpr *TE) const;
 
-  /// \brief Clears the state of the given TypoExpr.
+  /// Clears the state of the given TypoExpr.
   void clearDelayedTypo(TypoExpr *TE);
 
-  /// \brief Look up a name, looking for a single declaration.  Return
+  /// Look up a name, looking for a single declaration.  Return
   /// null if the results were absent, ambiguous, or overloaded.
   ///
   /// It is preferable to use the elaborated form and explicitly handle
@@ -3230,7 +3230,7 @@
                                bool EnteringContext = false,
                                const ObjCObjectPointerType *OPT = nullptr);
 
-  /// \brief Process any TypoExprs in the given Expr and its children,
+  /// Process any TypoExprs in the given Expr and its children,
   /// generating diagnostics as appropriate and returning a new Expr if there
   /// were typos that were all successfully corrected and ExprError if one or
   /// more typos could not be corrected.
@@ -3377,7 +3377,7 @@
                                      bool isContextSensitive,
                                      bool allowArrayTypes);
 
-  /// \brief Stmt attributes - this routine is the top level dispatcher.
+  /// Stmt attributes - this routine is the top level dispatcher.
   StmtResult ProcessStmtAttributes(Stmt *Stmt, AttributeList *Attrs,
                                    SourceRange Range);
 
@@ -3520,7 +3520,7 @@
   /// warns each time an exact match is found.
   void CheckCategoryVsClassMethodMatches(ObjCCategoryImplDecl *CatIMP);
 
-  /// \brief Add the given method to the list of globally-known methods.
+  /// Add the given method to the list of globally-known methods.
   void addMethodToGlobalList(ObjCMethodList *List, ObjCMethodDecl *Method);
 
 private:
@@ -3535,7 +3535,7 @@
                                            bool instance);
 
 public:
-  /// \brief - Returns instance or factory methods in global method pool for
+  /// - Returns instance or factory methods in global method pool for
   /// given selector. It checks the desired kind first, if none is found, and
   /// parameter checkTheOther is set, it then checks the other kind. If no such
   /// method or only one method is found, function returns false; otherwise, it
@@ -3557,14 +3557,14 @@
                                      bool receiverIdOrClass);
 
 private:
-  /// \brief - Returns a selector which best matches given argument list or
+  /// - Returns a selector which best matches given argument list or
   /// nullptr if none could be found
   ObjCMethodDecl *SelectBestMethod(Selector Sel, MultiExprArg Args,
                                    bool IsInstance,
                                    SmallVectorImpl<ObjCMethodDecl*>& Methods);
 
 
-  /// \brief Record the typo correction failure and return an empty correction.
+  /// Record the typo correction failure and return an empty correction.
   TypoCorrection FailedCorrection(IdentifierInfo *Typo, SourceLocation TypoLoc,
                                   bool RecordFailure = true) {
     if (RecordFailure)
@@ -3669,7 +3669,7 @@
   StmtResult ActOnCompoundStmt(SourceLocation L, SourceLocation R,
                                ArrayRef<Stmt *> Elts, bool isStmtExpr);
 
-  /// \brief A RAII object to enter scope of a compound statement.
+  /// A RAII object to enter scope of a compound statement.
   class CompoundScopeRAII {
   public:
     CompoundScopeRAII(Sema &S, bool IsStmtExpr = false) : S(S) {
@@ -3901,7 +3901,7 @@
 
   bool ShouldWarnIfUnusedFileScopedDecl(const DeclaratorDecl *D) const;
 
-  /// \brief If it's a file scoped decl that must warn if not used, keep track
+  /// If it's a file scoped decl that must warn if not used, keep track
   /// of it.
   void MarkUnusedFileScopedDecl(const DeclaratorDecl *D);
 
@@ -3930,7 +3930,7 @@
   void DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr,
                         SourceLocation OpLoc);
 
-  /// \brief Warn if we're implicitly casting from a _Nullable pointer type to a
+  /// Warn if we're implicitly casting from a _Nullable pointer type to a
   /// _Nonnull one.
   void diagnoseNullableToNonnullConversion(QualType DstType, QualType SrcType,
                                            SourceLocation Loc);
@@ -3961,7 +3961,7 @@
   bool makeUnavailableInSystemHeader(SourceLocation loc,
                                      UnavailableAttr::ImplicitReason reason);
 
-  /// \brief Issue any -Wunguarded-availability warnings in \c FD
+  /// Issue any -Wunguarded-availability warnings in \c FD
   void DiagnoseUnguardedAvailabilityViolations(Decl *FD);
 
   //===--------------------------------------------------------------------===//
@@ -4023,7 +4023,7 @@
     TryCapture_Implicit, TryCapture_ExplicitByVal, TryCapture_ExplicitByRef
   };
 
-  /// \brief Try to capture the given variable.
+  /// Try to capture the given variable.
   ///
   /// \param Var The variable to capture.
   ///
@@ -4062,15 +4062,15 @@
                           QualType &DeclRefType,
                           const unsigned *const FunctionScopeIndexToStopAt);
 
-  /// \brief Try to capture the given variable.
+  /// Try to capture the given variable.
   bool tryCaptureVariable(VarDecl *Var, SourceLocation Loc,
                           TryCaptureKind Kind = TryCapture_Implicit,
                           SourceLocation EllipsisLoc = SourceLocation());
 
-  /// \brief Checks if the variable must be captured.
+  /// Checks if the variable must be captured.
   bool NeedToCaptureVariable(VarDecl *Var, SourceLocation Loc);
 
-  /// \brief Given a variable, determine the type that a reference to that
+  /// Given a variable, determine the type that a reference to that
   /// variable will have in the given scope.
   QualType getCapturedDeclRefType(VarDecl *Var, SourceLocation Loc);
 
@@ -4081,18 +4081,18 @@
   void MarkDeclarationsReferencedInExpr(Expr *E,
                                         bool SkipLocalVariables = false);
 
-  /// \brief Try to recover by turning the given expression into a
+  /// Try to recover by turning the given expression into a
   /// call.  Returns true if recovery was attempted or an error was
   /// emitted; this may also leave the ExprResult invalid.
   bool tryToRecoverWithCall(ExprResult &E, const PartialDiagnostic &PD,
                             bool ForceComplain = false,
                             bool (*IsPlausibleResult)(QualType) = nullptr);
 
-  /// \brief Figure out if an expression could be turned into a call.
+  /// Figure out if an expression could be turned into a call.
   bool tryExprAsCall(Expr &E, QualType &ZeroArgCallReturnTy,
                      UnresolvedSetImpl &NonTemplateOverloads);
 
-  /// \brief Conditionally issue a diagnostic based on the current
+  /// Conditionally issue a diagnostic based on the current
   /// evaluation context.
   ///
   /// \param Statement If Statement is non-null, delay reporting the
@@ -4366,7 +4366,7 @@
                                  Expr *Op);
   CastKind PrepareScalarCast(ExprResult &src, QualType destType);
 
-  /// \brief Build an altivec or OpenCL literal.
+  /// Build an altivec or OpenCL literal.
   ExprResult BuildVectorLiteral(SourceLocation LParenLoc,
                                 SourceLocation RParenLoc, Expr *E,
                                 TypeSourceInfo *TInfo);
@@ -4458,19 +4458,19 @@
 
   bool CheckCaseExpression(Expr *E);
 
-  /// \brief Describes the result of an "if-exists" condition check.
+  /// Describes the result of an "if-exists" condition check.
   enum IfExistsResult {
-    /// \brief The symbol exists.
+    /// The symbol exists.
     IER_Exists,
 
-    /// \brief The symbol does not exist.
+    /// The symbol does not exist.
     IER_DoesNotExist,
 
-    /// \brief The name is a dependent name, so the results will differ
+    /// The name is a dependent name, so the results will differ
     /// from one instantiation to the next.
     IER_Dependent,
 
-    /// \brief An error occurred.
+    /// An error occurred.
     IER_Error
   };
 
@@ -4554,7 +4554,7 @@
   llvm::SmallBitVector FullyCheckedComparisonCategories;
 
 public:
-  /// \brief Lookup the specified comparison category types in the standard
+  /// Lookup the specified comparison category types in the standard
   ///   library, an check the VarDecls possibly returned by the operator<=>
   ///   builtins for that type.
   ///
@@ -4563,17 +4563,17 @@
   QualType CheckComparisonCategoryType(ComparisonCategoryType Kind,
                                        SourceLocation Loc);
 
-  /// \brief Tests whether Ty is an instance of std::initializer_list and, if
+  /// Tests whether Ty is an instance of std::initializer_list and, if
   /// it is and Element is not NULL, assigns the element type to Element.
   bool isStdInitializerList(QualType Ty, QualType *Element);
 
-  /// \brief Looks for the std::initializer_list template and instantiates it
+  /// Looks for the std::initializer_list template and instantiates it
   /// with Element, or emits an error if it's not found.
   ///
   /// \returns The instantiated template, or null on error.
   QualType BuildStdInitializerList(QualType Element, SourceLocation Loc);
 
-  /// \brief Determine whether Ctor is an initializer-list constructor, as
+  /// Determine whether Ctor is an initializer-list constructor, as
   /// defined in [dcl.init.list]p2.
   bool isInitListConstructor(const FunctionDecl *Ctor);
 
@@ -4705,7 +4705,7 @@
   /// constructed variable.
   void FinalizeVarWithDestructor(VarDecl *VD, const RecordType *DeclInitType);
 
-  /// \brief Helper class that collects exception specifications for
+  /// Helper class that collects exception specifications for
   /// implicitly-declared special member functions.
   class ImplicitExceptionSpecification {
     // Pointer to allow copying
@@ -4732,26 +4732,26 @@
         ComputedEST = EST_DynamicNone;
     }
 
-    /// \brief Get the computed exception specification type.
+    /// Get the computed exception specification type.
     ExceptionSpecificationType getExceptionSpecType() const {
       assert(!isComputedNoexcept(ComputedEST) &&
              "noexcept(expr) should not be a possible result");
       return ComputedEST;
     }
 
-    /// \brief The number of exceptions in the exception specification.
+    /// The number of exceptions in the exception specification.
     unsigned size() const { return Exceptions.size(); }
 
-    /// \brief The set of exceptions in the exception specification.
+    /// The set of exceptions in the exception specification.
     const QualType *data() const { return Exceptions.data(); }
 
-    /// \brief Integrate another called method into the collected data.
+    /// Integrate another called method into the collected data.
     void CalledDecl(SourceLocation CallLoc, const CXXMethodDecl *Method);
 
-    /// \brief Integrate an invoked expression into the collected data.
+    /// Integrate an invoked expression into the collected data.
     void CalledExpr(Expr *E);
 
-    /// \brief Overwrite an EPI's exception specification with this
+    /// Overwrite an EPI's exception specification with this
     /// computed exception specification.
     FunctionProtoType::ExceptionSpecInfo getExceptionSpec() const {
       FunctionProtoType::ExceptionSpecInfo ESI;
@@ -4770,46 +4770,46 @@
     }
   };
 
-  /// \brief Determine what sort of exception specification a defaulted
+  /// Determine what sort of exception specification a defaulted
   /// copy constructor of a class will have.
   ImplicitExceptionSpecification
   ComputeDefaultedDefaultCtorExceptionSpec(SourceLocation Loc,
                                            CXXMethodDecl *MD);
 
-  /// \brief Determine what sort of exception specification a defaulted
+  /// Determine what sort of exception specification a defaulted
   /// default constructor of a class will have, and whether the parameter
   /// will be const.
   ImplicitExceptionSpecification
   ComputeDefaultedCopyCtorExceptionSpec(CXXMethodDecl *MD);
 
-  /// \brief Determine what sort of exception specification a defautled
+  /// Determine what sort of exception specification a defautled
   /// copy assignment operator of a class will have, and whether the
   /// parameter will be const.
   ImplicitExceptionSpecification
   ComputeDefaultedCopyAssignmentExceptionSpec(CXXMethodDecl *MD);
 
-  /// \brief Determine what sort of exception specification a defaulted move
+  /// Determine what sort of exception specification a defaulted move
   /// constructor of a class will have.
   ImplicitExceptionSpecification
   ComputeDefaultedMoveCtorExceptionSpec(CXXMethodDecl *MD);
 
-  /// \brief Determine what sort of exception specification a defaulted move
+  /// Determine what sort of exception specification a defaulted move
   /// assignment operator of a class will have.
   ImplicitExceptionSpecification
   ComputeDefaultedMoveAssignmentExceptionSpec(CXXMethodDecl *MD);
 
-  /// \brief Determine what sort of exception specification a defaulted
+  /// Determine what sort of exception specification a defaulted
   /// destructor of a class will have.
   ImplicitExceptionSpecification
   ComputeDefaultedDtorExceptionSpec(CXXMethodDecl *MD);
 
-  /// \brief Determine what sort of exception specification an inheriting
+  /// Determine what sort of exception specification an inheriting
   /// constructor of a class will have.
   ImplicitExceptionSpecification
   ComputeInheritingCtorExceptionSpec(SourceLocation Loc,
                                      CXXConstructorDecl *CD);
 
-  /// \brief Evaluate the implicit exception specification for a defaulted
+  /// Evaluate the implicit exception specification for a defaulted
   /// special member function.
   void EvaluateImplicitExceptionSpec(SourceLocation Loc, CXXMethodDecl *MD);
 
@@ -4818,7 +4818,7 @@
   ExprResult ActOnNoexceptSpec(SourceLocation NoexceptLoc, Expr *NoexceptExpr,
                                ExceptionSpecificationType &EST);
 
-  /// \brief Check the given exception-specification and update the
+  /// Check the given exception-specification and update the
   /// exception specification information with the results.
   void checkExceptionSpecification(bool IsTopLevel,
                                    ExceptionSpecificationType EST,
@@ -4828,11 +4828,11 @@
                                    SmallVectorImpl<QualType> &Exceptions,
                                    FunctionProtoType::ExceptionSpecInfo &ESI);
 
-  /// \brief Determine if we're in a case where we need to (incorrectly) eagerly
+  /// Determine if we're in a case where we need to (incorrectly) eagerly
   /// parse an exception specification to work around a libstdc++ bug.
   bool isLibstdcxxEagerExceptionSpecHack(const Declarator &D);
 
-  /// \brief Add an exception-specification to the given member function
+  /// Add an exception-specification to the given member function
   /// (or member function template). The exception-specification was parsed
   /// after the method itself was declared.
   void actOnDelayedExceptionSpecification(Decl *Method,
@@ -4844,13 +4844,13 @@
 
   class InheritedConstructorInfo;
 
-  /// \brief Determine if a special member function should have a deleted
+  /// Determine if a special member function should have a deleted
   /// definition when it is defaulted.
   bool ShouldDeleteSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM,
                                  InheritedConstructorInfo *ICI = nullptr,
                                  bool Diagnose = false);
 
-  /// \brief Declare the implicit default constructor for the given class.
+  /// Declare the implicit default constructor for the given class.
   ///
   /// \param ClassDecl The class declaration into which the implicit
   /// default constructor will be added.
@@ -4864,7 +4864,7 @@
   void DefineImplicitDefaultConstructor(SourceLocation CurrentLocation,
                                         CXXConstructorDecl *Constructor);
 
-  /// \brief Declare the implicit destructor for the given class.
+  /// Declare the implicit destructor for the given class.
   ///
   /// \param ClassDecl The class declaration into which the implicit
   /// destructor will be added.
@@ -4877,18 +4877,18 @@
   void DefineImplicitDestructor(SourceLocation CurrentLocation,
                                 CXXDestructorDecl *Destructor);
 
-  /// \brief Build an exception spec for destructors that don't have one.
+  /// Build an exception spec for destructors that don't have one.
   ///
   /// C++11 says that user-defined destructors with no exception spec get one
   /// that looks as if the destructor was implicitly declared.
   void AdjustDestructorExceptionSpec(CXXRecordDecl *ClassDecl,
                                      CXXDestructorDecl *Destructor);
 
-  /// \brief Define the specified inheriting constructor.
+  /// Define the specified inheriting constructor.
   void DefineInheritingConstructor(SourceLocation UseLoc,
                                    CXXConstructorDecl *Constructor);
 
-  /// \brief Declare the implicit copy constructor for the given class.
+  /// Declare the implicit copy constructor for the given class.
   ///
   /// \param ClassDecl The class declaration into which the implicit
   /// copy constructor will be added.
@@ -4901,7 +4901,7 @@
   void DefineImplicitCopyConstructor(SourceLocation CurrentLocation,
                                      CXXConstructorDecl *Constructor);
 
-  /// \brief Declare the implicit move constructor for the given class.
+  /// Declare the implicit move constructor for the given class.
   ///
   /// \param ClassDecl The Class declaration into which the implicit
   /// move constructor will be added.
@@ -4915,7 +4915,7 @@
   void DefineImplicitMoveConstructor(SourceLocation CurrentLocation,
                                      CXXConstructorDecl *Constructor);
 
-  /// \brief Declare the implicit copy assignment operator for the given class.
+  /// Declare the implicit copy assignment operator for the given class.
   ///
   /// \param ClassDecl The class declaration into which the implicit
   /// copy assignment operator will be added.
@@ -4923,11 +4923,11 @@
   /// \returns The implicitly-declared copy assignment operator.
   CXXMethodDecl *DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl);
 
-  /// \brief Defines an implicitly-declared copy assignment operator.
+  /// Defines an implicitly-declared copy assignment operator.
   void DefineImplicitCopyAssignment(SourceLocation CurrentLocation,
                                     CXXMethodDecl *MethodDecl);
 
-  /// \brief Declare the implicit move assignment operator for the given class.
+  /// Declare the implicit move assignment operator for the given class.
   ///
   /// \param ClassDecl The Class declaration into which the implicit
   /// move assignment operator will be added.
@@ -4936,32 +4936,32 @@
   /// wasn't declared.
   CXXMethodDecl *DeclareImplicitMoveAssignment(CXXRecordDecl *ClassDecl);
 
-  /// \brief Defines an implicitly-declared move assignment operator.
+  /// Defines an implicitly-declared move assignment operator.
   void DefineImplicitMoveAssignment(SourceLocation CurrentLocation,
                                     CXXMethodDecl *MethodDecl);
 
-  /// \brief Force the declaration of any implicitly-declared members of this
+  /// Force the declaration of any implicitly-declared members of this
   /// class.
   void ForceDeclarationOfImplicitMembers(CXXRecordDecl *Class);
 
-  /// \brief Check a completed declaration of an implicit special member.
+  /// Check a completed declaration of an implicit special member.
   void CheckImplicitSpecialMemberDeclaration(Scope *S, FunctionDecl *FD);
 
-  /// \brief Determine whether the given function is an implicitly-deleted
+  /// Determine whether the given function is an implicitly-deleted
   /// special member function.
   bool isImplicitlyDeleted(FunctionDecl *FD);
 
-  /// \brief Check whether 'this' shows up in the type of a static member
+  /// Check whether 'this' shows up in the type of a static member
   /// function after the (naturally empty) cv-qualifier-seq would be.
   ///
   /// \returns true if an error occurred.
   bool checkThisInStaticMemberFunctionType(CXXMethodDecl *Method);
 
-  /// \brief Whether this' shows up in the exception specification of a static
+  /// Whether this' shows up in the exception specification of a static
   /// member function.
   bool checkThisInStaticMemberFunctionExceptionSpec(CXXMethodDecl *Method);
 
-  /// \brief Check whether 'this' shows up in the attributes of the given
+  /// Check whether 'this' shows up in the attributes of the given
   /// static member function.
   ///
   /// \returns true if an error occurred.
@@ -5043,7 +5043,7 @@
                             void *TyOrExpr,
                             SourceLocation RParenLoc);
 
-  /// \brief Handle a C++1z fold-expression: ( expr op ... op expr ).
+  /// Handle a C++1z fold-expression: ( expr op ... op expr ).
   ExprResult ActOnCXXFoldExpr(SourceLocation LParenLoc, Expr *LHS,
                               tok::TokenKind Operator,
                               SourceLocation EllipsisLoc, Expr *RHS,
@@ -5058,17 +5058,17 @@
   //// ActOnCXXThis -  Parse 'this' pointer.
   ExprResult ActOnCXXThis(SourceLocation loc);
 
-  /// \brief Try to retrieve the type of the 'this' pointer.
+  /// Try to retrieve the type of the 'this' pointer.
   ///
   /// \returns The type of 'this', if possible. Otherwise, returns a NULL type.
   QualType getCurrentThisType();
 
-  /// \brief When non-NULL, the C++ 'this' expression is allowed despite the
+  /// When non-NULL, the C++ 'this' expression is allowed despite the
   /// current context not being a non-static member function. In such cases,
   /// this provides the type used for 'this'.
   QualType CXXThisTypeOverride;
 
-  /// \brief RAII object used to temporarily allow the C++ 'this' expression
+  /// RAII object used to temporarily allow the C++ 'this' expression
   /// to be used, with the given qualifiers on the current class type.
   class CXXThisScopeRAII {
     Sema &S;
@@ -5076,7 +5076,7 @@
     bool Enabled;
 
   public:
-    /// \brief Introduce a new scope where 'this' may be allowed (when enabled),
+    /// Introduce a new scope where 'this' may be allowed (when enabled),
     /// using the given declaration (which is either a class template or a
     /// class) along with the given qualifiers.
     /// along with the qualifiers placed on '*this'.
@@ -5086,7 +5086,7 @@
     ~CXXThisScopeRAII();
   };
 
-  /// \brief Make sure the value of 'this' is actually available in the current
+  /// Make sure the value of 'this' is actually available in the current
   /// context, if it is a potentially evaluated context.
   ///
   /// \param Loc The location at which the capture of 'this' occurs.
@@ -5106,7 +5106,7 @@
       const unsigned *const FunctionScopeIndexToStopAt = nullptr,
       bool ByCopy = false);
 
-  /// \brief Determine whether the given type is the type of *this that is used
+  /// Determine whether the given type is the type of *this that is used
   /// outside of the body of a member function for a type that is currently
   /// being defined.
   bool isThisOutsideMemberFunctionBody(QualType BaseType);
@@ -5168,19 +5168,19 @@
   bool CheckAllocatedType(QualType AllocType, SourceLocation Loc,
                           SourceRange R);
 
-  /// \brief The scope in which to find allocation functions.
+  /// The scope in which to find allocation functions.
   enum AllocationFunctionScope {
-    /// \brief Only look for allocation functions in the global scope.
+    /// Only look for allocation functions in the global scope.
     AFS_Global,
-    /// \brief Only look for allocation functions in the scope of the
+    /// Only look for allocation functions in the scope of the
     /// allocated class.
     AFS_Class,
-    /// \brief Look for allocation functions in both the global scope
+    /// Look for allocation functions in both the global scope
     /// and in the scope of the allocated class.
     AFS_Both
   };
 
-  /// \brief Finds the overloads of operator new and delete that are appropriate
+  /// Finds the overloads of operator new and delete that are appropriate
   /// for the allocation.
   bool FindAllocationFunctions(SourceLocation StartLoc, SourceRange Range,
                                AllocationFunctionScope NewScope,
@@ -5218,7 +5218,7 @@
   ExprResult BuildCXXNoexceptExpr(SourceLocation KeyLoc, Expr *Operand,
                                   SourceLocation RParen);
 
-  /// \brief Parsed one of the type trait support pseudo-functions.
+  /// Parsed one of the type trait support pseudo-functions.
   ExprResult ActOnTypeTrait(TypeTrait Kind, SourceLocation KWLoc,
                             ArrayRef<ParsedType> Args,
                             SourceLocation RParenLoc);
@@ -5313,7 +5313,7 @@
   bool isDependentScopeSpecifier(const CXXScopeSpec &SS);
   CXXRecordDecl *getCurrentInstantiationOf(NestedNameSpecifier *NNS);
 
-  /// \brief The parser has parsed a global nested-name-specifier '::'.
+  /// The parser has parsed a global nested-name-specifier '::'.
   ///
   /// \param CCLoc The location of the '::'.
   ///
@@ -5323,7 +5323,7 @@
   /// \returns true if an error occurred, false otherwise.
   bool ActOnCXXGlobalScopeSpecifier(SourceLocation CCLoc, CXXScopeSpec &SS);
 
-  /// \brief The parser has parsed a '__super' nested-name-specifier.
+  /// The parser has parsed a '__super' nested-name-specifier.
   ///
   /// \param SuperLoc The location of the '__super' keyword.
   ///
@@ -5340,23 +5340,23 @@
                                        bool *CanCorrect = nullptr);
   NamedDecl *FindFirstQualifierInScope(Scope *S, NestedNameSpecifier *NNS);
 
-  /// \brief Keeps information about an identifier in a nested-name-spec.
+  /// Keeps information about an identifier in a nested-name-spec.
   ///
   struct NestedNameSpecInfo {
-    /// \brief The type of the object, if we're parsing nested-name-specifier in
+    /// The type of the object, if we're parsing nested-name-specifier in
     /// a member access expression.
     ParsedType ObjectType;
 
-    /// \brief The identifier preceding the '::'.
+    /// The identifier preceding the '::'.
     IdentifierInfo *Identifier;
 
-    /// \brief The location of the identifier.
+    /// The location of the identifier.
     SourceLocation IdentifierLoc;
 
-    /// \brief The location of the '::'.
+    /// The location of the '::'.
     SourceLocation CCLoc;
 
-    /// \brief Creates info object for the most typical case.
+    /// Creates info object for the most typical case.
     NestedNameSpecInfo(IdentifierInfo *II, SourceLocation IdLoc,
              SourceLocation ColonColonLoc, ParsedType ObjectType = ParsedType())
       : ObjectType(ObjectType), Identifier(II), IdentifierLoc(IdLoc),
@@ -5382,7 +5382,7 @@
                                    bool *IsCorrectedToColon = nullptr,
                                    bool OnlyNamespace = false);
 
-  /// \brief The parser has parsed a nested-name-specifier 'identifier::'.
+  /// The parser has parsed a nested-name-specifier 'identifier::'.
   ///
   /// \param S The scope in which this nested-name-specifier occurs.
   ///
@@ -5425,7 +5425,7 @@
                                  NestedNameSpecInfo &IdInfo,
                                  bool EnteringContext);
 
-  /// \brief The parser has parsed a nested-name-specifier
+  /// The parser has parsed a nested-name-specifier
   /// 'template[opt] template-name < template-args >::'.
   ///
   /// \param S The scope in which this nested-name-specifier occurs.
@@ -5459,7 +5459,7 @@
                                    SourceLocation CCLoc,
                                    bool EnteringContext);
 
-  /// \brief Given a C++ nested-name-specifier, produce an annotation value
+  /// Given a C++ nested-name-specifier, produce an annotation value
   /// that the parser can use later to reconstruct the given
   /// nested-name-specifier.
   ///
@@ -5469,7 +5469,7 @@
   /// nested-name-specifier \p SS.
   void *SaveNestedNameSpecifierAnnotation(CXXScopeSpec &SS);
 
-  /// \brief Given an annotation pointer for a nested-name-specifier, restore
+  /// Given an annotation pointer for a nested-name-specifier, restore
   /// the nested-name-specifier structure.
   ///
   /// \param Annotation The annotation pointer, produced by
@@ -5511,13 +5511,13 @@
   /// initializer for the declaration 'Dcl'.
   void ActOnCXXExitDeclInitializer(Scope *S, Decl *Dcl);
 
-  /// \brief Create a new lambda closure type.
+  /// Create a new lambda closure type.
   CXXRecordDecl *createLambdaClosureType(SourceRange IntroducerRange,
                                          TypeSourceInfo *Info,
                                          bool KnownDependent,
                                          LambdaCaptureDefault CaptureDefault);
 
-  /// \brief Start the definition of a lambda expression.
+  /// Start the definition of a lambda expression.
   CXXMethodDecl *startLambdaDefinition(CXXRecordDecl *Class,
                                        SourceRange IntroducerRange,
                                        TypeSourceInfo *MethodType,
@@ -5525,7 +5525,7 @@
                                        ArrayRef<ParmVarDecl *> Params,
                                        bool IsConstexprSpecified);
 
-  /// \brief Endow the lambda scope info with the relevant properties.
+  /// Endow the lambda scope info with the relevant properties.
   void buildLambdaScope(sema::LambdaScopeInfo *LSI,
                         CXXMethodDecl *CallOperator,
                         SourceRange IntroducerRange,
@@ -5535,7 +5535,7 @@
                         bool ExplicitResultType,
                         bool Mutable);
 
-  /// \brief Perform initialization analysis of the init-capture and perform
+  /// Perform initialization analysis of the init-capture and perform
   /// any implicit conversions such as an lvalue-to-rvalue conversion if
   /// not being used to initialize a reference.
   ParsedType actOnLambdaInitCaptureInitialization(
@@ -5548,7 +5548,7 @@
                                                 IdentifierInfo *Id,
                                                 bool DirectInit, Expr *&Init);
 
-  /// \brief Create a dummy variable within the declcontext of the lambda's
+  /// Create a dummy variable within the declcontext of the lambda's
   ///  call operator, for name lookup purposes for a lambda init capture.
   ///
   ///  CodeGen handles emission of lambda captures, ignoring these dummy
@@ -5558,17 +5558,17 @@
                                           IdentifierInfo *Id,
                                           unsigned InitStyle, Expr *Init);
 
-  /// \brief Build the implicit field for an init-capture.
+  /// Build the implicit field for an init-capture.
   FieldDecl *buildInitCaptureField(sema::LambdaScopeInfo *LSI, VarDecl *Var);
 
-  /// \brief Note that we have finished the explicit captures for the
+  /// Note that we have finished the explicit captures for the
   /// given lambda.
   void finishLambdaExplicitCaptures(sema::LambdaScopeInfo *LSI);
 
-  /// \brief Introduce the lambda parameters into scope.
+  /// Introduce the lambda parameters into scope.
   void addLambdaParameters(CXXMethodDecl *CallOperator, Scope *CurScope);
 
-  /// \brief Deduce a block or lambda's return type based on the return
+  /// Deduce a block or lambda's return type based on the return
   /// statements present in the body.
   void deduceClosureReturnType(sema::CapturingScopeInfo &CSI);
 
@@ -5589,13 +5589,13 @@
   ExprResult ActOnLambdaExpr(SourceLocation StartLoc, Stmt *Body,
                              Scope *CurScope);
 
-  /// \brief Does copying/destroying the captured variable have side effects?
+  /// Does copying/destroying the captured variable have side effects?
   bool CaptureHasSideEffects(const sema::Capture &From);
 
-  /// \brief Diagnose if an explicit lambda capture is unused.
+  /// Diagnose if an explicit lambda capture is unused.
   void DiagnoseUnusedLambdaCapture(const sema::Capture &From);
 
-  /// \brief Complete a lambda-expression having processed and attached the
+  /// Complete a lambda-expression having processed and attached the
   /// lambda body.
   ExprResult BuildLambdaExpr(SourceLocation StartLoc, SourceLocation EndLoc,
                              sema::LambdaScopeInfo *LSI);
@@ -5605,7 +5605,7 @@
   QualType
   getLambdaConversionFunctionResultType(const FunctionProtoType *CallOpType);
 
-  /// \brief Define the "body" of the conversion from a lambda object to a
+  /// Define the "body" of the conversion from a lambda object to a
   /// function pointer.
   ///
   /// This routine doesn't actually define a sensible body; rather, it fills
@@ -5615,7 +5615,7 @@
   void DefineImplicitLambdaToFunctionPointerConversion(
          SourceLocation CurrentLoc, CXXConversionDecl *Conv);
 
-  /// \brief Define the "body" of the conversion from a lambda object to a
+  /// Define the "body" of the conversion from a lambda object to a
   /// block pointer.
   ///
   /// This routine doesn't actually define a sensible body; rather, it fills
@@ -5784,30 +5784,30 @@
   void MarkBaseAndMemberDestructorsReferenced(SourceLocation Loc,
                                               CXXRecordDecl *Record);
 
-  /// \brief The list of classes whose vtables have been used within
+  /// The list of classes whose vtables have been used within
   /// this translation unit, and the source locations at which the
   /// first use occurred.
   typedef std::pair<CXXRecordDecl*, SourceLocation> VTableUse;
 
-  /// \brief The list of vtables that are required but have not yet been
+  /// The list of vtables that are required but have not yet been
   /// materialized.
   SmallVector<VTableUse, 16> VTableUses;
 
-  /// \brief The set of classes whose vtables have been used within
+  /// The set of classes whose vtables have been used within
   /// this translation unit, and a bit that will be true if the vtable is
   /// required to be emitted (otherwise, it should be emitted only if needed
   /// by code generation).
   llvm::DenseMap<CXXRecordDecl *, bool> VTablesUsed;
 
-  /// \brief Load any externally-stored vtable uses.
+  /// Load any externally-stored vtable uses.
   void LoadExternalVTableUses();
 
-  /// \brief Note that the vtable for the given class was used at the
+  /// Note that the vtable for the given class was used at the
   /// given location.
   void MarkVTableUsed(SourceLocation Loc, CXXRecordDecl *Class,
                       bool DefinitionRequired = false);
 
-  /// \brief Mark the exception specifications of all virtual member functions
+  /// Mark the exception specifications of all virtual member functions
   /// in the given class as needed.
   void MarkVirtualMemberExceptionSpecsNeeded(SourceLocation Loc,
                                              const CXXRecordDecl *RD);
@@ -5817,7 +5817,7 @@
   void MarkVirtualMembersReferenced(SourceLocation Loc,
                                     const CXXRecordDecl *RD);
 
-  /// \brief Define all of the vtables that have been used in this
+  /// Define all of the vtables that have been used in this
   /// translation unit and reference any virtual members used by those
   /// vtables.
   ///
@@ -5831,7 +5831,7 @@
                             ArrayRef<CXXCtorInitializer*> MemInits,
                             bool AnyErrors);
 
-  /// \brief Check class-level dllimport/dllexport attribute. The caller must
+  /// Check class-level dllimport/dllexport attribute. The caller must
   /// ensure that referenceDLLExportedClassMethods is called some point later
   /// when all outer classes of Class are complete.
   void checkClassLevelDLLAttribute(CXXRecordDecl *Class);
@@ -6047,7 +6047,7 @@
 
   void HandleDelayedAccessCheck(sema::DelayedDiagnostic &DD, Decl *Ctx);
 
-  /// \brief When true, access checking violations are treated as SFINAE
+  /// When true, access checking violations are treated as SFINAE
   /// failures rather than hard errors.
   bool AccessCheckingSFINAE;
 
@@ -6165,7 +6165,7 @@
                              SourceLocation RAngleLoc,
                              Expr *RequiresClause);
 
-  /// \brief The context in which we are checking a template parameter list.
+  /// The context in which we are checking a template parameter list.
   enum TemplateParamListContext {
     TPC_ClassTemplate,
     TPC_VarTemplate,
@@ -6223,7 +6223,7 @@
                       bool IsCtorOrDtorName = false,
                       bool IsClassName = false);
 
-  /// \brief Parsed an elaborated-type-specifier that refers to a template-id,
+  /// Parsed an elaborated-type-specifier that refers to a template-id,
   /// such as \c class T::template apply<U>.
   TypeResult ActOnTagTemplateIdType(TagUseKind TUK,
                                     TypeSpecifierType TagSpec,
@@ -6349,18 +6349,18 @@
                                             &Converted,
                                           bool &HasDefaultArg);
 
-  /// \brief Specifies the context in which a particular template
+  /// Specifies the context in which a particular template
   /// argument is being checked.
   enum CheckTemplateArgumentKind {
-    /// \brief The template argument was specified in the code or was
+    /// The template argument was specified in the code or was
     /// instantiated with some deduced template arguments.
     CTAK_Specified,
 
-    /// \brief The template argument was deduced via template argument
+    /// The template argument was deduced via template argument
     /// deduction.
     CTAK_Deduced,
 
-    /// \brief The template argument was deduced from an array bound
+    /// The template argument was deduced from an array bound
     /// via template argument deduction.
     CTAK_DeducedFromArrayBound
   };
@@ -6374,7 +6374,7 @@
                            SmallVectorImpl<TemplateArgument> &Converted,
                              CheckTemplateArgumentKind CTAK = CTAK_Specified);
 
-  /// \brief Check that the given template arguments can be be provided to
+  /// Check that the given template arguments can be be provided to
   /// the given template, converting the arguments along the way.
   ///
   /// \param Template The template to which the template arguments are being
@@ -6427,10 +6427,10 @@
   BuildExpressionFromIntegralTemplateArgument(const TemplateArgument &Arg,
                                               SourceLocation Loc);
 
-  /// \brief Enumeration describing how template parameter lists are compared
+  /// Enumeration describing how template parameter lists are compared
   /// for equality.
   enum TemplateParameterListEqualKind {
-    /// \brief We are matching the template parameter lists of two templates
+    /// We are matching the template parameter lists of two templates
     /// that might be redeclarations.
     ///
     /// \code
@@ -6439,7 +6439,7 @@
     /// \endcode
     TPL_TemplateMatch,
 
-    /// \brief We are matching the template parameter lists of two template
+    /// We are matching the template parameter lists of two template
     /// template parameters as part of matching the template parameter lists
     /// of two templates that might be redeclarations.
     ///
@@ -6449,7 +6449,7 @@
     /// \endcode
     TPL_TemplateTemplateParmMatch,
 
-    /// \brief We are matching the template parameter lists of a template
+    /// We are matching the template parameter lists of a template
     /// template argument against the template parameter lists of a template
     /// template parameter.
     ///
@@ -6470,7 +6470,7 @@
 
   bool CheckTemplateDeclScope(Scope *S, TemplateParameterList *TemplateParams);
 
-  /// \brief Called when the parser has parsed a C++ typename
+  /// Called when the parser has parsed a C++ typename
   /// specifier, e.g., "typename T::type".
   ///
   /// \param S The scope in which this typename type occurs.
@@ -6483,7 +6483,7 @@
                     const CXXScopeSpec &SS, const IdentifierInfo &II,
                     SourceLocation IdLoc);
 
-  /// \brief Called when the parser has parsed a C++ typename
+  /// Called when the parser has parsed a C++ typename
   /// specifier that ends in a template-id, e.g.,
   /// "typename MetaFun::template apply<T1, T2>".
   ///
@@ -6540,74 +6540,74 @@
   /// location. Useful for error recovery.
   bool isUnexpandedParameterPackPermitted();
 
-  /// \brief The context in which an unexpanded parameter pack is
+  /// The context in which an unexpanded parameter pack is
   /// being diagnosed.
   ///
   /// Note that the values of this enumeration line up with the first
   /// argument to the \c err_unexpanded_parameter_pack diagnostic.
   enum UnexpandedParameterPackContext {
-    /// \brief An arbitrary expression.
+    /// An arbitrary expression.
     UPPC_Expression = 0,
 
-    /// \brief The base type of a class type.
+    /// The base type of a class type.
     UPPC_BaseType,
 
-    /// \brief The type of an arbitrary declaration.
+    /// The type of an arbitrary declaration.
     UPPC_DeclarationType,
 
-    /// \brief The type of a data member.
+    /// The type of a data member.
     UPPC_DataMemberType,
 
-    /// \brief The size of a bit-field.
+    /// The size of a bit-field.
     UPPC_BitFieldWidth,
 
-    /// \brief The expression in a static assertion.
+    /// The expression in a static assertion.
     UPPC_StaticAssertExpression,
 
-    /// \brief The fixed underlying type of an enumeration.
+    /// The fixed underlying type of an enumeration.
     UPPC_FixedUnderlyingType,
 
-    /// \brief The enumerator value.
+    /// The enumerator value.
     UPPC_EnumeratorValue,
 
-    /// \brief A using declaration.
+    /// A using declaration.
     UPPC_UsingDeclaration,
 
-    /// \brief A friend declaration.
+    /// A friend declaration.
     UPPC_FriendDeclaration,
 
-    /// \brief A declaration qualifier.
+    /// A declaration qualifier.
     UPPC_DeclarationQualifier,
 
-    /// \brief An initializer.
+    /// An initializer.
     UPPC_Initializer,
 
-    /// \brief A default argument.
+    /// A default argument.
     UPPC_DefaultArgument,
 
-    /// \brief The type of a non-type template parameter.
+    /// The type of a non-type template parameter.
     UPPC_NonTypeTemplateParameterType,
 
-    /// \brief The type of an exception.
+    /// The type of an exception.
     UPPC_ExceptionType,
 
-    /// \brief Partial specialization.
+    /// Partial specialization.
     UPPC_PartialSpecialization,
 
-    /// \brief Microsoft __if_exists.
+    /// Microsoft __if_exists.
     UPPC_IfExists,
 
-    /// \brief Microsoft __if_not_exists.
+    /// Microsoft __if_not_exists.
     UPPC_IfNotExists,
 
-    /// \brief Lambda expression.
+    /// Lambda expression.
     UPPC_Lambda,
 
-    /// \brief Block expression,
+    /// Block expression,
     UPPC_Block
   };
 
-  /// \brief Diagnose unexpanded parameter packs.
+  /// Diagnose unexpanded parameter packs.
   ///
   /// \param Loc The location at which we should emit the diagnostic.
   ///
@@ -6621,7 +6621,7 @@
                                         UnexpandedParameterPackContext UPPC,
                                   ArrayRef<UnexpandedParameterPack> Unexpanded);
 
-  /// \brief If the given type contains an unexpanded parameter pack,
+  /// If the given type contains an unexpanded parameter pack,
   /// diagnose the error.
   ///
   /// \param Loc The source location where a diagnostc should be emitted.
@@ -6633,7 +6633,7 @@
   bool DiagnoseUnexpandedParameterPack(SourceLocation Loc, TypeSourceInfo *T,
                                        UnexpandedParameterPackContext UPPC);
 
-  /// \brief If the given expression contains an unexpanded parameter
+  /// If the given expression contains an unexpanded parameter
   /// pack, diagnose the error.
   ///
   /// \param E The expression that is being checked for unexpanded
@@ -6643,7 +6643,7 @@
   bool DiagnoseUnexpandedParameterPack(Expr *E,
                        UnexpandedParameterPackContext UPPC = UPPC_Expression);
 
-  /// \brief If the given nested-name-specifier contains an unexpanded
+  /// If the given nested-name-specifier contains an unexpanded
   /// parameter pack, diagnose the error.
   ///
   /// \param SS The nested-name-specifier that is being checked for
@@ -6653,7 +6653,7 @@
   bool DiagnoseUnexpandedParameterPack(const CXXScopeSpec &SS,
                                        UnexpandedParameterPackContext UPPC);
 
-  /// \brief If the given name contains an unexpanded parameter pack,
+  /// If the given name contains an unexpanded parameter pack,
   /// diagnose the error.
   ///
   /// \param NameInfo The name (with source location information) that
@@ -6663,7 +6663,7 @@
   bool DiagnoseUnexpandedParameterPack(const DeclarationNameInfo &NameInfo,
                                        UnexpandedParameterPackContext UPPC);
 
-  /// \brief If the given template name contains an unexpanded parameter pack,
+  /// If the given template name contains an unexpanded parameter pack,
   /// diagnose the error.
   ///
   /// \param Loc The location of the template name.
@@ -6676,7 +6676,7 @@
                                        TemplateName Template,
                                        UnexpandedParameterPackContext UPPC);
 
-  /// \brief If the given template argument contains an unexpanded parameter
+  /// If the given template argument contains an unexpanded parameter
   /// pack, diagnose the error.
   ///
   /// \param Arg The template argument that is being checked for unexpanded
@@ -6686,7 +6686,7 @@
   bool DiagnoseUnexpandedParameterPack(TemplateArgumentLoc Arg,
                                        UnexpandedParameterPackContext UPPC);
 
-  /// \brief Collect the set of unexpanded parameter packs within the given
+  /// Collect the set of unexpanded parameter packs within the given
   /// template argument.
   ///
   /// \param Arg The template argument that will be traversed to find
@@ -6694,7 +6694,7 @@
   void collectUnexpandedParameterPacks(TemplateArgument Arg,
                    SmallVectorImpl<UnexpandedParameterPack> &Unexpanded);
 
-  /// \brief Collect the set of unexpanded parameter packs within the given
+  /// Collect the set of unexpanded parameter packs within the given
   /// template argument.
   ///
   /// \param Arg The template argument that will be traversed to find
@@ -6702,7 +6702,7 @@
   void collectUnexpandedParameterPacks(TemplateArgumentLoc Arg,
                     SmallVectorImpl<UnexpandedParameterPack> &Unexpanded);
 
-  /// \brief Collect the set of unexpanded parameter packs within the given
+  /// Collect the set of unexpanded parameter packs within the given
   /// type.
   ///
   /// \param T The type that will be traversed to find
@@ -6710,7 +6710,7 @@
   void collectUnexpandedParameterPacks(QualType T,
                    SmallVectorImpl<UnexpandedParameterPack> &Unexpanded);
 
-  /// \brief Collect the set of unexpanded parameter packs within the given
+  /// Collect the set of unexpanded parameter packs within the given
   /// type.
   ///
   /// \param TL The type that will be traversed to find
@@ -6718,7 +6718,7 @@
   void collectUnexpandedParameterPacks(TypeLoc TL,
                    SmallVectorImpl<UnexpandedParameterPack> &Unexpanded);
 
-  /// \brief Collect the set of unexpanded parameter packs within the given
+  /// Collect the set of unexpanded parameter packs within the given
   /// nested-name-specifier.
   ///
   /// \param NNS The nested-name-specifier that will be traversed to find
@@ -6726,7 +6726,7 @@
   void collectUnexpandedParameterPacks(NestedNameSpecifierLoc NNS,
                          SmallVectorImpl<UnexpandedParameterPack> &Unexpanded);
 
-  /// \brief Collect the set of unexpanded parameter packs within the given
+  /// Collect the set of unexpanded parameter packs within the given
   /// name.
   ///
   /// \param NameInfo The name that will be traversed to find
@@ -6734,7 +6734,7 @@
   void collectUnexpandedParameterPacks(const DeclarationNameInfo &NameInfo,
                          SmallVectorImpl<UnexpandedParameterPack> &Unexpanded);
 
-  /// \brief Invoked when parsing a template argument followed by an
+  /// Invoked when parsing a template argument followed by an
   /// ellipsis, which creates a pack expansion.
   ///
   /// \param Arg The template argument preceding the ellipsis, which
@@ -6744,7 +6744,7 @@
   ParsedTemplateArgument ActOnPackExpansion(const ParsedTemplateArgument &Arg,
                                             SourceLocation EllipsisLoc);
 
-  /// \brief Invoked when parsing a type followed by an ellipsis, which
+  /// Invoked when parsing a type followed by an ellipsis, which
   /// creates a pack expansion.
   ///
   /// \param Type The type preceding the ellipsis, which will become
@@ -6753,20 +6753,20 @@
   /// \param EllipsisLoc The location of the ellipsis.
   TypeResult ActOnPackExpansion(ParsedType Type, SourceLocation EllipsisLoc);
 
-  /// \brief Construct a pack expansion type from the pattern of the pack
+  /// Construct a pack expansion type from the pattern of the pack
   /// expansion.
   TypeSourceInfo *CheckPackExpansion(TypeSourceInfo *Pattern,
                                      SourceLocation EllipsisLoc,
                                      Optional<unsigned> NumExpansions);
 
-  /// \brief Construct a pack expansion type from the pattern of the pack
+  /// Construct a pack expansion type from the pattern of the pack
   /// expansion.
   QualType CheckPackExpansion(QualType Pattern,
                               SourceRange PatternRange,
                               SourceLocation EllipsisLoc,
                               Optional<unsigned> NumExpansions);
 
-  /// \brief Invoked when parsing an expression followed by an ellipsis, which
+  /// Invoked when parsing an expression followed by an ellipsis, which
   /// creates a pack expansion.
   ///
   /// \param Pattern The expression preceding the ellipsis, which will become
@@ -6775,7 +6775,7 @@
   /// \param EllipsisLoc The location of the ellipsis.
   ExprResult ActOnPackExpansion(Expr *Pattern, SourceLocation EllipsisLoc);
 
-  /// \brief Invoked when parsing an expression followed by an ellipsis, which
+  /// Invoked when parsing an expression followed by an ellipsis, which
   /// creates a pack expansion.
   ///
   /// \param Pattern The expression preceding the ellipsis, which will become
@@ -6785,7 +6785,7 @@
   ExprResult CheckPackExpansion(Expr *Pattern, SourceLocation EllipsisLoc,
                                 Optional<unsigned> NumExpansions);
 
-  /// \brief Determine whether we could expand a pack expansion with the
+  /// Determine whether we could expand a pack expansion with the
   /// given set of parameter packs into separate arguments by repeatedly
   /// transforming the pattern.
   ///
@@ -6827,7 +6827,7 @@
                                        bool &RetainExpansion,
                                        Optional<unsigned> &NumExpansions);
 
-  /// \brief Determine the number of arguments in the given pack expansion
+  /// Determine the number of arguments in the given pack expansion
   /// type.
   ///
   /// This routine assumes that the number of arguments in the expansion is
@@ -6837,7 +6837,7 @@
   Optional<unsigned> getNumArgumentsInExpansion(QualType T,
       const MultiLevelTemplateArgumentList &TemplateArgs);
 
-  /// \brief Determine whether the given declarator contains any unexpanded
+  /// Determine whether the given declarator contains any unexpanded
   /// parameter packs.
   ///
   /// This routine is used by the parser to disambiguate function declarators
@@ -6854,7 +6854,7 @@
   /// false otherwise.
   bool containsUnexpandedParameterPacks(Declarator &D);
 
-  /// \brief Returns the pattern of the pack expansion for a template argument.
+  /// Returns the pattern of the pack expansion for a template argument.
   ///
   /// \param OrigLoc The template argument to expand.
   ///
@@ -6886,7 +6886,7 @@
   QualType adjustCCAndNoReturn(QualType ArgFunctionType, QualType FunctionType,
                                bool AdjustExceptionSpec = false);
 
-  /// \brief Describes the result of template argument deduction.
+  /// Describes the result of template argument deduction.
   ///
   /// The TemplateDeductionResult enumeration describes the result of
   /// template argument deduction, as returned from
@@ -6896,51 +6896,51 @@
   /// list (if successful) or the specific template parameters or
   /// deduced arguments that were involved in the failure.
   enum TemplateDeductionResult {
-    /// \brief Template argument deduction was successful.
+    /// Template argument deduction was successful.
     TDK_Success = 0,
-    /// \brief The declaration was invalid; do nothing.
+    /// The declaration was invalid; do nothing.
     TDK_Invalid,
-    /// \brief Template argument deduction exceeded the maximum template
+    /// Template argument deduction exceeded the maximum template
     /// instantiation depth (which has already been diagnosed).
     TDK_InstantiationDepth,
-    /// \brief Template argument deduction did not deduce a value
+    /// Template argument deduction did not deduce a value
     /// for every template parameter.
     TDK_Incomplete,
-    /// \brief Template argument deduction produced inconsistent
+    /// Template argument deduction produced inconsistent
     /// deduced values for the given template parameter.
     TDK_Inconsistent,
-    /// \brief Template argument deduction failed due to inconsistent
+    /// Template argument deduction failed due to inconsistent
     /// cv-qualifiers on a template parameter type that would
     /// otherwise be deduced, e.g., we tried to deduce T in "const T"
     /// but were given a non-const "X".
     TDK_Underqualified,
-    /// \brief Substitution of the deduced template argument values
+    /// Substitution of the deduced template argument values
     /// resulted in an error.
     TDK_SubstitutionFailure,
-    /// \brief After substituting deduced template arguments, a dependent
+    /// After substituting deduced template arguments, a dependent
     /// parameter type did not match the corresponding argument.
     TDK_DeducedMismatch,
-    /// \brief After substituting deduced template arguments, an element of
+    /// After substituting deduced template arguments, an element of
     /// a dependent parameter type did not match the corresponding element
     /// of the corresponding argument (when deducing from an initializer list).
     TDK_DeducedMismatchNested,
-    /// \brief A non-depnedent component of the parameter did not match the
+    /// A non-depnedent component of the parameter did not match the
     /// corresponding component of the argument.
     TDK_NonDeducedMismatch,
-    /// \brief When performing template argument deduction for a function
+    /// When performing template argument deduction for a function
     /// template, there were too many call arguments.
     TDK_TooManyArguments,
-    /// \brief When performing template argument deduction for a function
+    /// When performing template argument deduction for a function
     /// template, there were too few call arguments.
     TDK_TooFewArguments,
-    /// \brief The explicitly-specified template arguments were not valid
+    /// The explicitly-specified template arguments were not valid
     /// template arguments for the given template.
     TDK_InvalidExplicitArguments,
-    /// \brief Checking non-dependent argument conversions failed.
+    /// Checking non-dependent argument conversions failed.
     TDK_NonDependentConversionFailure,
-    /// \brief Deduction failed; that's all we know.
+    /// Deduction failed; that's all we know.
     TDK_MiscellaneousDeductionFailure,
-    /// \brief CUDA Target attributes do not match.
+    /// CUDA Target attributes do not match.
     TDK_CUDATargetMismatch
   };
 
@@ -7013,16 +7013,16 @@
                           sema::TemplateDeductionInfo &Info,
                           bool IsAddressOfFunction = false);
 
-  /// \brief Substitute Replacement for \p auto in \p TypeWithAuto
+  /// Substitute Replacement for \p auto in \p TypeWithAuto
   QualType SubstAutoType(QualType TypeWithAuto, QualType Replacement);
-  /// \brief Substitute Replacement for auto in TypeWithAuto
+  /// Substitute Replacement for auto in TypeWithAuto
   TypeSourceInfo* SubstAutoTypeSourceInfo(TypeSourceInfo *TypeWithAuto,
                                           QualType Replacement);
-  /// \brief Completely replace the \c auto in \p TypeWithAuto by
+  /// Completely replace the \c auto in \p TypeWithAuto by
   /// \p Replacement. This does not retain any \c auto type sugar.
   QualType ReplaceAutoType(QualType TypeWithAuto, QualType Replacement);
 
-  /// \brief Result type of DeduceAutoType.
+  /// Result type of DeduceAutoType.
   enum DeduceAutoResult {
     DAR_Succeeded,
     DAR_Failed,
@@ -7039,7 +7039,7 @@
   bool DeduceReturnType(FunctionDecl *FD, SourceLocation Loc,
                         bool Diagnose = true);
 
-  /// \brief Declare implicit deduction guides for a class template if we've
+  /// Declare implicit deduction guides for a class template if we've
   /// not already done so.
   void DeclareImplicitDeductionGuides(TemplateDecl *Template,
                                       SourceLocation Loc);
@@ -7120,7 +7120,7 @@
   /// alone is not sufficient to identify the context). This covers template
   /// instantiation and various forms of implicitly-generated functions.
   struct CodeSynthesisContext {
-    /// \brief The kind of template instantiation we are performing
+    /// The kind of template instantiation we are performing
     enum SynthesisKind {
       /// We are instantiating a template declaration. The entity is
       /// the declaration we're instantiating (e.g., a CXXRecordDecl).
@@ -7176,31 +7176,31 @@
       Memoization
     } Kind;
 
-    /// \brief Was the enclosing context a non-instantiation SFINAE context?
+    /// Was the enclosing context a non-instantiation SFINAE context?
     bool SavedInNonInstantiationSFINAEContext;
 
-    /// \brief The point of instantiation or synthesis within the source code.
+    /// The point of instantiation or synthesis within the source code.
     SourceLocation PointOfInstantiation;
 
-    /// \brief The entity that is being synthesized.
+    /// The entity that is being synthesized.
     Decl *Entity;
 
-    /// \brief The template (or partial specialization) in which we are
+    /// The template (or partial specialization) in which we are
     /// performing the instantiation, for substitutions of prior template
     /// arguments.
     NamedDecl *Template;
 
-    /// \brief The list of template arguments we are substituting, if they
+    /// The list of template arguments we are substituting, if they
     /// are not part of the entity.
     const TemplateArgument *TemplateArgs;
 
     // FIXME: Wrap this union around more members, or perhaps store the
     // kind-specific members in the RAII object owning the context.
     union {
-      /// \brief The number of template arguments in TemplateArgs.
+      /// The number of template arguments in TemplateArgs.
       unsigned NumTemplateArgs;
 
-      /// \brief The special member being declared or defined.
+      /// The special member being declared or defined.
       CXXSpecialMember SpecialMember;
     };
 
@@ -7209,11 +7209,11 @@
       return {TemplateArgs, NumTemplateArgs};
     }
 
-    /// \brief The template deduction info object associated with the
+    /// The template deduction info object associated with the
     /// substitution or checking of explicit or deduced template arguments.
     sema::TemplateDeductionInfo *DeductionInfo;
 
-    /// \brief The source range that covers the construct that cause
+    /// The source range that covers the construct that cause
     /// the instantiation, e.g., the template-id that causes a class
     /// template instantiation.
     SourceRange InstantiationRange;
@@ -7222,12 +7222,12 @@
       : Kind(TemplateInstantiation), Entity(nullptr), Template(nullptr),
         TemplateArgs(nullptr), NumTemplateArgs(0), DeductionInfo(nullptr) {}
 
-    /// \brief Determines whether this template is an actual instantiation
+    /// Determines whether this template is an actual instantiation
     /// that should be counted toward the maximum instantiation depth.
     bool isInstantiationRecord() const;
   };
 
-  /// \brief List of active code synthesis contexts.
+  /// List of active code synthesis contexts.
   ///
   /// This vector is treated as a stack. As synthesis of one entity requires
   /// synthesis of another, additional contexts are pushed onto the stack.
@@ -7240,32 +7240,32 @@
   /// by some template instantiation.
   llvm::DenseSet<QualType> InstantiatedNonDependentTypes;
 
-  /// \brief Extra modules inspected when performing a lookup during a template
+  /// Extra modules inspected when performing a lookup during a template
   /// instantiation. Computed lazily.
   SmallVector<Module*, 16> CodeSynthesisContextLookupModules;
 
-  /// \brief Cache of additional modules that should be used for name lookup
+  /// Cache of additional modules that should be used for name lookup
   /// within the current template instantiation. Computed lazily; use
   /// getLookupModules() to get a complete set.
   llvm::DenseSet<Module*> LookupModulesCache;
 
-  /// \brief Get the set of additional modules that should be checked during
+  /// Get the set of additional modules that should be checked during
   /// name lookup. A module and its imports become visible when instanting a
   /// template defined within it.
   llvm::DenseSet<Module*> &getLookupModules();
 
-  /// \brief Map from the most recent declaration of a namespace to the most
+  /// Map from the most recent declaration of a namespace to the most
   /// recent visible declaration of that namespace.
   llvm::DenseMap<NamedDecl*, NamedDecl*> VisibleNamespaceCache;
 
-  /// \brief Whether we are in a SFINAE context that is not associated with
+  /// Whether we are in a SFINAE context that is not associated with
   /// template instantiation.
   ///
   /// This is used when setting up a SFINAE trap (\c see SFINAETrap) outside
   /// of a template instantiation or template argument deduction.
   bool InNonInstantiationSFINAEContext;
 
-  /// \brief The number of \p CodeSynthesisContexts that are not template
+  /// The number of \p CodeSynthesisContexts that are not template
   /// instantiations and, therefore, should not be counted as part of the
   /// instantiation depth.
   ///
@@ -7274,7 +7274,7 @@
   // FIXME: Should we have a similar limit for other forms of synthesis?
   unsigned NonInstantiationEntries;
 
-  /// \brief The depth of the context stack at the point when the most recent
+  /// The depth of the context stack at the point when the most recent
   /// error or warning was produced.
   ///
   /// This value is used to suppress printing of redundant context stacks
@@ -7282,7 +7282,7 @@
   // FIXME: Does this belong in Sema? It's tough to implement it anywhere else.
   unsigned LastEmittedCodeSynthesisContextDepth = 0;
 
-  /// \brief The template instantiation callbacks to trace or track
+  /// The template instantiation callbacks to trace or track
   /// instantiations (objects can be chained).
   ///
   /// This callbacks is used to print, trace or track template
@@ -7290,7 +7290,7 @@
   std::vector<std::unique_ptr<TemplateInstantiationCallback>>
       TemplateInstCallbacks;
 
-  /// \brief The current index into pack expansion arguments that will be
+  /// The current index into pack expansion arguments that will be
   /// used for substitution of parameter packs.
   ///
   /// The pack expansion index will be -1 to indicate that parameter packs
@@ -7298,7 +7298,7 @@
   /// which argument within the parameter pack will be used for substitution.
   int ArgumentPackSubstitutionIndex;
 
-  /// \brief RAII object used to change the argument pack substitution index
+  /// RAII object used to change the argument pack substitution index
   /// within a \c Sema object.
   ///
   /// See \c ArgumentPackSubstitutionIndex for more information.
@@ -7319,7 +7319,7 @@
 
   friend class ArgumentPackSubstitutionRAII;
 
-  /// \brief For each declaration that involved template argument deduction, the
+  /// For each declaration that involved template argument deduction, the
   /// set of diagnostics that were suppressed during that template argument
   /// deduction.
   ///
@@ -7328,7 +7328,7 @@
     SuppressedDiagnosticsMap;
   SuppressedDiagnosticsMap SuppressedDiagnostics;
 
-  /// \brief A stack object to be created when performing template
+  /// A stack object to be created when performing template
   /// instantiation.
   ///
   /// Construction of an object of type \c InstantiatingTemplate
@@ -7340,7 +7340,7 @@
   /// Destruction of this object will pop the named instantiation off
   /// the stack.
   struct InstantiatingTemplate {
-    /// \brief Note that we are instantiating a class template,
+    /// Note that we are instantiating a class template,
     /// function template, variable template, alias template,
     /// or a member thereof.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
@@ -7348,20 +7348,20 @@
                           SourceRange InstantiationRange = SourceRange());
 
     struct ExceptionSpecification {};
-    /// \brief Note that we are instantiating an exception specification
+    /// Note that we are instantiating an exception specification
     /// of a function template.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
                           FunctionDecl *Entity, ExceptionSpecification,
                           SourceRange InstantiationRange = SourceRange());
 
-    /// \brief Note that we are instantiating a default argument in a
+    /// Note that we are instantiating a default argument in a
     /// template-id.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
                           TemplateParameter Param, TemplateDecl *Template,
                           ArrayRef<TemplateArgument> TemplateArgs,
                           SourceRange InstantiationRange = SourceRange());
 
-    /// \brief Note that we are substituting either explicitly-specified or
+    /// Note that we are substituting either explicitly-specified or
     /// deduced template arguments during function template argument deduction.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
                           FunctionTemplateDecl *FunctionTemplate,
@@ -7370,7 +7370,7 @@
                           sema::TemplateDeductionInfo &DeductionInfo,
                           SourceRange InstantiationRange = SourceRange());
 
-    /// \brief Note that we are instantiating as part of template
+    /// Note that we are instantiating as part of template
     /// argument deduction for a class template declaration.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
                           TemplateDecl *Template,
@@ -7378,7 +7378,7 @@
                           sema::TemplateDeductionInfo &DeductionInfo,
                           SourceRange InstantiationRange = SourceRange());
 
-    /// \brief Note that we are instantiating as part of template
+    /// Note that we are instantiating as part of template
     /// argument deduction for a class template partial
     /// specialization.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
@@ -7387,7 +7387,7 @@
                           sema::TemplateDeductionInfo &DeductionInfo,
                           SourceRange InstantiationRange = SourceRange());
 
-    /// \brief Note that we are instantiating as part of template
+    /// Note that we are instantiating as part of template
     /// argument deduction for a variable template partial
     /// specialization.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
@@ -7396,14 +7396,14 @@
                           sema::TemplateDeductionInfo &DeductionInfo,
                           SourceRange InstantiationRange = SourceRange());
 
-    /// \brief Note that we are instantiating a default argument for a function
+    /// Note that we are instantiating a default argument for a function
     /// parameter.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
                           ParmVarDecl *Param,
                           ArrayRef<TemplateArgument> TemplateArgs,
                           SourceRange InstantiationRange = SourceRange());
 
-    /// \brief Note that we are substituting prior template arguments into a
+    /// Note that we are substituting prior template arguments into a
     /// non-type parameter.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
                           NamedDecl *Template,
@@ -7411,7 +7411,7 @@
                           ArrayRef<TemplateArgument> TemplateArgs,
                           SourceRange InstantiationRange);
 
-    /// \brief Note that we are substituting prior template arguments into a
+    /// Note that we are substituting prior template arguments into a
     /// template template parameter.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
                           NamedDecl *Template,
@@ -7419,7 +7419,7 @@
                           ArrayRef<TemplateArgument> TemplateArgs,
                           SourceRange InstantiationRange);
 
-    /// \brief Note that we are checking the default template argument
+    /// Note that we are checking the default template argument
     /// against the template parameter for a given template-id.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
                           TemplateDecl *Template,
@@ -7428,16 +7428,16 @@
                           SourceRange InstantiationRange);
 
 
-    /// \brief Note that we have finished instantiating this template.
+    /// Note that we have finished instantiating this template.
     void Clear();
 
     ~InstantiatingTemplate() { Clear(); }
 
-    /// \brief Determines whether we have exceeded the maximum
+    /// Determines whether we have exceeded the maximum
     /// recursive template instantiations.
     bool isInvalid() const { return Invalid; }
 
-    /// \brief Determine whether we are already instantiating this
+    /// Determine whether we are already instantiating this
     /// specialization in some surrounding active instantiation.
     bool isAlreadyInstantiating() const { return AlreadyInstantiating; }
 
@@ -7482,7 +7482,7 @@
 
   void PrintPragmaAttributeInstantiationPoint();
 
-  /// \brief Determines whether we are currently in a context where
+  /// Determines whether we are currently in a context where
   /// template argument substitution failures are not considered
   /// errors.
   ///
@@ -7492,7 +7492,7 @@
   /// diagnostics that will be suppressed.
   Optional<sema::TemplateDeductionInfo *> isSFINAEContext() const;
 
-  /// \brief Determines whether we are currently in a context that
+  /// Determines whether we are currently in a context that
   /// is not evaluated as per C++ [expr] p5.
   bool isUnevaluatedContext() const {
     assert(!ExprEvalContexts.empty() &&
@@ -7500,7 +7500,7 @@
     return ExprEvalContexts.back().isUnevaluated();
   }
 
-  /// \brief RAII class used to determine whether SFINAE has
+  /// RAII class used to determine whether SFINAE has
   /// trapped any errors that occur during template argument
   /// deduction.
   class SFINAETrap {
@@ -7533,13 +7533,13 @@
           PrevLastDiagnosticIgnored);
     }
 
-    /// \brief Determine whether any SFINAE errors have been trapped.
+    /// Determine whether any SFINAE errors have been trapped.
     bool hasErrorOccurred() const {
       return SemaRef.NumSFINAEErrors > PrevSFINAEErrors;
     }
   };
 
-  /// \brief RAII class used to indicate that we are performing provisional
+  /// RAII class used to indicate that we are performing provisional
   /// semantic analysis to determine the validity of a construct, so
   /// typo-correction and diagnostics in the immediate context (not within
   /// implicitly-instantiated templates) should be suppressed.
@@ -7559,30 +7559,30 @@
     }
   };
 
-  /// \brief The current instantiation scope used to store local
+  /// The current instantiation scope used to store local
   /// variables.
   LocalInstantiationScope *CurrentInstantiationScope;
 
-  /// \brief Tracks whether we are in a context where typo correction is
+  /// Tracks whether we are in a context where typo correction is
   /// disabled.
   bool DisableTypoCorrection;
 
-  /// \brief The number of typos corrected by CorrectTypo.
+  /// The number of typos corrected by CorrectTypo.
   unsigned TyposCorrected;
 
   typedef llvm::SmallSet<SourceLocation, 2> SrcLocSet;
   typedef llvm::DenseMap<IdentifierInfo *, SrcLocSet> IdentifierSourceLocations;
 
-  /// \brief A cache containing identifiers for which typo correction failed and
+  /// A cache containing identifiers for which typo correction failed and
   /// their locations, so that repeated attempts to correct an identifier in a
   /// given location are ignored if typo correction already failed for it.
   IdentifierSourceLocations TypoCorrectionFailures;
 
-  /// \brief Worker object for performing CFG-based warnings.
+  /// Worker object for performing CFG-based warnings.
   sema::AnalysisBasedWarnings AnalysisWarnings;
   threadSafety::BeforeSet *ThreadSafetyDeclCache;
 
-  /// \brief An entity for which implicit template instantiation is required.
+  /// An entity for which implicit template instantiation is required.
   ///
   /// The source location associated with the declaration is the first place in
   /// the source code where the declaration was "used". It is not necessarily
@@ -7592,7 +7592,7 @@
   /// because users will need to know what code triggered the instantiation.
   typedef std::pair<ValueDecl *, SourceLocation> PendingImplicitInstantiation;
 
-  /// \brief The queue of implicit template instantiations that are required
+  /// The queue of implicit template instantiations that are required
   /// but have not yet been performed.
   std::deque<PendingImplicitInstantiation> PendingInstantiations;
 
@@ -7638,7 +7638,7 @@
     bool Enabled;
   };
 
-  /// \brief The queue of implicit template instantiations that are required
+  /// The queue of implicit template instantiations that are required
   /// and must be performed within the current local scope.
   ///
   /// This queue is only used for member functions of local classes in
@@ -7737,7 +7737,7 @@
   ExprResult SubstExpr(Expr *E,
                        const MultiLevelTemplateArgumentList &TemplateArgs);
 
-  /// \brief Substitute the given template arguments into a list of
+  /// Substitute the given template arguments into a list of
   /// expressions, expanding pack expansions if required.
   ///
   /// \param Exprs The list of expressions to substitute into.
@@ -8179,14 +8179,14 @@
 
   ObjCMethodDecl *tryCaptureObjCSelf(SourceLocation Loc);
 
-  /// \brief Describes the kind of message expression indicated by a message
+  /// Describes the kind of message expression indicated by a message
   /// send that starts with an identifier.
   enum ObjCMessageKind {
-    /// \brief The message is sent to 'super'.
+    /// The message is sent to 'super'.
     ObjCSuperMessage,
-    /// \brief The message is an instance message.
+    /// The message is an instance message.
     ObjCInstanceMessage,
-    /// \brief The message is a class message, and the identifier is a type
+    /// The message is a class message, and the identifier is a type
     /// name.
     ObjCClassMessage
   };
@@ -8295,12 +8295,12 @@
 
   bool checkInitMethod(ObjCMethodDecl *method, QualType receiverTypeIfCall);
 
-  /// \brief Check whether the given new method is a valid override of the
+  /// Check whether the given new method is a valid override of the
   /// given overridden method, and set any properties that should be inherited.
   void CheckObjCMethodOverride(ObjCMethodDecl *NewMethod,
                                const ObjCMethodDecl *Overridden);
 
-  /// \brief Describes the compatibility of a result type with its method.
+  /// Describes the compatibility of a result type with its method.
   enum ResultTypeCompatibilityKind {
     RTC_Compatible,
     RTC_Incompatible,
@@ -8357,7 +8357,7 @@
       LangOptions::PragmaMSPointersToMembersKind Kind,
       SourceLocation PragmaLoc);
 
-  /// \brief Called on well formed \#pragma vtordisp().
+  /// Called on well formed \#pragma vtordisp().
   void ActOnPragmaMSVtorDisp(PragmaMsStackAction Action,
                              SourceLocation PragmaLoc,
                              MSVtorDispAttr::Mode Value);
@@ -8376,22 +8376,22 @@
                     int SectionFlags,
                     SourceLocation PragmaSectionLocation);
 
-  /// \brief Called on well formed \#pragma bss_seg/data_seg/const_seg/code_seg.
+  /// Called on well formed \#pragma bss_seg/data_seg/const_seg/code_seg.
   void ActOnPragmaMSSeg(SourceLocation PragmaLocation,
                         PragmaMsStackAction Action,
                         llvm::StringRef StackSlotLabel,
                         StringLiteral *SegmentName,
                         llvm::StringRef PragmaName);
 
-  /// \brief Called on well formed \#pragma section().
+  /// Called on well formed \#pragma section().
   void ActOnPragmaMSSection(SourceLocation PragmaLocation,
                             int SectionFlags, StringLiteral *SegmentName);
 
-  /// \brief Called on well-formed \#pragma init_seg().
+  /// Called on well-formed \#pragma init_seg().
   void ActOnPragmaMSInitSeg(SourceLocation PragmaLocation,
                             StringLiteral *SegmentName);
 
-  /// \brief Called on #pragma clang __debug dump II
+  /// Called on #pragma clang __debug dump II
   void ActOnPragmaDump(Scope *S, SourceLocation Loc, IdentifierInfo *II);
 
   /// ActOnPragmaDetectMismatch - Call on well-formed \#pragma detect_mismatch
@@ -8467,35 +8467,35 @@
   /// the appropriate attribute.
   void AddCFAuditedAttribute(Decl *D);
 
-  /// \brief Called on well-formed '\#pragma clang attribute push'.
+  /// Called on well-formed '\#pragma clang attribute push'.
   void ActOnPragmaAttributePush(AttributeList &Attribute,
                                 SourceLocation PragmaLoc,
                                 attr::ParsedSubjectMatchRuleSet Rules);
 
-  /// \brief Called on well-formed '\#pragma clang attribute pop'.
+  /// Called on well-formed '\#pragma clang attribute pop'.
   void ActOnPragmaAttributePop(SourceLocation PragmaLoc);
 
-  /// \brief Adds the attributes that have been specified using the
+  /// Adds the attributes that have been specified using the
   /// '\#pragma clang attribute push' directives to the given declaration.
   void AddPragmaAttributes(Scope *S, Decl *D);
 
   void DiagnoseUnterminatedPragmaAttribute();
 
-  /// \brief Called on well formed \#pragma clang optimize.
+  /// Called on well formed \#pragma clang optimize.
   void ActOnPragmaOptimize(bool On, SourceLocation PragmaLoc);
 
-  /// \brief Get the location for the currently active "\#pragma clang optimize
+  /// Get the location for the currently active "\#pragma clang optimize
   /// off". If this location is invalid, then the state of the pragma is "on".
   SourceLocation getOptimizeOffPragmaLocation() const {
     return OptimizeOffPragmaLocation;
   }
 
-  /// \brief Only called on function definitions; if there is a pragma in scope
+  /// Only called on function definitions; if there is a pragma in scope
   /// with the effect of a range-based optnone, consider marking the function
   /// with attribute optnone.
   void AddRangeBasedOptnone(FunctionDecl *FD);
 
-  /// \brief Adds the 'optnone' attribute to the function declaration if there
+  /// Adds the 'optnone' attribute to the function declaration if there
   /// are no conflicts; Loc represents the location causing the 'optnone'
   /// attribute to be added (usually because of a pragma).
   void AddOptnoneAttributeIfNoConflicts(FunctionDecl *FD, SourceLocation Loc);
@@ -8577,36 +8577,36 @@
     CurrOpenCLExtension = Ext;
   }
 
-  /// \brief Set OpenCL extensions for a type which can only be used when these
+  /// Set OpenCL extensions for a type which can only be used when these
   /// OpenCL extensions are enabled. If \p Exts is empty, do nothing.
   /// \param Exts A space separated list of OpenCL extensions.
   void setOpenCLExtensionForType(QualType T, llvm::StringRef Exts);
 
-  /// \brief Set OpenCL extensions for a declaration which can only be
+  /// Set OpenCL extensions for a declaration which can only be
   /// used when these OpenCL extensions are enabled. If \p Exts is empty, do
   /// nothing.
   /// \param Exts A space separated list of OpenCL extensions.
   void setOpenCLExtensionForDecl(Decl *FD, llvm::StringRef Exts);
 
-  /// \brief Set current OpenCL extensions for a type which can only be used
+  /// Set current OpenCL extensions for a type which can only be used
   /// when these OpenCL extensions are enabled. If current OpenCL extension is
   /// empty, do nothing.
   void setCurrentOpenCLExtensionForType(QualType T);
 
-  /// \brief Set current OpenCL extensions for a declaration which
+  /// Set current OpenCL extensions for a declaration which
   /// can only be used when these OpenCL extensions are enabled. If current
   /// OpenCL extension is empty, do nothing.
   void setCurrentOpenCLExtensionForDecl(Decl *FD);
 
   bool isOpenCLDisabledDecl(Decl *FD);
 
-  /// \brief Check if type \p T corresponding to declaration specifier \p DS
+  /// Check if type \p T corresponding to declaration specifier \p DS
   /// is disabled due to required OpenCL extensions being disabled. If so,
   /// emit diagnostics.
   /// \return true if type is disabled.
   bool checkOpenCLDisabledTypeDeclSpec(const DeclSpec &DS, QualType T);
 
-  /// \brief Check if declaration \p D used by expression \p E
+  /// Check if declaration \p D used by expression \p E
   /// is disabled due to required OpenCL extensions being disabled. If so,
   /// emit diagnostics.
   /// \return true if type is disabled.
@@ -8619,7 +8619,7 @@
   void *VarDataSharingAttributesStack;
   /// Set to true inside '#pragma omp declare target' region.
   bool IsInOpenMPDeclareTargetContext = false;
-  /// \brief Initialization of data-sharing attributes stack.
+  /// Initialization of data-sharing attributes stack.
   void InitDataSharingAttributesStack();
   void DestroyDataSharingAttributesStack();
   ExprResult
@@ -8654,20 +8654,20 @@
                                      SourceRange SrcRange = SourceRange());
 
 public:
-  /// \brief Return true if the provided declaration \a VD should be captured by
+  /// Return true if the provided declaration \a VD should be captured by
   /// reference.
   /// \param Level Relative level of nested OpenMP construct for that the check
   /// is performed.
   bool isOpenMPCapturedByRef(const ValueDecl *D, unsigned Level) const;
 
-  /// \brief Check if the specified variable is used in one of the private
+  /// Check if the specified variable is used in one of the private
   /// clauses (private, firstprivate, lastprivate, reduction etc.) in OpenMP
   /// constructs.
   VarDecl *isOpenMPCapturedDecl(ValueDecl *D) const;
   ExprResult getOpenMPCapturedExpr(VarDecl *Capture, ExprValueKind VK,
                                    ExprObjectKind OK, SourceLocation Loc);
 
-  /// \brief Check if the specified variable is used in 'private' clause.
+  /// Check if the specified variable is used in 'private' clause.
   /// \param Level Relative level of nested OpenMP construct for that the check
   /// is performed.
   bool isOpenMPPrivateDecl(const ValueDecl *D, unsigned Level) const;
@@ -8677,63 +8677,63 @@
   /// \p D.
   void setOpenMPCaptureKind(FieldDecl *FD, const ValueDecl *D, unsigned Level);
 
-  /// \brief Check if the specified variable is captured  by 'target' directive.
+  /// Check if the specified variable is captured  by 'target' directive.
   /// \param Level Relative level of nested OpenMP construct for that the check
   /// is performed.
   bool isOpenMPTargetCapturedDecl(const ValueDecl *D, unsigned Level) const;
 
   ExprResult PerformOpenMPImplicitIntegerConversion(SourceLocation OpLoc,
                                                     Expr *Op);
-  /// \brief Called on start of new data sharing attribute block.
+  /// Called on start of new data sharing attribute block.
   void StartOpenMPDSABlock(OpenMPDirectiveKind K,
                            const DeclarationNameInfo &DirName, Scope *CurScope,
                            SourceLocation Loc);
-  /// \brief Start analysis of clauses.
+  /// Start analysis of clauses.
   void StartOpenMPClause(OpenMPClauseKind K);
-  /// \brief End analysis of clauses.
+  /// End analysis of clauses.
   void EndOpenMPClause();
-  /// \brief Called on end of data sharing attribute block.
+  /// Called on end of data sharing attribute block.
   void EndOpenMPDSABlock(Stmt *CurDirective);
 
-  /// \brief Check if the current region is an OpenMP loop region and if it is,
+  /// Check if the current region is an OpenMP loop region and if it is,
   /// mark loop control variable, used in \p Init for loop initialization, as
   /// private by default.
   /// \param Init First part of the for loop.
   void ActOnOpenMPLoopInitialization(SourceLocation ForLoc, Stmt *Init);
 
   // OpenMP directives and clauses.
-  /// \brief Called on correct id-expression from the '#pragma omp
+  /// Called on correct id-expression from the '#pragma omp
   /// threadprivate'.
   ExprResult ActOnOpenMPIdExpression(Scope *CurScope,
                                      CXXScopeSpec &ScopeSpec,
                                      const DeclarationNameInfo &Id);
-  /// \brief Called on well-formed '#pragma omp threadprivate'.
+  /// Called on well-formed '#pragma omp threadprivate'.
   DeclGroupPtrTy ActOnOpenMPThreadprivateDirective(
                                      SourceLocation Loc,
                                      ArrayRef<Expr *> VarList);
-  /// \brief Builds a new OpenMPThreadPrivateDecl and checks its correctness.
+  /// Builds a new OpenMPThreadPrivateDecl and checks its correctness.
   OMPThreadPrivateDecl *CheckOMPThreadPrivateDecl(SourceLocation Loc,
                                                   ArrayRef<Expr *> VarList);
-  /// \brief Check if the specified type is allowed to be used in 'omp declare
+  /// Check if the specified type is allowed to be used in 'omp declare
   /// reduction' construct.
   QualType ActOnOpenMPDeclareReductionType(SourceLocation TyLoc,
                                            TypeResult ParsedType);
-  /// \brief Called on start of '#pragma omp declare reduction'.
+  /// Called on start of '#pragma omp declare reduction'.
   DeclGroupPtrTy ActOnOpenMPDeclareReductionDirectiveStart(
       Scope *S, DeclContext *DC, DeclarationName Name,
       ArrayRef<std::pair<QualType, SourceLocation>> ReductionTypes,
       AccessSpecifier AS, Decl *PrevDeclInScope = nullptr);
-  /// \brief Initialize declare reduction construct initializer.
+  /// Initialize declare reduction construct initializer.
   void ActOnOpenMPDeclareReductionCombinerStart(Scope *S, Decl *D);
-  /// \brief Finish current declare reduction construct initializer.
+  /// Finish current declare reduction construct initializer.
   void ActOnOpenMPDeclareReductionCombinerEnd(Decl *D, Expr *Combiner);
-  /// \brief Initialize declare reduction construct initializer.
+  /// Initialize declare reduction construct initializer.
   /// \return omp_priv variable.
   VarDecl *ActOnOpenMPDeclareReductionInitializerStart(Scope *S, Decl *D);
-  /// \brief Finish current declare reduction construct initializer.
+  /// Finish current declare reduction construct initializer.
   void ActOnOpenMPDeclareReductionInitializerEnd(Decl *D, Expr *Initializer,
                                                  VarDecl *OmpPrivParm);
-  /// \brief Called at the end of '#pragma omp declare reduction'.
+  /// Called at the end of '#pragma omp declare reduction'.
   DeclGroupPtrTy ActOnOpenMPDeclareReductionDirectiveEnd(
       Scope *S, DeclGroupPtrTy DeclReductions, bool IsValid);
 
@@ -8765,9 +8765,9 @@
   /// Return the number of captured regions created for an OpenMP directive.
   static int getOpenMPCaptureLevels(OpenMPDirectiveKind Kind);
 
-  /// \brief Initialization of captured region for OpenMP region.
+  /// Initialization of captured region for OpenMP region.
   void ActOnOpenMPRegionStart(OpenMPDirectiveKind DKind, Scope *CurScope);
-  /// \brief End of OpenMP region.
+  /// End of OpenMP region.
   ///
   /// \param S Statement associated with the current OpenMP region.
   /// \param Clauses List of clauses for the current OpenMP region.
@@ -8778,7 +8778,7 @@
       OpenMPDirectiveKind Kind, const DeclarationNameInfo &DirName,
       OpenMPDirectiveKind CancelRegion, ArrayRef<OMPClause *> Clauses,
       Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp parallel' after parsing
+  /// Called on well-formed '\#pragma omp parallel' after parsing
   /// of the  associated statement.
   StmtResult ActOnOpenMPParallelDirective(ArrayRef<OMPClause *> Clauses,
                                           Stmt *AStmt,
@@ -8786,187 +8786,187 @@
                                           SourceLocation EndLoc);
   using VarsWithInheritedDSAType =
       llvm::SmallDenseMap<const ValueDecl *, const Expr *, 4>;
-  /// \brief Called on well-formed '\#pragma omp simd' after parsing
+  /// Called on well-formed '\#pragma omp simd' after parsing
   /// of the associated statement.
   StmtResult
   ActOnOpenMPSimdDirective(ArrayRef<OMPClause *> Clauses, Stmt *AStmt,
                            SourceLocation StartLoc, SourceLocation EndLoc,
                            VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp for' after parsing
+  /// Called on well-formed '\#pragma omp for' after parsing
   /// of the associated statement.
   StmtResult
   ActOnOpenMPForDirective(ArrayRef<OMPClause *> Clauses, Stmt *AStmt,
                           SourceLocation StartLoc, SourceLocation EndLoc,
                           VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp for simd' after parsing
+  /// Called on well-formed '\#pragma omp for simd' after parsing
   /// of the associated statement.
   StmtResult
   ActOnOpenMPForSimdDirective(ArrayRef<OMPClause *> Clauses, Stmt *AStmt,
                               SourceLocation StartLoc, SourceLocation EndLoc,
                               VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp sections' after parsing
+  /// Called on well-formed '\#pragma omp sections' after parsing
   /// of the associated statement.
   StmtResult ActOnOpenMPSectionsDirective(ArrayRef<OMPClause *> Clauses,
                                           Stmt *AStmt, SourceLocation StartLoc,
                                           SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp section' after parsing of the
+  /// Called on well-formed '\#pragma omp section' after parsing of the
   /// associated statement.
   StmtResult ActOnOpenMPSectionDirective(Stmt *AStmt, SourceLocation StartLoc,
                                          SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp single' after parsing of the
+  /// Called on well-formed '\#pragma omp single' after parsing of the
   /// associated statement.
   StmtResult ActOnOpenMPSingleDirective(ArrayRef<OMPClause *> Clauses,
                                         Stmt *AStmt, SourceLocation StartLoc,
                                         SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp master' after parsing of the
+  /// Called on well-formed '\#pragma omp master' after parsing of the
   /// associated statement.
   StmtResult ActOnOpenMPMasterDirective(Stmt *AStmt, SourceLocation StartLoc,
                                         SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp critical' after parsing of the
+  /// Called on well-formed '\#pragma omp critical' after parsing of the
   /// associated statement.
   StmtResult ActOnOpenMPCriticalDirective(const DeclarationNameInfo &DirName,
                                           ArrayRef<OMPClause *> Clauses,
                                           Stmt *AStmt, SourceLocation StartLoc,
                                           SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp parallel for' after parsing
+  /// Called on well-formed '\#pragma omp parallel for' after parsing
   /// of the  associated statement.
   StmtResult ActOnOpenMPParallelForDirective(
       ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
       SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp parallel for simd' after
+  /// Called on well-formed '\#pragma omp parallel for simd' after
   /// parsing of the  associated statement.
   StmtResult ActOnOpenMPParallelForSimdDirective(
       ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
       SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp parallel sections' after
+  /// Called on well-formed '\#pragma omp parallel sections' after
   /// parsing of the  associated statement.
   StmtResult ActOnOpenMPParallelSectionsDirective(ArrayRef<OMPClause *> Clauses,
                                                   Stmt *AStmt,
                                                   SourceLocation StartLoc,
                                                   SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp task' after parsing of the
+  /// Called on well-formed '\#pragma omp task' after parsing of the
   /// associated statement.
   StmtResult ActOnOpenMPTaskDirective(ArrayRef<OMPClause *> Clauses,
                                       Stmt *AStmt, SourceLocation StartLoc,
                                       SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp taskyield'.
+  /// Called on well-formed '\#pragma omp taskyield'.
   StmtResult ActOnOpenMPTaskyieldDirective(SourceLocation StartLoc,
                                            SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp barrier'.
+  /// Called on well-formed '\#pragma omp barrier'.
   StmtResult ActOnOpenMPBarrierDirective(SourceLocation StartLoc,
                                          SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp taskwait'.
+  /// Called on well-formed '\#pragma omp taskwait'.
   StmtResult ActOnOpenMPTaskwaitDirective(SourceLocation StartLoc,
                                           SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp taskgroup'.
+  /// Called on well-formed '\#pragma omp taskgroup'.
   StmtResult ActOnOpenMPTaskgroupDirective(ArrayRef<OMPClause *> Clauses,
                                            Stmt *AStmt, SourceLocation StartLoc,
                                            SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp flush'.
+  /// Called on well-formed '\#pragma omp flush'.
   StmtResult ActOnOpenMPFlushDirective(ArrayRef<OMPClause *> Clauses,
                                        SourceLocation StartLoc,
                                        SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp ordered' after parsing of the
+  /// Called on well-formed '\#pragma omp ordered' after parsing of the
   /// associated statement.
   StmtResult ActOnOpenMPOrderedDirective(ArrayRef<OMPClause *> Clauses,
                                          Stmt *AStmt, SourceLocation StartLoc,
                                          SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp atomic' after parsing of the
+  /// Called on well-formed '\#pragma omp atomic' after parsing of the
   /// associated statement.
   StmtResult ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses,
                                         Stmt *AStmt, SourceLocation StartLoc,
                                         SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp target' after parsing of the
+  /// Called on well-formed '\#pragma omp target' after parsing of the
   /// associated statement.
   StmtResult ActOnOpenMPTargetDirective(ArrayRef<OMPClause *> Clauses,
                                         Stmt *AStmt, SourceLocation StartLoc,
                                         SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp target data' after parsing of
+  /// Called on well-formed '\#pragma omp target data' after parsing of
   /// the associated statement.
   StmtResult ActOnOpenMPTargetDataDirective(ArrayRef<OMPClause *> Clauses,
                                             Stmt *AStmt, SourceLocation StartLoc,
                                             SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp target enter data' after
+  /// Called on well-formed '\#pragma omp target enter data' after
   /// parsing of the associated statement.
   StmtResult ActOnOpenMPTargetEnterDataDirective(ArrayRef<OMPClause *> Clauses,
                                                  SourceLocation StartLoc,
                                                  SourceLocation EndLoc,
                                                  Stmt *AStmt);
-  /// \brief Called on well-formed '\#pragma omp target exit data' after
+  /// Called on well-formed '\#pragma omp target exit data' after
   /// parsing of the associated statement.
   StmtResult ActOnOpenMPTargetExitDataDirective(ArrayRef<OMPClause *> Clauses,
                                                 SourceLocation StartLoc,
                                                 SourceLocation EndLoc,
                                                 Stmt *AStmt);
-  /// \brief Called on well-formed '\#pragma omp target parallel' after
+  /// Called on well-formed '\#pragma omp target parallel' after
   /// parsing of the associated statement.
   StmtResult ActOnOpenMPTargetParallelDirective(ArrayRef<OMPClause *> Clauses,
                                                 Stmt *AStmt,
                                                 SourceLocation StartLoc,
                                                 SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp target parallel for' after
+  /// Called on well-formed '\#pragma omp target parallel for' after
   /// parsing of the  associated statement.
   StmtResult ActOnOpenMPTargetParallelForDirective(
       ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
       SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp teams' after parsing of the
+  /// Called on well-formed '\#pragma omp teams' after parsing of the
   /// associated statement.
   StmtResult ActOnOpenMPTeamsDirective(ArrayRef<OMPClause *> Clauses,
                                        Stmt *AStmt, SourceLocation StartLoc,
                                        SourceLocation EndLoc);
-  /// \brief Called on well-formed '\#pragma omp cancellation point'.
+  /// Called on well-formed '\#pragma omp cancellation point'.
   StmtResult
   ActOnOpenMPCancellationPointDirective(SourceLocation StartLoc,
                                         SourceLocation EndLoc,
                                         OpenMPDirectiveKind CancelRegion);
-  /// \brief Called on well-formed '\#pragma omp cancel'.
+  /// Called on well-formed '\#pragma omp cancel'.
   StmtResult ActOnOpenMPCancelDirective(ArrayRef<OMPClause *> Clauses,
                                         SourceLocation StartLoc,
                                         SourceLocation EndLoc,
                                         OpenMPDirectiveKind CancelRegion);
-  /// \brief Called on well-formed '\#pragma omp taskloop' after parsing of the
+  /// Called on well-formed '\#pragma omp taskloop' after parsing of the
   /// associated statement.
   StmtResult
   ActOnOpenMPTaskLoopDirective(ArrayRef<OMPClause *> Clauses, Stmt *AStmt,
                                SourceLocation StartLoc, SourceLocation EndLoc,
                                VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp taskloop simd' after parsing of
+  /// Called on well-formed '\#pragma omp taskloop simd' after parsing of
   /// the associated statement.
   StmtResult ActOnOpenMPTaskLoopSimdDirective(
       ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
       SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp distribute' after parsing
+  /// Called on well-formed '\#pragma omp distribute' after parsing
   /// of the associated statement.
   StmtResult
   ActOnOpenMPDistributeDirective(ArrayRef<OMPClause *> Clauses, Stmt *AStmt,
                                  SourceLocation StartLoc, SourceLocation EndLoc,
                                  VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp target update'.
+  /// Called on well-formed '\#pragma omp target update'.
   StmtResult ActOnOpenMPTargetUpdateDirective(ArrayRef<OMPClause *> Clauses,
                                               SourceLocation StartLoc,
                                               SourceLocation EndLoc,
                                               Stmt *AStmt);
-  /// \brief Called on well-formed '\#pragma omp distribute parallel for' after
+  /// Called on well-formed '\#pragma omp distribute parallel for' after
   /// parsing of the associated statement.
   StmtResult ActOnOpenMPDistributeParallelForDirective(
       ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
       SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp distribute parallel for simd'
+  /// Called on well-formed '\#pragma omp distribute parallel for simd'
   /// after parsing of the associated statement.
   StmtResult ActOnOpenMPDistributeParallelForSimdDirective(
       ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
       SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp distribute simd' after
+  /// Called on well-formed '\#pragma omp distribute simd' after
   /// parsing of the associated statement.
   StmtResult ActOnOpenMPDistributeSimdDirective(
       ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
       SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp target parallel for simd' after
+  /// Called on well-formed '\#pragma omp target parallel for simd' after
   /// parsing of the associated statement.
   StmtResult ActOnOpenMPTargetParallelForSimdDirective(
       ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
       SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA);
-  /// \brief Called on well-formed '\#pragma omp target simd' after parsing of
+  /// Called on well-formed '\#pragma omp target simd' after parsing of
   /// the associated statement.
   StmtResult
   ActOnOpenMPTargetSimdDirective(ArrayRef<OMPClause *> Clauses, Stmt *AStmt,
@@ -9027,7 +9027,7 @@
   bool CheckOpenMPLinearDecl(const ValueDecl *D, SourceLocation ELoc,
                              OpenMPLinearClauseKind LinKind, QualType Type);
 
-  /// \brief Called on well-formed '\#pragma omp declare simd' after parsing of
+  /// Called on well-formed '\#pragma omp declare simd' after parsing of
   /// the associated method/function.
   DeclGroupPtrTy ActOnOpenMPDeclareSimdDirective(
       DeclGroupPtrTy DG, OMPDeclareSimdDeclAttr::BranchStateTy BS,
@@ -9040,50 +9040,50 @@
                                          SourceLocation StartLoc,
                                          SourceLocation LParenLoc,
                                          SourceLocation EndLoc);
-  /// \brief Called on well-formed 'if' clause.
+  /// Called on well-formed 'if' clause.
   OMPClause *ActOnOpenMPIfClause(OpenMPDirectiveKind NameModifier,
                                  Expr *Condition, SourceLocation StartLoc,
                                  SourceLocation LParenLoc,
                                  SourceLocation NameModifierLoc,
                                  SourceLocation ColonLoc,
                                  SourceLocation EndLoc);
-  /// \brief Called on well-formed 'final' clause.
+  /// Called on well-formed 'final' clause.
   OMPClause *ActOnOpenMPFinalClause(Expr *Condition, SourceLocation StartLoc,
                                     SourceLocation LParenLoc,
                                     SourceLocation EndLoc);
-  /// \brief Called on well-formed 'num_threads' clause.
+  /// Called on well-formed 'num_threads' clause.
   OMPClause *ActOnOpenMPNumThreadsClause(Expr *NumThreads,
                                          SourceLocation StartLoc,
                                          SourceLocation LParenLoc,
                                          SourceLocation EndLoc);
-  /// \brief Called on well-formed 'safelen' clause.
+  /// Called on well-formed 'safelen' clause.
   OMPClause *ActOnOpenMPSafelenClause(Expr *Length,
                                       SourceLocation StartLoc,
                                       SourceLocation LParenLoc,
                                       SourceLocation EndLoc);
-  /// \brief Called on well-formed 'simdlen' clause.
+  /// Called on well-formed 'simdlen' clause.
   OMPClause *ActOnOpenMPSimdlenClause(Expr *Length, SourceLocation StartLoc,
                                       SourceLocation LParenLoc,
                                       SourceLocation EndLoc);
-  /// \brief Called on well-formed 'collapse' clause.
+  /// Called on well-formed 'collapse' clause.
   OMPClause *ActOnOpenMPCollapseClause(Expr *NumForLoops,
                                        SourceLocation StartLoc,
                                        SourceLocation LParenLoc,
                                        SourceLocation EndLoc);
-  /// \brief Called on well-formed 'ordered' clause.
+  /// Called on well-formed 'ordered' clause.
   OMPClause *
   ActOnOpenMPOrderedClause(SourceLocation StartLoc, SourceLocation EndLoc,
                            SourceLocation LParenLoc = SourceLocation(),
                            Expr *NumForLoops = nullptr);
-  /// \brief Called on well-formed 'grainsize' clause.
+  /// Called on well-formed 'grainsize' clause.
   OMPClause *ActOnOpenMPGrainsizeClause(Expr *Size, SourceLocation StartLoc,
                                         SourceLocation LParenLoc,
                                         SourceLocation EndLoc);
-  /// \brief Called on well-formed 'num_tasks' clause.
+  /// Called on well-formed 'num_tasks' clause.
   OMPClause *ActOnOpenMPNumTasksClause(Expr *NumTasks, SourceLocation StartLoc,
                                        SourceLocation LParenLoc,
                                        SourceLocation EndLoc);
-  /// \brief Called on well-formed 'hint' clause.
+  /// Called on well-formed 'hint' clause.
   OMPClause *ActOnOpenMPHintClause(Expr *Hint, SourceLocation StartLoc,
                                    SourceLocation LParenLoc,
                                    SourceLocation EndLoc);
@@ -9094,13 +9094,13 @@
                                      SourceLocation StartLoc,
                                      SourceLocation LParenLoc,
                                      SourceLocation EndLoc);
-  /// \brief Called on well-formed 'default' clause.
+  /// Called on well-formed 'default' clause.
   OMPClause *ActOnOpenMPDefaultClause(OpenMPDefaultClauseKind Kind,
                                       SourceLocation KindLoc,
                                       SourceLocation StartLoc,
                                       SourceLocation LParenLoc,
                                       SourceLocation EndLoc);
-  /// \brief Called on well-formed 'proc_bind' clause.
+  /// Called on well-formed 'proc_bind' clause.
   OMPClause *ActOnOpenMPProcBindClause(OpenMPProcBindClauseKind Kind,
                                        SourceLocation KindLoc,
                                        SourceLocation StartLoc,
@@ -9112,7 +9112,7 @@
       SourceLocation StartLoc, SourceLocation LParenLoc,
       ArrayRef<SourceLocation> ArgumentsLoc, SourceLocation DelimLoc,
       SourceLocation EndLoc);
-  /// \brief Called on well-formed 'schedule' clause.
+  /// Called on well-formed 'schedule' clause.
   OMPClause *ActOnOpenMPScheduleClause(
       OpenMPScheduleClauseModifier M1, OpenMPScheduleClauseModifier M2,
       OpenMPScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc,
@@ -9121,37 +9121,37 @@
 
   OMPClause *ActOnOpenMPClause(OpenMPClauseKind Kind, SourceLocation StartLoc,
                                SourceLocation EndLoc);
-  /// \brief Called on well-formed 'nowait' clause.
+  /// Called on well-formed 'nowait' clause.
   OMPClause *ActOnOpenMPNowaitClause(SourceLocation StartLoc,
                                      SourceLocation EndLoc);
-  /// \brief Called on well-formed 'untied' clause.
+  /// Called on well-formed 'untied' clause.
   OMPClause *ActOnOpenMPUntiedClause(SourceLocation StartLoc,
                                      SourceLocation EndLoc);
-  /// \brief Called on well-formed 'mergeable' clause.
+  /// Called on well-formed 'mergeable' clause.
   OMPClause *ActOnOpenMPMergeableClause(SourceLocation StartLoc,
                                         SourceLocation EndLoc);
-  /// \brief Called on well-formed 'read' clause.
+  /// Called on well-formed 'read' clause.
   OMPClause *ActOnOpenMPReadClause(SourceLocation StartLoc,
                                    SourceLocation EndLoc);
-  /// \brief Called on well-formed 'write' clause.
+  /// Called on well-formed 'write' clause.
   OMPClause *ActOnOpenMPWriteClause(SourceLocation StartLoc,
                                     SourceLocation EndLoc);
-  /// \brief Called on well-formed 'update' clause.
+  /// Called on well-formed 'update' clause.
   OMPClause *ActOnOpenMPUpdateClause(SourceLocation StartLoc,
                                      SourceLocation EndLoc);
-  /// \brief Called on well-formed 'capture' clause.
+  /// Called on well-formed 'capture' clause.
   OMPClause *ActOnOpenMPCaptureClause(SourceLocation StartLoc,
                                       SourceLocation EndLoc);
-  /// \brief Called on well-formed 'seq_cst' clause.
+  /// Called on well-formed 'seq_cst' clause.
   OMPClause *ActOnOpenMPSeqCstClause(SourceLocation StartLoc,
                                      SourceLocation EndLoc);
-  /// \brief Called on well-formed 'threads' clause.
+  /// Called on well-formed 'threads' clause.
   OMPClause *ActOnOpenMPThreadsClause(SourceLocation StartLoc,
                                       SourceLocation EndLoc);
-  /// \brief Called on well-formed 'simd' clause.
+  /// Called on well-formed 'simd' clause.
   OMPClause *ActOnOpenMPSIMDClause(SourceLocation StartLoc,
                                    SourceLocation EndLoc);
-  /// \brief Called on well-formed 'nogroup' clause.
+  /// Called on well-formed 'nogroup' clause.
   OMPClause *ActOnOpenMPNogroupClause(SourceLocation StartLoc,
                                       SourceLocation EndLoc);
 
@@ -9164,27 +9164,27 @@
       OpenMPLinearClauseKind LinKind, OpenMPMapClauseKind MapTypeModifier,
       OpenMPMapClauseKind MapType, bool IsMapTypeImplicit,
       SourceLocation DepLinMapLoc);
-  /// \brief Called on well-formed 'private' clause.
+  /// Called on well-formed 'private' clause.
   OMPClause *ActOnOpenMPPrivateClause(ArrayRef<Expr *> VarList,
                                       SourceLocation StartLoc,
                                       SourceLocation LParenLoc,
                                       SourceLocation EndLoc);
-  /// \brief Called on well-formed 'firstprivate' clause.
+  /// Called on well-formed 'firstprivate' clause.
   OMPClause *ActOnOpenMPFirstprivateClause(ArrayRef<Expr *> VarList,
                                            SourceLocation StartLoc,
                                            SourceLocation LParenLoc,
                                            SourceLocation EndLoc);
-  /// \brief Called on well-formed 'lastprivate' clause.
+  /// Called on well-formed 'lastprivate' clause.
   OMPClause *ActOnOpenMPLastprivateClause(ArrayRef<Expr *> VarList,
                                           SourceLocation StartLoc,
                                           SourceLocation LParenLoc,
                                           SourceLocation EndLoc);
-  /// \brief Called on well-formed 'shared' clause.
+  /// Called on well-formed 'shared' clause.
   OMPClause *ActOnOpenMPSharedClause(ArrayRef<Expr *> VarList,
                                      SourceLocation StartLoc,
                                      SourceLocation LParenLoc,
                                      SourceLocation EndLoc);
-  /// \brief Called on well-formed 'reduction' clause.
+  /// Called on well-formed 'reduction' clause.
   OMPClause *ActOnOpenMPReductionClause(
       ArrayRef<Expr *> VarList, SourceLocation StartLoc,
       SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc,
@@ -9205,80 +9205,80 @@
       CXXScopeSpec &ReductionIdScopeSpec,
       const DeclarationNameInfo &ReductionId,
       ArrayRef<Expr *> UnresolvedReductions = llvm::None);
-  /// \brief Called on well-formed 'linear' clause.
+  /// Called on well-formed 'linear' clause.
   OMPClause *
   ActOnOpenMPLinearClause(ArrayRef<Expr *> VarList, Expr *Step,
                           SourceLocation StartLoc, SourceLocation LParenLoc,
                           OpenMPLinearClauseKind LinKind, SourceLocation LinLoc,
                           SourceLocation ColonLoc, SourceLocation EndLoc);
-  /// \brief Called on well-formed 'aligned' clause.
+  /// Called on well-formed 'aligned' clause.
   OMPClause *ActOnOpenMPAlignedClause(ArrayRef<Expr *> VarList,
                                       Expr *Alignment,
                                       SourceLocation StartLoc,
                                       SourceLocation LParenLoc,
                                       SourceLocation ColonLoc,
                                       SourceLocation EndLoc);
-  /// \brief Called on well-formed 'copyin' clause.
+  /// Called on well-formed 'copyin' clause.
   OMPClause *ActOnOpenMPCopyinClause(ArrayRef<Expr *> VarList,
                                      SourceLocation StartLoc,
                                      SourceLocation LParenLoc,
                                      SourceLocation EndLoc);
-  /// \brief Called on well-formed 'copyprivate' clause.
+  /// Called on well-formed 'copyprivate' clause.
   OMPClause *ActOnOpenMPCopyprivateClause(ArrayRef<Expr *> VarList,
                                           SourceLocation StartLoc,
                                           SourceLocation LParenLoc,
                                           SourceLocation EndLoc);
-  /// \brief Called on well-formed 'flush' pseudo clause.
+  /// Called on well-formed 'flush' pseudo clause.
   OMPClause *ActOnOpenMPFlushClause(ArrayRef<Expr *> VarList,
                                     SourceLocation StartLoc,
                                     SourceLocation LParenLoc,
                                     SourceLocation EndLoc);
-  /// \brief Called on well-formed 'depend' clause.
+  /// Called on well-formed 'depend' clause.
   OMPClause *
   ActOnOpenMPDependClause(OpenMPDependClauseKind DepKind, SourceLocation DepLoc,
                           SourceLocation ColonLoc, ArrayRef<Expr *> VarList,
                           SourceLocation StartLoc, SourceLocation LParenLoc,
                           SourceLocation EndLoc);
-  /// \brief Called on well-formed 'device' clause.
+  /// Called on well-formed 'device' clause.
   OMPClause *ActOnOpenMPDeviceClause(Expr *Device, SourceLocation StartLoc,
                                      SourceLocation LParenLoc,
                                      SourceLocation EndLoc);
-  /// \brief Called on well-formed 'map' clause.
+  /// Called on well-formed 'map' clause.
   OMPClause *
   ActOnOpenMPMapClause(OpenMPMapClauseKind MapTypeModifier,
                        OpenMPMapClauseKind MapType, bool IsMapTypeImplicit,
                        SourceLocation MapLoc, SourceLocation ColonLoc,
                        ArrayRef<Expr *> VarList, SourceLocation StartLoc,
                        SourceLocation LParenLoc, SourceLocation EndLoc);
-  /// \brief Called on well-formed 'num_teams' clause.
+  /// Called on well-formed 'num_teams' clause.
   OMPClause *ActOnOpenMPNumTeamsClause(Expr *NumTeams, SourceLocation StartLoc,
                                        SourceLocation LParenLoc,
                                        SourceLocation EndLoc);
-  /// \brief Called on well-formed 'thread_limit' clause.
+  /// Called on well-formed 'thread_limit' clause.
   OMPClause *ActOnOpenMPThreadLimitClause(Expr *ThreadLimit,
                                           SourceLocation StartLoc,
                                           SourceLocation LParenLoc,
                                           SourceLocation EndLoc);
-  /// \brief Called on well-formed 'priority' clause.
+  /// Called on well-formed 'priority' clause.
   OMPClause *ActOnOpenMPPriorityClause(Expr *Priority, SourceLocation StartLoc,
                                        SourceLocation LParenLoc,
                                        SourceLocation EndLoc);
-  /// \brief Called on well-formed 'dist_schedule' clause.
+  /// Called on well-formed 'dist_schedule' clause.
   OMPClause *ActOnOpenMPDistScheduleClause(
       OpenMPDistScheduleClauseKind Kind, Expr *ChunkSize,
       SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation KindLoc,
       SourceLocation CommaLoc, SourceLocation EndLoc);
-  /// \brief Called on well-formed 'defaultmap' clause.
+  /// Called on well-formed 'defaultmap' clause.
   OMPClause *ActOnOpenMPDefaultmapClause(
       OpenMPDefaultmapClauseModifier M, OpenMPDefaultmapClauseKind Kind,
       SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation MLoc,
       SourceLocation KindLoc, SourceLocation EndLoc);
-  /// \brief Called on well-formed 'to' clause.
+  /// Called on well-formed 'to' clause.
   OMPClause *ActOnOpenMPToClause(ArrayRef<Expr *> VarList,
                                  SourceLocation StartLoc,
                                  SourceLocation LParenLoc,
                                  SourceLocation EndLoc);
-  /// \brief Called on well-formed 'from' clause.
+  /// Called on well-formed 'from' clause.
   OMPClause *ActOnOpenMPFromClause(ArrayRef<Expr *> VarList,
                                    SourceLocation StartLoc,
                                    SourceLocation LParenLoc,
@@ -9294,15 +9294,15 @@
                                           SourceLocation LParenLoc,
                                           SourceLocation EndLoc);
 
-  /// \brief The kind of conversion being performed.
+  /// The kind of conversion being performed.
   enum CheckedConversionKind {
-    /// \brief An implicit conversion.
+    /// An implicit conversion.
     CCK_ImplicitConversion,
-    /// \brief A C-style cast.
+    /// A C-style cast.
     CCK_CStyleCast,
-    /// \brief A functional-style cast.
+    /// A functional-style cast.
     CCK_FunctionalCast,
-    /// \brief A cast other than a C-style cast.
+    /// A cast other than a C-style cast.
     CCK_OtherCast
   };
 
@@ -9539,7 +9539,7 @@
       QualType LHSType, ExprResult &RHS, bool Diagnose = true,
       bool DiagnoseCFAudited = false, bool ConvertRHS = true);
 
-  // \brief If the lhs type is a transparent union, check whether we
+  // If the lhs type is a transparent union, check whether we
   // can initialize the transparent union with the given expression.
   AssignConvertType CheckTransparentUnionArgumentConstraints(QualType ArgType,
                                                              ExprResult &RHS);
@@ -9687,11 +9687,11 @@
                                  Expr *CastExpr, CastKind &CastKind,
                                  ExprValueKind &VK, CXXCastPath &Path);
 
-  /// \brief Force an expression with unknown-type to an expression of the
+  /// Force an expression with unknown-type to an expression of the
   /// given type.
   ExprResult forceUnknownAnyToType(Expr *E, QualType ToType);
 
-  /// \brief Type-check an expression that's being passed to an
+  /// Type-check an expression that's being passed to an
   /// __unknown_anytype parameter.
   ExprResult checkUnknownAnyArg(SourceLocation callLoc,
                                 Expr *result, QualType &paramType);
@@ -9703,7 +9703,7 @@
   bool CheckVectorCast(SourceRange R, QualType VectorTy, QualType Ty,
                        CastKind &Kind);
 
-  /// \brief Prepare `SplattedExpr` for a vector splat operation, adding
+  /// Prepare `SplattedExpr` for a vector splat operation, adding
   /// implicit casts if necessary.
   ExprResult prepareVectorSplat(QualType VectorTy, Expr *SplattedExpr);
 
@@ -9722,7 +9722,7 @@
 
   enum ARCConversionResult { ACR_okay, ACR_unbridged, ACR_error };
 
-  /// \brief Checks for invalid conversions and casts between
+  /// Checks for invalid conversions and casts between
   /// retainable pointers and other pointer kinds for ARC and Weak.
   ARCConversionResult CheckObjCConversion(SourceRange castRange,
                                           QualType castType, Expr *&op,
@@ -9765,18 +9765,18 @@
                                  SourceRange RecRange,
                                  QualType &ReturnType, ExprValueKind &VK);
 
-  /// \brief Determine the result of a message send expression based on
+  /// Determine the result of a message send expression based on
   /// the type of the receiver, the method expected to receive the message,
   /// and the form of the message send.
   QualType getMessageSendResultType(QualType ReceiverType,
                                     ObjCMethodDecl *Method,
                                     bool isClassMessage, bool isSuperMessage);
 
-  /// \brief If the given expression involves a message send to a method
+  /// If the given expression involves a message send to a method
   /// with a related result type, emit a note describing what happened.
   void EmitRelatedResultTypeNote(const Expr *E);
 
-  /// \brief Given that we had incompatible pointer types in a return
+  /// Given that we had incompatible pointer types in a return
   /// statement, check whether we're in a method with a related result
   /// type, and if so, emit a note describing what happened.
   void EmitRelatedResultTypeNoteForReturn(QualType destType);
@@ -9850,7 +9850,7 @@
   /// being used as a boolean condition, warn if it's an assignment.
   void DiagnoseAssignmentAsCondition(Expr *E);
 
-  /// \brief Redundant parentheses over an equality comparison can indicate
+  /// Redundant parentheses over an equality comparison can indicate
   /// that the user intended an assignment used as condition.
   void DiagnoseEqualityWithExtraParens(ParenExpr *ParenE);
 
@@ -9869,7 +9869,7 @@
   /// in the global scope.
   bool CheckObjCDeclScope(Decl *D);
 
-  /// \brief Abstract base class used for diagnosing integer constant
+  /// Abstract base class used for diagnosing integer constant
   /// expression violations.
   class VerifyICEDiagnoser {
   public:
@@ -10173,48 +10173,48 @@
 
   /// \name Code completion
   //@{
-  /// \brief Describes the context in which code completion occurs.
+  /// Describes the context in which code completion occurs.
   enum ParserCompletionContext {
-    /// \brief Code completion occurs at top-level or namespace context.
+    /// Code completion occurs at top-level or namespace context.
     PCC_Namespace,
-    /// \brief Code completion occurs within a class, struct, or union.
+    /// Code completion occurs within a class, struct, or union.
     PCC_Class,
-    /// \brief Code completion occurs within an Objective-C interface, protocol,
+    /// Code completion occurs within an Objective-C interface, protocol,
     /// or category.
     PCC_ObjCInterface,
-    /// \brief Code completion occurs within an Objective-C implementation or
+    /// Code completion occurs within an Objective-C implementation or
     /// category implementation
     PCC_ObjCImplementation,
-    /// \brief Code completion occurs within the list of instance variables
+    /// Code completion occurs within the list of instance variables
     /// in an Objective-C interface, protocol, category, or implementation.
     PCC_ObjCInstanceVariableList,
-    /// \brief Code completion occurs following one or more template
+    /// Code completion occurs following one or more template
     /// headers.
     PCC_Template,
-    /// \brief Code completion occurs following one or more template
+    /// Code completion occurs following one or more template
     /// headers within a class.
     PCC_MemberTemplate,
-    /// \brief Code completion occurs within an expression.
+    /// Code completion occurs within an expression.
     PCC_Expression,
-    /// \brief Code completion occurs within a statement, which may
+    /// Code completion occurs within a statement, which may
     /// also be an expression or a declaration.
     PCC_Statement,
-    /// \brief Code completion occurs at the beginning of the
+    /// Code completion occurs at the beginning of the
     /// initialization statement (or expression) in a for loop.
     PCC_ForInit,
-    /// \brief Code completion occurs within the condition of an if,
+    /// Code completion occurs within the condition of an if,
     /// while, switch, or for statement.
     PCC_Condition,
-    /// \brief Code completion occurs within the body of a function on a
+    /// Code completion occurs within the body of a function on a
     /// recovery path, where we do not have a specific handle on our position
     /// in the grammar.
     PCC_RecoveryInFunction,
-    /// \brief Code completion occurs where only a type is permitted.
+    /// Code completion occurs where only a type is permitted.
     PCC_Type,
-    /// \brief Code completion occurs in a parenthesized expression, which
+    /// Code completion occurs in a parenthesized expression, which
     /// might also be a type cast.
     PCC_ParenthesizedExpression,
-    /// \brief Code completion occurs within a sequence of declaration
+    /// Code completion occurs within a sequence of declaration
     /// specifiers within a function, method, or block.
     PCC_LocalDeclarationSpecifiers
   };
@@ -10485,7 +10485,7 @@
   void CheckForIntOverflow(Expr *E);
   void CheckUnsequencedOperations(Expr *E);
 
-  /// \brief Perform semantic checks on a completed expression. This will either
+  /// Perform semantic checks on a completed expression. This will either
   /// be a full-expression or a default argument expression.
   void CheckCompletedExpr(Expr *E, SourceLocation CheckLoc = SourceLocation(),
                           bool IsConstexpr = false);
@@ -10498,11 +10498,11 @@
                                   DeclarationName FieldName,
                                   const CXXRecordDecl *RD);
 
-  /// \brief Check if the given expression contains 'break' or 'continue'
+  /// Check if the given expression contains 'break' or 'continue'
   /// statement that produces control flow different from GCC.
   void CheckBreakContinueBinding(Expr *E);
 
-  /// \brief Check whether receiver is mutable ObjC container which
+  /// Check whether receiver is mutable ObjC container which
   /// attempts to add itself into the container
   void CheckObjCCircularContainer(ObjCMessageExpr *Message);
 
@@ -10510,7 +10510,7 @@
   void AnalyzeDeleteExprMismatch(FieldDecl *Field, SourceLocation DeleteLoc,
                                  bool DeleteWasArrayForm);
 public:
-  /// \brief Register a magic integral constant to be used as a type tag.
+  /// Register a magic integral constant to be used as a type tag.
   void RegisterTypeTagForDatatype(const IdentifierInfo *ArgumentKind,
                                   uint64_t MagicValue, QualType Type,
                                   bool LayoutCompatible, bool MustBeNull);
@@ -10536,21 +10536,21 @@
   typedef std::pair<const IdentifierInfo *, uint64_t> TypeTagMagicValue;
 
 private:
-  /// \brief A map from magic value to type information.
+  /// A map from magic value to type information.
   std::unique_ptr<llvm::DenseMap<TypeTagMagicValue, TypeTagData>>
       TypeTagForDatatypeMagicValues;
 
-  /// \brief Peform checks on a call of a function with argument_with_type_tag
+  /// Peform checks on a call of a function with argument_with_type_tag
   /// or pointer_with_type_tag attributes.
   void CheckArgumentWithTypeTag(const ArgumentWithTypeTagAttr *Attr,
                                 const ArrayRef<const Expr *> ExprArgs,
                                 SourceLocation CallSiteLoc);
 
-  /// \brief Check if we are taking the address of a packed field
+  /// Check if we are taking the address of a packed field
   /// as this may be a problem if the pointer value is dereferenced.
   void CheckAddressOfPackedMember(Expr *rhs);
 
-  /// \brief The parser's current scope.
+  /// The parser's current scope.
   ///
   /// The parser maintains this state here.
   Scope *CurScope;
@@ -10565,7 +10565,7 @@
 
   IdentifierInfo *Ident_NSError = nullptr;
 
-  /// \brief The handler for the FileChanged preprocessor events.
+  /// The handler for the FileChanged preprocessor events.
   ///
   /// Used for diagnostics that implement custom semantic analysis for #include
   /// directives, like -Wpragma-pack.
@@ -10588,7 +10588,7 @@
   /// Retrieve the identifier "NSError".
   IdentifierInfo *getNSErrorIdent();
 
-  /// \brief Retrieve the parser's current scope.
+  /// Retrieve the parser's current scope.
   ///
   /// This routine must only be used when it is certain that semantic analysis
   /// and the parser are in precisely the same context, which is not the case
@@ -10619,7 +10619,7 @@
     return DC;
   }
 
-  /// \brief To be used for checking whether the arguments being passed to
+  /// To be used for checking whether the arguments being passed to
   /// function exceeds the number of parameters expected for it.
   static bool TooManyArguments(size_t NumParams, size_t NumArgs,
                                bool PartialOverloading = false) {
@@ -10664,7 +10664,7 @@
     }
   };
 
-  /// \brief Helper class that collects misaligned member designations and
+  /// Helper class that collects misaligned member designations and
   /// their location info for delayed diagnostics.
   struct MisalignedMember {
     Expr *E;
@@ -10681,28 +10681,28 @@
 
     bool operator==(const MisalignedMember &m) { return this->E == m.E; }
   };
-  /// \brief Small set of gathered accesses to potentially misaligned members
+  /// Small set of gathered accesses to potentially misaligned members
   /// due to the packed attribute.
   SmallVector<MisalignedMember, 4> MisalignedMembers;
 
-  /// \brief Adds an expression to the set of gathered misaligned members.
+  /// Adds an expression to the set of gathered misaligned members.
   void AddPotentialMisalignedMembers(Expr *E, RecordDecl *RD, ValueDecl *MD,
                                      CharUnits Alignment);
 
 public:
-  /// \brief Diagnoses the current set of gathered accesses. This typically
+  /// Diagnoses the current set of gathered accesses. This typically
   /// happens at full expression level. The set is cleared after emitting the
   /// diagnostics.
   void DiagnoseMisalignedMembers();
 
-  /// \brief This function checks if the expression is in the sef of potentially
+  /// This function checks if the expression is in the sef of potentially
   /// misaligned members and it is converted to some pointer type T with lower
   /// or equal alignment requirements. If so it removes it. This is used when
   /// we do not want to diagnose such misaligned access (e.g. in conversions to
   /// void*).
   void DiscardMisalignedMemberAddress(const Type *T, Expr *E);
 
-  /// \brief This function calls Action when it determines that E designates a
+  /// This function calls Action when it determines that E designates a
   /// misaligned member due to the packed attribute. This is used to emit
   /// local diagnostics like in reference binding.
   void RefersToMemberWithReducedAlignment(
@@ -10711,7 +10711,7 @@
           Action);
 };
 
-/// \brief RAII object that enters a new expression evaluation context.
+/// RAII object that enters a new expression evaluation context.
 class EnterExpressionEvaluationContext {
   Sema &Actions;
   bool Entered = true;
@@ -10764,11 +10764,11 @@
 MakeDeductionFailureInfo(ASTContext &Context, Sema::TemplateDeductionResult TDK,
                          sema::TemplateDeductionInfo &Info);
 
-/// \brief Contains a late templated function.
+/// Contains a late templated function.
 /// Will be parsed at the end of the translation unit, used by Sema & Parser.
 struct LateParsedTemplate {
   CachedTokens Toks;
-  /// \brief The template function declaration to be late parsed.
+  /// The template function declaration to be late parsed.
   Decl *D;
 };
 
Index: cfe/trunk/include/clang/Sema/SemaConsumer.h
===================================================================
--- cfe/trunk/include/clang/Sema/SemaConsumer.h
+++ cfe/trunk/include/clang/Sema/SemaConsumer.h
@@ -20,7 +20,7 @@
 namespace clang {
   class Sema;
 
-  /// \brief An abstract interface that should be implemented by
+  /// An abstract interface that should be implemented by
   /// clients that read ASTs and then require further semantic
   /// analysis of the entities in those ASTs.
   class SemaConsumer : public ASTConsumer {
@@ -30,12 +30,12 @@
       ASTConsumer::SemaConsumer = true;
     }
 
-    /// \brief Initialize the semantic consumer with the Sema instance
+    /// Initialize the semantic consumer with the Sema instance
     /// being used to perform semantic analysis on the abstract syntax
     /// tree.
     virtual void InitializeSema(Sema &S) {}
 
-    /// \brief Inform the semantic consumer that Sema is no longer available.
+    /// Inform the semantic consumer that Sema is no longer available.
     virtual void ForgetSema() {}
 
     // isa/cast/dyn_cast support
Index: cfe/trunk/include/clang/Sema/SemaInternal.h
===================================================================
--- cfe/trunk/include/clang/Sema/SemaInternal.h
+++ cfe/trunk/include/clang/Sema/SemaInternal.h
@@ -139,13 +139,13 @@
     return CorrectionResults.empty() && ValidatedCorrections.size() == 1;
   }
 
-  /// \brief Return the list of TypoCorrections for the given identifier from
+  /// Return the list of TypoCorrections for the given identifier from
   /// the set of corrections that have the closest edit distance, if any.
   TypoResultList &operator[](StringRef Name) {
     return CorrectionResults.begin()->second[Name];
   }
 
-  /// \brief Return the edit distance of the corrections that have the
+  /// Return the edit distance of the corrections that have the
   /// closest/best edit distance from the original typop.
   unsigned getBestEditDistance(bool Normalized) {
     if (CorrectionResults.empty())
@@ -155,28 +155,28 @@
     return Normalized ? TypoCorrection::NormalizeEditDistance(BestED) : BestED;
   }
 
-  /// \brief Set-up method to add to the consumer the set of namespaces to use
+  /// Set-up method to add to the consumer the set of namespaces to use
   /// in performing corrections to nested name specifiers. This method also
   /// implicitly adds all of the known classes in the current AST context to the
   /// to the consumer for correcting nested name specifiers.
   void
   addNamespaces(const llvm::MapVector<NamespaceDecl *, bool> &KnownNamespaces);
 
-  /// \brief Return the next typo correction that passes all internal filters
+  /// Return the next typo correction that passes all internal filters
   /// and is deemed valid by the consumer's CorrectionCandidateCallback,
   /// starting with the corrections that have the closest edit distance. An
   /// empty TypoCorrection is returned once no more viable corrections remain
   /// in the consumer.
   const TypoCorrection &getNextCorrection();
 
-  /// \brief Get the last correction returned by getNextCorrection().
+  /// Get the last correction returned by getNextCorrection().
   const TypoCorrection &getCurrentCorrection() {
     return CurrentTCIndex < ValidatedCorrections.size()
                ? ValidatedCorrections[CurrentTCIndex]
                : ValidatedCorrections[0];  // The empty correction.
   }
 
-  /// \brief Return the next typo correction like getNextCorrection, but keep
+  /// Return the next typo correction like getNextCorrection, but keep
   /// the internal state pointed to the current correction (i.e. the next time
   /// getNextCorrection is called, it will return the same correction returned
   /// by peekNextcorrection).
@@ -187,27 +187,27 @@
     return TC;
   }
 
-  /// \brief Reset the consumer's position in the stream of viable corrections
+  /// Reset the consumer's position in the stream of viable corrections
   /// (i.e. getNextCorrection() will return each of the previously returned
   /// corrections in order before returning any new corrections).
   void resetCorrectionStream() {
     CurrentTCIndex = 0;
   }
 
-  /// \brief Return whether the end of the stream of corrections has been
+  /// Return whether the end of the stream of corrections has been
   /// reached.
   bool finished() {
     return CorrectionResults.empty() &&
            CurrentTCIndex >= ValidatedCorrections.size();
   }
 
-  /// \brief Save the current position in the correction stream (overwriting any
+  /// Save the current position in the correction stream (overwriting any
   /// previously saved position).
   void saveCurrentPosition() {
     SavedTCIndex = CurrentTCIndex;
   }
 
-  /// \brief Restore the saved position in the correction stream.
+  /// Restore the saved position in the correction stream.
   void restoreSavedPosition() {
     CurrentTCIndex = SavedTCIndex;
   }
@@ -241,7 +241,7 @@
 
     std::map<unsigned, SpecifierInfoList> DistanceMap;
 
-    /// \brief Helper for building the list of DeclContexts between the current
+    /// Helper for building the list of DeclContexts between the current
     /// context and the top of the translation unit
     static DeclContextList buildContextChain(DeclContext *Start);
 
@@ -252,11 +252,11 @@
     NamespaceSpecifierSet(ASTContext &Context, DeclContext *CurContext,
                           CXXScopeSpec *CurScopeSpec);
 
-    /// \brief Add the DeclContext (a namespace or record) to the set, computing
+    /// Add the DeclContext (a namespace or record) to the set, computing
     /// the corresponding NestedNameSpecifier and its distance in the process.
     void addNameSpecifier(DeclContext *Ctx);
 
-    /// \brief Provides flat iteration over specifiers, sorted by distance.
+    /// Provides flat iteration over specifiers, sorted by distance.
     class iterator
         : public llvm::iterator_facade_base<iterator, std::forward_iterator_tag,
                                             SpecifierInfo> {
@@ -295,21 +295,21 @@
   void addName(StringRef Name, NamedDecl *ND,
                NestedNameSpecifier *NNS = nullptr, bool isKeyword = false);
 
-  /// \brief Find any visible decls for the given typo correction candidate.
+  /// Find any visible decls for the given typo correction candidate.
   /// If none are found, it to the set of candidates for which qualified lookups
   /// will be performed to find possible nested name specifier changes.
   bool resolveCorrection(TypoCorrection &Candidate);
 
-  /// \brief Perform qualified lookups on the queued set of typo correction
+  /// Perform qualified lookups on the queued set of typo correction
   /// candidates and add the nested name specifier changes to each candidate if
   /// a lookup succeeds (at which point the candidate will be returned to the
   /// main pool of potential corrections).
   void performQualifiedLookups();
 
-  /// \brief The name written that is a typo in the source.
+  /// The name written that is a typo in the source.
   IdentifierInfo *Typo;
 
-  /// \brief The results found that have the smallest edit distance
+  /// The results found that have the smallest edit distance
   /// found (so far) with the typo name.
   ///
   /// The pointer value being set to the current DeclContext indicates
Index: cfe/trunk/include/clang/Sema/SemaLambda.h
===================================================================
--- cfe/trunk/include/clang/Sema/SemaLambda.h
+++ cfe/trunk/include/clang/Sema/SemaLambda.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file provides some common utility functions for processing
+/// This file provides some common utility functions for processing
 /// Lambdas.
 ///
 //===----------------------------------------------------------------------===//
@@ -24,7 +24,7 @@
 }
 class Sema;
 
-/// \brief Examines the FunctionScopeInfo stack to determine the nearest
+/// Examines the FunctionScopeInfo stack to determine the nearest
 /// enclosing lambda (to the current lambda) that is 'capture-capable' for 
 /// the variable referenced in the current lambda (i.e. \p VarToCapture).
 /// If successful, returns the index into Sema's FunctionScopeInfo stack
Index: cfe/trunk/include/clang/Sema/Template.h
===================================================================
--- cfe/trunk/include/clang/Sema/Template.h
+++ cfe/trunk/include/clang/Sema/Template.h
@@ -43,7 +43,7 @@
 class TypeSourceInfo;
 class VarDecl;
 
-  /// \brief Data structure that captures multiple levels of template argument
+  /// Data structure that captures multiple levels of template argument
   /// lists for use in template instantiation.
   ///
   /// Multiple levels of template arguments occur when instantiating the 
@@ -63,47 +63,47 @@
   /// list will contain a template argument list (int) at depth 0 and a
   /// template argument list (17) at depth 1.
   class MultiLevelTemplateArgumentList {
-    /// \brief The template argument list at a certain template depth 
+    /// The template argument list at a certain template depth 
     using ArgList = ArrayRef<TemplateArgument>;
 
-    /// \brief The template argument lists, stored from the innermost template
+    /// The template argument lists, stored from the innermost template
     /// argument list (first) to the outermost template argument list (last).
     SmallVector<ArgList, 4> TemplateArgumentLists;
 
-    /// \brief The number of outer levels of template arguments that are not
+    /// The number of outer levels of template arguments that are not
     /// being substituted.
     unsigned NumRetainedOuterLevels = 0;
     
   public:
-    /// \brief Construct an empty set of template argument lists.
+    /// Construct an empty set of template argument lists.
     MultiLevelTemplateArgumentList() = default;
     
-    /// \brief Construct a single-level template argument list.
+    /// Construct a single-level template argument list.
     explicit 
     MultiLevelTemplateArgumentList(const TemplateArgumentList &TemplateArgs) {
       addOuterTemplateArguments(&TemplateArgs);
     }
     
-    /// \brief Determine the number of levels in this template argument
+    /// Determine the number of levels in this template argument
     /// list.
     unsigned getNumLevels() const {
       return TemplateArgumentLists.size() + NumRetainedOuterLevels;
     }
 
-    /// \brief Determine the number of substituted levels in this template
+    /// Determine the number of substituted levels in this template
     /// argument list.
     unsigned getNumSubstitutedLevels() const {
       return TemplateArgumentLists.size();
     }
 
-    /// \brief Retrieve the template argument at a given depth and index.
+    /// Retrieve the template argument at a given depth and index.
     const TemplateArgument &operator()(unsigned Depth, unsigned Index) const {
       assert(NumRetainedOuterLevels <= Depth && Depth < getNumLevels());
       assert(Index < TemplateArgumentLists[getNumLevels() - Depth - 1].size());
       return TemplateArgumentLists[getNumLevels() - Depth - 1][Index];
     }
     
-    /// \brief Determine whether there is a non-NULL template argument at the
+    /// Determine whether there is a non-NULL template argument at the
     /// given depth and index.
     ///
     /// There must exist a template argument list at the given depth.
@@ -119,7 +119,7 @@
       return !(*this)(Depth, Index).isNull();
     }
     
-    /// \brief Clear out a specific template argument.
+    /// Clear out a specific template argument.
     void setArgument(unsigned Depth, unsigned Index,
                      TemplateArgument Arg) {
       assert(NumRetainedOuterLevels <= Depth && Depth < getNumLevels());
@@ -129,14 +129,14 @@
         = Arg;
     }
     
-    /// \brief Add a new outermost level to the multi-level template argument 
+    /// Add a new outermost level to the multi-level template argument 
     /// list.
     void addOuterTemplateArguments(const TemplateArgumentList *TemplateArgs) {
       addOuterTemplateArguments(ArgList(TemplateArgs->data(),
                                         TemplateArgs->size()));
     }
 
-    /// \brief Add a new outmost level to the multi-level template argument
+    /// Add a new outmost level to the multi-level template argument
     /// list.
     void addOuterTemplateArguments(ArgList Args) {
       assert(!NumRetainedOuterLevels &&
@@ -144,29 +144,29 @@
       TemplateArgumentLists.push_back(Args);
     }
 
-    /// \brief Add an outermost level that we are not substituting. We have no
+    /// Add an outermost level that we are not substituting. We have no
     /// arguments at this level, and do not remove it from the depth of inner
     /// template parameters that we instantiate.
     void addOuterRetainedLevel() {
       ++NumRetainedOuterLevels;
     }
 
-    /// \brief Retrieve the innermost template argument list.
+    /// Retrieve the innermost template argument list.
     const ArgList &getInnermost() const {
       return TemplateArgumentLists.front(); 
     }
   };
   
-  /// \brief The context in which partial ordering of function templates occurs.
+  /// The context in which partial ordering of function templates occurs.
   enum TPOC {
-    /// \brief Partial ordering of function templates for a function call.
+    /// Partial ordering of function templates for a function call.
     TPOC_Call,
 
-    /// \brief Partial ordering of function templates for a call to a 
+    /// Partial ordering of function templates for a call to a 
     /// conversion function.
     TPOC_Conversion,
 
-    /// \brief Partial ordering of function templates in other contexts, e.g.,
+    /// Partial ordering of function templates in other contexts, e.g.,
     /// taking the address of a function template or matching a function 
     /// template specialization to a function template.
     TPOC_Other
@@ -185,10 +185,10 @@
     operator TPOC() const { return Value; }
   };
 
-  /// \brief Captures a template argument whose value has been deduced
+  /// Captures a template argument whose value has been deduced
   /// via c++ template argument deduction.
   class DeducedTemplateArgument : public TemplateArgument {
-    /// \brief For a non-type template argument, whether the value was
+    /// For a non-type template argument, whether the value was
     /// deduced from an array bound.
     bool DeducedFromArrayBound = false;
 
@@ -199,7 +199,7 @@
                             bool DeducedFromArrayBound = false)
         : TemplateArgument(Arg), DeducedFromArrayBound(DeducedFromArrayBound) {}
 
-    /// \brief Construct an integral non-type template argument that
+    /// Construct an integral non-type template argument that
     /// has been deduced, possibly from an array bound.
     DeducedTemplateArgument(ASTContext &Ctx,
                             const llvm::APSInt &Value,
@@ -208,18 +208,18 @@
         : TemplateArgument(Ctx, Value, ValueType),
           DeducedFromArrayBound(DeducedFromArrayBound) {}
 
-    /// \brief For a non-type template argument, determine whether the
+    /// For a non-type template argument, determine whether the
     /// template argument was deduced from an array bound.
     bool wasDeducedFromArrayBound() const { return DeducedFromArrayBound; }
 
-    /// \brief Specify whether the given non-type template argument
+    /// Specify whether the given non-type template argument
     /// was deduced from an array bound.
     void setDeducedFromArrayBound(bool Deduced) {
       DeducedFromArrayBound = Deduced;
     }
   };
 
-  /// \brief A stack-allocated class that identifies which local
+  /// A stack-allocated class that identifies which local
   /// variable declaration instantiations are present in this scope.
   ///
   /// A new instance of this class type will be created whenever we
@@ -227,11 +227,11 @@
   /// set of parameter declarations.
   class LocalInstantiationScope {
   public:
-    /// \brief A set of declarations.
+    /// A set of declarations.
     using DeclArgumentPack = SmallVector<ParmVarDecl *, 4>;
 
   private:
-    /// \brief Reference to the semantic analysis that is performing
+    /// Reference to the semantic analysis that is performing
     /// this template instantiation.
     Sema &SemaRef;
 
@@ -239,7 +239,7 @@
         llvm::SmallDenseMap<const Decl *,
                             llvm::PointerUnion<Decl *, DeclArgumentPack *>, 4>;
 
-    /// \brief A mapping from local declarations that occur
+    /// A mapping from local declarations that occur
     /// within a template to their instantiations.
     ///
     /// This mapping is used during instantiation to keep track of,
@@ -259,30 +259,30 @@
     /// pointer.
     LocalDeclsMap LocalDecls;
 
-    /// \brief The set of argument packs we've allocated.
+    /// The set of argument packs we've allocated.
     SmallVector<DeclArgumentPack *, 1> ArgumentPacks;
     
-    /// \brief The outer scope, which contains local variable
+    /// The outer scope, which contains local variable
     /// definitions from some other instantiation (that may not be
     /// relevant to this particular scope).
     LocalInstantiationScope *Outer;
 
-    /// \brief Whether we have already exited this scope.
+    /// Whether we have already exited this scope.
     bool Exited = false;
 
-    /// \brief Whether to combine this scope with the outer scope, such that
+    /// Whether to combine this scope with the outer scope, such that
     /// lookup will search our outer scope.
     bool CombineWithOuterScope;
     
-    /// \brief If non-NULL, the template parameter pack that has been
+    /// If non-NULL, the template parameter pack that has been
     /// partially substituted per C++0x [temp.arg.explicit]p9.
     NamedDecl *PartiallySubstitutedPack = nullptr;
     
-    /// \brief If \c PartiallySubstitutedPack is non-null, the set of
+    /// If \c PartiallySubstitutedPack is non-null, the set of
     /// explicitly-specified template arguments in that pack.
     const TemplateArgument *ArgsInPartiallySubstitutedPack;    
     
-    /// \brief If \c PartiallySubstitutedPack, the number of 
+    /// If \c PartiallySubstitutedPack, the number of 
     /// explicitly-specified template arguments in 
     /// ArgsInPartiallySubstitutedPack.
     unsigned NumArgsInPartiallySubstitutedPack;
@@ -304,7 +304,7 @@
     
     const Sema &getSema() const { return SemaRef; }
 
-    /// \brief Exit this local instantiation scope early.
+    /// Exit this local instantiation scope early.
     void Exit() {
       if (Exited)
         return;
@@ -316,7 +316,7 @@
       Exited = true;
     }
 
-    /// \brief Clone this scope, and all outer scopes, down to the given
+    /// Clone this scope, and all outer scopes, down to the given
     /// outermost scope.
     LocalInstantiationScope *cloneScopes(LocalInstantiationScope *Outermost) {
       if (this == Outermost) return this;
@@ -356,7 +356,7 @@
       return newScope;
     }
 
-    /// \brief deletes the given scope, and all otuer scopes, down to the
+    /// deletes the given scope, and all otuer scopes, down to the
     /// given outermost scope.
     static void deleteScopes(LocalInstantiationScope *Scope,
                              LocalInstantiationScope *Outermost) {
@@ -367,7 +367,7 @@
       }
     }
 
-    /// \brief Find the instantiation of the declaration D within the current
+    /// Find the instantiation of the declaration D within the current
     /// instantiation scope.
     ///
     /// \param D The declaration whose instantiation we are searching for.
@@ -382,7 +382,7 @@
     void InstantiatedLocalPackArg(const Decl *D, ParmVarDecl *Inst);
     void MakeInstantiatedLocalArgPack(const Decl *D);
     
-    /// \brief Note that the given parameter pack has been partially substituted
+    /// Note that the given parameter pack has been partially substituted
     /// via explicit specification of template arguments 
     /// (C++0x [temp.arg.explicit]p9).
     ///
@@ -398,7 +398,7 @@
                                      const TemplateArgument *ExplicitArgs,
                                      unsigned NumExplicitArgs);
 
-    /// \brief Reset the partially-substituted pack when it is no longer of
+    /// Reset the partially-substituted pack when it is no longer of
     /// interest.
     void ResetPartiallySubstitutedPack() {
       assert(PartiallySubstitutedPack && "No partially-substituted pack");
@@ -407,7 +407,7 @@
       NumArgsInPartiallySubstitutedPack = 0;
     }
 
-    /// \brief Retrieve the partially-substitued template parameter pack.
+    /// Retrieve the partially-substitued template parameter pack.
     ///
     /// If there is no partially-substituted parameter pack, returns NULL.
     NamedDecl *
@@ -425,14 +425,14 @@
     Sema::LateInstantiatedAttrVec* LateAttrs = nullptr;
     LocalInstantiationScope *StartingScope = nullptr;
 
-    /// \brief A list of out-of-line class template partial
+    /// A list of out-of-line class template partial
     /// specializations that will need to be instantiated after the
     /// enclosing class's instantiation is complete.
     SmallVector<std::pair<ClassTemplateDecl *,
                                 ClassTemplatePartialSpecializationDecl *>, 4>
       OutOfLinePartialSpecs;
 
-    /// \brief A list of out-of-line variable template partial
+    /// A list of out-of-line variable template partial
     /// specializations that will need to be instantiated after the
     /// enclosing variable's instantiation is complete.
     /// FIXME: Verify that this is needed.
@@ -504,7 +504,7 @@
     using delayed_var_partial_spec_iterator = SmallVectorImpl<std::pair<
         VarTemplateDecl *, VarTemplatePartialSpecializationDecl *>>::iterator;
 
-    /// \brief Return an iterator to the beginning of the set of
+    /// Return an iterator to the beginning of the set of
     /// "delayed" partial specializations, which must be passed to
     /// InstantiateClassTemplatePartialSpecialization once the class
     /// definition has been completed.
@@ -516,7 +516,7 @@
       return OutOfLineVarPartialSpecs.begin();
     }
 
-    /// \brief Return an iterator to the end of the set of
+    /// Return an iterator to the end of the set of
     /// "delayed" partial specializations, which must be passed to
     /// InstantiateClassTemplatePartialSpecialization once the class
     /// definition has been completed.
Index: cfe/trunk/include/clang/Sema/TemplateDeduction.h
===================================================================
--- cfe/trunk/include/clang/Sema/TemplateDeduction.h
+++ cfe/trunk/include/clang/Sema/TemplateDeduction.h
@@ -34,24 +34,24 @@
 
 namespace sema {
 
-/// \brief Provides information about an attempted template argument
+/// Provides information about an attempted template argument
 /// deduction, whose success or failure was described by a
 /// TemplateDeductionResult value.
 class TemplateDeductionInfo {
-  /// \brief The deduced template argument list.
+  /// The deduced template argument list.
   TemplateArgumentList *Deduced = nullptr;
 
-  /// \brief The source location at which template argument
+  /// The source location at which template argument
   /// deduction is occurring.
   SourceLocation Loc;
 
-  /// \brief Have we suppressed an error during deduction?
+  /// Have we suppressed an error during deduction?
   bool HasSFINAEDiagnostic = false;
 
-  /// \brief The template parameter depth for which we're performing deduction.
+  /// The template parameter depth for which we're performing deduction.
   unsigned DeducedDepth;
 
-  /// \brief Warnings (and follow-on notes) that were suppressed due to
+  /// Warnings (and follow-on notes) that were suppressed due to
   /// SFINAE while performing template argument deduction.
   SmallVector<PartialDiagnosticAt, 4> SuppressedDiagnostics;
 
@@ -61,26 +61,26 @@
   TemplateDeductionInfo(const TemplateDeductionInfo &) = delete;
   TemplateDeductionInfo &operator=(const TemplateDeductionInfo &) = delete;
 
-  /// \brief Returns the location at which template argument is
+  /// Returns the location at which template argument is
   /// occurring.
   SourceLocation getLocation() const {
     return Loc;
   }
 
-  /// \brief The depth of template parameters for which deduction is being
+  /// The depth of template parameters for which deduction is being
   /// performed.
   unsigned getDeducedDepth() const {
     return DeducedDepth;
   }
 
-  /// \brief Take ownership of the deduced template argument list.
+  /// Take ownership of the deduced template argument list.
   TemplateArgumentList *take() {
     TemplateArgumentList *Result = Deduced;
     Deduced = nullptr;
     return Result;
   }
 
-  /// \brief Take ownership of the SFINAE diagnostic.
+  /// Take ownership of the SFINAE diagnostic.
   void takeSFINAEDiagnostic(PartialDiagnosticAt &PD) {
     assert(HasSFINAEDiagnostic);
     PD.first = SuppressedDiagnostics.front().first;
@@ -88,7 +88,7 @@
     clearSFINAEDiagnostic();
   }
 
-  /// \brief Discard any SFINAE diagnostics.
+  /// Discard any SFINAE diagnostics.
   void clearSFINAEDiagnostic() {
     SuppressedDiagnostics.clear();
     HasSFINAEDiagnostic = false;
@@ -100,18 +100,18 @@
     return SuppressedDiagnostics.front();
   }
 
-  /// \brief Provide a new template argument list that contains the
+  /// Provide a new template argument list that contains the
   /// results of template argument deduction.
   void reset(TemplateArgumentList *NewDeduced) {
     Deduced = NewDeduced;
   }
 
-  /// \brief Is a SFINAE diagnostic available?
+  /// Is a SFINAE diagnostic available?
   bool hasSFINAEDiagnostic() const {
     return HasSFINAEDiagnostic;
   }
 
-  /// \brief Set the diagnostic which caused the SFINAE failure.
+  /// Set the diagnostic which caused the SFINAE failure.
   void addSFINAEDiagnostic(SourceLocation Loc, PartialDiagnostic PD) {
     // Only collect the first diagnostic.
     if (HasSFINAEDiagnostic)
@@ -121,7 +121,7 @@
     HasSFINAEDiagnostic = true;
   }
 
-  /// \brief Add a new diagnostic to the set of diagnostics
+  /// Add a new diagnostic to the set of diagnostics
   void addSuppressedDiagnostic(SourceLocation Loc,
                                PartialDiagnostic PD) {
     if (HasSFINAEDiagnostic)
@@ -129,18 +129,18 @@
     SuppressedDiagnostics.emplace_back(Loc, std::move(PD));
   }
 
-  /// \brief Iterator over the set of suppressed diagnostics.
+  /// Iterator over the set of suppressed diagnostics.
   using diag_iterator = SmallVectorImpl<PartialDiagnosticAt>::const_iterator;
 
-  /// \brief Returns an iterator at the beginning of the sequence of suppressed
+  /// Returns an iterator at the beginning of the sequence of suppressed
   /// diagnostics.
   diag_iterator diag_begin() const { return SuppressedDiagnostics.begin(); }
 
-  /// \brief Returns an iterator at the end of the sequence of suppressed
+  /// Returns an iterator at the end of the sequence of suppressed
   /// diagnostics.
   diag_iterator diag_end() const { return SuppressedDiagnostics.end(); }
 
-  /// \brief The template parameter to which a template argument
+  /// The template parameter to which a template argument
   /// deduction failure refers.
   ///
   /// Depending on the result of template argument deduction, this
@@ -153,7 +153,7 @@
   ///   two different template argument values were deduced.
   TemplateParameter Param;
 
-  /// \brief The first template argument to which the template
+  /// The first template argument to which the template
   /// argument deduction failure refers.
   ///
   /// Depending on the result of the template argument deduction,
@@ -172,7 +172,7 @@
   ///   of the deduction, directly provided in the source code.
   TemplateArgument FirstArg;
 
-  /// \brief The second template argument to which the template
+  /// The second template argument to which the template
   /// argument deduction failure refers.
   ///
   ///   TDK_Inconsistent: this argument is the second value deduced
@@ -186,14 +186,14 @@
   /// FIXME: Finish documenting this.
   TemplateArgument SecondArg;
 
-  /// \brief The index of the function argument that caused a deduction
+  /// The index of the function argument that caused a deduction
   /// failure.
   ///
   ///   TDK_DeducedMismatch: this is the index of the argument that had a
   ///   different argument type from its substituted parameter type.
   unsigned CallArgIndex = 0;
 
-  /// \brief Information on packs that we're currently expanding.
+  /// Information on packs that we're currently expanding.
   ///
   /// FIXME: This should be kept internal to SemaTemplateDeduction.
   SmallVector<DeducedPack *, 8> PendingDeducedPacks;
@@ -207,41 +207,41 @@
   /// A Sema::TemplateDeductionResult.
   unsigned Result : 8;
 
-  /// \brief Indicates whether a diagnostic is stored in Diagnostic.
+  /// Indicates whether a diagnostic is stored in Diagnostic.
   unsigned HasDiagnostic : 1;
 
-  /// \brief Opaque pointer containing additional data about
+  /// Opaque pointer containing additional data about
   /// this deduction failure.
   void *Data;
 
-  /// \brief A diagnostic indicating why deduction failed.
+  /// A diagnostic indicating why deduction failed.
   alignas(PartialDiagnosticAt) char Diagnostic[sizeof(PartialDiagnosticAt)];
 
-  /// \brief Retrieve the diagnostic which caused this deduction failure,
+  /// Retrieve the diagnostic which caused this deduction failure,
   /// if any.
   PartialDiagnosticAt *getSFINAEDiagnostic();
 
-  /// \brief Retrieve the template parameter this deduction failure
+  /// Retrieve the template parameter this deduction failure
   /// refers to, if any.
   TemplateParameter getTemplateParameter();
 
-  /// \brief Retrieve the template argument list associated with this
+  /// Retrieve the template argument list associated with this
   /// deduction failure, if any.
   TemplateArgumentList *getTemplateArgumentList();
 
-  /// \brief Return the first template argument this deduction failure
+  /// Return the first template argument this deduction failure
   /// refers to, if any.
   const TemplateArgument *getFirstArg();
 
-  /// \brief Return the second template argument this deduction failure
+  /// Return the second template argument this deduction failure
   /// refers to, if any.
   const TemplateArgument *getSecondArg();
 
-  /// \brief Return the index of the call argument that this deduction
+  /// Return the index of the call argument that this deduction
   /// failure refers to, if any.
   llvm::Optional<unsigned> getCallArgIndex();
 
-  /// \brief Free any memory associated with this deduction failure.
+  /// Free any memory associated with this deduction failure.
   void Destroy();
 };
 
@@ -253,7 +253,7 @@
 /// TODO: In the future, we may need to unify/generalize this with
 /// OverloadCandidate.
 struct TemplateSpecCandidate {
-  /// \brief The declaration that was looked up, together with its access.
+  /// The declaration that was looked up, together with its access.
   /// Might be a UsingShadowDecl, but usually a FunctionTemplateDecl.
   DeclAccessPair FoundDecl;
 
@@ -299,7 +299,7 @@
 
   SourceLocation getLocation() const { return Loc; }
 
-  /// \brief Clear out all of the candidates.
+  /// Clear out all of the candidates.
   /// TODO: This may be unnecessary.
   void clear();
 
@@ -311,7 +311,7 @@
   size_t size() const { return Candidates.size(); }
   bool empty() const { return Candidates.empty(); }
 
-  /// \brief Add a new candidate with NumConversions conversion sequence slots
+  /// Add a new candidate with NumConversions conversion sequence slots
   /// to the overload set.
   TemplateSpecCandidate &addCandidate() {
     Candidates.emplace_back();
Index: cfe/trunk/include/clang/Sema/TemplateInstCallback.h
===================================================================
--- cfe/trunk/include/clang/Sema/TemplateInstCallback.h
+++ cfe/trunk/include/clang/Sema/TemplateInstCallback.h
@@ -19,23 +19,23 @@
 
 namespace clang {
 
-/// \brief This is a base class for callbacks that will be notified at every
+/// This is a base class for callbacks that will be notified at every
 /// template instantiation.
 class TemplateInstantiationCallback {
 public:
   virtual ~TemplateInstantiationCallback() = default;
 
-  /// \brief Called before doing AST-parsing.
+  /// Called before doing AST-parsing.
   virtual void initialize(const Sema &TheSema) = 0;
 
-  /// \brief Called after AST-parsing is completed.
+  /// Called after AST-parsing is completed.
   virtual void finalize(const Sema &TheSema) = 0;
 
-  /// \brief Called when instantiation of a template just began.
+  /// Called when instantiation of a template just began.
   virtual void atTemplateBegin(const Sema &TheSema,
                                const Sema::CodeSynthesisContext &Inst) = 0;
 
-  /// \brief Called when instantiation of a template is just about to end.
+  /// Called when instantiation of a template is just about to end.
   virtual void atTemplateEnd(const Sema &TheSema,
                              const Sema::CodeSynthesisContext &Inst) = 0;
 };
Index: cfe/trunk/include/clang/Sema/TypoCorrection.h
===================================================================
--- cfe/trunk/include/clang/Sema/TypoCorrection.h
+++ cfe/trunk/include/clang/Sema/TypoCorrection.h
@@ -39,7 +39,7 @@
 class NestedNameSpecifier;
 class Sema;
 
-/// @brief Simple class containing the result of Sema::CorrectTypo
+/// Simple class containing the result of Sema::CorrectTypo
 class TypoCorrection {
 public:
   // "Distance" for unusable corrections
@@ -81,14 +81,14 @@
 
   TypoCorrection() = default;
 
-  /// \brief Gets the DeclarationName of the typo correction
+  /// Gets the DeclarationName of the typo correction
   DeclarationName getCorrection() const { return CorrectionName; }
 
   IdentifierInfo *getCorrectionAsIdentifierInfo() const {
     return CorrectionName.getAsIdentifierInfo();
   }
 
-  /// \brief Gets the NestedNameSpecifier needed to use the typo correction
+  /// Gets the NestedNameSpecifier needed to use the typo correction
   NestedNameSpecifier *getCorrectionSpecifier() const {
     return CorrectionNameSpec;
   }
@@ -123,7 +123,7 @@
     return (ED + CharDistanceWeight / 2) / CharDistanceWeight;
   }
 
-  /// \brief Gets the "edit distance" of the typo correction from the typo.
+  /// Gets the "edit distance" of the typo correction from the typo.
   /// If Normalized is true, scale the distance down by the CharDistanceWeight
   /// to return the edit distance in terms of single-character edits.
   unsigned getEditDistance(bool Normalized = true) const {
@@ -142,13 +142,13 @@
     return Normalized ? NormalizeEditDistance(ED) : ED;
   }
 
-  /// \brief Get the correction declaration found by name lookup (before we
+  /// Get the correction declaration found by name lookup (before we
   /// looked through using shadow declarations and the like).
   NamedDecl *getFoundDecl() const {
     return hasCorrectionDecl() ? *(CorrectionDecls.begin()) : nullptr;
   }
 
-  /// \brief Gets the pointer to the declaration of the typo correction
+  /// Gets the pointer to the declaration of the typo correction
   NamedDecl *getCorrectionDecl() const {
     auto *D = getFoundDecl();
     return D ? D->getUnderlyingDecl() : nullptr;
@@ -158,24 +158,24 @@
     return dyn_cast_or_null<DeclClass>(getCorrectionDecl());
   }
 
-  /// \brief Clears the list of NamedDecls.
+  /// Clears the list of NamedDecls.
   void ClearCorrectionDecls() {
     CorrectionDecls.clear();
   }
 
-  /// \brief Clears the list of NamedDecls before adding the new one.
+  /// Clears the list of NamedDecls before adding the new one.
   void setCorrectionDecl(NamedDecl *CDecl) {
     CorrectionDecls.clear();
     addCorrectionDecl(CDecl);
   }
 
-  /// \brief Clears the list of NamedDecls and adds the given set.
+  /// Clears the list of NamedDecls and adds the given set.
   void setCorrectionDecls(ArrayRef<NamedDecl*> Decls) {
     CorrectionDecls.clear();
     CorrectionDecls.insert(CorrectionDecls.begin(), Decls.begin(), Decls.end());
   }
 
-  /// \brief Add the given NamedDecl to the list of NamedDecls that are the
+  /// Add the given NamedDecl to the list of NamedDecls that are the
   /// declarations associated with the DeclarationName of this TypoCorrection
   void addCorrectionDecl(NamedDecl *CDecl);
 
@@ -185,10 +185,10 @@
     return "'" + getAsString(LO) + "'";
   }
 
-  /// \brief Returns whether this TypoCorrection has a non-empty DeclarationName
+  /// Returns whether this TypoCorrection has a non-empty DeclarationName
   explicit operator bool() const { return bool(CorrectionName); }
 
-  /// \brief Mark this TypoCorrection as being a keyword.
+  /// Mark this TypoCorrection as being a keyword.
   /// Since addCorrectionDeclsand setCorrectionDecl don't allow NULL to be
   /// added to the list of the correction's NamedDecl pointers, NULL is added
   /// as the only element in the list to mark this TypoCorrection as a keyword.
@@ -244,7 +244,7 @@
 
   const_decl_iterator end() const { return CorrectionDecls.end(); }
 
-  /// \brief Returns whether this typo correction is correcting to a
+  /// Returns whether this typo correction is correcting to a
   /// declaration that was declared in a module that has not been imported.
   bool requiresImport() const { return RequiresImport; }
   void setRequiresImport(bool Req) { RequiresImport = Req; }
@@ -277,7 +277,7 @@
   std::vector<PartialDiagnostic> ExtraDiagnostics;
 };
 
-/// @brief Base class for callback objects used by Sema::CorrectTypo to check
+/// Base class for callback objects used by Sema::CorrectTypo to check
 /// the validity of a potential typo correction.
 class CorrectionCandidateCallback {
 public:
@@ -289,7 +289,7 @@
 
   virtual ~CorrectionCandidateCallback() = default;
 
-  /// \brief Simple predicate used by the default RankCandidate to
+  /// Simple predicate used by the default RankCandidate to
   /// determine whether to return an edit distance of 0 or InvalidDistance.
   /// This can be overridden by validators that only need to determine if a
   /// candidate is viable, without ranking potentially viable candidates.
@@ -301,7 +301,7 @@
   /// WantCXXNamedCasts, WantRemainingKeywords, or WantObjCSuper is true.
   virtual bool ValidateCandidate(const TypoCorrection &candidate);
 
-  /// \brief Method used by Sema::CorrectTypo to assign an "edit distance" rank
+  /// Method used by Sema::CorrectTypo to assign an "edit distance" rank
   /// to a candidate (where a lower value represents a better candidate), or
   /// returning InvalidDistance if the candidate is not at all viable. For
   /// validation callbacks that only need to determine if a candidate is viable,
@@ -343,7 +343,7 @@
   NestedNameSpecifier *TypoNNS;
 };
 
-/// @brief Simple template class for restricting typo correction candidates
+/// Simple template class for restricting typo correction candidates
 /// to ones having a single Decl* of the given type.
 template <class C>
 class DeclFilterCCC : public CorrectionCandidateCallback {
@@ -353,7 +353,7 @@
   }
 };
 
-// @brief Callback class to limit the allowed keywords and to only accept typo
+// Callback class to limit the allowed keywords and to only accept typo
 // corrections that are keywords or whose decls refer to functions (or template
 // functions) that accept the given number of arguments.
 class FunctionCallFilterCCC : public CorrectionCandidateCallback {
@@ -371,7 +371,7 @@
   MemberExpr *MemberFn;
 };
 
-// @brief Callback class that effectively disabled typo correction
+// Callback class that effectively disabled typo correction
 class NoTypoCorrectionCCC : public CorrectionCandidateCallback {
 public:
   NoTypoCorrectionCCC() {
Index: cfe/trunk/include/clang/Sema/Weak.h
===================================================================
--- cfe/trunk/include/clang/Sema/Weak.h
+++ cfe/trunk/include/clang/Sema/Weak.h
@@ -21,7 +21,7 @@
 
 class IdentifierInfo;
 
-/// \brief Captures information about a \#pragma weak directive.
+/// Captures information about a \#pragma weak directive.
 class WeakInfo {
   IdentifierInfo *alias;  // alias (optional)
   SourceLocation loc;     // for diagnostics
Index: cfe/trunk/include/clang/Serialization/ASTBitCodes.h
===================================================================
--- cfe/trunk/include/clang/Serialization/ASTBitCodes.h
+++ cfe/trunk/include/clang/Serialization/ASTBitCodes.h
@@ -31,7 +31,7 @@
 namespace clang {
 namespace serialization {
 
-    /// \brief AST file major version number supported by this version of
+    /// AST file major version number supported by this version of
     /// Clang.
     ///
     /// Whenever the AST file format changes in a way that makes it
@@ -44,7 +44,7 @@
     /// AST files at this time.
     const unsigned VERSION_MAJOR = 6;
 
-    /// \brief AST file minor version number supported by this version of
+    /// AST file minor version number supported by this version of
     /// Clang.
     ///
     /// Whenever the AST format changes in a way that is still
@@ -54,13 +54,13 @@
     /// should be increased.
     const unsigned VERSION_MINOR = 0;
 
-    /// \brief An ID number that refers to an identifier in an AST file.
+    /// An ID number that refers to an identifier in an AST file.
     /// 
     /// The ID numbers of identifiers are consecutive (in order of discovery)
     /// and start at 1. 0 is reserved for NULL.
     using IdentifierID = uint32_t;
     
-    /// \brief An ID number that refers to a declaration in an AST file.
+    /// An ID number that refers to a declaration in an AST file.
     ///
     /// The ID numbers of declarations are consecutive (in order of
     /// discovery), with values below NUM_PREDEF_DECL_IDS being reserved. 
@@ -73,7 +73,7 @@
     using LocalDeclID = DeclID;
     using GlobalDeclID = DeclID;
 
-    /// \brief An ID number that refers to a type in an AST file.
+    /// An ID number that refers to a type in an AST file.
     ///
     /// The ID of a type is partitioned into two parts: the lower
     /// three bits are used to store the const/volatile/restrict
@@ -85,7 +85,7 @@
     /// other types that have serialized representations.
     using TypeID = uint32_t;
 
-    /// \brief A type index; the type ID with the qualifier bits removed.
+    /// A type index; the type ID with the qualifier bits removed.
     class TypeIdx {
       uint32_t Idx = 0;
 
@@ -131,58 +131,58 @@
       }
     };
 
-    /// \brief An ID number that refers to an identifier in an AST file.
+    /// An ID number that refers to an identifier in an AST file.
     using IdentID = uint32_t;
 
-    /// \brief The number of predefined identifier IDs.
+    /// The number of predefined identifier IDs.
     const unsigned int NUM_PREDEF_IDENT_IDS = 1;
 
-    /// \brief An ID number that refers to a macro in an AST file.
+    /// An ID number that refers to a macro in an AST file.
     using MacroID = uint32_t;
 
-    /// \brief A global ID number that refers to a macro in an AST file.
+    /// A global ID number that refers to a macro in an AST file.
     using GlobalMacroID = uint32_t;
 
-    /// \brief A local to a module ID number that refers to a macro in an
+    /// A local to a module ID number that refers to a macro in an
     /// AST file.
     using LocalMacroID = uint32_t;
 
-    /// \brief The number of predefined macro IDs.
+    /// The number of predefined macro IDs.
     const unsigned int NUM_PREDEF_MACRO_IDS = 1;
 
-    /// \brief An ID number that refers to an ObjC selector in an AST file.
+    /// An ID number that refers to an ObjC selector in an AST file.
     using SelectorID = uint32_t;
 
-    /// \brief The number of predefined selector IDs.
+    /// The number of predefined selector IDs.
     const unsigned int NUM_PREDEF_SELECTOR_IDS = 1;
     
-    /// \brief An ID number that refers to a set of CXXBaseSpecifiers in an 
+    /// An ID number that refers to a set of CXXBaseSpecifiers in an 
     /// AST file.
     using CXXBaseSpecifiersID = uint32_t;
 
-    /// \brief An ID number that refers to a list of CXXCtorInitializers in an
+    /// An ID number that refers to a list of CXXCtorInitializers in an
     /// AST file.
     using CXXCtorInitializersID = uint32_t;
 
-    /// \brief An ID number that refers to an entity in the detailed
+    /// An ID number that refers to an entity in the detailed
     /// preprocessing record.
     using PreprocessedEntityID = uint32_t;
 
-    /// \brief An ID number that refers to a submodule in a module file.
+    /// An ID number that refers to a submodule in a module file.
     using SubmoduleID = uint32_t;
     
-    /// \brief The number of predefined submodule IDs.
+    /// The number of predefined submodule IDs.
     const unsigned int NUM_PREDEF_SUBMODULE_IDS = 1;
 
-    /// \brief Source range/offset of a preprocessed entity.
+    /// Source range/offset of a preprocessed entity.
     struct PPEntityOffset {
-      /// \brief Raw source location of beginning of range.
+      /// Raw source location of beginning of range.
       unsigned Begin;
 
-      /// \brief Raw source location of end of range.
+      /// Raw source location of end of range.
       unsigned End;
 
-      /// \brief Offset in the AST file.
+      /// Offset in the AST file.
       uint32_t BitOffset;
 
       PPEntityOffset(SourceRange R, uint32_t BitOffset)
@@ -198,11 +198,11 @@
       }
     };
 
-    /// \brief Source range of a skipped preprocessor region
+    /// Source range of a skipped preprocessor region
     struct PPSkippedRange {
-      /// \brief Raw source location of beginning of range.
+      /// Raw source location of beginning of range.
       unsigned Begin;
-      /// \brief Raw source location of end of range.
+      /// Raw source location of end of range.
       unsigned End;
 
       PPSkippedRange(SourceRange R)
@@ -217,12 +217,12 @@
       }
     };
 
-    /// \brief Source range/offset of a preprocessed entity.
+    /// Source range/offset of a preprocessed entity.
     struct DeclOffset {
-      /// \brief Raw source location.
+      /// Raw source location.
       unsigned Loc = 0;
 
-      /// \brief Offset in the AST file.
+      /// Offset in the AST file.
       uint32_t BitOffset = 0;
 
       DeclOffset() = default;
@@ -238,56 +238,56 @@
       }
     };
 
-    /// \brief The number of predefined preprocessed entity IDs.
+    /// The number of predefined preprocessed entity IDs.
     const unsigned int NUM_PREDEF_PP_ENTITY_IDS = 1;
 
-    /// \brief Describes the various kinds of blocks that occur within
+    /// Describes the various kinds of blocks that occur within
     /// an AST file.
     enum BlockIDs {
-      /// \brief The AST block, which acts as a container around the
+      /// The AST block, which acts as a container around the
       /// full AST block.
       AST_BLOCK_ID = llvm::bitc::FIRST_APPLICATION_BLOCKID,
 
-      /// \brief The block containing information about the source
+      /// The block containing information about the source
       /// manager.
       SOURCE_MANAGER_BLOCK_ID,
 
-      /// \brief The block containing information about the
+      /// The block containing information about the
       /// preprocessor.
       PREPROCESSOR_BLOCK_ID,
 
-      /// \brief The block containing the definitions of all of the
+      /// The block containing the definitions of all of the
       /// types and decls used within the AST file.
       DECLTYPES_BLOCK_ID,
 
-      /// \brief The block containing the detailed preprocessing record.
+      /// The block containing the detailed preprocessing record.
       PREPROCESSOR_DETAIL_BLOCK_ID,
 
-      /// \brief The block containing the submodule structure.
+      /// The block containing the submodule structure.
       SUBMODULE_BLOCK_ID,
 
-      /// \brief The block containing comments.
+      /// The block containing comments.
       COMMENTS_BLOCK_ID,
 
-      /// \brief The control block, which contains all of the
+      /// The control block, which contains all of the
       /// information that needs to be validated prior to committing
       /// to loading the AST file.
       CONTROL_BLOCK_ID,
 
-      /// \brief The block of input files, which were used as inputs
+      /// The block of input files, which were used as inputs
       /// to create this AST file.
       ///
       /// This block is part of the control block.
       INPUT_FILES_BLOCK_ID,
 
-      /// \brief The block of configuration options, used to check that
+      /// The block of configuration options, used to check that
       /// a module is being used in a configuration compatible with the
       /// configuration in which it was built.
       ///
       /// This block is part of the control block.
       OPTIONS_BLOCK_ID,
 
-      /// \brief A block containing a module file extension.
+      /// A block containing a module file extension.
       EXTENSION_BLOCK_ID,
 
       /// A block with unhashed content.
@@ -297,47 +297,47 @@
       UNHASHED_CONTROL_BLOCK_ID,
     };
 
-    /// \brief Record types that occur within the control block.
+    /// Record types that occur within the control block.
     enum ControlRecordTypes {
-      /// \brief AST file metadata, including the AST file version number
+      /// AST file metadata, including the AST file version number
       /// and information about the compiler used to build this AST file.
       METADATA = 1,
 
-      /// \brief Record code for the list of other AST files imported by
+      /// Record code for the list of other AST files imported by
       /// this AST file.
       IMPORTS,
 
-      /// \brief Record code for the original file that was used to
+      /// Record code for the original file that was used to
       /// generate the AST file, including both its file ID and its
       /// name.
       ORIGINAL_FILE,
       
-      /// \brief The directory that the PCH was originally created in.
+      /// The directory that the PCH was originally created in.
       ORIGINAL_PCH_DIR,
 
-      /// \brief Record code for file ID of the file or buffer that was used to
+      /// Record code for file ID of the file or buffer that was used to
       /// generate the AST file.
       ORIGINAL_FILE_ID,
 
-      /// \brief Offsets into the input-files block where input files
+      /// Offsets into the input-files block where input files
       /// reside.
       INPUT_FILE_OFFSETS,
 
-      /// \brief Record code for the module name.
+      /// Record code for the module name.
       MODULE_NAME,
 
-      /// \brief Record code for the module map file that was used to build this
+      /// Record code for the module map file that was used to build this
       /// AST file.
       MODULE_MAP_FILE,
 
-      /// \brief Record code for the module build directory.
+      /// Record code for the module build directory.
       MODULE_DIRECTORY,
     };
 
-    /// \brief Record types that occur within the options block inside
+    /// Record types that occur within the options block inside
     /// the control block.
     enum OptionsRecordTypes {
-      /// \brief Record code for the language options table.
+      /// Record code for the language options table.
       ///
       /// The record with this code contains the contents of the
       /// LangOptions structure. We serialize the entire contents of
@@ -345,16 +345,16 @@
       /// actually important to check.
       LANGUAGE_OPTIONS = 1,
 
-      /// \brief Record code for the target options table.
+      /// Record code for the target options table.
       TARGET_OPTIONS,
 
-      /// \brief Record code for the filesystem options table.
+      /// Record code for the filesystem options table.
       FILE_SYSTEM_OPTIONS,
 
-      /// \brief Record code for the headers search options table.
+      /// Record code for the headers search options table.
       HEADER_SEARCH_OPTIONS,
 
-      /// \brief Record code for the preprocessor options table.
+      /// Record code for the preprocessor options table.
       PREPROCESSOR_OPTIONS,
     };
 
@@ -370,7 +370,7 @@
       DIAG_PRAGMA_MAPPINGS,
     };
 
-    /// \brief Record code for extension blocks.
+    /// Record code for extension blocks.
     enum ExtensionBlockRecordTypes {
       /// Metadata describing this particular extension.
       EXTENSION_METADATA = 1,
@@ -379,16 +379,16 @@
       FIRST_EXTENSION_RECORD_ID = 4
     };
 
-    /// \brief Record types that occur within the input-files block
+    /// Record types that occur within the input-files block
     /// inside the control block.
     enum InputFileRecordTypes {
-      /// \brief An input file.
+      /// An input file.
       INPUT_FILE = 1
     };
 
-    /// \brief Record types that occur within the AST block itself.
+    /// Record types that occur within the AST block itself.
     enum ASTRecordTypes {
-      /// \brief Record code for the offsets of each type.
+      /// Record code for the offsets of each type.
       ///
       /// The TYPE_OFFSET constant describes the record that occurs
       /// within the AST block. The record itself is an array of offsets that
@@ -402,7 +402,7 @@
       /// corresponding record within the DECLTYPES_BLOCK_ID block.
       TYPE_OFFSET = 1,
 
-      /// \brief Record code for the offsets of each decl.
+      /// Record code for the offsets of each decl.
       ///
       /// The DECL_OFFSET constant describes the record that occurs
       /// within the block identified by DECL_OFFSETS_BLOCK_ID within
@@ -414,7 +414,7 @@
       /// reserved for the translation unit declaration.
       DECL_OFFSET = 2,
 
-      /// \brief Record code for the table of offsets of each
+      /// Record code for the table of offsets of each
       /// identifier ID.
       ///
       /// The offset table contains offsets into the blob stored in
@@ -422,12 +422,12 @@
       /// NULL-terminated string that corresponds to that identifier.
       IDENTIFIER_OFFSET = 3,
 
-      /// \brief This is so that older clang versions, before the introduction
+      /// This is so that older clang versions, before the introduction
       /// of the control block, can read and reject the newer PCH format.
       /// *DON'T CHANGE THIS NUMBER*.
       METADATA_OLD_FORMAT = 4,
 
-      /// \brief Record code for the identifier table.
+      /// Record code for the identifier table.
       ///
       /// The identifier table is a simple blob that contains
       /// NULL-terminated strings for all of the identifiers
@@ -441,7 +441,7 @@
       /// IDs).
       IDENTIFIER_TABLE = 5,
 
-      /// \brief Record code for the array of eagerly deserialized decls.
+      /// Record code for the array of eagerly deserialized decls.
       ///
       /// The AST file contains a list of all of the declarations that should be
       /// eagerly deserialized present within the parsed headers, stored as an
@@ -451,7 +451,7 @@
       /// program (e.g., for code generation).
       EAGERLY_DESERIALIZED_DECLS = 6,
 
-      /// \brief Record code for the set of non-builtin, special
+      /// Record code for the set of non-builtin, special
       /// types.
       ///
       /// This record contains the type IDs for the various type nodes
@@ -460,31 +460,31 @@
       /// offsets into this record.
       SPECIAL_TYPES = 7,
 
-      /// \brief Record code for the extra statistics we gather while
+      /// Record code for the extra statistics we gather while
       /// generating an AST file.
       STATISTICS = 8,
 
-      /// \brief Record code for the array of tentative definitions.
+      /// Record code for the array of tentative definitions.
       TENTATIVE_DEFINITIONS = 9,
 
       // ID 10 used to be for a list of extern "C" declarations.
 
-      /// \brief Record code for the table of offsets into the
+      /// Record code for the table of offsets into the
       /// Objective-C method pool.
       SELECTOR_OFFSETS = 11,
 
-      /// \brief Record code for the Objective-C method pool,
+      /// Record code for the Objective-C method pool,
       METHOD_POOL = 12,
 
-      /// \brief The value of the next __COUNTER__ to dispense.
+      /// The value of the next __COUNTER__ to dispense.
       /// [PP_COUNTER_VALUE, Val]
       PP_COUNTER_VALUE = 13,
 
-      /// \brief Record code for the table of offsets into the block
+      /// Record code for the table of offsets into the block
       /// of source-location information.
       SOURCE_LOCATION_OFFSETS = 14,
 
-      /// \brief Record code for the set of source location entries
+      /// Record code for the set of source location entries
       /// that need to be preloaded by the AST reader.
       ///
       /// This set contains the source location entry for the
@@ -492,47 +492,47 @@
       /// preloaded.
       SOURCE_LOCATION_PRELOADS = 15,
 
-      /// \brief Record code for the set of ext_vector type names.
+      /// Record code for the set of ext_vector type names.
       EXT_VECTOR_DECLS = 16,
 
-      /// \brief Record code for the array of unused file scoped decls.
+      /// Record code for the array of unused file scoped decls.
       UNUSED_FILESCOPED_DECLS = 17,
 
-      /// \brief Record code for the table of offsets to entries in the
+      /// Record code for the table of offsets to entries in the
       /// preprocessing record.
       PPD_ENTITIES_OFFSETS = 18,
 
-      /// \brief Record code for the array of VTable uses.
+      /// Record code for the array of VTable uses.
       VTABLE_USES = 19,
 
       // ID 20 used to be for a list of dynamic classes.
 
-      /// \brief Record code for referenced selector pool.
+      /// Record code for referenced selector pool.
       REFERENCED_SELECTOR_POOL = 21,
 
-      /// \brief Record code for an update to the TU's lexically contained
+      /// Record code for an update to the TU's lexically contained
       /// declarations.
       TU_UPDATE_LEXICAL = 22,
 
       // ID 23 used to be for a list of local redeclarations.
 
-      /// \brief Record code for declarations that Sema keeps references of.
+      /// Record code for declarations that Sema keeps references of.
       SEMA_DECL_REFS = 24,
 
-      /// \brief Record code for weak undeclared identifiers.
+      /// Record code for weak undeclared identifiers.
       WEAK_UNDECLARED_IDENTIFIERS = 25,
 
-      /// \brief Record code for pending implicit instantiations.
+      /// Record code for pending implicit instantiations.
       PENDING_IMPLICIT_INSTANTIATIONS = 26,
 
       // ID 27 used to be for a list of replacement decls.
 
-      /// \brief Record code for an update to a decl context's lookup table.
+      /// Record code for an update to a decl context's lookup table.
       ///
       /// In practice, this should only be used for the TU and namespaces.
       UPDATE_VISIBLE = 28,
 
-      /// \brief Record for offsets of DECL_UPDATES records for declarations
+      /// Record for offsets of DECL_UPDATES records for declarations
       /// that were modified after being deserialized and need updates.
       DECL_UPDATE_OFFSETS = 29,
 
@@ -543,245 +543,245 @@
 
       // ID 32 used to be the code for \#pragma diagnostic mappings.
 
-      /// \brief Record code for special CUDA declarations.
+      /// Record code for special CUDA declarations.
       CUDA_SPECIAL_DECL_REFS = 33,
 
-      /// \brief Record code for header search information.
+      /// Record code for header search information.
       HEADER_SEARCH_TABLE = 34,
 
-      /// \brief Record code for floating point \#pragma options.
+      /// Record code for floating point \#pragma options.
       FP_PRAGMA_OPTIONS = 35,
 
-      /// \brief Record code for enabled OpenCL extensions.
+      /// Record code for enabled OpenCL extensions.
       OPENCL_EXTENSIONS = 36,
 
-      /// \brief The list of delegating constructor declarations.
+      /// The list of delegating constructor declarations.
       DELEGATING_CTORS = 37,
 
-      /// \brief Record code for the set of known namespaces, which are used
+      /// Record code for the set of known namespaces, which are used
       /// for typo correction.
       KNOWN_NAMESPACES = 38,
 
-      /// \brief Record code for the remapping information used to relate
+      /// Record code for the remapping information used to relate
       /// loaded modules to the various offsets and IDs(e.g., source location
       /// offests, declaration and type IDs) that are used in that module to
       /// refer to other modules.
       MODULE_OFFSET_MAP = 39,
 
-      /// \brief Record code for the source manager line table information,
+      /// Record code for the source manager line table information,
       /// which stores information about \#line directives.
       SOURCE_MANAGER_LINE_TABLE = 40,
 
-      /// \brief Record code for map of Objective-C class definition IDs to the
+      /// Record code for map of Objective-C class definition IDs to the
       /// ObjC categories in a module that are attached to that class.
       OBJC_CATEGORIES_MAP = 41,
 
-      /// \brief Record code for a file sorted array of DeclIDs in a module.
+      /// Record code for a file sorted array of DeclIDs in a module.
       FILE_SORTED_DECLS = 42,
 
-      /// \brief Record code for an array of all of the (sub)modules that were
+      /// Record code for an array of all of the (sub)modules that were
       /// imported by the AST file.
       IMPORTED_MODULES = 43,
 
       // ID 44 used to be a table of merged canonical declarations.
       // ID 45 used to be a list of declaration IDs of local redeclarations.
 
-      /// \brief Record code for the array of Objective-C categories (including
+      /// Record code for the array of Objective-C categories (including
       /// extensions).
       ///
       /// This array can only be interpreted properly using the Objective-C
       /// categories map.
       OBJC_CATEGORIES = 46,
 
-      /// \brief Record code for the table of offsets of each macro ID.
+      /// Record code for the table of offsets of each macro ID.
       ///
       /// The offset table contains offsets into the blob stored in
       /// the preprocessor block. Each offset points to the corresponding
       /// macro definition.
       MACRO_OFFSET = 47,
 
-      /// \brief A list of "interesting" identifiers. Only used in C++ (where we
+      /// A list of "interesting" identifiers. Only used in C++ (where we
       /// don't normally do lookups into the serialized identifier table). These
       /// are eagerly deserialized.
       INTERESTING_IDENTIFIERS = 48,
 
-      /// \brief Record code for undefined but used functions and variables that
+      /// Record code for undefined but used functions and variables that
       /// need a definition in this TU.
       UNDEFINED_BUT_USED = 49,
 
-      /// \brief Record code for late parsed template functions.
+      /// Record code for late parsed template functions.
       LATE_PARSED_TEMPLATE = 50,
 
-      /// \brief Record code for \#pragma optimize options.
+      /// Record code for \#pragma optimize options.
       OPTIMIZE_PRAGMA_OPTIONS = 51,
 
-      /// \brief Record code for potentially unused local typedef names.
+      /// Record code for potentially unused local typedef names.
       UNUSED_LOCAL_TYPEDEF_NAME_CANDIDATES = 52,
 
       // ID 53 used to be a table of constructor initializer records.
 
-      /// \brief Delete expressions that will be analyzed later.
+      /// Delete expressions that will be analyzed later.
       DELETE_EXPRS_TO_ANALYZE = 54,
 
-      /// \brief Record code for \#pragma ms_struct options.
+      /// Record code for \#pragma ms_struct options.
       MSSTRUCT_PRAGMA_OPTIONS = 55,
 
-      /// \brief Record code for \#pragma ms_struct options.
+      /// Record code for \#pragma ms_struct options.
       POINTERS_TO_MEMBERS_PRAGMA_OPTIONS = 56,
 
-      /// \brief Number of unmatched #pragma clang cuda_force_host_device begin
+      /// Number of unmatched #pragma clang cuda_force_host_device begin
       /// directives we've seen.
       CUDA_PRAGMA_FORCE_HOST_DEVICE_DEPTH = 57,
 
-      /// \brief Record code for types associated with OpenCL extensions.
+      /// Record code for types associated with OpenCL extensions.
       OPENCL_EXTENSION_TYPES = 58,
 
-      /// \brief Record code for declarations associated with OpenCL extensions.
+      /// Record code for declarations associated with OpenCL extensions.
       OPENCL_EXTENSION_DECLS = 59,
 
       MODULAR_CODEGEN_DECLS = 60,
 
-      /// \brief Record code for \#pragma pack options.
+      /// Record code for \#pragma pack options.
       PACK_PRAGMA_OPTIONS = 61,
 
-      /// \brief The stack of open #ifs/#ifdefs recorded in a preamble.
+      /// The stack of open #ifs/#ifdefs recorded in a preamble.
       PP_CONDITIONAL_STACK = 62,
 
-      /// \brief A table of skipped ranges within the preprocessing record.
+      /// A table of skipped ranges within the preprocessing record.
       PPD_SKIPPED_RANGES = 63
     };
 
-    /// \brief Record types used within a source manager block.
+    /// Record types used within a source manager block.
     enum SourceManagerRecordTypes {
-      /// \brief Describes a source location entry (SLocEntry) for a
+      /// Describes a source location entry (SLocEntry) for a
       /// file.
       SM_SLOC_FILE_ENTRY = 1,
 
-      /// \brief Describes a source location entry (SLocEntry) for a
+      /// Describes a source location entry (SLocEntry) for a
       /// buffer.
       SM_SLOC_BUFFER_ENTRY = 2,
 
-      /// \brief Describes a blob that contains the data for a buffer
+      /// Describes a blob that contains the data for a buffer
       /// entry. This kind of record always directly follows a
       /// SM_SLOC_BUFFER_ENTRY record or a SM_SLOC_FILE_ENTRY with an
       /// overridden buffer.
       SM_SLOC_BUFFER_BLOB = 3,
 
-      /// \brief Describes a zlib-compressed blob that contains the data for
+      /// Describes a zlib-compressed blob that contains the data for
       /// a buffer entry.
       SM_SLOC_BUFFER_BLOB_COMPRESSED = 4,
 
-      /// \brief Describes a source location entry (SLocEntry) for a
+      /// Describes a source location entry (SLocEntry) for a
       /// macro expansion.
       SM_SLOC_EXPANSION_ENTRY = 5
     };
 
-    /// \brief Record types used within a preprocessor block.
+    /// Record types used within a preprocessor block.
     enum PreprocessorRecordTypes {
       // The macros in the PP section are a PP_MACRO_* instance followed by a
       // list of PP_TOKEN instances for each token in the definition.
 
-      /// \brief An object-like macro definition.
+      /// An object-like macro definition.
       /// [PP_MACRO_OBJECT_LIKE, IdentInfoID, SLoc, IsUsed]
       PP_MACRO_OBJECT_LIKE = 1,
 
-      /// \brief A function-like macro definition.
+      /// A function-like macro definition.
       /// [PP_MACRO_FUNCTION_LIKE, \<ObjectLikeStuff>, IsC99Varargs,
       /// IsGNUVarars, NumArgs, ArgIdentInfoID* ]
       PP_MACRO_FUNCTION_LIKE = 2,
 
-      /// \brief Describes one token.
+      /// Describes one token.
       /// [PP_TOKEN, SLoc, Length, IdentInfoID, Kind, Flags]
       PP_TOKEN = 3,
 
-      /// \brief The macro directives history for a particular identifier.
+      /// The macro directives history for a particular identifier.
       PP_MACRO_DIRECTIVE_HISTORY = 4,
 
-      /// \brief A macro directive exported by a module.
+      /// A macro directive exported by a module.
       /// [PP_MODULE_MACRO, SubmoduleID, MacroID, (Overridden SubmoduleID)*]
       PP_MODULE_MACRO = 5,
     };
 
-    /// \brief Record types used within a preprocessor detail block.
+    /// Record types used within a preprocessor detail block.
     enum PreprocessorDetailRecordTypes {
-      /// \brief Describes a macro expansion within the preprocessing record.
+      /// Describes a macro expansion within the preprocessing record.
       PPD_MACRO_EXPANSION = 0,
       
-      /// \brief Describes a macro definition within the preprocessing record.
+      /// Describes a macro definition within the preprocessing record.
       PPD_MACRO_DEFINITION = 1,
       
-      /// \brief Describes an inclusion directive within the preprocessing
+      /// Describes an inclusion directive within the preprocessing
       /// record.
       PPD_INCLUSION_DIRECTIVE = 2
     };
     
-    /// \brief Record types used within a submodule description block.
+    /// Record types used within a submodule description block.
     enum SubmoduleRecordTypes {
-      /// \brief Metadata for submodules as a whole.
+      /// Metadata for submodules as a whole.
       SUBMODULE_METADATA = 0,
 
-      /// \brief Defines the major attributes of a submodule, including its
+      /// Defines the major attributes of a submodule, including its
       /// name and parent.
       SUBMODULE_DEFINITION = 1,
 
-      /// \brief Specifies the umbrella header used to create this module,
+      /// Specifies the umbrella header used to create this module,
       /// if any.
       SUBMODULE_UMBRELLA_HEADER = 2,
 
-      /// \brief Specifies a header that falls into this (sub)module.
+      /// Specifies a header that falls into this (sub)module.
       SUBMODULE_HEADER = 3,
 
-      /// \brief Specifies a top-level header that falls into this (sub)module.
+      /// Specifies a top-level header that falls into this (sub)module.
       SUBMODULE_TOPHEADER = 4,
 
-      /// \brief Specifies an umbrella directory.
+      /// Specifies an umbrella directory.
       SUBMODULE_UMBRELLA_DIR = 5,
 
-      /// \brief Specifies the submodules that are imported by this 
+      /// Specifies the submodules that are imported by this 
       /// submodule.
       SUBMODULE_IMPORTS = 6,
 
-      /// \brief Specifies the submodules that are re-exported from this 
+      /// Specifies the submodules that are re-exported from this 
       /// submodule.
       SUBMODULE_EXPORTS = 7,
 
-      /// \brief Specifies a required feature.
+      /// Specifies a required feature.
       SUBMODULE_REQUIRES = 8,
 
-      /// \brief Specifies a header that has been explicitly excluded
+      /// Specifies a header that has been explicitly excluded
       /// from this submodule.
       SUBMODULE_EXCLUDED_HEADER = 9,
 
-      /// \brief Specifies a library or framework to link against.
+      /// Specifies a library or framework to link against.
       SUBMODULE_LINK_LIBRARY = 10,
 
-      /// \brief Specifies a configuration macro for this module.
+      /// Specifies a configuration macro for this module.
       SUBMODULE_CONFIG_MACRO = 11,
 
-      /// \brief Specifies a conflict with another module.
+      /// Specifies a conflict with another module.
       SUBMODULE_CONFLICT = 12,
 
-      /// \brief Specifies a header that is private to this submodule.
+      /// Specifies a header that is private to this submodule.
       SUBMODULE_PRIVATE_HEADER = 13,
 
-      /// \brief Specifies a header that is part of the module but must be
+      /// Specifies a header that is part of the module but must be
       /// textually included.
       SUBMODULE_TEXTUAL_HEADER = 14,
 
-      /// \brief Specifies a header that is private to this submodule but
+      /// Specifies a header that is private to this submodule but
       /// must be textually included.
       SUBMODULE_PRIVATE_TEXTUAL_HEADER = 15,
 
-      /// \brief Specifies some declarations with initializers that must be
+      /// Specifies some declarations with initializers that must be
       /// emitted to initialize the module.
       SUBMODULE_INITIALIZERS = 16,
 
-      /// \brief Specifies the name of the module that will eventually
+      /// Specifies the name of the module that will eventually
       /// re-export the entities in this module.
       SUBMODULE_EXPORT_AS = 17,
     };
 
-    /// \brief Record types used within a comments block.
+    /// Record types used within a comments block.
     enum CommentRecordTypes {
       COMMENTS_RAW_COMMENT = 0
     };
@@ -793,7 +793,7 @@
     ///
     /// @{
 
-    /// \brief Predefined type IDs.
+    /// Predefined type IDs.
     ///
     /// These type IDs correspond to predefined types in the AST
     /// context, such as built-in types (int) and special place-holder
@@ -801,499 +801,499 @@
     /// types are never actually serialized, since they will be built
     /// by the AST context when it is created.
     enum PredefinedTypeIDs {
-      /// \brief The NULL type.
+      /// The NULL type.
       PREDEF_TYPE_NULL_ID       = 0,
 
-      /// \brief The void type.
+      /// The void type.
       PREDEF_TYPE_VOID_ID       = 1,
 
-      /// \brief The 'bool' or '_Bool' type.
+      /// The 'bool' or '_Bool' type.
       PREDEF_TYPE_BOOL_ID       = 2,
 
-      /// \brief The 'char' type, when it is unsigned.
+      /// The 'char' type, when it is unsigned.
       PREDEF_TYPE_CHAR_U_ID     = 3,
 
-      /// \brief The 'unsigned char' type.
+      /// The 'unsigned char' type.
       PREDEF_TYPE_UCHAR_ID      = 4,
 
-      /// \brief The 'unsigned short' type.
+      /// The 'unsigned short' type.
       PREDEF_TYPE_USHORT_ID     = 5,
 
-      /// \brief The 'unsigned int' type.
+      /// The 'unsigned int' type.
       PREDEF_TYPE_UINT_ID       = 6,
 
-      /// \brief The 'unsigned long' type.
+      /// The 'unsigned long' type.
       PREDEF_TYPE_ULONG_ID      = 7,
 
-      /// \brief The 'unsigned long long' type.
+      /// The 'unsigned long long' type.
       PREDEF_TYPE_ULONGLONG_ID  = 8,
 
-      /// \brief The 'char' type, when it is signed.
+      /// The 'char' type, when it is signed.
       PREDEF_TYPE_CHAR_S_ID     = 9,
 
-      /// \brief The 'signed char' type.
+      /// The 'signed char' type.
       PREDEF_TYPE_SCHAR_ID      = 10,
 
-      /// \brief The C++ 'wchar_t' type.
+      /// The C++ 'wchar_t' type.
       PREDEF_TYPE_WCHAR_ID      = 11,
 
-      /// \brief The (signed) 'short' type.
+      /// The (signed) 'short' type.
       PREDEF_TYPE_SHORT_ID      = 12,
 
-      /// \brief The (signed) 'int' type.
+      /// The (signed) 'int' type.
       PREDEF_TYPE_INT_ID        = 13,
 
-      /// \brief The (signed) 'long' type.
+      /// The (signed) 'long' type.
       PREDEF_TYPE_LONG_ID       = 14,
 
-      /// \brief The (signed) 'long long' type.
+      /// The (signed) 'long long' type.
       PREDEF_TYPE_LONGLONG_ID   = 15,
 
-      /// \brief The 'float' type.
+      /// The 'float' type.
       PREDEF_TYPE_FLOAT_ID      = 16,
 
-      /// \brief The 'double' type.
+      /// The 'double' type.
       PREDEF_TYPE_DOUBLE_ID     = 17,
 
-      /// \brief The 'long double' type.
+      /// The 'long double' type.
       PREDEF_TYPE_LONGDOUBLE_ID = 18,
 
-      /// \brief The placeholder type for overloaded function sets.
+      /// The placeholder type for overloaded function sets.
       PREDEF_TYPE_OVERLOAD_ID   = 19,
 
-      /// \brief The placeholder type for dependent types.
+      /// The placeholder type for dependent types.
       PREDEF_TYPE_DEPENDENT_ID  = 20,
 
-      /// \brief The '__uint128_t' type.
+      /// The '__uint128_t' type.
       PREDEF_TYPE_UINT128_ID    = 21,
 
-      /// \brief The '__int128_t' type.
+      /// The '__int128_t' type.
       PREDEF_TYPE_INT128_ID     = 22,
 
-      /// \brief The type of 'nullptr'.
+      /// The type of 'nullptr'.
       PREDEF_TYPE_NULLPTR_ID    = 23,
 
-      /// \brief The C++ 'char16_t' type.
+      /// The C++ 'char16_t' type.
       PREDEF_TYPE_CHAR16_ID     = 24,
 
-      /// \brief The C++ 'char32_t' type.
+      /// The C++ 'char32_t' type.
       PREDEF_TYPE_CHAR32_ID     = 25,
 
-      /// \brief The ObjC 'id' type.
+      /// The ObjC 'id' type.
       PREDEF_TYPE_OBJC_ID       = 26,
 
-      /// \brief The ObjC 'Class' type.
+      /// The ObjC 'Class' type.
       PREDEF_TYPE_OBJC_CLASS    = 27,
 
-      /// \brief The ObjC 'SEL' type.
+      /// The ObjC 'SEL' type.
       PREDEF_TYPE_OBJC_SEL      = 28,
 
-      /// \brief The 'unknown any' placeholder type.
+      /// The 'unknown any' placeholder type.
       PREDEF_TYPE_UNKNOWN_ANY   = 29,
 
-      /// \brief The placeholder type for bound member functions.
+      /// The placeholder type for bound member functions.
       PREDEF_TYPE_BOUND_MEMBER  = 30,
 
-      /// \brief The "auto" deduction type.
+      /// The "auto" deduction type.
       PREDEF_TYPE_AUTO_DEDUCT   = 31,
 
-      /// \brief The "auto &&" deduction type.
+      /// The "auto &&" deduction type.
       PREDEF_TYPE_AUTO_RREF_DEDUCT = 32,
 
-      /// \brief The OpenCL 'half' / ARM NEON __fp16 type.
+      /// The OpenCL 'half' / ARM NEON __fp16 type.
       PREDEF_TYPE_HALF_ID       = 33,
 
-      /// \brief ARC's unbridged-cast placeholder type.
+      /// ARC's unbridged-cast placeholder type.
       PREDEF_TYPE_ARC_UNBRIDGED_CAST = 34,
 
-      /// \brief The pseudo-object placeholder type.
+      /// The pseudo-object placeholder type.
       PREDEF_TYPE_PSEUDO_OBJECT = 35,
 
-      /// \brief The placeholder type for builtin functions.
+      /// The placeholder type for builtin functions.
       PREDEF_TYPE_BUILTIN_FN = 36,
 
-      /// \brief OpenCL event type.
+      /// OpenCL event type.
       PREDEF_TYPE_EVENT_ID      = 37,
 
-      /// \brief OpenCL clk event type.
+      /// OpenCL clk event type.
       PREDEF_TYPE_CLK_EVENT_ID  = 38,
 
-      /// \brief OpenCL sampler type.
+      /// OpenCL sampler type.
       PREDEF_TYPE_SAMPLER_ID    = 39,
 
-      /// \brief OpenCL queue type.
+      /// OpenCL queue type.
       PREDEF_TYPE_QUEUE_ID      = 40,
 
-      /// \brief OpenCL reserve_id type.
+      /// OpenCL reserve_id type.
       PREDEF_TYPE_RESERVE_ID_ID = 41,
 
-      /// \brief The placeholder type for OpenMP array section.
+      /// The placeholder type for OpenMP array section.
       PREDEF_TYPE_OMP_ARRAY_SECTION = 42,
 
-      /// \brief The '__float128' type
+      /// The '__float128' type
       PREDEF_TYPE_FLOAT128_ID = 43,
 
-      /// \brief The '_Float16' type
+      /// The '_Float16' type
       PREDEF_TYPE_FLOAT16_ID = 44,
 
-      /// \brief The C++ 'char8_t' type.
+      /// The C++ 'char8_t' type.
       PREDEF_TYPE_CHAR8_ID = 45,
 
-      /// \brief OpenCL image types with auto numeration
+      /// OpenCL image types with auto numeration
 #define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
       PREDEF_TYPE_##Id##_ID,
 #include "clang/Basic/OpenCLImageTypes.def"
     };
 
-    /// \brief The number of predefined type IDs that are reserved for
+    /// The number of predefined type IDs that are reserved for
     /// the PREDEF_TYPE_* constants.
     ///
     /// Type IDs for non-predefined types will start at
     /// NUM_PREDEF_TYPE_IDs.
     const unsigned NUM_PREDEF_TYPE_IDS = 100;
 
-    /// \brief Record codes for each kind of type.
+    /// Record codes for each kind of type.
     ///
     /// These constants describe the type records that can occur within a
     /// block identified by DECLTYPES_BLOCK_ID in the AST file. Each
     /// constant describes a record for a specific type class in the
     /// AST. Note that DeclCode values share this code space.
     enum TypeCode {
-      /// \brief An ExtQualType record.
+      /// An ExtQualType record.
       TYPE_EXT_QUAL                 = 1,
 
-      /// \brief A ComplexType record.
+      /// A ComplexType record.
       TYPE_COMPLEX                  = 3,
 
-      /// \brief A PointerType record.
+      /// A PointerType record.
       TYPE_POINTER                  = 4,
 
-      /// \brief A BlockPointerType record.
+      /// A BlockPointerType record.
       TYPE_BLOCK_POINTER            = 5,
 
-      /// \brief An LValueReferenceType record.
+      /// An LValueReferenceType record.
       TYPE_LVALUE_REFERENCE         = 6,
 
-      /// \brief An RValueReferenceType record.
+      /// An RValueReferenceType record.
       TYPE_RVALUE_REFERENCE         = 7,
 
-      /// \brief A MemberPointerType record.
+      /// A MemberPointerType record.
       TYPE_MEMBER_POINTER           = 8,
 
-      /// \brief A ConstantArrayType record.
+      /// A ConstantArrayType record.
       TYPE_CONSTANT_ARRAY           = 9,
 
-      /// \brief An IncompleteArrayType record.
+      /// An IncompleteArrayType record.
       TYPE_INCOMPLETE_ARRAY         = 10,
 
-      /// \brief A VariableArrayType record.
+      /// A VariableArrayType record.
       TYPE_VARIABLE_ARRAY           = 11,
 
-      /// \brief A VectorType record.
+      /// A VectorType record.
       TYPE_VECTOR                   = 12,
 
-      /// \brief An ExtVectorType record.
+      /// An ExtVectorType record.
       TYPE_EXT_VECTOR               = 13,
 
-      /// \brief A FunctionNoProtoType record.
+      /// A FunctionNoProtoType record.
       TYPE_FUNCTION_NO_PROTO        = 14,
 
-      /// \brief A FunctionProtoType record.
+      /// A FunctionProtoType record.
       TYPE_FUNCTION_PROTO           = 15,
 
-      /// \brief A TypedefType record.
+      /// A TypedefType record.
       TYPE_TYPEDEF                  = 16,
 
-      /// \brief A TypeOfExprType record.
+      /// A TypeOfExprType record.
       TYPE_TYPEOF_EXPR              = 17,
 
-      /// \brief A TypeOfType record.
+      /// A TypeOfType record.
       TYPE_TYPEOF                   = 18,
 
-      /// \brief A RecordType record.
+      /// A RecordType record.
       TYPE_RECORD                   = 19,
 
-      /// \brief An EnumType record.
+      /// An EnumType record.
       TYPE_ENUM                     = 20,
 
-      /// \brief An ObjCInterfaceType record.
+      /// An ObjCInterfaceType record.
       TYPE_OBJC_INTERFACE           = 21,
 
-      /// \brief An ObjCObjectPointerType record.
+      /// An ObjCObjectPointerType record.
       TYPE_OBJC_OBJECT_POINTER      = 22,
 
-      /// \brief a DecltypeType record.
+      /// a DecltypeType record.
       TYPE_DECLTYPE                 = 23,
 
-      /// \brief An ElaboratedType record.
+      /// An ElaboratedType record.
       TYPE_ELABORATED               = 24,
 
-      /// \brief A SubstTemplateTypeParmType record.
+      /// A SubstTemplateTypeParmType record.
       TYPE_SUBST_TEMPLATE_TYPE_PARM = 25,
 
-      /// \brief An UnresolvedUsingType record.
+      /// An UnresolvedUsingType record.
       TYPE_UNRESOLVED_USING         = 26,
 
-      /// \brief An InjectedClassNameType record.
+      /// An InjectedClassNameType record.
       TYPE_INJECTED_CLASS_NAME      = 27,
 
-      /// \brief An ObjCObjectType record.
+      /// An ObjCObjectType record.
       TYPE_OBJC_OBJECT              = 28,
 
-      /// \brief An TemplateTypeParmType record.
+      /// An TemplateTypeParmType record.
       TYPE_TEMPLATE_TYPE_PARM       = 29,
 
-      /// \brief An TemplateSpecializationType record.
+      /// An TemplateSpecializationType record.
       TYPE_TEMPLATE_SPECIALIZATION  = 30,
 
-      /// \brief A DependentNameType record.
+      /// A DependentNameType record.
       TYPE_DEPENDENT_NAME           = 31,
 
-      /// \brief A DependentTemplateSpecializationType record.
+      /// A DependentTemplateSpecializationType record.
       TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION = 32,
 
-      /// \brief A DependentSizedArrayType record.
+      /// A DependentSizedArrayType record.
       TYPE_DEPENDENT_SIZED_ARRAY    = 33,
 
-      /// \brief A ParenType record.
+      /// A ParenType record.
       TYPE_PAREN                    = 34,
 
-      /// \brief A PackExpansionType record.
+      /// A PackExpansionType record.
       TYPE_PACK_EXPANSION           = 35,
 
-      /// \brief An AttributedType record.
+      /// An AttributedType record.
       TYPE_ATTRIBUTED               = 36,
 
-      /// \brief A SubstTemplateTypeParmPackType record.
+      /// A SubstTemplateTypeParmPackType record.
       TYPE_SUBST_TEMPLATE_TYPE_PARM_PACK = 37,
 
-      /// \brief A AutoType record.
+      /// A AutoType record.
       TYPE_AUTO                  = 38,
 
-      /// \brief A UnaryTransformType record.
+      /// A UnaryTransformType record.
       TYPE_UNARY_TRANSFORM       = 39,
 
-      /// \brief An AtomicType record.
+      /// An AtomicType record.
       TYPE_ATOMIC                = 40,
 
-      /// \brief A DecayedType record.
+      /// A DecayedType record.
       TYPE_DECAYED               = 41,
 
-      /// \brief An AdjustedType record.
+      /// An AdjustedType record.
       TYPE_ADJUSTED              = 42,
 
-      /// \brief A PipeType record.
+      /// A PipeType record.
       TYPE_PIPE                  = 43,
 
-      /// \brief An ObjCTypeParamType record.
+      /// An ObjCTypeParamType record.
       TYPE_OBJC_TYPE_PARAM       = 44,
 
-      /// \brief A DeducedTemplateSpecializationType record.
+      /// A DeducedTemplateSpecializationType record.
       TYPE_DEDUCED_TEMPLATE_SPECIALIZATION = 45,
 
-      /// \brief A DependentSizedExtVectorType record.
+      /// A DependentSizedExtVectorType record.
       TYPE_DEPENDENT_SIZED_EXT_VECTOR = 46,
 
-      /// \brief A DependentAddressSpaceType record.
+      /// A DependentAddressSpaceType record.
       TYPE_DEPENDENT_ADDRESS_SPACE = 47
     };
 
-    /// \brief The type IDs for special types constructed by semantic
+    /// The type IDs for special types constructed by semantic
     /// analysis.
     ///
     /// The constants in this enumeration are indices into the
     /// SPECIAL_TYPES record.
     enum SpecialTypeIDs {
-      /// \brief CFConstantString type
+      /// CFConstantString type
       SPECIAL_TYPE_CF_CONSTANT_STRING          = 0,
 
-      /// \brief C FILE typedef type
+      /// C FILE typedef type
       SPECIAL_TYPE_FILE                        = 1,
 
-      /// \brief C jmp_buf typedef type
+      /// C jmp_buf typedef type
       SPECIAL_TYPE_JMP_BUF                     = 2,
 
-      /// \brief C sigjmp_buf typedef type
+      /// C sigjmp_buf typedef type
       SPECIAL_TYPE_SIGJMP_BUF                  = 3,
 
-      /// \brief Objective-C "id" redefinition type
+      /// Objective-C "id" redefinition type
       SPECIAL_TYPE_OBJC_ID_REDEFINITION        = 4,
 
-      /// \brief Objective-C "Class" redefinition type
+      /// Objective-C "Class" redefinition type
       SPECIAL_TYPE_OBJC_CLASS_REDEFINITION     = 5,
 
-      /// \brief Objective-C "SEL" redefinition type
+      /// Objective-C "SEL" redefinition type
       SPECIAL_TYPE_OBJC_SEL_REDEFINITION       = 6,
 
-      /// \brief C ucontext_t typedef type
+      /// C ucontext_t typedef type
       SPECIAL_TYPE_UCONTEXT_T                  = 7
     };
     
-    /// \brief The number of special type IDs.
+    /// The number of special type IDs.
     const unsigned NumSpecialTypeIDs = 8;
 
-    /// \brief Predefined declaration IDs.
+    /// Predefined declaration IDs.
     ///
     /// These declaration IDs correspond to predefined declarations in the AST
     /// context, such as the NULL declaration ID. Such declarations are never
     /// actually serialized, since they will be built by the AST context when 
     /// it is created.
     enum PredefinedDeclIDs {
-      /// \brief The NULL declaration.
+      /// The NULL declaration.
       PREDEF_DECL_NULL_ID = 0,
 
-      /// \brief The translation unit.
+      /// The translation unit.
       PREDEF_DECL_TRANSLATION_UNIT_ID = 1,
 
-      /// \brief The Objective-C 'id' type.
+      /// The Objective-C 'id' type.
       PREDEF_DECL_OBJC_ID_ID = 2,
 
-      /// \brief The Objective-C 'SEL' type.
+      /// The Objective-C 'SEL' type.
       PREDEF_DECL_OBJC_SEL_ID = 3,
 
-      /// \brief The Objective-C 'Class' type.
+      /// The Objective-C 'Class' type.
       PREDEF_DECL_OBJC_CLASS_ID = 4,
 
-      /// \brief The Objective-C 'Protocol' type.
+      /// The Objective-C 'Protocol' type.
       PREDEF_DECL_OBJC_PROTOCOL_ID = 5,
 
-      /// \brief The signed 128-bit integer type.
+      /// The signed 128-bit integer type.
       PREDEF_DECL_INT_128_ID = 6,
 
-      /// \brief The unsigned 128-bit integer type.
+      /// The unsigned 128-bit integer type.
       PREDEF_DECL_UNSIGNED_INT_128_ID = 7,
 
-      /// \brief The internal 'instancetype' typedef.
+      /// The internal 'instancetype' typedef.
       PREDEF_DECL_OBJC_INSTANCETYPE_ID = 8,
 
-      /// \brief The internal '__builtin_va_list' typedef.
+      /// The internal '__builtin_va_list' typedef.
       PREDEF_DECL_BUILTIN_VA_LIST_ID = 9,
 
-      /// \brief The internal '__va_list_tag' struct, if any.
+      /// The internal '__va_list_tag' struct, if any.
       PREDEF_DECL_VA_LIST_TAG = 10,
 
-      /// \brief The internal '__builtin_ms_va_list' typedef.
+      /// The internal '__builtin_ms_va_list' typedef.
       PREDEF_DECL_BUILTIN_MS_VA_LIST_ID = 11,
 
-      /// \brief The extern "C" context.
+      /// The extern "C" context.
       PREDEF_DECL_EXTERN_C_CONTEXT_ID = 12,
 
-      /// \brief The internal '__make_integer_seq' template.
+      /// The internal '__make_integer_seq' template.
       PREDEF_DECL_MAKE_INTEGER_SEQ_ID = 13,
 
-      /// \brief The internal '__NSConstantString' typedef.
+      /// The internal '__NSConstantString' typedef.
       PREDEF_DECL_CF_CONSTANT_STRING_ID = 14,
 
-      /// \brief The internal '__NSConstantString' tag type.
+      /// The internal '__NSConstantString' tag type.
       PREDEF_DECL_CF_CONSTANT_STRING_TAG_ID = 15,
 
-      /// \brief The internal '__type_pack_element' template.
+      /// The internal '__type_pack_element' template.
       PREDEF_DECL_TYPE_PACK_ELEMENT_ID = 16,
     };
 
-    /// \brief The number of declaration IDs that are predefined.
+    /// The number of declaration IDs that are predefined.
     ///
     /// For more information about predefined declarations, see the
     /// \c PredefinedDeclIDs type and the PREDEF_DECL_*_ID constants.
     const unsigned int NUM_PREDEF_DECL_IDS = 17;
 
-    /// \brief Record of updates for a declaration that was modified after
+    /// Record of updates for a declaration that was modified after
     /// being deserialized. This can occur within DECLTYPES_BLOCK_ID.
     const unsigned int DECL_UPDATES = 49;
 
-    /// \brief Record code for a list of local redeclarations of a declaration.
+    /// Record code for a list of local redeclarations of a declaration.
     /// This can occur within DECLTYPES_BLOCK_ID.
     const unsigned int LOCAL_REDECLARATIONS = 50;
     
-    /// \brief Record codes for each kind of declaration.
+    /// Record codes for each kind of declaration.
     ///
     /// These constants describe the declaration records that can occur within
     /// a declarations block (identified by DECLTYPES_BLOCK_ID). Each
     /// constant describes a record for a specific declaration class
     /// in the AST. Note that TypeCode values share this code space.
     enum DeclCode {
-      /// \brief A TypedefDecl record.
+      /// A TypedefDecl record.
       DECL_TYPEDEF = 51,
-      /// \brief A TypeAliasDecl record.
+      /// A TypeAliasDecl record.
 
       DECL_TYPEALIAS,
 
-      /// \brief An EnumDecl record.
+      /// An EnumDecl record.
       DECL_ENUM,
 
-      /// \brief A RecordDecl record.
+      /// A RecordDecl record.
       DECL_RECORD,
 
-      /// \brief An EnumConstantDecl record.
+      /// An EnumConstantDecl record.
       DECL_ENUM_CONSTANT,
 
-      /// \brief A FunctionDecl record.
+      /// A FunctionDecl record.
       DECL_FUNCTION,
 
-      /// \brief A ObjCMethodDecl record.
+      /// A ObjCMethodDecl record.
       DECL_OBJC_METHOD,
 
-      /// \brief A ObjCInterfaceDecl record.
+      /// A ObjCInterfaceDecl record.
       DECL_OBJC_INTERFACE,
 
-      /// \brief A ObjCProtocolDecl record.
+      /// A ObjCProtocolDecl record.
       DECL_OBJC_PROTOCOL,
 
-      /// \brief A ObjCIvarDecl record.
+      /// A ObjCIvarDecl record.
       DECL_OBJC_IVAR,
 
-      /// \brief A ObjCAtDefsFieldDecl record.
+      /// A ObjCAtDefsFieldDecl record.
       DECL_OBJC_AT_DEFS_FIELD,
 
-      /// \brief A ObjCCategoryDecl record.
+      /// A ObjCCategoryDecl record.
       DECL_OBJC_CATEGORY,
 
-      /// \brief A ObjCCategoryImplDecl record.
+      /// A ObjCCategoryImplDecl record.
       DECL_OBJC_CATEGORY_IMPL,
 
-      /// \brief A ObjCImplementationDecl record.
+      /// A ObjCImplementationDecl record.
       DECL_OBJC_IMPLEMENTATION,
 
-      /// \brief A ObjCCompatibleAliasDecl record.
+      /// A ObjCCompatibleAliasDecl record.
       DECL_OBJC_COMPATIBLE_ALIAS,
 
-      /// \brief A ObjCPropertyDecl record.
+      /// A ObjCPropertyDecl record.
       DECL_OBJC_PROPERTY,
 
-      /// \brief A ObjCPropertyImplDecl record.
+      /// A ObjCPropertyImplDecl record.
       DECL_OBJC_PROPERTY_IMPL,
 
-      /// \brief A FieldDecl record.
+      /// A FieldDecl record.
       DECL_FIELD,
 
-      /// \brief A MSPropertyDecl record.
+      /// A MSPropertyDecl record.
       DECL_MS_PROPERTY,
 
-      /// \brief A VarDecl record.
+      /// A VarDecl record.
       DECL_VAR,
 
-      /// \brief An ImplicitParamDecl record.
+      /// An ImplicitParamDecl record.
       DECL_IMPLICIT_PARAM,
 
-      /// \brief A ParmVarDecl record.
+      /// A ParmVarDecl record.
       DECL_PARM_VAR,
 
-      /// \brief A DecompositionDecl record.
+      /// A DecompositionDecl record.
       DECL_DECOMPOSITION,
 
-      /// \brief A BindingDecl record.
+      /// A BindingDecl record.
       DECL_BINDING,
 
-      /// \brief A FileScopeAsmDecl record.
+      /// A FileScopeAsmDecl record.
       DECL_FILE_SCOPE_ASM,
 
-      /// \brief A BlockDecl record.
+      /// A BlockDecl record.
       DECL_BLOCK,
 
-      /// \brief A CapturedDecl record.
+      /// A CapturedDecl record.
       DECL_CAPTURED,
 
-      /// \brief A record that stores the set of declarations that are
+      /// A record that stores the set of declarations that are
       /// lexically stored within a given DeclContext.
       ///
       /// The record itself is a blob that is an array of declaration IDs,
@@ -1303,7 +1303,7 @@
       /// DeclContext::decls_begin() and DeclContext::decls_end().
       DECL_CONTEXT_LEXICAL,
 
-      /// \brief A record that stores the set of declarations that are
+      /// A record that stores the set of declarations that are
       /// visible from a given DeclContext.
       ///
       /// The record itself stores a set of mappings, each of which
@@ -1312,155 +1312,155 @@
       /// into a DeclContext via DeclContext::lookup.
       DECL_CONTEXT_VISIBLE,
 
-      /// \brief A LabelDecl record.
+      /// A LabelDecl record.
       DECL_LABEL,
 
-      /// \brief A NamespaceDecl record.
+      /// A NamespaceDecl record.
       DECL_NAMESPACE,
 
-      /// \brief A NamespaceAliasDecl record.
+      /// A NamespaceAliasDecl record.
       DECL_NAMESPACE_ALIAS,
 
-      /// \brief A UsingDecl record.
+      /// A UsingDecl record.
       DECL_USING,
 
-      /// \brief A UsingPackDecl record.
+      /// A UsingPackDecl record.
       DECL_USING_PACK,
 
-      /// \brief A UsingShadowDecl record.
+      /// A UsingShadowDecl record.
       DECL_USING_SHADOW,
 
-      /// \brief A ConstructorUsingShadowDecl record.
+      /// A ConstructorUsingShadowDecl record.
       DECL_CONSTRUCTOR_USING_SHADOW,
 
-      /// \brief A UsingDirecitveDecl record.
+      /// A UsingDirecitveDecl record.
       DECL_USING_DIRECTIVE,
 
-      /// \brief An UnresolvedUsingValueDecl record.
+      /// An UnresolvedUsingValueDecl record.
       DECL_UNRESOLVED_USING_VALUE,
 
-      /// \brief An UnresolvedUsingTypenameDecl record.
+      /// An UnresolvedUsingTypenameDecl record.
       DECL_UNRESOLVED_USING_TYPENAME,
 
-      /// \brief A LinkageSpecDecl record.
+      /// A LinkageSpecDecl record.
       DECL_LINKAGE_SPEC,
 
-      /// \brief An ExportDecl record.
+      /// An ExportDecl record.
       DECL_EXPORT,
 
-      /// \brief A CXXRecordDecl record.
+      /// A CXXRecordDecl record.
       DECL_CXX_RECORD,
 
-      /// \brief A CXXDeductionGuideDecl record.
+      /// A CXXDeductionGuideDecl record.
       DECL_CXX_DEDUCTION_GUIDE,
 
-      /// \brief A CXXMethodDecl record.
+      /// A CXXMethodDecl record.
       DECL_CXX_METHOD,
 
-      /// \brief A CXXConstructorDecl record.
+      /// A CXXConstructorDecl record.
       DECL_CXX_CONSTRUCTOR,
 
-      /// \brief A CXXConstructorDecl record for an inherited constructor.
+      /// A CXXConstructorDecl record for an inherited constructor.
       DECL_CXX_INHERITED_CONSTRUCTOR,
 
-      /// \brief A CXXDestructorDecl record.
+      /// A CXXDestructorDecl record.
       DECL_CXX_DESTRUCTOR,
 
-      /// \brief A CXXConversionDecl record.
+      /// A CXXConversionDecl record.
       DECL_CXX_CONVERSION,
 
-      /// \brief An AccessSpecDecl record.
+      /// An AccessSpecDecl record.
       DECL_ACCESS_SPEC,
 
-      /// \brief A FriendDecl record.
+      /// A FriendDecl record.
       DECL_FRIEND,
 
-      /// \brief A FriendTemplateDecl record.
+      /// A FriendTemplateDecl record.
       DECL_FRIEND_TEMPLATE,
 
-      /// \brief A ClassTemplateDecl record.
+      /// A ClassTemplateDecl record.
       DECL_CLASS_TEMPLATE,
 
-      /// \brief A ClassTemplateSpecializationDecl record.
+      /// A ClassTemplateSpecializationDecl record.
       DECL_CLASS_TEMPLATE_SPECIALIZATION,
 
-      /// \brief A ClassTemplatePartialSpecializationDecl record.
+      /// A ClassTemplatePartialSpecializationDecl record.
       DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION,
 
-      /// \brief A VarTemplateDecl record.
+      /// A VarTemplateDecl record.
       DECL_VAR_TEMPLATE,
 
-      /// \brief A VarTemplateSpecializationDecl record.
+      /// A VarTemplateSpecializationDecl record.
       DECL_VAR_TEMPLATE_SPECIALIZATION,
 
-      /// \brief A VarTemplatePartialSpecializationDecl record.
+      /// A VarTemplatePartialSpecializationDecl record.
       DECL_VAR_TEMPLATE_PARTIAL_SPECIALIZATION,
 
-      /// \brief A FunctionTemplateDecl record.
+      /// A FunctionTemplateDecl record.
       DECL_FUNCTION_TEMPLATE,
 
-      /// \brief A TemplateTypeParmDecl record.
+      /// A TemplateTypeParmDecl record.
       DECL_TEMPLATE_TYPE_PARM,
 
-      /// \brief A NonTypeTemplateParmDecl record.
+      /// A NonTypeTemplateParmDecl record.
       DECL_NON_TYPE_TEMPLATE_PARM,
 
-      /// \brief A TemplateTemplateParmDecl record.
+      /// A TemplateTemplateParmDecl record.
       DECL_TEMPLATE_TEMPLATE_PARM,
 
-      /// \brief A TypeAliasTemplateDecl record.
+      /// A TypeAliasTemplateDecl record.
       DECL_TYPE_ALIAS_TEMPLATE,
 
-      /// \brief A StaticAssertDecl record.
+      /// A StaticAssertDecl record.
       DECL_STATIC_ASSERT,
 
-      /// \brief A record containing CXXBaseSpecifiers.
+      /// A record containing CXXBaseSpecifiers.
       DECL_CXX_BASE_SPECIFIERS,
 
-      /// \brief A record containing CXXCtorInitializers.
+      /// A record containing CXXCtorInitializers.
       DECL_CXX_CTOR_INITIALIZERS,
 
-      /// \brief A IndirectFieldDecl record.
+      /// A IndirectFieldDecl record.
       DECL_INDIRECTFIELD,
 
-      /// \brief A NonTypeTemplateParmDecl record that stores an expanded
+      /// A NonTypeTemplateParmDecl record that stores an expanded
       /// non-type template parameter pack.
       DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK,
 
-      /// \brief A TemplateTemplateParmDecl record that stores an expanded
+      /// A TemplateTemplateParmDecl record that stores an expanded
       /// template template parameter pack.
       DECL_EXPANDED_TEMPLATE_TEMPLATE_PARM_PACK,
 
-      /// \brief A ClassScopeFunctionSpecializationDecl record a class scope
+      /// A ClassScopeFunctionSpecializationDecl record a class scope
       /// function specialization. (Microsoft extension).
       DECL_CLASS_SCOPE_FUNCTION_SPECIALIZATION,
 
-      /// \brief An ImportDecl recording a module import.
+      /// An ImportDecl recording a module import.
       DECL_IMPORT,
 
-      /// \brief An OMPThreadPrivateDecl record.
+      /// An OMPThreadPrivateDecl record.
       DECL_OMP_THREADPRIVATE,
 
-      /// \brief An EmptyDecl record.
+      /// An EmptyDecl record.
       DECL_EMPTY,
 
-      /// \brief An ObjCTypeParamDecl record.
+      /// An ObjCTypeParamDecl record.
       DECL_OBJC_TYPE_PARAM,
 
-      /// \brief An OMPCapturedExprDecl record.
+      /// An OMPCapturedExprDecl record.
       DECL_OMP_CAPTUREDEXPR,
 
-      /// \brief A PragmaCommentDecl record.
+      /// A PragmaCommentDecl record.
       DECL_PRAGMA_COMMENT,
 
-      /// \brief A PragmaDetectMismatchDecl record.
+      /// A PragmaDetectMismatchDecl record.
       DECL_PRAGMA_DETECT_MISMATCH,
 
-      /// \brief An OMPDeclareReductionDecl record.
+      /// An OMPDeclareReductionDecl record.
       DECL_OMP_DECLARE_REDUCTION,
     };
 
-    /// \brief Record codes for each kind of statement or expression.
+    /// Record codes for each kind of statement or expression.
     ///
     /// These constants describe the records that describe statements
     /// or expressions. These records  occur within type and declarations
@@ -1468,310 +1468,310 @@
     /// describes a record for a specific statement or expression class in the
     /// AST.
     enum StmtCode {
-      /// \brief A marker record that indicates that we are at the end
+      /// A marker record that indicates that we are at the end
       /// of an expression.
       STMT_STOP = 128,
 
-      /// \brief A NULL expression.
+      /// A NULL expression.
       STMT_NULL_PTR,
 
-      /// \brief A reference to a previously [de]serialized Stmt record.
+      /// A reference to a previously [de]serialized Stmt record.
       STMT_REF_PTR,
 
-      /// \brief A NullStmt record.
+      /// A NullStmt record.
       STMT_NULL,
 
-      /// \brief A CompoundStmt record.
+      /// A CompoundStmt record.
       STMT_COMPOUND,
 
-      /// \brief A CaseStmt record.
+      /// A CaseStmt record.
       STMT_CASE,
 
-      /// \brief A DefaultStmt record.
+      /// A DefaultStmt record.
       STMT_DEFAULT,
 
-      /// \brief A LabelStmt record.
+      /// A LabelStmt record.
       STMT_LABEL,
 
-      /// \brief An AttributedStmt record.
+      /// An AttributedStmt record.
       STMT_ATTRIBUTED,
 
-      /// \brief An IfStmt record.
+      /// An IfStmt record.
       STMT_IF,
 
-      /// \brief A SwitchStmt record.
+      /// A SwitchStmt record.
       STMT_SWITCH,
 
-      /// \brief A WhileStmt record.
+      /// A WhileStmt record.
       STMT_WHILE,
 
-      /// \brief A DoStmt record.
+      /// A DoStmt record.
       STMT_DO,
 
-      /// \brief A ForStmt record.
+      /// A ForStmt record.
       STMT_FOR,
 
-      /// \brief A GotoStmt record.
+      /// A GotoStmt record.
       STMT_GOTO,
 
-      /// \brief An IndirectGotoStmt record.
+      /// An IndirectGotoStmt record.
       STMT_INDIRECT_GOTO,
 
-      /// \brief A ContinueStmt record.
+      /// A ContinueStmt record.
       STMT_CONTINUE,
 
-      /// \brief A BreakStmt record.
+      /// A BreakStmt record.
       STMT_BREAK,
 
-      /// \brief A ReturnStmt record.
+      /// A ReturnStmt record.
       STMT_RETURN,
 
-      /// \brief A DeclStmt record.
+      /// A DeclStmt record.
       STMT_DECL,
 
-      /// \brief A CapturedStmt record.
+      /// A CapturedStmt record.
       STMT_CAPTURED,
 
-      /// \brief A GCC-style AsmStmt record.
+      /// A GCC-style AsmStmt record.
       STMT_GCCASM,
 
-      /// \brief A MS-style AsmStmt record.
+      /// A MS-style AsmStmt record.
       STMT_MSASM,
 
-      /// \brief A PredefinedExpr record.
+      /// A PredefinedExpr record.
       EXPR_PREDEFINED,
 
-      /// \brief A DeclRefExpr record.
+      /// A DeclRefExpr record.
       EXPR_DECL_REF,
 
-      /// \brief An IntegerLiteral record.
+      /// An IntegerLiteral record.
       EXPR_INTEGER_LITERAL,
 
-      /// \brief A FloatingLiteral record.
+      /// A FloatingLiteral record.
       EXPR_FLOATING_LITERAL,
 
-      /// \brief An ImaginaryLiteral record.
+      /// An ImaginaryLiteral record.
       EXPR_IMAGINARY_LITERAL,
 
-      /// \brief A StringLiteral record.
+      /// A StringLiteral record.
       EXPR_STRING_LITERAL,
 
-      /// \brief A CharacterLiteral record.
+      /// A CharacterLiteral record.
       EXPR_CHARACTER_LITERAL,
 
-      /// \brief A ParenExpr record.
+      /// A ParenExpr record.
       EXPR_PAREN,
 
-      /// \brief A ParenListExpr record.
+      /// A ParenListExpr record.
       EXPR_PAREN_LIST,
 
-      /// \brief A UnaryOperator record.
+      /// A UnaryOperator record.
       EXPR_UNARY_OPERATOR,
 
-      /// \brief An OffsetOfExpr record.
+      /// An OffsetOfExpr record.
       EXPR_OFFSETOF,
 
-      /// \brief A SizefAlignOfExpr record.
+      /// A SizefAlignOfExpr record.
       EXPR_SIZEOF_ALIGN_OF,
 
-      /// \brief An ArraySubscriptExpr record.
+      /// An ArraySubscriptExpr record.
       EXPR_ARRAY_SUBSCRIPT,
 
-      /// \brief A CallExpr record.
+      /// A CallExpr record.
       EXPR_CALL,
 
-      /// \brief A MemberExpr record.
+      /// A MemberExpr record.
       EXPR_MEMBER,
 
-      /// \brief A BinaryOperator record.
+      /// A BinaryOperator record.
       EXPR_BINARY_OPERATOR,
 
-      /// \brief A CompoundAssignOperator record.
+      /// A CompoundAssignOperator record.
       EXPR_COMPOUND_ASSIGN_OPERATOR,
 
-      /// \brief A ConditionOperator record.
+      /// A ConditionOperator record.
       EXPR_CONDITIONAL_OPERATOR,
 
-      /// \brief An ImplicitCastExpr record.
+      /// An ImplicitCastExpr record.
       EXPR_IMPLICIT_CAST,
 
-      /// \brief A CStyleCastExpr record.
+      /// A CStyleCastExpr record.
       EXPR_CSTYLE_CAST,
 
-      /// \brief A CompoundLiteralExpr record.
+      /// A CompoundLiteralExpr record.
       EXPR_COMPOUND_LITERAL,
 
-      /// \brief An ExtVectorElementExpr record.
+      /// An ExtVectorElementExpr record.
       EXPR_EXT_VECTOR_ELEMENT,
 
-      /// \brief An InitListExpr record.
+      /// An InitListExpr record.
       EXPR_INIT_LIST,
 
-      /// \brief A DesignatedInitExpr record.
+      /// A DesignatedInitExpr record.
       EXPR_DESIGNATED_INIT,
 
-      /// \brief A DesignatedInitUpdateExpr record.
+      /// A DesignatedInitUpdateExpr record.
       EXPR_DESIGNATED_INIT_UPDATE,
 
-      /// \brief An NoInitExpr record.
+      /// An NoInitExpr record.
       EXPR_NO_INIT,
 
-      /// \brief An ArrayInitLoopExpr record.
+      /// An ArrayInitLoopExpr record.
       EXPR_ARRAY_INIT_LOOP,
 
-      /// \brief An ArrayInitIndexExpr record.
+      /// An ArrayInitIndexExpr record.
       EXPR_ARRAY_INIT_INDEX,
 
-      /// \brief An ImplicitValueInitExpr record.
+      /// An ImplicitValueInitExpr record.
       EXPR_IMPLICIT_VALUE_INIT,
 
-      /// \brief A VAArgExpr record.
+      /// A VAArgExpr record.
       EXPR_VA_ARG,
 
-      /// \brief An AddrLabelExpr record.
+      /// An AddrLabelExpr record.
       EXPR_ADDR_LABEL,
 
-      /// \brief A StmtExpr record.
+      /// A StmtExpr record.
       EXPR_STMT,
 
-      /// \brief A ChooseExpr record.
+      /// A ChooseExpr record.
       EXPR_CHOOSE,
 
-      /// \brief A GNUNullExpr record.
+      /// A GNUNullExpr record.
       EXPR_GNU_NULL,
 
-      /// \brief A ShuffleVectorExpr record.
+      /// A ShuffleVectorExpr record.
       EXPR_SHUFFLE_VECTOR,
 
-      /// \brief A ConvertVectorExpr record.
+      /// A ConvertVectorExpr record.
       EXPR_CONVERT_VECTOR,
 
-      /// \brief BlockExpr
+      /// BlockExpr
       EXPR_BLOCK,
 
-      /// \brief A GenericSelectionExpr record.
+      /// A GenericSelectionExpr record.
       EXPR_GENERIC_SELECTION,
 
-      /// \brief A PseudoObjectExpr record.
+      /// A PseudoObjectExpr record.
       EXPR_PSEUDO_OBJECT,
 
-      /// \brief An AtomicExpr record.
+      /// An AtomicExpr record.
       EXPR_ATOMIC,
 
       // Objective-C
 
-      /// \brief An ObjCStringLiteral record.
+      /// An ObjCStringLiteral record.
       EXPR_OBJC_STRING_LITERAL,
 
       EXPR_OBJC_BOXED_EXPRESSION,
       EXPR_OBJC_ARRAY_LITERAL,
       EXPR_OBJC_DICTIONARY_LITERAL,
    
-      /// \brief An ObjCEncodeExpr record.
+      /// An ObjCEncodeExpr record.
       EXPR_OBJC_ENCODE,
 
-      /// \brief An ObjCSelectorExpr record.
+      /// An ObjCSelectorExpr record.
       EXPR_OBJC_SELECTOR_EXPR,
 
-      /// \brief An ObjCProtocolExpr record.
+      /// An ObjCProtocolExpr record.
       EXPR_OBJC_PROTOCOL_EXPR,
 
-      /// \brief An ObjCIvarRefExpr record.
+      /// An ObjCIvarRefExpr record.
       EXPR_OBJC_IVAR_REF_EXPR,
 
-      /// \brief An ObjCPropertyRefExpr record.
+      /// An ObjCPropertyRefExpr record.
       EXPR_OBJC_PROPERTY_REF_EXPR,
 
-      /// \brief An ObjCSubscriptRefExpr record.
+      /// An ObjCSubscriptRefExpr record.
       EXPR_OBJC_SUBSCRIPT_REF_EXPR,
 
-      /// \brief UNUSED
+      /// UNUSED
       EXPR_OBJC_KVC_REF_EXPR,
 
-      /// \brief An ObjCMessageExpr record.
+      /// An ObjCMessageExpr record.
       EXPR_OBJC_MESSAGE_EXPR,
 
-      /// \brief An ObjCIsa Expr record.
+      /// An ObjCIsa Expr record.
       EXPR_OBJC_ISA,
 
-      /// \brief An ObjCIndirectCopyRestoreExpr record.
+      /// An ObjCIndirectCopyRestoreExpr record.
       EXPR_OBJC_INDIRECT_COPY_RESTORE,
 
-      /// \brief An ObjCForCollectionStmt record.
+      /// An ObjCForCollectionStmt record.
       STMT_OBJC_FOR_COLLECTION,
 
-      /// \brief An ObjCAtCatchStmt record.
+      /// An ObjCAtCatchStmt record.
       STMT_OBJC_CATCH,
 
-      /// \brief An ObjCAtFinallyStmt record.
+      /// An ObjCAtFinallyStmt record.
       STMT_OBJC_FINALLY,
 
-      /// \brief An ObjCAtTryStmt record.
+      /// An ObjCAtTryStmt record.
       STMT_OBJC_AT_TRY,
 
-      /// \brief An ObjCAtSynchronizedStmt record.
+      /// An ObjCAtSynchronizedStmt record.
       STMT_OBJC_AT_SYNCHRONIZED,
 
-      /// \brief An ObjCAtThrowStmt record.
+      /// An ObjCAtThrowStmt record.
       STMT_OBJC_AT_THROW,
 
-      /// \brief An ObjCAutoreleasePoolStmt record.
+      /// An ObjCAutoreleasePoolStmt record.
       STMT_OBJC_AUTORELEASE_POOL,
 
-      /// \brief An ObjCBoolLiteralExpr record.
+      /// An ObjCBoolLiteralExpr record.
       EXPR_OBJC_BOOL_LITERAL,
 
-      /// \brief An ObjCAvailabilityCheckExpr record.
+      /// An ObjCAvailabilityCheckExpr record.
       EXPR_OBJC_AVAILABILITY_CHECK,
 
       // C++
       
-      /// \brief A CXXCatchStmt record.
+      /// A CXXCatchStmt record.
       STMT_CXX_CATCH,
 
-      /// \brief A CXXTryStmt record.
+      /// A CXXTryStmt record.
       STMT_CXX_TRY,
-      /// \brief A CXXForRangeStmt record.
+      /// A CXXForRangeStmt record.
 
       STMT_CXX_FOR_RANGE,
 
-      /// \brief A CXXOperatorCallExpr record.
+      /// A CXXOperatorCallExpr record.
       EXPR_CXX_OPERATOR_CALL,
 
-      /// \brief A CXXMemberCallExpr record.
+      /// A CXXMemberCallExpr record.
       EXPR_CXX_MEMBER_CALL,
 
-      /// \brief A CXXConstructExpr record.
+      /// A CXXConstructExpr record.
       EXPR_CXX_CONSTRUCT,
 
-      /// \brief A CXXInheritedCtorInitExpr record.
+      /// A CXXInheritedCtorInitExpr record.
       EXPR_CXX_INHERITED_CTOR_INIT,
 
-      /// \brief A CXXTemporaryObjectExpr record.
+      /// A CXXTemporaryObjectExpr record.
       EXPR_CXX_TEMPORARY_OBJECT,
 
-      /// \brief A CXXStaticCastExpr record.
+      /// A CXXStaticCastExpr record.
       EXPR_CXX_STATIC_CAST,
 
-      /// \brief A CXXDynamicCastExpr record.
+      /// A CXXDynamicCastExpr record.
       EXPR_CXX_DYNAMIC_CAST,
 
-      /// \brief A CXXReinterpretCastExpr record.
+      /// A CXXReinterpretCastExpr record.
       EXPR_CXX_REINTERPRET_CAST,
 
-      /// \brief A CXXConstCastExpr record.
+      /// A CXXConstCastExpr record.
       EXPR_CXX_CONST_CAST,
 
-      /// \brief A CXXFunctionalCastExpr record.
+      /// A CXXFunctionalCastExpr record.
       EXPR_CXX_FUNCTIONAL_CAST,
 
-      /// \brief A UserDefinedLiteral record.
+      /// A UserDefinedLiteral record.
       EXPR_USER_DEFINED_LITERAL,
 
-      /// \brief A CXXStdInitializerListExpr record.
+      /// A CXXStdInitializerListExpr record.
       EXPR_CXX_STD_INITIALIZER_LIST,
 
-      /// \brief A CXXBoolLiteralExpr record.
+      /// A CXXBoolLiteralExpr record.
       EXPR_CXX_BOOL_LITERAL,
 
       EXPR_CXX_NULL_PTR_LITERAL,  // CXXNullPtrLiteralExpr
@@ -1890,24 +1890,24 @@
       EXPR_DEPENDENT_COAWAIT,
     };
 
-    /// \brief The kinds of designators that can occur in a
+    /// The kinds of designators that can occur in a
     /// DesignatedInitExpr.
     enum DesignatorTypes {
-      /// \brief Field designator where only the field name is known.
+      /// Field designator where only the field name is known.
       DESIG_FIELD_NAME  = 0,
 
-      /// \brief Field designator where the field has been resolved to
+      /// Field designator where the field has been resolved to
       /// a declaration.
       DESIG_FIELD_DECL  = 1,
 
-      /// \brief Array designator.
+      /// Array designator.
       DESIG_ARRAY       = 2,
 
-      /// \brief GNU array range designator.
+      /// GNU array range designator.
       DESIG_ARRAY_RANGE = 3
     };
 
-    /// \brief The different kinds of data that can occur in a
+    /// The different kinds of data that can occur in a
     /// CtorInitializer.
     enum CtorInitializerType {
       CTOR_INITIALIZER_BASE,
@@ -1916,7 +1916,7 @@
       CTOR_INITIALIZER_INDIRECT_MEMBER
     };
 
-    /// \brief Describes the redeclarations of a declaration.
+    /// Describes the redeclarations of a declaration.
     struct LocalRedeclarationsInfo {
       // The ID of the first declaration
       DeclID FirstID;
@@ -1945,7 +1945,7 @@
       }
     };
 
-    /// \brief Describes the categories of an Objective-C class.
+    /// Describes the categories of an Objective-C class.
     struct ObjCCategoriesInfo {
       // The ID of the definition
       DeclID DefinitionID;
@@ -1974,7 +1974,7 @@
       }
     };
 
-    /// \brief A key used when looking up entities by \ref DeclarationName.
+    /// A key used when looking up entities by \ref DeclarationName.
     ///
     /// Different \ref DeclarationNames are mapped to different keys, but the
     /// same key can occasionally represent multiple names (for names that
Index: cfe/trunk/include/clang/Serialization/ASTDeserializationListener.h
===================================================================
--- cfe/trunk/include/clang/Serialization/ASTDeserializationListener.h
+++ cfe/trunk/include/clang/Serialization/ASTDeserializationListener.h
@@ -32,28 +32,28 @@
 public:
   virtual ~ASTDeserializationListener();
 
-  /// \brief The ASTReader was initialized.
+  /// The ASTReader was initialized.
   virtual void ReaderInitialized(ASTReader *Reader) { }
 
-  /// \brief An identifier was deserialized from the AST file.
+  /// An identifier was deserialized from the AST file.
   virtual void IdentifierRead(serialization::IdentID ID,
                               IdentifierInfo *II) { }
-  /// \brief A macro was read from the AST file.
+  /// A macro was read from the AST file.
   virtual void MacroRead(serialization::MacroID ID, MacroInfo *MI) { }
-  /// \brief A type was deserialized from the AST file. The ID here has the
+  /// A type was deserialized from the AST file. The ID here has the
   ///        qualifier bits already removed, and T is guaranteed to be locally
   ///        unqualified.
   virtual void TypeRead(serialization::TypeIdx Idx, QualType T) { }
-  /// \brief A decl was deserialized from the AST file.
+  /// A decl was deserialized from the AST file.
   virtual void DeclRead(serialization::DeclID ID, const Decl *D) { }
-  /// \brief A selector was read from the AST file.
+  /// A selector was read from the AST file.
   virtual void SelectorRead(serialization::SelectorID iD, Selector Sel) {}
-  /// \brief A macro definition was read from the AST file.
+  /// A macro definition was read from the AST file.
   virtual void MacroDefinitionRead(serialization::PreprocessedEntityID,
                                    MacroDefinitionRecord *MD) {}
-  /// \brief A module definition was read from the AST file.
+  /// A module definition was read from the AST file.
   virtual void ModuleRead(serialization::SubmoduleID ID, Module *Mod) {}
-  /// \brief A module import was read from the AST file.
+  /// A module import was read from the AST file.
   virtual void ModuleImportRead(serialization::SubmoduleID ID,
                                 SourceLocation ImportLoc) {}
 };
Index: cfe/trunk/include/clang/Serialization/ASTReader.h
===================================================================
--- cfe/trunk/include/clang/Serialization/ASTReader.h
+++ cfe/trunk/include/clang/Serialization/ASTReader.h
@@ -117,7 +117,7 @@
 class ValueDecl;
 class VarDecl;
 
-/// \brief Abstract interface for callback invocations by the ASTReader.
+/// Abstract interface for callback invocations by the ASTReader.
 ///
 /// While reading an AST file, the ASTReader will call the methods of the
 /// listener to pass on specific information. Some of the listener methods can
@@ -127,7 +127,7 @@
 public:
   virtual ~ASTReaderListener();
 
-  /// \brief Receives the full Clang version information.
+  /// Receives the full Clang version information.
   ///
   /// \returns true to indicate that the version is invalid. Subclasses should
   /// generally defer to this implementation.
@@ -138,7 +138,7 @@
   virtual void ReadModuleName(StringRef ModuleName) {}
   virtual void ReadModuleMapFile(StringRef ModuleMapPath) {}
 
-  /// \brief Receives the language options.
+  /// Receives the language options.
   ///
   /// \returns true to indicate the options are invalid or false otherwise.
   virtual bool ReadLanguageOptions(const LangOptions &LangOpts,
@@ -147,7 +147,7 @@
     return false;
   }
 
-  /// \brief Receives the target options.
+  /// Receives the target options.
   ///
   /// \returns true to indicate the target options are invalid, or false
   /// otherwise.
@@ -156,7 +156,7 @@
     return false;
   }
 
-  /// \brief Receives the diagnostic options.
+  /// Receives the diagnostic options.
   ///
   /// \returns true to indicate the diagnostic options are invalid, or false
   /// otherwise.
@@ -166,7 +166,7 @@
     return false;
   }
 
-  /// \brief Receives the file system options.
+  /// Receives the file system options.
   ///
   /// \returns true to indicate the file system options are invalid, or false
   /// otherwise.
@@ -175,7 +175,7 @@
     return false;
   }
 
-  /// \brief Receives the header search options.
+  /// Receives the header search options.
   ///
   /// \returns true to indicate the header search options are invalid, or false
   /// otherwise.
@@ -185,7 +185,7 @@
     return false;
   }
 
-  /// \brief Receives the preprocessor options.
+  /// Receives the preprocessor options.
   ///
   /// \param SuggestedPredefines Can be filled in with the set of predefines
   /// that are suggested by the preprocessor options. Typically only used when
@@ -199,7 +199,7 @@
     return false;
   }
 
-  /// \brief Receives __COUNTER__ value.
+  /// Receives __COUNTER__ value.
   virtual void ReadCounter(const serialization::ModuleFile &M,
                            unsigned Value) {}
 
@@ -207,15 +207,15 @@
   virtual void visitModuleFile(StringRef Filename,
                                serialization::ModuleKind Kind) {}
 
-  /// \brief Returns true if this \c ASTReaderListener wants to receive the
+  /// Returns true if this \c ASTReaderListener wants to receive the
   /// input files of the AST file via \c visitInputFile, false otherwise.
   virtual bool needsInputFileVisitation() { return false; }
 
-  /// \brief Returns true if this \c ASTReaderListener wants to receive the
+  /// Returns true if this \c ASTReaderListener wants to receive the
   /// system input files of the AST file via \c visitInputFile, false otherwise.
   virtual bool needsSystemInputFileVisitation() { return false; }
 
-  /// \brief if \c needsInputFileVisitation returns true, this is called for
+  /// if \c needsInputFileVisitation returns true, this is called for
   /// each non-system input file of the AST File. If
   /// \c needsSystemInputFileVisitation is true, then it is called for all
   /// system input files as well.
@@ -226,11 +226,11 @@
     return true;
   }
 
-  /// \brief Returns true if this \c ASTReaderListener wants to receive the
+  /// Returns true if this \c ASTReaderListener wants to receive the
   /// imports of the AST file via \c visitImport, false otherwise.
   virtual bool needsImportVisitation() const { return false; }
 
-  /// \brief If needsImportVisitation returns \c true, this is called for each
+  /// If needsImportVisitation returns \c true, this is called for each
   /// AST file imported by this AST file.
   virtual void visitImport(StringRef Filename) {}
 
@@ -239,7 +239,7 @@
                  const ModuleFileExtensionMetadata &Metadata) {}
 };
 
-/// \brief Simple wrapper class for chaining listeners.
+/// Simple wrapper class for chaining listeners.
 class ChainedASTReaderListener : public ASTReaderListener {
   std::unique_ptr<ASTReaderListener> First;
   std::unique_ptr<ASTReaderListener> Second;
@@ -283,7 +283,7 @@
          const ModuleFileExtensionMetadata &Metadata) override;
 };
 
-/// \brief ASTReaderListener implementation to validate the information of
+/// ASTReaderListener implementation to validate the information of
 /// the PCH file against an initialized Preprocessor.
 class PCHValidator : public ASTReaderListener {
   Preprocessor &PP;
@@ -310,7 +310,7 @@
   void Error(const char *Msg);
 };
 
-/// \brief ASTReaderListenter implementation to set SuggestedPredefines of
+/// ASTReaderListenter implementation to set SuggestedPredefines of
 /// ASTReader which is required to use a pch file. This is the replacement
 /// of PCHValidator or SimplePCHValidator when using a pch file without
 /// validating it.
@@ -332,14 +332,14 @@
 
 class ASTIdentifierLookupTrait;
 
-/// \brief The on-disk hash table(s) used for DeclContext name lookup.
+/// The on-disk hash table(s) used for DeclContext name lookup.
 struct DeclContextLookupTable;
 
 } // namespace reader
 
 } // namespace serialization
 
-/// \brief Reads an AST files chain containing the contents of a translation
+/// Reads an AST files chain containing the contents of a translation
 /// unit.
 ///
 /// The ASTReader class reads bitstreams (produced by the ASTWriter
@@ -360,7 +360,7 @@
     public ExternalSLocEntrySource
 {
 public:
-  /// \brief Types of AST files.
+  /// Types of AST files.
   friend class ASTDeclReader;
   friend class ASTIdentifierIterator;
   friend class ASTRecordReader;
@@ -375,31 +375,31 @@
   using RecordData = SmallVector<uint64_t, 64>;
   using RecordDataImpl = SmallVectorImpl<uint64_t>;
 
-  /// \brief The result of reading the control block of an AST file, which
+  /// The result of reading the control block of an AST file, which
   /// can fail for various reasons.
   enum ASTReadResult {
-    /// \brief The control block was read successfully. Aside from failures,
+    /// The control block was read successfully. Aside from failures,
     /// the AST file is safe to read into the current context.
     Success,
 
-    /// \brief The AST file itself appears corrupted.
+    /// The AST file itself appears corrupted.
     Failure,
 
-    /// \brief The AST file was missing.
+    /// The AST file was missing.
     Missing,
 
-    /// \brief The AST file is out-of-date relative to its input files,
+    /// The AST file is out-of-date relative to its input files,
     /// and needs to be regenerated.
     OutOfDate,
 
-    /// \brief The AST file was written by a different version of Clang.
+    /// The AST file was written by a different version of Clang.
     VersionMismatch,
 
-    /// \brief The AST file was writtten with a different language/target
+    /// The AST file was writtten with a different language/target
     /// configuration.
     ConfigurationMismatch,
 
-    /// \brief The AST file has errors.
+    /// The AST file has errors.
     HadErrors
   };
 
@@ -411,10 +411,10 @@
   using ModuleReverseIterator = ModuleManager::ModuleReverseIterator;
 
 private:
-  /// \brief The receiver of some callbacks invoked by ASTReader.
+  /// The receiver of some callbacks invoked by ASTReader.
   std::unique_ptr<ASTReaderListener> Listener;
 
-  /// \brief The receiver of deserialization events.
+  /// The receiver of deserialization events.
   ASTDeserializationListener *DeserializationListener = nullptr;
 
   bool OwnsDeserializationListener = false;
@@ -424,26 +424,26 @@
   const PCHContainerReader &PCHContainerRdr;
   DiagnosticsEngine &Diags;
 
-  /// \brief The semantic analysis object that will be processing the
+  /// The semantic analysis object that will be processing the
   /// AST files and the translation unit that uses it.
   Sema *SemaObj = nullptr;
 
-  /// \brief The preprocessor that will be loading the source file.
+  /// The preprocessor that will be loading the source file.
   Preprocessor &PP;
 
-  /// \brief The AST context into which we'll read the AST files.
+  /// The AST context into which we'll read the AST files.
   ASTContext *ContextObj = nullptr;
 
-  /// \brief The AST consumer.
+  /// The AST consumer.
   ASTConsumer *Consumer = nullptr;
 
-  /// \brief The module manager which manages modules and their dependencies
+  /// The module manager which manages modules and their dependencies
   ModuleManager ModuleMgr;
 
   /// The cache that manages memory buffers for PCM files.
   MemoryBufferCache &PCMCache;
 
-  /// \brief A dummy identifier resolver used to merge TU-scope declarations in
+  /// A dummy identifier resolver used to merge TU-scope declarations in
   /// C, for the cases where we don't have a Sema object to provide a real
   /// identifier resolver.
   IdentifierResolver DummyIdResolver;
@@ -451,31 +451,31 @@
   /// A mapping from extension block names to module file extensions.
   llvm::StringMap<std::shared_ptr<ModuleFileExtension>> ModuleFileExtensions;
 
-  /// \brief A timer used to track the time spent deserializing.
+  /// A timer used to track the time spent deserializing.
   std::unique_ptr<llvm::Timer> ReadTimer;
 
-  /// \brief The location where the module file will be considered as
+  /// The location where the module file will be considered as
   /// imported from. For non-module AST types it should be invalid.
   SourceLocation CurrentImportLoc;
 
-  /// \brief The global module index, if loaded.
+  /// The global module index, if loaded.
   std::unique_ptr<GlobalModuleIndex> GlobalIndex;
 
-  /// \brief A map of global bit offsets to the module that stores entities
+  /// A map of global bit offsets to the module that stores entities
   /// at those bit offsets.
   ContinuousRangeMap<uint64_t, ModuleFile*, 4> GlobalBitOffsetsMap;
 
-  /// \brief A map of negated SLocEntryIDs to the modules containing them.
+  /// A map of negated SLocEntryIDs to the modules containing them.
   ContinuousRangeMap<unsigned, ModuleFile*, 64> GlobalSLocEntryMap;
 
   using GlobalSLocOffsetMapType =
       ContinuousRangeMap<unsigned, ModuleFile *, 64>;
 
-  /// \brief A map of reversed (SourceManager::MaxLoadedOffset - SLocOffset)
+  /// A map of reversed (SourceManager::MaxLoadedOffset - SLocOffset)
   /// SourceLocation offsets to the modules containing them.
   GlobalSLocOffsetMapType GlobalSLocOffsetMap;
 
-  /// \brief Types that have already been loaded from the chain.
+  /// Types that have already been loaded from the chain.
   ///
   /// When the pointer at index I is non-NULL, the type with
   /// ID = (I + 1) << FastQual::Width has already been loaded
@@ -484,12 +484,12 @@
   using GlobalTypeMapType =
       ContinuousRangeMap<serialization::TypeID, ModuleFile *, 4>;
 
-  /// \brief Mapping from global type IDs to the module in which the
+  /// Mapping from global type IDs to the module in which the
   /// type resides along with the offset that should be added to the
   /// global type ID to produce a local ID.
   GlobalTypeMapType GlobalTypeMap;
 
-  /// \brief Declarations that have already been loaded from the chain.
+  /// Declarations that have already been loaded from the chain.
   ///
   /// When the pointer at index I is non-NULL, the declaration with ID
   /// = I + 1 has already been loaded.
@@ -498,7 +498,7 @@
   using GlobalDeclMapType =
       ContinuousRangeMap<serialization::DeclID, ModuleFile *, 4>;
 
-  /// \brief Mapping from global declaration IDs to the module in which the
+  /// Mapping from global declaration IDs to the module in which the
   /// declaration resides.
   GlobalDeclMapType GlobalDeclMap;
 
@@ -507,7 +507,7 @@
   using DeclUpdateOffsetsMap =
       llvm::DenseMap<serialization::DeclID, FileOffsetsTy>;
 
-  /// \brief Declarations that have modifications residing in a later file
+  /// Declarations that have modifications residing in a later file
   /// in the chain.
   DeclUpdateOffsetsMap DeclUpdateOffsets;
 
@@ -523,28 +523,28 @@
         : D(D), ID(ID), JustLoaded(JustLoaded) {}
   };
 
-  /// \brief Declaration updates for already-loaded declarations that we need
+  /// Declaration updates for already-loaded declarations that we need
   /// to apply once we finish processing an import.
   llvm::SmallVector<PendingUpdateRecord, 16> PendingUpdateRecords;
 
   enum class PendingFakeDefinitionKind { NotFake, Fake, FakeLoaded };
 
-  /// \brief The DefinitionData pointers that we faked up for class definitions
+  /// The DefinitionData pointers that we faked up for class definitions
   /// that we needed but hadn't loaded yet.
   llvm::DenseMap<void *, PendingFakeDefinitionKind> PendingFakeDefinitionData;
 
-  /// \brief Exception specification updates that have been loaded but not yet
+  /// Exception specification updates that have been loaded but not yet
   /// propagated across the relevant redeclaration chain. The map key is the
   /// canonical declaration (used only for deduplication) and the value is a
   /// declaration that has an exception specification.
   llvm::SmallMapVector<Decl *, FunctionDecl *, 4> PendingExceptionSpecUpdates;
 
-  /// \brief Declarations that have been imported and have typedef names for
+  /// Declarations that have been imported and have typedef names for
   /// linkage purposes.
   llvm::DenseMap<std::pair<DeclContext *, IdentifierInfo *>, NamedDecl *>
       ImportedTypedefNamesForLinkage;
 
-  /// \brief Mergeable declaration contexts that have anonymous declarations
+  /// Mergeable declaration contexts that have anonymous declarations
   /// within them, and those anonymous declarations.
   llvm::DenseMap<DeclContext*, llvm::SmallVector<NamedDecl*, 2>>
     AnonymousDeclarationsForMerging;
@@ -558,21 +558,21 @@
         : Mod(Mod), Decls(Decls) {}
   };
 
-  /// \brief Map from a FileID to the file-level declarations that it contains.
+  /// Map from a FileID to the file-level declarations that it contains.
   llvm::DenseMap<FileID, FileDeclsInfo> FileDeclIDs;
 
-  /// \brief An array of lexical contents of a declaration context, as a sequence of
+  /// An array of lexical contents of a declaration context, as a sequence of
   /// Decl::Kind, DeclID pairs.
   using LexicalContents = ArrayRef<llvm::support::unaligned_uint32_t>;
 
-  /// \brief Map from a DeclContext to its lexical contents.
+  /// Map from a DeclContext to its lexical contents.
   llvm::DenseMap<const DeclContext*, std::pair<ModuleFile*, LexicalContents>>
       LexicalDecls;
 
-  /// \brief Map from the TU to its lexical contents from each module file.
+  /// Map from the TU to its lexical contents from each module file.
   std::vector<std::pair<ModuleFile*, LexicalContents>> TULexicalDecls;
 
-  /// \brief Map from a DeclContext to its lookup tables.
+  /// Map from a DeclContext to its lookup tables.
   llvm::DenseMap<const DeclContext *,
                  serialization::reader::DeclContextLookupTable> Lookups;
 
@@ -586,12 +586,12 @@
   };
   using DeclContextVisibleUpdates = SmallVector<PendingVisibleUpdate, 1>;
 
-  /// \brief Updates to the visible declarations of declaration contexts that
+  /// Updates to the visible declarations of declaration contexts that
   /// haven't been loaded yet.
   llvm::DenseMap<serialization::DeclID, DeclContextVisibleUpdates>
       PendingVisibleUpdates;
 
-  /// \brief The set of C++ or Objective-C classes that have forward 
+  /// The set of C++ or Objective-C classes that have forward 
   /// declarations that have not yet been linked to their definitions.
   llvm::SmallPtrSet<Decl *, 4> PendingDefinitions;
 
@@ -600,24 +600,24 @@
                       llvm::SmallDenseMap<Decl *, unsigned, 4>,
                       SmallVector<std::pair<Decl *, uint64_t>, 4>>;
 
-  /// \brief Functions or methods that have bodies that will be attached.
+  /// Functions or methods that have bodies that will be attached.
   PendingBodiesMap PendingBodies;
 
-  /// \brief Definitions for which we have added merged definitions but not yet
+  /// Definitions for which we have added merged definitions but not yet
   /// performed deduplication.
   llvm::SetVector<NamedDecl *> PendingMergedDefinitionsToDeduplicate;
 
-  /// \brief Read the record that describes the lexical contents of a DC.
+  /// Read the record that describes the lexical contents of a DC.
   bool ReadLexicalDeclContextStorage(ModuleFile &M,
                                      llvm::BitstreamCursor &Cursor,
                                      uint64_t Offset, DeclContext *DC);
 
-  /// \brief Read the record that describes the visible contents of a DC.
+  /// Read the record that describes the visible contents of a DC.
   bool ReadVisibleDeclContextStorage(ModuleFile &M,
                                      llvm::BitstreamCursor &Cursor,
                                      uint64_t Offset, serialization::DeclID ID);
 
-  /// \brief A vector containing identifiers that have already been
+  /// A vector containing identifiers that have already been
   /// loaded.
   ///
   /// If the pointer at index I is non-NULL, then it refers to the
@@ -628,12 +628,12 @@
   using GlobalIdentifierMapType =
       ContinuousRangeMap<serialization::IdentID, ModuleFile *, 4>;
 
-  /// \brief Mapping from global identifier IDs to the module in which the
+  /// Mapping from global identifier IDs to the module in which the
   /// identifier resides along with the offset that should be added to the
   /// global identifier ID to produce a local ID.
   GlobalIdentifierMapType GlobalIdentifierMap;
 
-  /// \brief A vector containing macros that have already been
+  /// A vector containing macros that have already been
   /// loaded.
   ///
   /// If the pointer at index I is non-NULL, then it refers to the
@@ -644,7 +644,7 @@
   using LoadedMacroInfo =
       std::pair<IdentifierInfo *, serialization::SubmoduleID>;
 
-  /// \brief A set of #undef directives that we have loaded; used to
+  /// A set of #undef directives that we have loaded; used to
   /// deduplicate the same #undef information coming from multiple module
   /// files.
   llvm::DenseSet<LoadedMacroInfo> LoadedUndefs;
@@ -652,12 +652,12 @@
   using GlobalMacroMapType =
       ContinuousRangeMap<serialization::MacroID, ModuleFile *, 4>;
 
-  /// \brief Mapping from global macro IDs to the module in which the
+  /// Mapping from global macro IDs to the module in which the
   /// macro resides along with the offset that should be added to the
   /// global macro ID to produce a local ID.
   GlobalMacroMapType GlobalMacroMap;
 
-  /// \brief A vector containing submodules that have already been loaded.
+  /// A vector containing submodules that have already been loaded.
   ///
   /// This vector is indexed by the Submodule ID (-1). NULL submodule entries
   /// indicate that the particular submodule ID has not yet been loaded.
@@ -666,45 +666,45 @@
   using GlobalSubmoduleMapType =
       ContinuousRangeMap<serialization::SubmoduleID, ModuleFile *, 4>;
   
-  /// \brief Mapping from global submodule IDs to the module file in which the
+  /// Mapping from global submodule IDs to the module file in which the
   /// submodule resides along with the offset that should be added to the
   /// global submodule ID to produce a local ID.
   GlobalSubmoduleMapType GlobalSubmoduleMap;
 
-  /// \brief A set of hidden declarations.
+  /// A set of hidden declarations.
   using HiddenNames = SmallVector<Decl *, 2>;
   using HiddenNamesMapType = llvm::DenseMap<Module *, HiddenNames>;
 
-  /// \brief A mapping from each of the hidden submodules to the deserialized
+  /// A mapping from each of the hidden submodules to the deserialized
   /// declarations in that submodule that could be made visible.
   HiddenNamesMapType HiddenNamesMap;
   
-  /// \brief A module import, export, or conflict that hasn't yet been resolved.
+  /// A module import, export, or conflict that hasn't yet been resolved.
   struct UnresolvedModuleRef {
-    /// \brief The file in which this module resides.
+    /// The file in which this module resides.
     ModuleFile *File;
     
-    /// \brief The module that is importing or exporting.
+    /// The module that is importing or exporting.
     Module *Mod;
 
-    /// \brief The kind of module reference.
+    /// The kind of module reference.
     enum { Import, Export, Conflict } Kind;
 
-    /// \brief The local ID of the module that is being exported.
+    /// The local ID of the module that is being exported.
     unsigned ID;
 
-    /// \brief Whether this is a wildcard export.
+    /// Whether this is a wildcard export.
     unsigned IsWildcard : 1;
 
-    /// \brief String data.
+    /// String data.
     StringRef String;
   };
   
-  /// \brief The set of module imports and exports that still need to be 
+  /// The set of module imports and exports that still need to be 
   /// resolved.
   SmallVector<UnresolvedModuleRef, 2> UnresolvedModuleRefs;
   
-  /// \brief A vector containing selectors that have already been loaded.
+  /// A vector containing selectors that have already been loaded.
   ///
   /// This vector is indexed by the Selector ID (-1). NULL selector
   /// entries indicate that the particular selector ID has not yet
@@ -714,11 +714,11 @@
   using GlobalSelectorMapType =
       ContinuousRangeMap<serialization::SelectorID, ModuleFile *, 4>;
 
-  /// \brief Mapping from global selector IDs to the module in which the
+  /// Mapping from global selector IDs to the module in which the
   /// global selector ID to produce a local ID.
   GlobalSelectorMapType GlobalSelectorMap;
 
-  /// \brief The generation number of the last time we loaded data from the
+  /// The generation number of the last time we loaded data from the
   /// global method pool for this selector.
   llvm::DenseMap<Selector, unsigned> SelectorGeneration;
 
@@ -737,14 +737,14 @@
   using PendingMacroIDsMap =
       llvm::MapVector<IdentifierInfo *, SmallVector<PendingMacroInfo, 2>>;
 
-  /// \brief Mapping from identifiers that have a macro history to the global
+  /// Mapping from identifiers that have a macro history to the global
   /// IDs have not yet been deserialized to the global IDs of those macros.
   PendingMacroIDsMap PendingMacroIDs;
 
   using GlobalPreprocessedEntityMapType =
       ContinuousRangeMap<unsigned, ModuleFile *, 4>;
 
-  /// \brief Mapping from global preprocessing entity IDs to the module in
+  /// Mapping from global preprocessing entity IDs to the module in
   /// which the preprocessed entity resides along with the offset that should be
   /// added to the global preprocessing entity ID to produce a local ID.
   GlobalPreprocessedEntityMapType GlobalPreprocessedEntityMap;
@@ -752,15 +752,15 @@
   using GlobalSkippedRangeMapType =
       ContinuousRangeMap<unsigned, ModuleFile *, 4>;
 
-  /// \brief Mapping from global skipped range base IDs to the module in which
+  /// Mapping from global skipped range base IDs to the module in which
   /// the skipped ranges reside.
   GlobalSkippedRangeMapType GlobalSkippedRangeMap;
 
   /// \name CodeGen-relevant special data
-  /// \brief Fields containing data that is relevant to CodeGen.
+  /// Fields containing data that is relevant to CodeGen.
   //@{
 
-  /// \brief The IDs of all declarations that fulfill the criteria of
+  /// The IDs of all declarations that fulfill the criteria of
   /// "interesting" decls.
   ///
   /// This contains the data loaded from all EAGERLY_DESERIALIZED_DECLS blocks
@@ -768,21 +768,21 @@
   /// the consumer eagerly.
   SmallVector<uint64_t, 16> EagerlyDeserializedDecls;
 
-  /// \brief The IDs of all tentative definitions stored in the chain.
+  /// The IDs of all tentative definitions stored in the chain.
   ///
   /// Sema keeps track of all tentative definitions in a TU because it has to
   /// complete them and pass them on to CodeGen. Thus, tentative definitions in
   /// the PCH chain must be eagerly deserialized.
   SmallVector<uint64_t, 16> TentativeDefinitions;
 
-  /// \brief The IDs of all CXXRecordDecls stored in the chain whose VTables are
+  /// The IDs of all CXXRecordDecls stored in the chain whose VTables are
   /// used.
   ///
   /// CodeGen has to emit VTables for these records, so they have to be eagerly
   /// deserialized.
   SmallVector<uint64_t, 64> VTableUses;
 
-  /// \brief A snapshot of the pending instantiations in the chain.
+  /// A snapshot of the pending instantiations in the chain.
   ///
   /// This record tracks the instantiations that Sema has to perform at the
   /// end of the TU. It consists of a pair of values for every pending
@@ -793,26 +793,26 @@
   //@}
 
   /// \name DiagnosticsEngine-relevant special data
-  /// \brief Fields containing data that is used for generating diagnostics
+  /// Fields containing data that is used for generating diagnostics
   //@{
 
-  /// \brief A snapshot of Sema's unused file-scoped variable tracking, for
+  /// A snapshot of Sema's unused file-scoped variable tracking, for
   /// generating warnings.
   SmallVector<uint64_t, 16> UnusedFileScopedDecls;
 
-  /// \brief A list of all the delegating constructors we've seen, to diagnose
+  /// A list of all the delegating constructors we've seen, to diagnose
   /// cycles.
   SmallVector<uint64_t, 4> DelegatingCtorDecls;
 
-  /// \brief Method selectors used in a @selector expression. Used for
+  /// Method selectors used in a @selector expression. Used for
   /// implementation of -Wselector.
   SmallVector<uint64_t, 64> ReferencedSelectorsData;
 
-  /// \brief A snapshot of Sema's weak undeclared identifier tracking, for
+  /// A snapshot of Sema's weak undeclared identifier tracking, for
   /// generating warnings.
   SmallVector<uint64_t, 64> WeakUndeclaredIdentifiers;
 
-  /// \brief The IDs of type aliases for ext_vectors that exist in the chain.
+  /// The IDs of type aliases for ext_vectors that exist in the chain.
   ///
   /// Used by Sema for finding sugared names for ext_vectors in diagnostics.
   SmallVector<uint64_t, 4> ExtVectorDecls;
@@ -820,48 +820,48 @@
   //@}
 
   /// \name Sema-relevant special data
-  /// \brief Fields containing data that is used for semantic analysis
+  /// Fields containing data that is used for semantic analysis
   //@{
 
-  /// \brief The IDs of all potentially unused typedef names in the chain.
+  /// The IDs of all potentially unused typedef names in the chain.
   ///
   /// Sema tracks these to emit warnings.
   SmallVector<uint64_t, 16> UnusedLocalTypedefNameCandidates;
 
-  /// \brief Our current depth in #pragma cuda force_host_device begin/end
+  /// Our current depth in #pragma cuda force_host_device begin/end
   /// macros.
   unsigned ForceCUDAHostDeviceDepth = 0;
 
-  /// \brief The IDs of the declarations Sema stores directly.
+  /// The IDs of the declarations Sema stores directly.
   ///
   /// Sema tracks a few important decls, such as namespace std, directly.
   SmallVector<uint64_t, 4> SemaDeclRefs;
 
-  /// \brief The IDs of the types ASTContext stores directly.
+  /// The IDs of the types ASTContext stores directly.
   ///
   /// The AST context tracks a few important types, such as va_list, directly.
   SmallVector<uint64_t, 16> SpecialTypes;
 
-  /// \brief The IDs of CUDA-specific declarations ASTContext stores directly.
+  /// The IDs of CUDA-specific declarations ASTContext stores directly.
   ///
   /// The AST context tracks a few important decls, currently cudaConfigureCall,
   /// directly.
   SmallVector<uint64_t, 2> CUDASpecialDeclRefs;
 
-  /// \brief The floating point pragma option settings.
+  /// The floating point pragma option settings.
   SmallVector<uint64_t, 1> FPPragmaOptions;
 
-  /// \brief The pragma clang optimize location (if the pragma state is "off").
+  /// The pragma clang optimize location (if the pragma state is "off").
   SourceLocation OptimizeOffPragmaLocation;
 
-  /// \brief The PragmaMSStructKind pragma ms_struct state if set, or -1.
+  /// The PragmaMSStructKind pragma ms_struct state if set, or -1.
   int PragmaMSStructState = -1;
 
-  /// \brief The PragmaMSPointersToMembersKind pragma pointers_to_members state.
+  /// The PragmaMSPointersToMembersKind pragma pointers_to_members state.
   int PragmaMSPointersToMembersState = -1;
   SourceLocation PointersToMembersPragmaLocation;
 
-  /// \brief The pragma pack state.
+  /// The pragma pack state.
   Optional<unsigned> PragmaPackCurrentValue;
   SourceLocation PragmaPackCurrentLocation;
   struct PragmaPackStackEntry {
@@ -873,26 +873,26 @@
   llvm::SmallVector<PragmaPackStackEntry, 2> PragmaPackStack;
   llvm::SmallVector<std::string, 2> PragmaPackStrings;
 
-  /// \brief The OpenCL extension settings.
+  /// The OpenCL extension settings.
   OpenCLOptions OpenCLExtensions;
 
-  /// \brief Extensions required by an OpenCL type.
+  /// Extensions required by an OpenCL type.
   llvm::DenseMap<const Type *, std::set<std::string>> OpenCLTypeExtMap;
 
-  /// \brief Extensions required by an OpenCL declaration.
+  /// Extensions required by an OpenCL declaration.
   llvm::DenseMap<const Decl *, std::set<std::string>> OpenCLDeclExtMap;
 
-  /// \brief A list of the namespaces we've seen.
+  /// A list of the namespaces we've seen.
   SmallVector<uint64_t, 4> KnownNamespaces;
 
-  /// \brief A list of undefined decls with internal linkage followed by the
+  /// A list of undefined decls with internal linkage followed by the
   /// SourceLocation of a matching ODR-use.
   SmallVector<uint64_t, 8> UndefinedButUsed;
 
-  /// \brief Delete expressions to analyze at the end of translation unit.
+  /// Delete expressions to analyze at the end of translation unit.
   SmallVector<uint64_t, 8> DelayedDeleteExprs;
 
-  // \brief A list of late parsed template function data.
+  // A list of late parsed template function data.
   SmallVector<uint64_t, 1> LateParsedTemplates;
 
 public:
@@ -905,41 +905,41 @@
   };
 
 private:
-  /// \brief A list of modules that were imported by precompiled headers or
+  /// A list of modules that were imported by precompiled headers or
   /// any other non-module AST file.
   SmallVector<ImportedSubmodule, 2> ImportedModules;
   //@}
 
-  /// \brief The system include root to be used when loading the
+  /// The system include root to be used when loading the
   /// precompiled header.
   std::string isysroot;
 
-  /// \brief Whether to disable the normal validation performed on precompiled
+  /// Whether to disable the normal validation performed on precompiled
   /// headers when they are loaded.
   bool DisableValidation;
 
-  /// \brief Whether to accept an AST file with compiler errors.
+  /// Whether to accept an AST file with compiler errors.
   bool AllowASTWithCompilerErrors;
 
-  /// \brief Whether to accept an AST file that has a different configuration
+  /// Whether to accept an AST file that has a different configuration
   /// from the current compiler instance.
   bool AllowConfigurationMismatch;
 
-  /// \brief Whether validate system input files.
+  /// Whether validate system input files.
   bool ValidateSystemInputs;
 
-  /// \brief Whether we are allowed to use the global module index.
+  /// Whether we are allowed to use the global module index.
   bool UseGlobalIndex;
 
-  /// \brief Whether we have tried loading the global module index yet.
+  /// Whether we have tried loading the global module index yet.
   bool TriedLoadingGlobalIndex = false;
 
-  ///\brief Whether we are currently processing update records.
+  ///Whether we are currently processing update records.
   bool ProcessingUpdateRecords = false;
 
   using SwitchCaseMapTy = llvm::DenseMap<unsigned, SwitchCase *>;
 
-  /// \brief Mapping from switch-case IDs in the chain to switch-case statements
+  /// Mapping from switch-case IDs in the chain to switch-case statements
   ///
   /// Statements usually don't have IDs, but switch cases need them, so that the
   /// switch statement can refer to them.
@@ -947,56 +947,56 @@
 
   SwitchCaseMapTy *CurrSwitchCaseStmts;
 
-  /// \brief The number of source location entries de-serialized from
+  /// The number of source location entries de-serialized from
   /// the PCH file.
   unsigned NumSLocEntriesRead = 0;
 
-  /// \brief The number of source location entries in the chain.
+  /// The number of source location entries in the chain.
   unsigned TotalNumSLocEntries = 0;
 
-  /// \brief The number of statements (and expressions) de-serialized
+  /// The number of statements (and expressions) de-serialized
   /// from the chain.
   unsigned NumStatementsRead = 0;
 
-  /// \brief The total number of statements (and expressions) stored
+  /// The total number of statements (and expressions) stored
   /// in the chain.
   unsigned TotalNumStatements = 0;
 
-  /// \brief The number of macros de-serialized from the chain.
+  /// The number of macros de-serialized from the chain.
   unsigned NumMacrosRead = 0;
 
-  /// \brief The total number of macros stored in the chain.
+  /// The total number of macros stored in the chain.
   unsigned TotalNumMacros = 0;
 
-  /// \brief The number of lookups into identifier tables.
+  /// The number of lookups into identifier tables.
   unsigned NumIdentifierLookups = 0;
 
-  /// \brief The number of lookups into identifier tables that succeed.
+  /// The number of lookups into identifier tables that succeed.
   unsigned NumIdentifierLookupHits = 0;
 
-  /// \brief The number of selectors that have been read.
+  /// The number of selectors that have been read.
   unsigned NumSelectorsRead = 0;
 
-  /// \brief The number of method pool entries that have been read.
+  /// The number of method pool entries that have been read.
   unsigned NumMethodPoolEntriesRead = 0;
 
-  /// \brief The number of times we have looked up a selector in the method
+  /// The number of times we have looked up a selector in the method
   /// pool.
   unsigned NumMethodPoolLookups = 0;
 
-  /// \brief The number of times we have looked up a selector in the method
+  /// The number of times we have looked up a selector in the method
   /// pool and found something.
   unsigned NumMethodPoolHits = 0;
 
-  /// \brief The number of times we have looked up a selector in the method
+  /// The number of times we have looked up a selector in the method
   /// pool within a specific module.
   unsigned NumMethodPoolTableLookups = 0;
 
-  /// \brief The number of times we have looked up a selector in the method
+  /// The number of times we have looked up a selector in the method
   /// pool within a specific module and found something.
   unsigned NumMethodPoolTableHits = 0;
 
-  /// \brief The total number of method pool entries in the selector table.
+  /// The total number of method pool entries in the selector table.
   unsigned TotalNumMethodPoolEntries = 0;
 
   /// Number of lexical decl contexts read/total.
@@ -1008,16 +1008,16 @@
   /// Total size of modules, in bits, currently loaded
   uint64_t TotalModulesSizeInBits = 0;
 
-  /// \brief Number of Decl/types that are currently deserializing.
+  /// Number of Decl/types that are currently deserializing.
   unsigned NumCurrentElementsDeserializing = 0;
 
-  /// \brief Set true while we are in the process of passing deserialized
+  /// Set true while we are in the process of passing deserialized
   /// "interesting" decls to consumer inside FinishedDeserializing().
   /// This is used as a guard to avoid recursively repeating the process of
   /// passing decls to consumer.
   bool PassingDeclsToConsumer = false;
 
-  /// \brief The set of identifiers that were read while the AST reader was
+  /// The set of identifiers that were read while the AST reader was
   /// (recursively) loading declarations.
   ///
   /// The declarations on the identifier chain for these identifiers will be
@@ -1025,12 +1025,12 @@
   llvm::MapVector<IdentifierInfo *, SmallVector<uint32_t, 4>>
     PendingIdentifierInfos;
 
-  /// \brief The set of lookup results that we have faked in order to support
+  /// The set of lookup results that we have faked in order to support
   /// merging of partially deserialized decls but that we have not yet removed.
   llvm::SmallMapVector<IdentifierInfo *, SmallVector<NamedDecl*, 2>, 16>
     PendingFakeLookupResults;
 
-  /// \brief The generation number of each identifier, which keeps track of
+  /// The generation number of each identifier, which keeps track of
   /// the last time we loaded information about this identifier.
   llvm::DenseMap<IdentifierInfo *, unsigned> IdentifierGeneration;
 
@@ -1048,7 +1048,7 @@
     bool hasPendingBody() { return DeclHasPendingBody; }
   };
 
-  /// \brief Contains declarations and definitions that could be
+  /// Contains declarations and definitions that could be
   /// "interesting" to the ASTConsumer, when we get that AST consumer.
   ///
   /// "Interesting" declarations are those that have data that may
@@ -1056,16 +1056,16 @@
   /// Objective-C protocols.
   std::deque<InterestingDecl> PotentiallyInterestingDecls;
 
-  /// \brief The list of redeclaration chains that still need to be 
+  /// The list of redeclaration chains that still need to be 
   /// reconstructed, and the local offset to the corresponding list
   /// of redeclarations.
   SmallVector<std::pair<Decl *, uint64_t>, 16> PendingDeclChains;
 
-  /// \brief The list of canonical declarations whose redeclaration chains
+  /// The list of canonical declarations whose redeclaration chains
   /// need to be marked as incomplete once we're done deserializing things.
   SmallVector<Decl *, 16> PendingIncompleteDeclChains;
 
-  /// \brief The Decl IDs for the Sema/Lexical DeclContext of a Decl that has
+  /// The Decl IDs for the Sema/Lexical DeclContext of a Decl that has
   /// been loaded but its DeclContext was not set yet.
   struct PendingDeclContextInfo {
     Decl *D;
@@ -1073,14 +1073,14 @@
     serialization::GlobalDeclID LexicalDC;
   };
 
-  /// \brief The set of Decls that have been loaded but their DeclContexts are
+  /// The set of Decls that have been loaded but their DeclContexts are
   /// not set yet.
   ///
   /// The DeclContexts for these Decls will be set once recursive loading has
   /// been completed.
   std::deque<PendingDeclContextInfo> PendingDeclContextInfos;
 
-  /// \brief The set of NamedDecls that have been loaded, but are members of a
+  /// The set of NamedDecls that have been loaded, but are members of a
   /// context that has been merged into another context where the corresponding
   /// declaration is either missing or has not yet been loaded.
   ///
@@ -1091,22 +1091,22 @@
   using DataPointers =
       std::pair<CXXRecordDecl *, struct CXXRecordDecl::DefinitionData *>;
 
-  /// \brief Record definitions in which we found an ODR violation.
+  /// Record definitions in which we found an ODR violation.
   llvm::SmallDenseMap<CXXRecordDecl *, llvm::SmallVector<DataPointers, 2>, 2>
       PendingOdrMergeFailures;
 
-  /// \brief Function definitions in which we found an ODR violation.
+  /// Function definitions in which we found an ODR violation.
   llvm::SmallDenseMap<FunctionDecl *, llvm::SmallVector<FunctionDecl *, 2>, 2>
       PendingFunctionOdrMergeFailures;
 
-  /// \brief DeclContexts in which we have diagnosed an ODR violation.
+  /// DeclContexts in which we have diagnosed an ODR violation.
   llvm::SmallPtrSet<DeclContext*, 2> DiagnosedOdrMergeFailures;
 
-  /// \brief The set of Objective-C categories that have been deserialized
+  /// The set of Objective-C categories that have been deserialized
   /// since the last time the declaration chains were linked.
   llvm::SmallPtrSet<ObjCCategoryDecl *, 16> CategoriesDeserialized;
 
-  /// \brief The set of Objective-C class definitions that have already been
+  /// The set of Objective-C class definitions that have already been
   /// loaded, for which we will need to check for categories whenever a new
   /// module is loaded.
   SmallVector<ObjCInterfaceDecl *, 16> ObjCClassesLoaded;
@@ -1114,34 +1114,34 @@
   using KeyDeclsMap =
       llvm::DenseMap<Decl *, SmallVector<serialization::DeclID, 2>>;
     
-  /// \brief A mapping from canonical declarations to the set of global
+  /// A mapping from canonical declarations to the set of global
   /// declaration IDs for key declaration that have been merged with that
   /// canonical declaration. A key declaration is a formerly-canonical
   /// declaration whose module did not import any other key declaration for that
   /// entity. These are the IDs that we use as keys when finding redecl chains.
   KeyDeclsMap KeyDecls;
   
-  /// \brief A mapping from DeclContexts to the semantic DeclContext that we
+  /// A mapping from DeclContexts to the semantic DeclContext that we
   /// are treating as the definition of the entity. This is used, for instance,
   /// when merging implicit instantiations of class templates across modules.
   llvm::DenseMap<DeclContext *, DeclContext *> MergedDeclContexts;
 
-  /// \brief A mapping from canonical declarations of enums to their canonical
+  /// A mapping from canonical declarations of enums to their canonical
   /// definitions. Only populated when using modules in C++.
   llvm::DenseMap<EnumDecl *, EnumDecl *> EnumDefinitions;
 
-  /// \brief When reading a Stmt tree, Stmt operands are placed in this stack.
+  /// When reading a Stmt tree, Stmt operands are placed in this stack.
   SmallVector<Stmt *, 16> StmtStack;
 
-  /// \brief What kind of records we are reading.
+  /// What kind of records we are reading.
   enum ReadingKind {
     Read_None, Read_Decl, Read_Type, Read_Stmt
   };
 
-  /// \brief What kind of records we are reading.
+  /// What kind of records we are reading.
   ReadingKind ReadingKind = Read_None;
 
-  /// \brief RAII object to change the reading kind.
+  /// RAII object to change the reading kind.
   class ReadingKindTracker {
     ASTReader &Reader;
     enum ReadingKind PrevKind;
@@ -1157,7 +1157,7 @@
     ~ReadingKindTracker() { Reader.ReadingKind = PrevKind; }
   };
 
-  /// \brief RAII object to mark the start of processing updates.
+  /// RAII object to mark the start of processing updates.
   class ProcessingUpdatesRAIIObj {
     ASTReader &Reader;
     bool PrevState;
@@ -1174,7 +1174,7 @@
     ~ProcessingUpdatesRAIIObj() { Reader.ProcessingUpdateRecords = PrevState; }
   };
 
-  /// \brief Suggested contents of the predefines buffer, after this
+  /// Suggested contents of the predefines buffer, after this
   /// PCH file has been processed.
   ///
   /// In most cases, this string will be empty, because the predefines
@@ -1186,7 +1186,7 @@
 
   llvm::DenseMap<const Decl *, bool> DefinitionSource;
 
-  /// \brief Reads a statement from the specified cursor.
+  /// Reads a statement from the specified cursor.
   Stmt *ReadStmtFromStream(ModuleFile &F);
 
   struct InputFileInfo {
@@ -1198,10 +1198,10 @@
     bool TopLevelModuleMap;
   };
 
-  /// \brief Reads the stored information about an input file.
+  /// Reads the stored information about an input file.
   InputFileInfo readInputFileInfo(ModuleFile &F, unsigned ID);
 
-  /// \brief Retrieve the file entry and 'overridden' bit for an input
+  /// Retrieve the file entry and 'overridden' bit for an input
   /// file in the given module file.
   serialization::InputFile getInputFile(ModuleFile &F, unsigned ID,
                                         bool Complain = true);
@@ -1210,7 +1210,7 @@
   void ResolveImportedPath(ModuleFile &M, std::string &Filename);
   static void ResolveImportedPath(std::string &Filename, StringRef Prefix);
 
-  /// \brief Returns the first key declaration for the given declaration. This
+  /// Returns the first key declaration for the given declaration. This
   /// is one that is formerly-canonical (or still canonical) and whose module
   /// did not import any other key declaration of the entity.
   Decl *getKeyDeclaration(Decl *D) {
@@ -1227,7 +1227,7 @@
     return getKeyDeclaration(const_cast<Decl*>(D));
   }
 
-  /// \brief Run a callback on each imported key declaration of \p D.
+  /// Run a callback on each imported key declaration of \p D.
   template <typename Fn>
   void forEachImportedKeyDecl(const Decl *D, Fn Visit) {
     D = D->getCanonicalDecl();
@@ -1240,7 +1240,7 @@
         Visit(GetExistingDecl(ID));
   }
 
-  /// \brief Get the loaded lookup tables for \p Primary, if any.
+  /// Get the loaded lookup tables for \p Primary, if any.
   const serialization::reader::DeclContextLookupTable *
   getLoadedLookupTables(DeclContext *Primary) const;
 
@@ -1330,7 +1330,7 @@
   Decl *ReadDeclRecord(serialization::DeclID ID);
   void markIncompleteDeclChain(Decl *Canon);
 
-  /// \brief Returns the most recent declaration of a declaration (which must be
+  /// Returns the most recent declaration of a declaration (which must be
   /// of a redeclarable kind) that is either local or has already been loaded
   /// merged into its redecl chain.
   Decl *getMostRecentExistingDecl(Decl *D);
@@ -1345,12 +1345,12 @@
   RecordLocation getLocalBitOffset(uint64_t GlobalOffset);
   uint64_t getGlobalBitOffset(ModuleFile &M, uint32_t LocalOffset);
 
-  /// \brief Returns the first preprocessed entity ID that begins or ends after
+  /// Returns the first preprocessed entity ID that begins or ends after
   /// \arg Loc.
   serialization::PreprocessedEntityID
   findPreprocessedEntity(SourceLocation Loc, bool EndsAfter) const;
 
-  /// \brief Find the next module that contains entities and return the ID
+  /// Find the next module that contains entities and return the ID
   /// of the first entry.
   ///
   /// \param SLocMapI points at a chunk of a module that contains no
@@ -1360,12 +1360,12 @@
     findNextPreprocessedEntity(
                         GlobalSLocOffsetMapType::const_iterator SLocMapI) const;
 
-  /// \brief Returns (ModuleFile, Local index) pair for \p GlobalIndex of a
+  /// Returns (ModuleFile, Local index) pair for \p GlobalIndex of a
   /// preprocessed entity.
   std::pair<ModuleFile *, unsigned>
     getModulePreprocessedEntity(unsigned GlobalIndex);
 
-  /// \brief Returns (begin, end) pair for the preprocessed entities of a
+  /// Returns (begin, end) pair for the preprocessed entities of a
   /// particular module.
   llvm::iterator_range<PreprocessingRecord::iterator>
   getModulePreprocessedEntities(ModuleFile &Mod) const;
@@ -1418,7 +1418,7 @@
     PendingDeclContextInfos.push_back(Info);
   }
 
-  /// \brief Produce an error diagnostic and return true.
+  /// Produce an error diagnostic and return true.
   ///
   /// This routine should only be used for fatal errors that have to
   /// do with non-routine failures (e.g., corrupted AST file).
@@ -1427,7 +1427,7 @@
              StringRef Arg2 = StringRef()) const;
 
 public:
-  /// \brief Load the AST file and validate its contents against the given
+  /// Load the AST file and validate its contents against the given
   /// Preprocessor.
   ///
   /// \param PP the preprocessor associated with the context in which this
@@ -1482,34 +1482,34 @@
   FileManager &getFileManager() const { return FileMgr; }
   DiagnosticsEngine &getDiags() const { return Diags; }
 
-  /// \brief Flags that indicate what kind of AST loading failures the client
+  /// Flags that indicate what kind of AST loading failures the client
   /// of the AST reader can directly handle.
   ///
   /// When a client states that it can handle a particular kind of failure,
   /// the AST reader will not emit errors when producing that kind of failure.
   enum LoadFailureCapabilities {
-    /// \brief The client can't handle any AST loading failures.
+    /// The client can't handle any AST loading failures.
     ARR_None = 0,
 
-    /// \brief The client can handle an AST file that cannot load because it
+    /// The client can handle an AST file that cannot load because it
     /// is missing.
     ARR_Missing = 0x1,
 
-    /// \brief The client can handle an AST file that cannot load because it
+    /// The client can handle an AST file that cannot load because it
     /// is out-of-date relative to its input files.
     ARR_OutOfDate = 0x2,
 
-    /// \brief The client can handle an AST file that cannot load because it
+    /// The client can handle an AST file that cannot load because it
     /// was built with a different version of Clang.
     ARR_VersionMismatch = 0x4,
 
-    /// \brief The client can handle an AST file that cannot load because it's
+    /// The client can handle an AST file that cannot load because it's
     /// compiled configuration doesn't match that of the context it was
     /// loaded into.
     ARR_ConfigurationMismatch = 0x8
   };
 
-  /// \brief Load the AST file designated by the given file name.
+  /// Load the AST file designated by the given file name.
   ///
   /// \param FileName The name of the AST file to load.
   ///
@@ -1530,7 +1530,7 @@
                         unsigned ClientLoadCapabilities,
                         SmallVectorImpl<ImportedSubmodule> *Imported = nullptr);
 
-  /// \brief Make the entities in the given module and any of its (non-explicit)
+  /// Make the entities in the given module and any of its (non-explicit)
   /// submodules visible to name lookup.
   ///
   /// \param Mod The module whose names should be made visible.
@@ -1543,24 +1543,24 @@
                          Module::NameVisibilityKind NameVisibility,
                          SourceLocation ImportLoc);
 
-  /// \brief Make the names within this set of hidden names visible.
+  /// Make the names within this set of hidden names visible.
   void makeNamesVisible(const HiddenNames &Names, Module *Owner);
 
-  /// \brief Note that MergedDef is a redefinition of the canonical definition
+  /// Note that MergedDef is a redefinition of the canonical definition
   /// Def, so Def should be visible whenever MergedDef is.
   void mergeDefinitionVisibility(NamedDecl *Def, NamedDecl *MergedDef);
 
-  /// \brief Take the AST callbacks listener.
+  /// Take the AST callbacks listener.
   std::unique_ptr<ASTReaderListener> takeListener() {
     return std::move(Listener);
   }
 
-  /// \brief Set the AST callbacks listener.
+  /// Set the AST callbacks listener.
   void setListener(std::unique_ptr<ASTReaderListener> Listener) {
     this->Listener = std::move(Listener);
   }
 
-  /// \brief Add an AST callback listener.
+  /// Add an AST callback listener.
   ///
   /// Takes ownership of \p L.
   void addListener(std::unique_ptr<ASTReaderListener> L) {
@@ -1595,72 +1595,72 @@
     }
   };
 
-  /// \brief Set the AST deserialization listener.
+  /// Set the AST deserialization listener.
   void setDeserializationListener(ASTDeserializationListener *Listener,
                                   bool TakeOwnership = false);
 
-  /// \brief Get the AST deserialization listener.
+  /// Get the AST deserialization listener.
   ASTDeserializationListener *getDeserializationListener() {
     return DeserializationListener;
   }
 
-  /// \brief Determine whether this AST reader has a global index.
+  /// Determine whether this AST reader has a global index.
   bool hasGlobalIndex() const { return (bool)GlobalIndex; }
 
-  /// \brief Return global module index.
+  /// Return global module index.
   GlobalModuleIndex *getGlobalIndex() { return GlobalIndex.get(); }
 
-  /// \brief Reset reader for a reload try.
+  /// Reset reader for a reload try.
   void resetForReload() { TriedLoadingGlobalIndex = false; }
 
-  /// \brief Attempts to load the global index.
+  /// Attempts to load the global index.
   ///
   /// \returns true if loading the global index has failed for any reason.
   bool loadGlobalIndex();
 
-  /// \brief Determine whether we tried to load the global index, but failed,
+  /// Determine whether we tried to load the global index, but failed,
   /// e.g., because it is out-of-date or does not exist.
   bool isGlobalIndexUnavailable() const;
   
-  /// \brief Initializes the ASTContext
+  /// Initializes the ASTContext
   void InitializeContext();
 
-  /// \brief Update the state of Sema after loading some additional modules.
+  /// Update the state of Sema after loading some additional modules.
   void UpdateSema();
 
-  /// \brief Add in-memory (virtual file) buffer.
+  /// Add in-memory (virtual file) buffer.
   void addInMemoryBuffer(StringRef &FileName,
                          std::unique_ptr<llvm::MemoryBuffer> Buffer) {
     ModuleMgr.addInMemoryBuffer(FileName, std::move(Buffer));
   }
 
-  /// \brief Finalizes the AST reader's state before writing an AST file to
+  /// Finalizes the AST reader's state before writing an AST file to
   /// disk.
   ///
   /// This operation may undo temporary state in the AST that should not be
   /// emitted.
   void finalizeForWriting();
 
-  /// \brief Retrieve the module manager.
+  /// Retrieve the module manager.
   ModuleManager &getModuleManager() { return ModuleMgr; }
 
-  /// \brief Retrieve the preprocessor.
+  /// Retrieve the preprocessor.
   Preprocessor &getPreprocessor() const { return PP; }
 
-  /// \brief Retrieve the name of the original source file name for the primary
+  /// Retrieve the name of the original source file name for the primary
   /// module file.
   StringRef getOriginalSourceFile() {
     return ModuleMgr.getPrimaryModule().OriginalSourceFileName; 
   }
 
-  /// \brief Retrieve the name of the original source file name directly from
+  /// Retrieve the name of the original source file name directly from
   /// the AST file, without actually loading the AST file.
   static std::string
   getOriginalSourceFile(const std::string &ASTFileName, FileManager &FileMgr,
                         const PCHContainerReader &PCHContainerRdr,
                         DiagnosticsEngine &Diags);
 
-  /// \brief Read the control block for the named AST file.
+  /// Read the control block for the named AST file.
   ///
   /// \returns true if an error occurred, false otherwise.
   static bool
@@ -1670,7 +1670,7 @@
                           ASTReaderListener &Listener,
                           bool ValidateDiagnosticOptions);
 
-  /// \brief Determine whether the given AST file is acceptable to load into a
+  /// Determine whether the given AST file is acceptable to load into a
   /// translation unit with the given language and target options.
   static bool isAcceptableASTFile(StringRef Filename, FileManager &FileMgr,
                                   const PCHContainerReader &PCHContainerRdr,
@@ -1679,71 +1679,71 @@
                                   const PreprocessorOptions &PPOpts,
                                   StringRef ExistingModuleCachePath);
 
-  /// \brief Returns the suggested contents of the predefines buffer,
+  /// Returns the suggested contents of the predefines buffer,
   /// which contains a (typically-empty) subset of the predefines
   /// build prior to including the precompiled header.
   const std::string &getSuggestedPredefines() { return SuggestedPredefines; }
 
-  /// \brief Read a preallocated preprocessed entity from the external source.
+  /// Read a preallocated preprocessed entity from the external source.
   ///
   /// \returns null if an error occurred that prevented the preprocessed
   /// entity from being loaded.
   PreprocessedEntity *ReadPreprocessedEntity(unsigned Index) override;
 
-  /// \brief Returns a pair of [Begin, End) indices of preallocated
+  /// Returns a pair of [Begin, End) indices of preallocated
   /// preprocessed entities that \p Range encompasses.
   std::pair<unsigned, unsigned>
       findPreprocessedEntitiesInRange(SourceRange Range) override;
 
-  /// \brief Optionally returns true or false if the preallocated preprocessed
+  /// Optionally returns true or false if the preallocated preprocessed
   /// entity with index \p Index came from file \p FID.
   Optional<bool> isPreprocessedEntityInFileID(unsigned Index,
                                               FileID FID) override;
 
-  /// \brief Read a preallocated skipped range from the external source.
+  /// Read a preallocated skipped range from the external source.
   SourceRange ReadSkippedRange(unsigned Index) override;
 
-  /// \brief Read the header file information for the given file entry.
+  /// Read the header file information for the given file entry.
   HeaderFileInfo GetHeaderFileInfo(const FileEntry *FE) override;
 
   void ReadPragmaDiagnosticMappings(DiagnosticsEngine &Diag);
 
-  /// \brief Returns the number of source locations found in the chain.
+  /// Returns the number of source locations found in the chain.
   unsigned getTotalNumSLocs() const {
     return TotalNumSLocEntries;
   }
 
-  /// \brief Returns the number of identifiers found in the chain.
+  /// Returns the number of identifiers found in the chain.
   unsigned getTotalNumIdentifiers() const {
     return static_cast<unsigned>(IdentifiersLoaded.size());
   }
 
-  /// \brief Returns the number of macros found in the chain.
+  /// Returns the number of macros found in the chain.
   unsigned getTotalNumMacros() const {
     return static_cast<unsigned>(MacrosLoaded.size());
   }
 
-  /// \brief Returns the number of types found in the chain.
+  /// Returns the number of types found in the chain.
   unsigned getTotalNumTypes() const {
     return static_cast<unsigned>(TypesLoaded.size());
   }
 
-  /// \brief Returns the number of declarations found in the chain.
+  /// Returns the number of declarations found in the chain.
   unsigned getTotalNumDecls() const {
     return static_cast<unsigned>(DeclsLoaded.size());
   }
 
-  /// \brief Returns the number of submodules known.
+  /// Returns the number of submodules known.
   unsigned getTotalNumSubmodules() const {
     return static_cast<unsigned>(SubmodulesLoaded.size());
   }
   
-  /// \brief Returns the number of selectors found in the chain.
+  /// Returns the number of selectors found in the chain.
   unsigned getTotalNumSelectors() const {
     return static_cast<unsigned>(SelectorsLoaded.size());
   }
 
-  /// \brief Returns the number of preprocessed entities known to the AST
+  /// Returns the number of preprocessed entities known to the AST
   /// reader.
   unsigned getTotalNumPreprocessedEntities() const {
     unsigned Result = 0;
@@ -1752,13 +1752,13 @@
     return Result;
   }
 
-  /// \brief Reads a TemplateArgumentLocInfo appropriate for the
+  /// Reads a TemplateArgumentLocInfo appropriate for the
   /// given TemplateArgument kind.
   TemplateArgumentLocInfo
   GetTemplateArgumentLocInfo(ModuleFile &F, TemplateArgument::ArgKind Kind,
                              const RecordData &Record, unsigned &Idx);
 
-  /// \brief Reads a TemplateArgumentLoc.
+  /// Reads a TemplateArgumentLoc.
   TemplateArgumentLoc
   ReadTemplateArgumentLoc(ModuleFile &F,
                           const RecordData &Record, unsigned &Idx);
@@ -1767,21 +1767,21 @@
   ReadASTTemplateArgumentListInfo(ModuleFile &F,
                                   const RecordData &Record, unsigned &Index);
 
-  /// \brief Reads a declarator info from the given record.
+  /// Reads a declarator info from the given record.
   TypeSourceInfo *GetTypeSourceInfo(ModuleFile &F,
                                     const RecordData &Record, unsigned &Idx);
 
-  /// \brief Resolve a type ID into a type, potentially building a new
+  /// Resolve a type ID into a type, potentially building a new
   /// type.
   QualType GetType(serialization::TypeID ID);
 
-  /// \brief Resolve a local type ID within a given AST file into a type.
+  /// Resolve a local type ID within a given AST file into a type.
   QualType getLocalType(ModuleFile &F, unsigned LocalID);
 
-  /// \brief Map a local type ID within a given AST file into a global type ID.
+  /// Map a local type ID within a given AST file into a global type ID.
   serialization::TypeID getGlobalTypeID(ModuleFile &F, unsigned LocalID) const;
 
-  /// \brief Read a type from the current position in the given record, which
+  /// Read a type from the current position in the given record, which
   /// was read from the given AST file.
   QualType readType(ModuleFile &F, const RecordData &Record, unsigned &Idx) {
     if (Idx >= Record.size())
@@ -1790,40 +1790,40 @@
     return getLocalType(F, Record[Idx++]);
   }
 
-  /// \brief Map from a local declaration ID within a given module to a
+  /// Map from a local declaration ID within a given module to a
   /// global declaration ID.
   serialization::DeclID getGlobalDeclID(ModuleFile &F,
                                       serialization::LocalDeclID LocalID) const;
 
-  /// \brief Returns true if global DeclID \p ID originated from module \p M.
+  /// Returns true if global DeclID \p ID originated from module \p M.
   bool isDeclIDFromModule(serialization::GlobalDeclID ID, ModuleFile &M) const;
 
-  /// \brief Retrieve the module file that owns the given declaration, or NULL
+  /// Retrieve the module file that owns the given declaration, or NULL
   /// if the declaration is not from a module file.
   ModuleFile *getOwningModuleFile(const Decl *D);
 
-  /// \brief Get the best name we know for the module that owns the given
+  /// Get the best name we know for the module that owns the given
   /// declaration, or an empty string if the declaration is not from a module.
   std::string getOwningModuleNameForDiagnostic(const Decl *D);
 
-  /// \brief Returns the source location for the decl \p ID.
+  /// Returns the source location for the decl \p ID.
   SourceLocation getSourceLocationForDeclID(serialization::GlobalDeclID ID);
 
-  /// \brief Resolve a declaration ID into a declaration, potentially
+  /// Resolve a declaration ID into a declaration, potentially
   /// building a new declaration.
   Decl *GetDecl(serialization::DeclID ID);
   Decl *GetExternalDecl(uint32_t ID) override;
 
-  /// \brief Resolve a declaration ID into a declaration. Return 0 if it's not
+  /// Resolve a declaration ID into a declaration. Return 0 if it's not
   /// been loaded yet.
   Decl *GetExistingDecl(serialization::DeclID ID);
 
-  /// \brief Reads a declaration with the given local ID in the given module.
+  /// Reads a declaration with the given local ID in the given module.
   Decl *GetLocalDecl(ModuleFile &F, uint32_t LocalID) {
     return GetDecl(getGlobalDeclID(F, LocalID));
   }
 
-  /// \brief Reads a declaration with the given local ID in the given module.
+  /// Reads a declaration with the given local ID in the given module.
   ///
   /// \returns The requested declaration, casted to the given return type.
   template<typename T>
@@ -1831,7 +1831,7 @@
     return cast_or_null<T>(GetLocalDecl(F, LocalID));
   }
 
-  /// \brief Map a global declaration ID into the declaration ID used to 
+  /// Map a global declaration ID into the declaration ID used to 
   /// refer to this declaration within the given module fule.
   ///
   /// \returns the global ID of the given declaration as known in the given
@@ -1840,20 +1840,20 @@
   mapGlobalIDToModuleFileGlobalID(ModuleFile &M,
                                   serialization::DeclID GlobalID);
   
-  /// \brief Reads a declaration ID from the given position in a record in the
+  /// Reads a declaration ID from the given position in a record in the
   /// given module.
   ///
   /// \returns The declaration ID read from the record, adjusted to a global ID.
   serialization::DeclID ReadDeclID(ModuleFile &F, const RecordData &Record,
                                    unsigned &Idx);
 
-  /// \brief Reads a declaration from the given position in a record in the
+  /// Reads a declaration from the given position in a record in the
   /// given module.
   Decl *ReadDecl(ModuleFile &F, const RecordData &R, unsigned &I) {
     return GetDecl(ReadDeclID(F, R, I));
   }
 
-  /// \brief Reads a declaration from the given position in a record in the
+  /// Reads a declaration from the given position in a record in the
   /// given module.
   ///
   /// \returns The declaration read from this location, casted to the given
@@ -1863,14 +1863,14 @@
     return cast_or_null<T>(GetDecl(ReadDeclID(F, R, I)));
   }
 
-  /// \brief If any redeclarations of \p D have been imported since it was
+  /// If any redeclarations of \p D have been imported since it was
   /// last checked, this digs out those redeclarations and adds them to the
   /// redeclaration chain for \p D.
   void CompleteRedeclChain(const Decl *D) override;
 
   CXXBaseSpecifier *GetExternalCXXBaseSpecifiers(uint64_t Offset) override;
 
-  /// \brief Resolve the offset of a statement into a statement.
+  /// Resolve the offset of a statement into a statement.
   ///
   /// This operation will read a new statement from the external
   /// source each time it is called, and is meant to be used via a
@@ -1882,13 +1882,13 @@
   /// and then leave the cursor pointing into the block.
   static bool ReadBlockAbbrevs(llvm::BitstreamCursor &Cursor, unsigned BlockID);
 
-  /// \brief Finds all the visible declarations with a given name.
+  /// Finds all the visible declarations with a given name.
   /// The current implementation of this method just loads the entire
   /// lookup table as unmaterialized references.
   bool FindExternalVisibleDeclsByName(const DeclContext *DC,
                                       DeclarationName Name) override;
 
-  /// \brief Read all of the declarations lexically stored in a
+  /// Read all of the declarations lexically stored in a
   /// declaration context.
   ///
   /// \param DC The declaration context whose declarations will be
@@ -1906,47 +1906,47 @@
                            llvm::function_ref<bool(Decl::Kind)> IsKindWeWant,
                            SmallVectorImpl<Decl *> &Decls) override;
 
-  /// \brief Get the decls that are contained in a file in the Offset/Length
+  /// Get the decls that are contained in a file in the Offset/Length
   /// range. \p Length can be 0 to indicate a point at \p Offset instead of
   /// a range.
   void FindFileRegionDecls(FileID File, unsigned Offset, unsigned Length,
                            SmallVectorImpl<Decl *> &Decls) override;
 
-  /// \brief Notify ASTReader that we started deserialization of
+  /// Notify ASTReader that we started deserialization of
   /// a decl or type so until FinishedDeserializing is called there may be
   /// decls that are initializing. Must be paired with FinishedDeserializing.
   void StartedDeserializing() override;
 
-  /// \brief Notify ASTReader that we finished the deserialization of
+  /// Notify ASTReader that we finished the deserialization of
   /// a decl or type. Must be paired with StartedDeserializing.
   void FinishedDeserializing() override;
 
-  /// \brief Function that will be invoked when we begin parsing a new
+  /// Function that will be invoked when we begin parsing a new
   /// translation unit involving this external AST source.
   ///
   /// This function will provide all of the external definitions to
   /// the ASTConsumer.
   void StartTranslationUnit(ASTConsumer *Consumer) override;
 
-  /// \brief Print some statistics about AST usage.
+  /// Print some statistics about AST usage.
   void PrintStats() override;
 
-  /// \brief Dump information about the AST reader to standard error.
+  /// Dump information about the AST reader to standard error.
   void dump();
 
   /// Return the amount of memory used by memory buffers, breaking down
   /// by heap-backed versus mmap'ed memory.
   void getMemoryBufferSizes(MemoryBufferSizes &sizes) const override;
 
-  /// \brief Initialize the semantic source with the Sema instance
+  /// Initialize the semantic source with the Sema instance
   /// being used to perform semantic analysis on the abstract syntax
   /// tree.
   void InitializeSema(Sema &S) override;
 
-  /// \brief Inform the semantic consumer that Sema is no longer available.
+  /// Inform the semantic consumer that Sema is no longer available.
   void ForgetSema() override { SemaObj = nullptr; }
 
-  /// \brief Retrieve the IdentifierInfo for the named identifier.
+  /// Retrieve the IdentifierInfo for the named identifier.
   ///
   /// This routine builds a new IdentifierInfo for the given identifier. If any
   /// declarations with this name are visible from translation unit scope, their
@@ -1954,11 +1954,11 @@
   /// chain of the identifier.
   IdentifierInfo *get(StringRef Name) override;
 
-  /// \brief Retrieve an iterator into the set of all identifiers
+  /// Retrieve an iterator into the set of all identifiers
   /// in all loaded AST files.
   IdentifierIterator *getIdentifiers() override;
 
-  /// \brief Load the contents of the global method pool for a given
+  /// Load the contents of the global method pool for a given
   /// selector.
   void ReadMethodPool(Selector Sel) override;
 
@@ -1966,7 +1966,7 @@
   /// selector if necessary.
   void updateOutOfDateSelector(Selector Sel) override;
 
-  /// \brief Load the set of namespaces that are known to the external source,
+  /// Load the set of namespaces that are known to the external source,
   /// which will be used during typo correction.
   void ReadKnownNamespaces(
                          SmallVectorImpl<NamespaceDecl *> &Namespaces) override;
@@ -2008,7 +2008,7 @@
       llvm::MapVector<const FunctionDecl *, std::unique_ptr<LateParsedTemplate>>
           &LPTMap) override;
 
-  /// \brief Load a selector from disk, registering its ID if it exists.
+  /// Load a selector from disk, registering its ID if it exists.
   void LoadSelector(Selector Sel);
 
   void SetIdentifierInfo(unsigned ID, IdentifierInfo *II);
@@ -2016,10 +2016,10 @@
                                const SmallVectorImpl<uint32_t> &DeclIDs,
                                SmallVectorImpl<Decl *> *Decls = nullptr);
 
-  /// \brief Report a diagnostic.
+  /// Report a diagnostic.
   DiagnosticBuilder Diag(unsigned DiagID) const;
 
-  /// \brief Report a diagnostic.
+  /// Report a diagnostic.
   DiagnosticBuilder Diag(SourceLocation Loc, unsigned DiagID) const;
 
   IdentifierInfo *DecodeIdentifierInfo(serialization::IdentifierID ID);
@@ -2043,47 +2043,47 @@
 
   void resolvePendingMacro(IdentifierInfo *II, const PendingMacroInfo &PMInfo);
 
-  /// \brief Retrieve the macro with the given ID.
+  /// Retrieve the macro with the given ID.
   MacroInfo *getMacro(serialization::MacroID ID);
 
-  /// \brief Retrieve the global macro ID corresponding to the given local
+  /// Retrieve the global macro ID corresponding to the given local
   /// ID within the given module file.
   serialization::MacroID getGlobalMacroID(ModuleFile &M, unsigned LocalID);
 
-  /// \brief Read the source location entry with index ID.
+  /// Read the source location entry with index ID.
   bool ReadSLocEntry(int ID) override;
 
-  /// \brief Retrieve the module import location and module name for the
+  /// Retrieve the module import location and module name for the
   /// given source manager entry ID.
   std::pair<SourceLocation, StringRef> getModuleImportLoc(int ID) override;
 
-  /// \brief Retrieve the global submodule ID given a module and its local ID
+  /// Retrieve the global submodule ID given a module and its local ID
   /// number.
   serialization::SubmoduleID 
   getGlobalSubmoduleID(ModuleFile &M, unsigned LocalID);
 
-  /// \brief Retrieve the submodule that corresponds to a global submodule ID.
+  /// Retrieve the submodule that corresponds to a global submodule ID.
   ///
   Module *getSubmodule(serialization::SubmoduleID GlobalID);
 
-  /// \brief Retrieve the module that corresponds to the given module ID.
+  /// Retrieve the module that corresponds to the given module ID.
   ///
   /// Note: overrides method in ExternalASTSource
   Module *getModule(unsigned ID) override;
 
-  /// \brief Retrieve the module file with a given local ID within the specified
+  /// Retrieve the module file with a given local ID within the specified
   /// ModuleFile.
   ModuleFile *getLocalModuleFile(ModuleFile &M, unsigned ID);
 
-  /// \brief Get an ID for the given module file.
+  /// Get an ID for the given module file.
   unsigned getModuleFileID(ModuleFile *M);
 
-  /// \brief Return a descriptor for the corresponding module.
+  /// Return a descriptor for the corresponding module.
   llvm::Optional<ASTSourceDescriptor> getSourceDescriptor(unsigned ID) override;
 
   ExtKind hasExternalDefinitions(const Decl *D) override;
 
-  /// \brief Retrieve a selector from the given module with its local ID
+  /// Retrieve a selector from the given module with its local ID
   /// number.
   Selector getLocalSelector(ModuleFile &M, unsigned LocalID);
 
@@ -2096,12 +2096,12 @@
     return getLocalSelector(M, Record[Idx++]);
   }
 
-  /// \brief Retrieve the global selector ID that corresponds to this
+  /// Retrieve the global selector ID that corresponds to this
   /// the local selector ID in a given module.
   serialization::SelectorID getGlobalSelectorID(ModuleFile &F,
                                                 unsigned LocalID) const;
 
-  /// \brief Read a declaration name.
+  /// Read a declaration name.
   DeclarationName ReadDeclarationName(ModuleFile &F,
                                       const RecordData &Record, unsigned &Idx);
   void ReadDeclarationNameLoc(ModuleFile &F,
@@ -2121,54 +2121,54 @@
                                                     const RecordData &Record,
                                                     unsigned &Idx);
 
-  /// \brief Read a template name.
+  /// Read a template name.
   TemplateName ReadTemplateName(ModuleFile &F, const RecordData &Record,
                                 unsigned &Idx);
 
-  /// \brief Read a template argument.
+  /// Read a template argument.
   TemplateArgument ReadTemplateArgument(ModuleFile &F, const RecordData &Record,
                                         unsigned &Idx,
                                         bool Canonicalize = false);
 
-  /// \brief Read a template parameter list.
+  /// Read a template parameter list.
   TemplateParameterList *ReadTemplateParameterList(ModuleFile &F,
                                                    const RecordData &Record,
                                                    unsigned &Idx);
 
-  /// \brief Read a template argument array.
+  /// Read a template argument array.
   void ReadTemplateArgumentList(SmallVectorImpl<TemplateArgument> &TemplArgs,
                                 ModuleFile &F, const RecordData &Record,
                                 unsigned &Idx, bool Canonicalize = false);
 
-  /// \brief Read a UnresolvedSet structure.
+  /// Read a UnresolvedSet structure.
   void ReadUnresolvedSet(ModuleFile &F, LazyASTUnresolvedSet &Set,
                          const RecordData &Record, unsigned &Idx);
 
-  /// \brief Read a C++ base specifier.
+  /// Read a C++ base specifier.
   CXXBaseSpecifier ReadCXXBaseSpecifier(ModuleFile &F,
                                         const RecordData &Record,unsigned &Idx);
 
-  /// \brief Read a CXXCtorInitializer array.
+  /// Read a CXXCtorInitializer array.
   CXXCtorInitializer **
   ReadCXXCtorInitializers(ModuleFile &F, const RecordData &Record,
                           unsigned &Idx);
 
-  /// \brief Read the contents of a CXXCtorInitializer array.
+  /// Read the contents of a CXXCtorInitializer array.
   CXXCtorInitializer **GetExternalCXXCtorInitializers(uint64_t Offset) override;
 
-  /// \brief Read a source location from raw form and return it in its
+  /// Read a source location from raw form and return it in its
   /// originating module file's source location space.
   SourceLocation ReadUntranslatedSourceLocation(uint32_t Raw) const {
     return SourceLocation::getFromRawEncoding((Raw >> 1) | (Raw << 31));
   }
 
-  /// \brief Read a source location from raw form.
+  /// Read a source location from raw form.
   SourceLocation ReadSourceLocation(ModuleFile &ModuleFile, uint32_t Raw) const {
     SourceLocation Loc = ReadUntranslatedSourceLocation(Raw);
     return TranslateSourceLocation(ModuleFile, Loc);
   }
 
-  /// \brief Translate a source location from another module file's source
+  /// Translate a source location from another module file's source
   /// location space into ours.
   SourceLocation TranslateSourceLocation(ModuleFile &ModuleFile,
                                          SourceLocation Loc) const {
@@ -2181,59 +2181,59 @@
     return Loc.getLocWithOffset(Remap);
   }
 
-  /// \brief Read a source location.
+  /// Read a source location.
   SourceLocation ReadSourceLocation(ModuleFile &ModuleFile,
                                     const RecordDataImpl &Record,
                                     unsigned &Idx) {
     return ReadSourceLocation(ModuleFile, Record[Idx++]);
   }
 
-  /// \brief Read a source range.
+  /// Read a source range.
   SourceRange ReadSourceRange(ModuleFile &F,
                               const RecordData &Record, unsigned &Idx);
 
-  /// \brief Read an integral value
+  /// Read an integral value
   llvm::APInt ReadAPInt(const RecordData &Record, unsigned &Idx);
 
-  /// \brief Read a signed integral value
+  /// Read a signed integral value
   llvm::APSInt ReadAPSInt(const RecordData &Record, unsigned &Idx);
 
-  /// \brief Read a floating-point value
+  /// Read a floating-point value
   llvm::APFloat ReadAPFloat(const RecordData &Record,
                             const llvm::fltSemantics &Sem, unsigned &Idx);
 
-  // \brief Read a string
+  // Read a string
   static std::string ReadString(const RecordData &Record, unsigned &Idx);
 
-  // \brief Skip a string
+  // Skip a string
   static void SkipString(const RecordData &Record, unsigned &Idx) {
     Idx += Record[Idx] + 1;
   }
 
-  // \brief Read a path
+  // Read a path
   std::string ReadPath(ModuleFile &F, const RecordData &Record, unsigned &Idx);
 
-  // \brief Skip a path
+  // Skip a path
   static void SkipPath(const RecordData &Record, unsigned &Idx) {
     SkipString(Record, Idx);
   }
 
-  /// \brief Read a version tuple.
+  /// Read a version tuple.
   static VersionTuple ReadVersionTuple(const RecordData &Record, unsigned &Idx);
 
   CXXTemporary *ReadCXXTemporary(ModuleFile &F, const RecordData &Record,
                                  unsigned &Idx);
 
-  /// \brief Reads attributes from the current stream position.
+  /// Reads attributes from the current stream position.
   void ReadAttributes(ASTRecordReader &Record, AttrVec &Attrs);
 
-  /// \brief Reads a statement.
+  /// Reads a statement.
   Stmt *ReadStmt(ModuleFile &F);
 
-  /// \brief Reads an expression.
+  /// Reads an expression.
   Expr *ReadExpr(ModuleFile &F);
 
-  /// \brief Reads a sub-statement operand during statement reading.
+  /// Reads a sub-statement operand during statement reading.
   Stmt *ReadSubStmt() {
     assert(ReadingKind == Read_Stmt &&
            "Should be called only during statement reading!");
@@ -2243,21 +2243,21 @@
     return StmtStack.pop_back_val();
   }
 
-  /// \brief Reads a sub-expression operand during statement reading.
+  /// Reads a sub-expression operand during statement reading.
   Expr *ReadSubExpr();
 
-  /// \brief Reads a token out of a record.
+  /// Reads a token out of a record.
   Token ReadToken(ModuleFile &M, const RecordDataImpl &Record, unsigned &Idx);
 
-  /// \brief Reads the macro record located at the given offset.
+  /// Reads the macro record located at the given offset.
   MacroInfo *ReadMacroRecord(ModuleFile &F, uint64_t Offset);
 
-  /// \brief Determine the global preprocessed entity ID that corresponds to
+  /// Determine the global preprocessed entity ID that corresponds to
   /// the given local ID within the given module.
   serialization::PreprocessedEntityID
   getGlobalPreprocessedEntityID(ModuleFile &M, unsigned LocalID) const;
 
-  /// \brief Add a macro to deserialize its macro directive history.
+  /// Add a macro to deserialize its macro directive history.
   ///
   /// \param II The name of the macro.
   /// \param M The module file.
@@ -2266,56 +2266,56 @@
   void addPendingMacro(IdentifierInfo *II, ModuleFile *M,
                        uint64_t MacroDirectivesOffset);
 
-  /// \brief Read the set of macros defined by this external macro source.
+  /// Read the set of macros defined by this external macro source.
   void ReadDefinedMacros() override;
 
-  /// \brief Update an out-of-date identifier.
+  /// Update an out-of-date identifier.
   void updateOutOfDateIdentifier(IdentifierInfo &II) override;
 
-  /// \brief Note that this identifier is up-to-date.
+  /// Note that this identifier is up-to-date.
   void markIdentifierUpToDate(IdentifierInfo *II);
 
-  /// \brief Load all external visible decls in the given DeclContext.
+  /// Load all external visible decls in the given DeclContext.
   void completeVisibleDeclsMap(const DeclContext *DC) override;
 
-  /// \brief Retrieve the AST context that this AST reader supplements.
+  /// Retrieve the AST context that this AST reader supplements.
   ASTContext &getContext() {
     assert(ContextObj && "requested AST context when not loading AST");
     return *ContextObj;
   }
 
-  // \brief Contains the IDs for declarations that were requested before we have
+  // Contains the IDs for declarations that were requested before we have
   // access to a Sema object.
   SmallVector<uint64_t, 16> PreloadedDeclIDs;
 
-  /// \brief Retrieve the semantic analysis object used to analyze the
+  /// Retrieve the semantic analysis object used to analyze the
   /// translation unit in which the precompiled header is being
   /// imported.
   Sema *getSema() { return SemaObj; }
 
-  /// \brief Get the identifier resolver used for name lookup / updates
+  /// Get the identifier resolver used for name lookup / updates
   /// in the translation unit scope. We have one of these even if we don't
   /// have a Sema object.
   IdentifierResolver &getIdResolver();
 
-  /// \brief Retrieve the identifier table associated with the
+  /// Retrieve the identifier table associated with the
   /// preprocessor.
   IdentifierTable &getIdentifierTable();
 
-  /// \brief Record that the given ID maps to the given switch-case
+  /// Record that the given ID maps to the given switch-case
   /// statement.
   void RecordSwitchCaseID(SwitchCase *SC, unsigned ID);
 
-  /// \brief Retrieve the switch-case statement with the given ID.
+  /// Retrieve the switch-case statement with the given ID.
   SwitchCase *getSwitchCaseWithID(unsigned ID);
 
   void ClearSwitchCaseIDs();
 
-  /// \brief Cursors for comments blocks.
+  /// Cursors for comments blocks.
   SmallVector<std::pair<llvm::BitstreamCursor,
                         serialization::ModuleFile *>, 8> CommentsCursors;
 
-  /// \brief Loads comments ranges.
+  /// Loads comments ranges.
   void ReadComments() override;
 
   /// Visit all the input files of the given module file.
@@ -2333,7 +2333,7 @@
   bool isProcessingUpdateRecords() { return ProcessingUpdateRecords; }
 };
 
-/// \brief An object for streaming information from a record.
+/// An object for streaming information from a record.
 class ASTRecordReader {
   using ModuleFile = serialization::ModuleFile;
 
@@ -2349,56 +2349,56 @@
   /// Construct an ASTRecordReader that uses the default encoding scheme.
   ASTRecordReader(ASTReader &Reader, ModuleFile &F) : Reader(&Reader), F(&F) {}
 
-  /// \brief Reads a record with id AbbrevID from Cursor, resetting the
+  /// Reads a record with id AbbrevID from Cursor, resetting the
   /// internal state.
   unsigned readRecord(llvm::BitstreamCursor &Cursor, unsigned AbbrevID);
 
-  /// \brief Is this a module file for a module (rather than a PCH or similar).
+  /// Is this a module file for a module (rather than a PCH or similar).
   bool isModule() const { return F->isModule(); }
 
-  /// \brief Retrieve the AST context that this AST reader supplements.
+  /// Retrieve the AST context that this AST reader supplements.
   ASTContext &getContext() { return Reader->getContext(); }
 
-  /// \brief The current position in this record.
+  /// The current position in this record.
   unsigned getIdx() const { return Idx; }
 
-  /// \brief The length of this record.
+  /// The length of this record.
   size_t size() const { return Record.size(); }
 
-  /// \brief An arbitrary index in this record.
+  /// An arbitrary index in this record.
   const uint64_t &operator[](size_t N) { return Record[N]; }
 
-  /// \brief The last element in this record.
+  /// The last element in this record.
   const uint64_t &back() const { return Record.back(); }
 
-  /// \brief Returns the current value in this record, and advances to the
+  /// Returns the current value in this record, and advances to the
   /// next value.
   const uint64_t &readInt() { return Record[Idx++]; }
 
-  /// \brief Returns the current value in this record, without advancing.
+  /// Returns the current value in this record, without advancing.
   const uint64_t &peekInt() { return Record[Idx]; }
 
-  /// \brief Skips the specified number of values.
+  /// Skips the specified number of values.
   void skipInts(unsigned N) { Idx += N; }
 
-  /// \brief Retrieve the global submodule ID its local ID number.
+  /// Retrieve the global submodule ID its local ID number.
   serialization::SubmoduleID
   getGlobalSubmoduleID(unsigned LocalID) {
     return Reader->getGlobalSubmoduleID(*F, LocalID);
   }
 
-  /// \brief Retrieve the submodule that corresponds to a global submodule ID.
+  /// Retrieve the submodule that corresponds to a global submodule ID.
   Module *getSubmodule(serialization::SubmoduleID GlobalID) {
     return Reader->getSubmodule(GlobalID);
   }
 
-  /// \brief Read the record that describes the lexical contents of a DC.
+  /// Read the record that describes the lexical contents of a DC.
   bool readLexicalDeclContextStorage(uint64_t Offset, DeclContext *DC) {
     return Reader->ReadLexicalDeclContextStorage(*F, F->DeclsCursor, Offset,
                                                  DC);
   }
 
-  /// \brief Read the record that describes the visible contents of a DC.
+  /// Read the record that describes the visible contents of a DC.
   bool readVisibleDeclContextStorage(uint64_t Offset,
                                      serialization::DeclID ID) {
     return Reader->ReadVisibleDeclContextStorage(*F, F->DeclsCursor, Offset,
@@ -2410,24 +2410,24 @@
     return Reader->readExceptionSpec(*F, ExceptionStorage, ESI, Record, Idx);
   }
 
-  /// \brief Get the global offset corresponding to a local offset.
+  /// Get the global offset corresponding to a local offset.
   uint64_t getGlobalBitOffset(uint32_t LocalOffset) {
     return Reader->getGlobalBitOffset(*F, LocalOffset);
   }
 
-  /// \brief Reads a statement.
+  /// Reads a statement.
   Stmt *readStmt() { return Reader->ReadStmt(*F); }
 
-  /// \brief Reads an expression.
+  /// Reads an expression.
   Expr *readExpr() { return Reader->ReadExpr(*F); }
 
-  /// \brief Reads a sub-statement operand during statement reading.
+  /// Reads a sub-statement operand during statement reading.
   Stmt *readSubStmt() { return Reader->ReadSubStmt(); }
 
-  /// \brief Reads a sub-expression operand during statement reading.
+  /// Reads a sub-expression operand during statement reading.
   Expr *readSubExpr() { return Reader->ReadSubExpr(); }
 
-  /// \brief Reads a declaration with the given local ID in the given module.
+  /// Reads a declaration with the given local ID in the given module.
   ///
   /// \returns The requested declaration, casted to the given return type.
   template<typename T>
@@ -2435,14 +2435,14 @@
     return cast_or_null<T>(Reader->GetLocalDecl(*F, LocalID));
   }
 
-  /// \brief Reads a TemplateArgumentLocInfo appropriate for the
+  /// Reads a TemplateArgumentLocInfo appropriate for the
   /// given TemplateArgument kind, advancing Idx.
   TemplateArgumentLocInfo
   getTemplateArgumentLocInfo(TemplateArgument::ArgKind Kind) {
     return Reader->GetTemplateArgumentLocInfo(*F, Kind, Record, Idx);
   }
 
-  /// \brief Reads a TemplateArgumentLoc, advancing Idx.
+  /// Reads a TemplateArgumentLoc, advancing Idx.
   TemplateArgumentLoc
   readTemplateArgumentLoc() {
     return Reader->ReadTemplateArgumentLoc(*F, Record, Idx);
@@ -2453,35 +2453,35 @@
     return Reader->ReadASTTemplateArgumentListInfo(*F, Record, Idx);
   }
 
-  /// \brief Reads a declarator info from the given record, advancing Idx.
+  /// Reads a declarator info from the given record, advancing Idx.
   TypeSourceInfo *getTypeSourceInfo() {
     return Reader->GetTypeSourceInfo(*F, Record, Idx);
   }
 
-  /// \brief Map a local type ID within a given AST file to a global type ID.
+  /// Map a local type ID within a given AST file to a global type ID.
   serialization::TypeID getGlobalTypeID(unsigned LocalID) const {
     return Reader->getGlobalTypeID(*F, LocalID);
   }
 
-  /// \brief Read a type from the current position in the record.
+  /// Read a type from the current position in the record.
   QualType readType() {
     return Reader->readType(*F, Record, Idx);
   }
 
-  /// \brief Reads a declaration ID from the given position in this record.
+  /// Reads a declaration ID from the given position in this record.
   ///
   /// \returns The declaration ID read from the record, adjusted to a global ID.
   serialization::DeclID readDeclID() {
     return Reader->ReadDeclID(*F, Record, Idx);
   }
 
-  /// \brief Reads a declaration from the given position in a record in the
+  /// Reads a declaration from the given position in a record in the
   /// given module, advancing Idx.
   Decl *readDecl() {
     return Reader->ReadDecl(*F, Record, Idx);
   }
 
-  /// \brief Reads a declaration from the given position in the record,
+  /// Reads a declaration from the given position in the record,
   /// advancing Idx.
   ///
   /// \returns The declaration read from this location, casted to the given
@@ -2495,12 +2495,12 @@
     return Reader->GetIdentifierInfo(*F, Record, Idx);
   }
 
-  /// \brief Read a selector from the Record, advancing Idx.
+  /// Read a selector from the Record, advancing Idx.
   Selector readSelector() {
     return Reader->ReadSelector(*F, Record, Idx);
   }
 
-  /// \brief Read a declaration name, advancing Idx.
+  /// Read a declaration name, advancing Idx.
   DeclarationName readDeclarationName() {
     return Reader->ReadDeclarationName(*F, Record, Idx);
   }
@@ -2523,39 +2523,39 @@
     return Reader->ReadNestedNameSpecifierLoc(*F, Record, Idx);
   }
 
-  /// \brief Read a template name, advancing Idx.
+  /// Read a template name, advancing Idx.
   TemplateName readTemplateName() {
     return Reader->ReadTemplateName(*F, Record, Idx);
   }
 
-  /// \brief Read a template argument, advancing Idx.
+  /// Read a template argument, advancing Idx.
   TemplateArgument readTemplateArgument(bool Canonicalize = false) {
     return Reader->ReadTemplateArgument(*F, Record, Idx, Canonicalize);
   }
 
-  /// \brief Read a template parameter list, advancing Idx.
+  /// Read a template parameter list, advancing Idx.
   TemplateParameterList *readTemplateParameterList() {
     return Reader->ReadTemplateParameterList(*F, Record, Idx);
   }
 
-  /// \brief Read a template argument array, advancing Idx.
+  /// Read a template argument array, advancing Idx.
   void readTemplateArgumentList(SmallVectorImpl<TemplateArgument> &TemplArgs,
                                 bool Canonicalize = false) {
     return Reader->ReadTemplateArgumentList(TemplArgs, *F, Record, Idx,
                                             Canonicalize);
   }
 
-  /// \brief Read a UnresolvedSet structure, advancing Idx.
+  /// Read a UnresolvedSet structure, advancing Idx.
   void readUnresolvedSet(LazyASTUnresolvedSet &Set) {
     return Reader->ReadUnresolvedSet(*F, Set, Record, Idx);
   }
 
-  /// \brief Read a C++ base specifier, advancing Idx.
+  /// Read a C++ base specifier, advancing Idx.
   CXXBaseSpecifier readCXXBaseSpecifier() {
     return Reader->ReadCXXBaseSpecifier(*F, Record, Idx);
   }
 
-  /// \brief Read a CXXCtorInitializer array, advancing Idx.
+  /// Read a CXXCtorInitializer array, advancing Idx.
   CXXCtorInitializer **readCXXCtorInitializers() {
     return Reader->ReadCXXCtorInitializers(*F, Record, Idx);
   }
@@ -2564,52 +2564,52 @@
     return Reader->ReadCXXTemporary(*F, Record, Idx);
   }
 
-  /// \brief Read a source location, advancing Idx.
+  /// Read a source location, advancing Idx.
   SourceLocation readSourceLocation() {
     return Reader->ReadSourceLocation(*F, Record, Idx);
   }
 
-  /// \brief Read a source range, advancing Idx.
+  /// Read a source range, advancing Idx.
   SourceRange readSourceRange() {
     return Reader->ReadSourceRange(*F, Record, Idx);
   }
 
-  /// \brief Read an integral value, advancing Idx.
+  /// Read an integral value, advancing Idx.
   llvm::APInt readAPInt() {
     return Reader->ReadAPInt(Record, Idx);
   }
 
-  /// \brief Read a signed integral value, advancing Idx.
+  /// Read a signed integral value, advancing Idx.
   llvm::APSInt readAPSInt() {
     return Reader->ReadAPSInt(Record, Idx);
   }
 
-  /// \brief Read a floating-point value, advancing Idx.
+  /// Read a floating-point value, advancing Idx.
   llvm::APFloat readAPFloat(const llvm::fltSemantics &Sem) {
     return Reader->ReadAPFloat(Record, Sem,Idx);
   }
 
-  /// \brief Read a string, advancing Idx.
+  /// Read a string, advancing Idx.
   std::string readString() {
     return Reader->ReadString(Record, Idx);
   }
 
-  /// \brief Read a path, advancing Idx.
+  /// Read a path, advancing Idx.
   std::string readPath() {
     return Reader->ReadPath(*F, Record, Idx);
   }
 
-  /// \brief Read a version tuple, advancing Idx.
+  /// Read a version tuple, advancing Idx.
   VersionTuple readVersionTuple() {
     return ASTReader::ReadVersionTuple(Record, Idx);
   }
 
-  /// \brief Reads attributes from the current stream position, advancing Idx.
+  /// Reads attributes from the current stream position, advancing Idx.
   void readAttributes(AttrVec &Attrs) {
     return Reader->ReadAttributes(*this, Attrs);
   }
 
-  /// \brief Reads a token out of a record, advancing Idx.
+  /// Reads a token out of a record, advancing Idx.
   Token readToken() {
     return Reader->ReadToken(*F, Record, Idx);
   }
@@ -2618,13 +2618,13 @@
     Reader->RecordSwitchCaseID(SC, ID);
   }
 
-  /// \brief Retrieve the switch-case statement with the given ID.
+  /// Retrieve the switch-case statement with the given ID.
   SwitchCase *getSwitchCaseWithID(unsigned ID) {
     return Reader->getSwitchCaseWithID(ID);
   }
 };
 
-/// \brief Helper class that saves the current stream position and
+/// Helper class that saves the current stream position and
 /// then restores it when destroyed.
 struct SavedStreamPosition {
   explicit SavedStreamPosition(llvm::BitstreamCursor &Cursor)
Index: cfe/trunk/include/clang/Serialization/ASTWriter.h
===================================================================
--- cfe/trunk/include/clang/Serialization/ASTWriter.h
+++ cfe/trunk/include/clang/Serialization/ASTWriter.h
@@ -95,7 +95,7 @@
 class TypeSourceInfo;
 class VersionTuple;
 
-/// \brief Writes an AST file containing the contents of a translation unit.
+/// Writes an AST file containing the contents of a translation unit.
 ///
 /// The ASTWriter class produces a bitstream containing the serialized
 /// representation of a given abstract syntax tree and its supporting
@@ -114,7 +114,7 @@
   using RecordDataRef = ArrayRef<uint64_t>;
 
 private:
-  /// \brief Map that provides the ID numbers of each type within the
+  /// Map that provides the ID numbers of each type within the
   /// output stream, plus those deserialized from a chained PCH.
   ///
   /// The ID numbers of types are consecutive (in order of discovery)
@@ -126,52 +126,52 @@
   using TypeIdxMap = llvm::DenseMap<QualType, serialization::TypeIdx,
                                     serialization::UnsafeQualTypeDenseMapInfo>;
 
-  /// \brief The bitstream writer used to emit this precompiled header.
+  /// The bitstream writer used to emit this precompiled header.
   llvm::BitstreamWriter &Stream;
 
   /// The buffer associated with the bitstream.
   const SmallVectorImpl<char> &Buffer;
 
-  /// \brief The PCM manager which manages memory buffers for pcm files.
+  /// The PCM manager which manages memory buffers for pcm files.
   MemoryBufferCache &PCMCache;
 
-  /// \brief The ASTContext we're writing.
+  /// The ASTContext we're writing.
   ASTContext *Context = nullptr;
 
-  /// \brief The preprocessor we're writing.
+  /// The preprocessor we're writing.
   Preprocessor *PP = nullptr;
 
-  /// \brief The reader of existing AST files, if we're chaining.
+  /// The reader of existing AST files, if we're chaining.
   ASTReader *Chain = nullptr;
 
-  /// \brief The module we're currently writing, if any.
+  /// The module we're currently writing, if any.
   Module *WritingModule = nullptr;
 
-  /// \brief The base directory for any relative paths we emit.
+  /// The base directory for any relative paths we emit.
   std::string BaseDirectory;
 
-  /// \brief Indicates whether timestamps should be written to the produced
+  /// Indicates whether timestamps should be written to the produced
   /// module file. This is the case for files implicitly written to the
   /// module cache, where we need the timestamps to determine if the module
   /// file is up to date, but not otherwise.
   bool IncludeTimestamps;
 
-  /// \brief Indicates when the AST writing is actively performing
+  /// Indicates when the AST writing is actively performing
   /// serialization, rather than just queueing updates.
   bool WritingAST = false;
 
-  /// \brief Indicates that we are done serializing the collection of decls
+  /// Indicates that we are done serializing the collection of decls
   /// and types to emit.
   bool DoneWritingDeclsAndTypes = false;
 
-  /// \brief Indicates that the AST contained compiler errors.
+  /// Indicates that the AST contained compiler errors.
   bool ASTHasCompilerErrors = false;
 
-  /// \brief Mapping from input file entries to the index into the
+  /// Mapping from input file entries to the index into the
   /// offset table where information about that input file is stored.
   llvm::DenseMap<const FileEntry *, uint32_t> InputFileIDs;
 
-  /// \brief Stores a declaration or a type to be written to the AST file.
+  /// Stores a declaration or a type to be written to the AST file.
   class DeclOrType {
   public:
     DeclOrType(Decl *D) : Stored(D), IsType(false) {}
@@ -195,16 +195,16 @@
     bool IsType;
   };
 
-  /// \brief The declarations and types to emit.
+  /// The declarations and types to emit.
   std::queue<DeclOrType> DeclTypesToEmit;
 
-  /// \brief The first ID number we can use for our own declarations.
+  /// The first ID number we can use for our own declarations.
   serialization::DeclID FirstDeclID = serialization::NUM_PREDEF_DECL_IDS;
 
-  /// \brief The decl ID that will be assigned to the next new decl.
+  /// The decl ID that will be assigned to the next new decl.
   serialization::DeclID NextDeclID = FirstDeclID;
 
-  /// \brief Map that provides the ID numbers of each declaration within
+  /// Map that provides the ID numbers of each declaration within
   /// the output stream, as well as those deserialized from a chained PCH.
   ///
   /// The ID numbers of declarations are consecutive (in order of
@@ -212,35 +212,35 @@
   /// unit, while 0 is reserved for NULL.
   llvm::DenseMap<const Decl *, serialization::DeclID> DeclIDs;
 
-  /// \brief Offset of each declaration in the bitstream, indexed by
+  /// Offset of each declaration in the bitstream, indexed by
   /// the declaration's ID.
   std::vector<serialization::DeclOffset> DeclOffsets;
 
-  /// \brief Sorted (by file offset) vector of pairs of file offset/DeclID.
+  /// Sorted (by file offset) vector of pairs of file offset/DeclID.
   using LocDeclIDsTy =
       SmallVector<std::pair<unsigned, serialization::DeclID>, 64>;
   struct DeclIDInFileInfo {
     LocDeclIDsTy DeclIDs;
 
-    /// \brief Set when the DeclIDs vectors from all files are joined, this
+    /// Set when the DeclIDs vectors from all files are joined, this
     /// indicates the index that this particular vector has in the global one.
     unsigned FirstDeclIndex;
   };
   using FileDeclIDsTy = llvm::DenseMap<FileID, DeclIDInFileInfo *>;
 
-  /// \brief Map from file SLocEntries to info about the file-level declarations
+  /// Map from file SLocEntries to info about the file-level declarations
   /// that it contains.
   FileDeclIDsTy FileDeclIDs;
 
   void associateDeclWithFile(const Decl *D, serialization::DeclID);
 
-  /// \brief The first ID number we can use for our own types.
+  /// The first ID number we can use for our own types.
   serialization::TypeID FirstTypeID = serialization::NUM_PREDEF_TYPE_IDS;
 
-  /// \brief The type ID that will be assigned to the next new type.
+  /// The type ID that will be assigned to the next new type.
   serialization::TypeID NextTypeID = FirstTypeID;
 
-  /// \brief Map that provides the ID numbers of each type within the
+  /// Map that provides the ID numbers of each type within the
   /// output stream, plus those deserialized from a chained PCH.
   ///
   /// The ID numbers of types are consecutive (in order of discovery)
@@ -251,17 +251,17 @@
   /// Keys in the map never have const/volatile qualifiers.
   TypeIdxMap TypeIdxs;
 
-  /// \brief Offset of each type in the bitstream, indexed by
+  /// Offset of each type in the bitstream, indexed by
   /// the type's ID.
   std::vector<uint32_t> TypeOffsets;
 
-  /// \brief The first ID number we can use for our own identifiers.
+  /// The first ID number we can use for our own identifiers.
   serialization::IdentID FirstIdentID = serialization::NUM_PREDEF_IDENT_IDS;
 
-  /// \brief The identifier ID that will be assigned to the next new identifier.
+  /// The identifier ID that will be assigned to the next new identifier.
   serialization::IdentID NextIdentID = FirstIdentID;
 
-  /// \brief Map that provides the ID numbers of each identifier in
+  /// Map that provides the ID numbers of each identifier in
   /// the output stream.
   ///
   /// The ID numbers for identifiers are consecutive (in order of
@@ -269,13 +269,13 @@
   /// IdentifierInfo.
   llvm::MapVector<const IdentifierInfo *, serialization::IdentID> IdentifierIDs;
 
-  /// \brief The first ID number we can use for our own macros.
+  /// The first ID number we can use for our own macros.
   serialization::MacroID FirstMacroID = serialization::NUM_PREDEF_MACRO_IDS;
 
-  /// \brief The identifier ID that will be assigned to the next new identifier.
+  /// The identifier ID that will be assigned to the next new identifier.
   serialization::MacroID NextMacroID = FirstMacroID;
 
-  /// \brief Map that provides the ID numbers of each macro.
+  /// Map that provides the ID numbers of each macro.
   llvm::DenseMap<MacroInfo *, serialization::MacroID> MacroIDs;
 
   struct MacroInfoToEmitData {
@@ -284,7 +284,7 @@
     serialization::MacroID ID;
   };
 
-  /// \brief The macro infos to emit.
+  /// The macro infos to emit.
   std::vector<MacroInfoToEmitData> MacroInfosToEmit;
 
   llvm::DenseMap<const IdentifierInfo *, uint64_t> IdentMacroDirectivesOffsetMap;
@@ -292,46 +292,46 @@
   /// @name FlushStmt Caches
   /// @{
 
-  /// \brief Set of parent Stmts for the currently serializing sub-stmt.
+  /// Set of parent Stmts for the currently serializing sub-stmt.
   llvm::DenseSet<Stmt *> ParentStmts;
 
-  /// \brief Offsets of sub-stmts already serialized. The offset points
+  /// Offsets of sub-stmts already serialized. The offset points
   /// just after the stmt record.
   llvm::DenseMap<Stmt *, uint64_t> SubStmtEntries;
 
   /// @}
 
-  /// \brief Offsets of each of the identifier IDs into the identifier
+  /// Offsets of each of the identifier IDs into the identifier
   /// table.
   std::vector<uint32_t> IdentifierOffsets;
 
-  /// \brief The first ID number we can use for our own submodules.
+  /// The first ID number we can use for our own submodules.
   serialization::SubmoduleID FirstSubmoduleID =
       serialization::NUM_PREDEF_SUBMODULE_IDS;
 
-  /// \brief The submodule ID that will be assigned to the next new submodule.
+  /// The submodule ID that will be assigned to the next new submodule.
   serialization::SubmoduleID NextSubmoduleID = FirstSubmoduleID;
 
-  /// \brief The first ID number we can use for our own selectors.
+  /// The first ID number we can use for our own selectors.
   serialization::SelectorID FirstSelectorID =
       serialization::NUM_PREDEF_SELECTOR_IDS;
 
-  /// \brief The selector ID that will be assigned to the next new selector.
+  /// The selector ID that will be assigned to the next new selector.
   serialization::SelectorID NextSelectorID = FirstSelectorID;
 
-  /// \brief Map that provides the ID numbers of each Selector.
+  /// Map that provides the ID numbers of each Selector.
   llvm::MapVector<Selector, serialization::SelectorID> SelectorIDs;
 
-  /// \brief Offset of each selector within the method pool/selector
+  /// Offset of each selector within the method pool/selector
   /// table, indexed by the Selector ID (-1).
   std::vector<uint32_t> SelectorOffsets;
 
-  /// \brief Mapping from macro definitions (as they occur in the preprocessing
+  /// Mapping from macro definitions (as they occur in the preprocessing
   /// record) to the macro IDs.
   llvm::DenseMap<const MacroDefinitionRecord *,
                  serialization::PreprocessedEntityID> MacroDefinitions;
 
-  /// \brief Cache of indices of anonymous declarations within their lexical
+  /// Cache of indices of anonymous declarations within their lexical
   /// contexts.
   llvm::DenseMap<const Decl *, unsigned> AnonymousDeclarationNumbers;
 
@@ -376,17 +376,17 @@
   using UpdateRecord = SmallVector<DeclUpdate, 1>;
   using DeclUpdateMap = llvm::MapVector<const Decl *, UpdateRecord>;
 
-  /// \brief Mapping from declarations that came from a chained PCH to the
+  /// Mapping from declarations that came from a chained PCH to the
   /// record containing modifications to them.
   DeclUpdateMap DeclUpdates;
 
   using FirstLatestDeclMap = llvm::DenseMap<Decl *, Decl *>;
 
-  /// \brief Map of first declarations from a chained PCH that point to the
+  /// Map of first declarations from a chained PCH that point to the
   /// most recent declarations in another PCH.
   FirstLatestDeclMap FirstLatestDecls;
 
-  /// \brief Declarations encountered that might be external
+  /// Declarations encountered that might be external
   /// definitions.
   ///
   /// We keep track of external definitions and other 'interesting' declarations
@@ -400,7 +400,7 @@
   SmallVector<uint64_t, 16> EagerlyDeserializedDecls;
   SmallVector<uint64_t, 16> ModularCodegenDecls;
 
-  /// \brief DeclContexts that have received extensions since their serialized
+  /// DeclContexts that have received extensions since their serialized
   /// form.
   ///
   /// For namespaces, when we're chaining and encountering a namespace, we check
@@ -409,52 +409,52 @@
   /// it.
   llvm::SmallSetVector<const DeclContext *, 16> UpdatedDeclContexts;
 
-  /// \brief Keeps track of declarations that we must emit, even though we're
+  /// Keeps track of declarations that we must emit, even though we're
   /// not guaranteed to be able to find them by walking the AST starting at the
   /// translation unit.
   SmallVector<const Decl *, 16> DeclsToEmitEvenIfUnreferenced;
 
-  /// \brief The set of Objective-C class that have categories we
+  /// The set of Objective-C class that have categories we
   /// should serialize.
   llvm::SetVector<ObjCInterfaceDecl *> ObjCClassesWithCategories;
                     
-  /// \brief The set of declarations that may have redeclaration chains that
+  /// The set of declarations that may have redeclaration chains that
   /// need to be serialized.
   llvm::SmallVector<const Decl *, 16> Redeclarations;
 
-  /// \brief A cache of the first local declaration for "interesting"
+  /// A cache of the first local declaration for "interesting"
   /// redeclaration chains.
   llvm::DenseMap<const Decl *, const Decl *> FirstLocalDeclCache;
                                       
-  /// \brief Mapping from SwitchCase statements to IDs.
+  /// Mapping from SwitchCase statements to IDs.
   llvm::DenseMap<SwitchCase *, unsigned> SwitchCaseIDs;
 
-  /// \brief The number of statements written to the AST file.
+  /// The number of statements written to the AST file.
   unsigned NumStatements = 0;
 
-  /// \brief The number of macros written to the AST file.
+  /// The number of macros written to the AST file.
   unsigned NumMacros = 0;
 
-  /// \brief The number of lexical declcontexts written to the AST
+  /// The number of lexical declcontexts written to the AST
   /// file.
   unsigned NumLexicalDeclContexts = 0;
 
-  /// \brief The number of visible declcontexts written to the AST
+  /// The number of visible declcontexts written to the AST
   /// file.
   unsigned NumVisibleDeclContexts = 0;
 
-  /// \brief A mapping from each known submodule to its ID number, which will
+  /// A mapping from each known submodule to its ID number, which will
   /// be a positive integer.
   llvm::DenseMap<Module *, unsigned> SubmoduleIDs;
 
-  /// \brief A list of the module file extension writers.
+  /// A list of the module file extension writers.
   std::vector<std::unique_ptr<ModuleFileExtensionWriter>>
     ModuleFileExtensionWriters;
 
-  /// \brief Retrieve or create a submodule ID for this module.
+  /// Retrieve or create a submodule ID for this module.
   unsigned getSubmoduleID(Module *Mod);
 
-  /// \brief Write the given subexpression to the bitstream.
+  /// Write the given subexpression to the bitstream.
   void WriteSubStmt(Stmt *S);
 
   void WriteBlockInfoBlock();
@@ -540,7 +540,7 @@
                                 Module *WritingModule);
 
 public:
-  /// \brief Create a new precompiled header writer that outputs to
+  /// Create a new precompiled header writer that outputs to
   /// the given bitstream.
   ASTWriter(llvm::BitstreamWriter &Stream, SmallVectorImpl<char> &Buffer,
             MemoryBufferCache &PCMCache,
@@ -550,12 +550,12 @@
 
   const LangOptions &getLangOpts() const;
 
-  /// \brief Get a timestamp for output into the AST file. The actual timestamp
+  /// Get a timestamp for output into the AST file. The actual timestamp
   /// of the specified file may be ignored if we have been instructed to not
   /// include timestamps in the output file.
   time_t getTimestampForOutput(const FileEntry *E) const;
 
-  /// \brief Write a precompiled header for the given semantic analysis.
+  /// Write a precompiled header for the given semantic analysis.
   ///
   /// \param SemaRef a reference to the semantic analysis object that processed
   /// the AST to be written into the precompiled header.
@@ -573,46 +573,46 @@
                             Module *WritingModule, StringRef isysroot,
                             bool hasErrors = false);
 
-  /// \brief Emit a token.
+  /// Emit a token.
   void AddToken(const Token &Tok, RecordDataImpl &Record);
 
-  /// \brief Emit a source location.
+  /// Emit a source location.
   void AddSourceLocation(SourceLocation Loc, RecordDataImpl &Record);
 
-  /// \brief Emit a source range.
+  /// Emit a source range.
   void AddSourceRange(SourceRange Range, RecordDataImpl &Record);
 
-  /// \brief Emit a reference to an identifier.
+  /// Emit a reference to an identifier.
   void AddIdentifierRef(const IdentifierInfo *II, RecordDataImpl &Record);
 
-  /// \brief Get the unique number used to refer to the given selector.
+  /// Get the unique number used to refer to the given selector.
   serialization::SelectorID getSelectorRef(Selector Sel);
 
-  /// \brief Get the unique number used to refer to the given identifier.
+  /// Get the unique number used to refer to the given identifier.
   serialization::IdentID getIdentifierRef(const IdentifierInfo *II);
 
-  /// \brief Get the unique number used to refer to the given macro.
+  /// Get the unique number used to refer to the given macro.
   serialization::MacroID getMacroRef(MacroInfo *MI, const IdentifierInfo *Name);
 
-  /// \brief Determine the ID of an already-emitted macro.
+  /// Determine the ID of an already-emitted macro.
   serialization::MacroID getMacroID(MacroInfo *MI);
 
   uint64_t getMacroDirectivesOffset(const IdentifierInfo *Name);
 
-  /// \brief Emit a reference to a type.
+  /// Emit a reference to a type.
   void AddTypeRef(QualType T, RecordDataImpl &Record);
 
-  /// \brief Force a type to be emitted and get its ID.
+  /// Force a type to be emitted and get its ID.
   serialization::TypeID GetOrCreateTypeID(QualType T);
 
-  /// \brief Determine the type ID of an already-emitted type.
+  /// Determine the type ID of an already-emitted type.
   serialization::TypeID getTypeID(QualType T) const;
 
-  /// \brief Find the first local declaration of a given local redeclarable
+  /// Find the first local declaration of a given local redeclarable
   /// decl.
   const Decl *getFirstLocalDecl(const Decl *D);
 
-  /// \brief Is this a local declaration (that is, one that will be written to
+  /// Is this a local declaration (that is, one that will be written to
   /// our AST file)? This is the case for declarations that are neither imported
   /// from another AST file nor predefined.
   bool IsLocalDecl(const Decl *D) {
@@ -623,52 +623,52 @@
             I->second >= serialization::NUM_PREDEF_DECL_IDS);
   };
 
-  /// \brief Emit a reference to a declaration.
+  /// Emit a reference to a declaration.
   void AddDeclRef(const Decl *D, RecordDataImpl &Record);
 
-  /// \brief Force a declaration to be emitted and get its ID.
+  /// Force a declaration to be emitted and get its ID.
   serialization::DeclID GetDeclRef(const Decl *D);
 
-  /// \brief Determine the declaration ID of an already-emitted
+  /// Determine the declaration ID of an already-emitted
   /// declaration.
   serialization::DeclID getDeclID(const Decl *D);
 
   unsigned getAnonymousDeclarationNumber(const NamedDecl *D);
 
-  /// \brief Add a string to the given record.
+  /// Add a string to the given record.
   void AddString(StringRef Str, RecordDataImpl &Record);
 
-  /// \brief Convert a path from this build process into one that is appropriate
+  /// Convert a path from this build process into one that is appropriate
   /// for emission in the module file.
   bool PreparePathForOutput(SmallVectorImpl<char> &Path);
 
-  /// \brief Add a path to the given record.
+  /// Add a path to the given record.
   void AddPath(StringRef Path, RecordDataImpl &Record);
 
-  /// \brief Emit the current record with the given path as a blob.
+  /// Emit the current record with the given path as a blob.
   void EmitRecordWithPath(unsigned Abbrev, RecordDataRef Record,
                           StringRef Path);
 
-  /// \brief Add a version tuple to the given record
+  /// Add a version tuple to the given record
   void AddVersionTuple(const VersionTuple &Version, RecordDataImpl &Record);
 
-  /// \brief Retrieve or create a submodule ID for this module, or return 0 if
+  /// Retrieve or create a submodule ID for this module, or return 0 if
   /// the submodule is neither local (a submodle of the currently-written module)
   /// nor from an imported module.
   unsigned getLocalOrImportedSubmoduleID(Module *Mod);
 
-  /// \brief Note that the identifier II occurs at the given offset
+  /// Note that the identifier II occurs at the given offset
   /// within the identifier table.
   void SetIdentifierOffset(const IdentifierInfo *II, uint32_t Offset);
 
-  /// \brief Note that the selector Sel occurs at the given offset
+  /// Note that the selector Sel occurs at the given offset
   /// within the method pool/selector table.
   void SetSelectorOffset(Selector Sel, uint32_t Offset);
 
-  /// \brief Record an ID for the given switch-case statement.
+  /// Record an ID for the given switch-case statement.
   unsigned RecordSwitchCaseID(SwitchCase *S);
 
-  /// \brief Retrieve the ID for the given switch-case statement.
+  /// Retrieve the ID for the given switch-case statement.
   unsigned getSwitchCaseID(SwitchCase *S);
 
   void ClearSwitchCaseIDs();
@@ -743,21 +743,21 @@
                               const RecordDecl *Record) override;
 };
 
-/// \brief An object for streaming information to a record.
+/// An object for streaming information to a record.
 class ASTRecordWriter {
   ASTWriter *Writer;
   ASTWriter::RecordDataImpl *Record;
 
-  /// \brief Statements that we've encountered while serializing a
+  /// Statements that we've encountered while serializing a
   /// declaration or type.
   SmallVector<Stmt *, 16> StmtsToEmit;
 
-  /// \brief Indices of record elements that describe offsets within the
+  /// Indices of record elements that describe offsets within the
   /// bitcode. These will be converted to offsets relative to the current
   /// record when emitted.
   SmallVector<unsigned, 8> OffsetIndices;
 
-  /// \brief Flush all of the statements and expressions that have
+  /// Flush all of the statements and expressions that have
   /// been added to the queue via AddStmt().
   void FlushStmts();
   void FlushSubStmts();
@@ -787,10 +787,10 @@
   ASTRecordWriter(const ASTRecordWriter &) = delete;
   ASTRecordWriter &operator=(const ASTRecordWriter &) = delete;
 
-  /// \brief Extract the underlying record storage.
+  /// Extract the underlying record storage.
   ASTWriter::RecordDataImpl &getRecordData() const { return *Record; }
 
-  /// \brief Minimal vector-like interface.
+  /// Minimal vector-like interface.
   /// @{
   void push_back(uint64_t N) { Record->push_back(N); }
   template<typename InputIterator>
@@ -802,7 +802,7 @@
   uint64_t &operator[](size_t N) { return (*Record)[N]; }
   /// @}
 
-  /// \brief Emit the record to the stream, followed by its substatements, and
+  /// Emit the record to the stream, followed by its substatements, and
   /// return its offset.
   // FIXME: Allow record producers to suggest Abbrevs.
   uint64_t Emit(unsigned Code, unsigned Abbrev = 0) {
@@ -813,7 +813,7 @@
     return Offset;
   }
 
-  /// \brief Emit the record to the stream, preceded by its substatements.
+  /// Emit the record to the stream, preceded by its substatements.
   uint64_t EmitStmt(unsigned Code, unsigned Abbrev = 0) {
     FlushSubStmts();
     PrepareToEmit(Writer->Stream.GetCurrentBitNo());
@@ -821,14 +821,14 @@
     return Writer->Stream.GetCurrentBitNo();
   }
 
-  /// \brief Add a bit offset into the record. This will be converted into an
+  /// Add a bit offset into the record. This will be converted into an
   /// offset relative to the current record when emitted.
   void AddOffset(uint64_t BitOffset) {
     OffsetIndices.push_back(Record->size());
     Record->push_back(BitOffset);
   }
 
-  /// \brief Add the given statement or expression to the queue of
+  /// Add the given statement or expression to the queue of
   /// statements to emit.
   ///
   /// This routine should be used when emitting types and declarations
@@ -839,74 +839,74 @@
     StmtsToEmit.push_back(S);
   }
 
-  /// \brief Add a definition for the given function to the queue of statements
+  /// Add a definition for the given function to the queue of statements
   /// to emit.
   void AddFunctionDefinition(const FunctionDecl *FD);
 
-  /// \brief Emit a source location.
+  /// Emit a source location.
   void AddSourceLocation(SourceLocation Loc) {
     return Writer->AddSourceLocation(Loc, *Record);
   }
 
-  /// \brief Emit a source range.
+  /// Emit a source range.
   void AddSourceRange(SourceRange Range) {
     return Writer->AddSourceRange(Range, *Record);
   }
 
-  /// \brief Emit an integral value.
+  /// Emit an integral value.
   void AddAPInt(const llvm::APInt &Value);
 
-  /// \brief Emit a signed integral value.
+  /// Emit a signed integral value.
   void AddAPSInt(const llvm::APSInt &Value);
 
-  /// \brief Emit a floating-point value.
+  /// Emit a floating-point value.
   void AddAPFloat(const llvm::APFloat &Value);
 
-  /// \brief Emit a reference to an identifier.
+  /// Emit a reference to an identifier.
   void AddIdentifierRef(const IdentifierInfo *II) {
     return Writer->AddIdentifierRef(II, *Record);
   }
 
-  /// \brief Emit a Selector (which is a smart pointer reference).
+  /// Emit a Selector (which is a smart pointer reference).
   void AddSelectorRef(Selector S);
 
-  /// \brief Emit a CXXTemporary.
+  /// Emit a CXXTemporary.
   void AddCXXTemporary(const CXXTemporary *Temp);
 
-  /// \brief Emit a C++ base specifier.
+  /// Emit a C++ base specifier.
   void AddCXXBaseSpecifier(const CXXBaseSpecifier &Base);
 
-  /// \brief Emit a set of C++ base specifiers.
+  /// Emit a set of C++ base specifiers.
   void AddCXXBaseSpecifiers(ArrayRef<CXXBaseSpecifier> Bases);
 
-  /// \brief Emit a reference to a type.
+  /// Emit a reference to a type.
   void AddTypeRef(QualType T) {
     return Writer->AddTypeRef(T, *Record);
   }
 
-  /// \brief Emits a reference to a declarator info.
+  /// Emits a reference to a declarator info.
   void AddTypeSourceInfo(TypeSourceInfo *TInfo);
 
-  /// \brief Emits a type with source-location information.
+  /// Emits a type with source-location information.
   void AddTypeLoc(TypeLoc TL);
 
-  /// \brief Emits a template argument location info.
+  /// Emits a template argument location info.
   void AddTemplateArgumentLocInfo(TemplateArgument::ArgKind Kind,
                                   const TemplateArgumentLocInfo &Arg);
 
-  /// \brief Emits a template argument location.
+  /// Emits a template argument location.
   void AddTemplateArgumentLoc(const TemplateArgumentLoc &Arg);
 
-  /// \brief Emits an AST template argument list info.
+  /// Emits an AST template argument list info.
   void AddASTTemplateArgumentListInfo(
       const ASTTemplateArgumentListInfo *ASTTemplArgList);
 
-  /// \brief Emit a reference to a declaration.
+  /// Emit a reference to a declaration.
   void AddDeclRef(const Decl *D) {
     return Writer->AddDeclRef(D, *Record);
   }
 
-  /// \brief Emit a declaration name.
+  /// Emit a declaration name.
   void AddDeclarationName(DeclarationName Name);
 
   void AddDeclarationNameLoc(const DeclarationNameLoc &DNLoc,
@@ -915,52 +915,52 @@
 
   void AddQualifierInfo(const QualifierInfo &Info);
 
-  /// \brief Emit a nested name specifier.
+  /// Emit a nested name specifier.
   void AddNestedNameSpecifier(NestedNameSpecifier *NNS);
 
-  /// \brief Emit a nested name specifier with source-location information.
+  /// Emit a nested name specifier with source-location information.
   void AddNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS);
 
-  /// \brief Emit a template name.
+  /// Emit a template name.
   void AddTemplateName(TemplateName Name);
 
-  /// \brief Emit a template argument.
+  /// Emit a template argument.
   void AddTemplateArgument(const TemplateArgument &Arg);
 
-  /// \brief Emit a template parameter list.
+  /// Emit a template parameter list.
   void AddTemplateParameterList(const TemplateParameterList *TemplateParams);
 
-  /// \brief Emit a template argument list.
+  /// Emit a template argument list.
   void AddTemplateArgumentList(const TemplateArgumentList *TemplateArgs);
 
-  /// \brief Emit a UnresolvedSet structure.
+  /// Emit a UnresolvedSet structure.
   void AddUnresolvedSet(const ASTUnresolvedSet &Set);
 
-  /// \brief Emit a CXXCtorInitializer array.
+  /// Emit a CXXCtorInitializer array.
   void AddCXXCtorInitializers(ArrayRef<CXXCtorInitializer *> CtorInits);
 
   void AddCXXDefinitionData(const CXXRecordDecl *D);
 
-  /// \brief Emit a string.
+  /// Emit a string.
   void AddString(StringRef Str) {
     return Writer->AddString(Str, *Record);
   }
 
-  /// \brief Emit a path.
+  /// Emit a path.
   void AddPath(StringRef Path) {
     return Writer->AddPath(Path, *Record);
   }
 
-  /// \brief Emit a version tuple.
+  /// Emit a version tuple.
   void AddVersionTuple(const VersionTuple &Version) {
     return Writer->AddVersionTuple(Version, *Record);
   }
 
-  /// \brief Emit a list of attributes.
+  /// Emit a list of attributes.
   void AddAttributes(ArrayRef<const Attr*> Attrs);
 };
 
-/// \brief AST and semantic-analysis consumer that generates a
+/// AST and semantic-analysis consumer that generates a
 /// precompiled header from the parsed source code.
 class PCHGenerator : public SemaConsumer {
   const Preprocessor &PP;
Index: cfe/trunk/include/clang/Serialization/ContinuousRangeMap.h
===================================================================
--- cfe/trunk/include/clang/Serialization/ContinuousRangeMap.h
+++ cfe/trunk/include/clang/Serialization/ContinuousRangeMap.h
@@ -24,7 +24,7 @@
 
 namespace clang {
 
-/// \brief A map from continuous integer ranges to some value, with a very
+/// A map from continuous integer ranges to some value, with a very
 /// specialized interface.
 ///
 /// CRM maps from integer ranges to values. The ranges are continuous, i.e.
@@ -107,7 +107,7 @@
   reference back() { return Rep.back(); }
   const_reference back() const { return Rep.back(); }
   
-  /// \brief An object that helps properly build a continuous range map
+  /// An object that helps properly build a continuous range map
   /// from a set of values.
   class Builder {
     ContinuousRangeMap &Self;
Index: cfe/trunk/include/clang/Serialization/GlobalModuleIndex.h
===================================================================
--- cfe/trunk/include/clang/Serialization/GlobalModuleIndex.h
+++ cfe/trunk/include/clang/Serialization/GlobalModuleIndex.h
@@ -47,7 +47,7 @@
 using llvm::StringRef;
 using serialization::ModuleFile;
 
-/// \brief A global index for a set of module files, providing information about
+/// A global index for a set of module files, providing information about
 /// the identifiers within those module files.
 ///
 /// The global index is an aid for name lookup into modules, offering a central
@@ -59,64 +59,64 @@
 /// imported, and can be queried to determine which modules the current
 /// translation could or should load to fix a problem.
 class GlobalModuleIndex {
-  /// \brief Buffer containing the index file, which is lazily accessed so long
+  /// Buffer containing the index file, which is lazily accessed so long
   /// as the global module index is live.
   std::unique_ptr<llvm::MemoryBuffer> Buffer;
 
-  /// \brief The hash table.
+  /// The hash table.
   ///
   /// This pointer actually points to a IdentifierIndexTable object,
   /// but that type is only accessible within the implementation of
   /// GlobalModuleIndex.
   void *IdentifierIndex;
 
-  /// \brief Information about a given module file.
+  /// Information about a given module file.
   struct ModuleInfo {
     ModuleInfo() : File(), Size(), ModTime() { }
 
-    /// \brief The module file, once it has been resolved.
+    /// The module file, once it has been resolved.
     ModuleFile *File;
 
-    /// \brief The module file name.
+    /// The module file name.
     std::string FileName;
 
-    /// \brief Size of the module file at the time the global index was built.
+    /// Size of the module file at the time the global index was built.
     off_t Size;
 
-    /// \brief Modification time of the module file at the time the global
+    /// Modification time of the module file at the time the global
     /// index was built.
     time_t ModTime;
 
-    /// \brief The module IDs on which this module directly depends.
+    /// The module IDs on which this module directly depends.
     /// FIXME: We don't really need a vector here.
     llvm::SmallVector<unsigned, 4> Dependencies;
   };
 
-  /// \brief A mapping from module IDs to information about each module.
+  /// A mapping from module IDs to information about each module.
   ///
   /// This vector may have gaps, if module files have been removed or have
   /// been updated since the index was built. A gap is indicated by an empty
   /// file name.
   llvm::SmallVector<ModuleInfo, 16> Modules;
 
-  /// \brief Lazily-populated mapping from module files to their
+  /// Lazily-populated mapping from module files to their
   /// corresponding index into the \c Modules vector.
   llvm::DenseMap<ModuleFile *, unsigned> ModulesByFile;
 
-  /// \brief The set of modules that have not yet been resolved.
+  /// The set of modules that have not yet been resolved.
   ///
   /// The string is just the name of the module itself, which maps to the
   /// module ID.
   llvm::StringMap<unsigned> UnresolvedModules;
 
-  /// \brief The number of identifier lookups we performed.
+  /// The number of identifier lookups we performed.
   unsigned NumIdentifierLookups;
 
-  /// \brief The number of identifier lookup hits, where we recognize the
+  /// The number of identifier lookup hits, where we recognize the
   /// identifier.
   unsigned NumIdentifierLookupHits;
   
-  /// \brief Internal constructor. Use \c readIndex() to read an index.
+  /// Internal constructor. Use \c readIndex() to read an index.
   explicit GlobalModuleIndex(std::unique_ptr<llvm::MemoryBuffer> Buffer,
                              llvm::BitstreamCursor Cursor);
 
@@ -126,20 +126,20 @@
 public:
   ~GlobalModuleIndex();
 
-  /// \brief An error code returned when trying to read an index.
+  /// An error code returned when trying to read an index.
   enum ErrorCode {
-    /// \brief No error occurred.
+    /// No error occurred.
     EC_None,
-    /// \brief No index was found.
+    /// No index was found.
     EC_NotFound,
-    /// \brief Some other process is currently building the index; it is not
+    /// Some other process is currently building the index; it is not
     /// available yet.
     EC_Building,
-    /// \brief There was an unspecified I/O error reading or writing the index.
+    /// There was an unspecified I/O error reading or writing the index.
     EC_IOError
   };
 
-  /// \brief Read a global index file for the given directory.
+  /// Read a global index file for the given directory.
   ///
   /// \param Path The path to the specific module cache where the module files
   /// for the intended configuration reside.
@@ -149,26 +149,26 @@
   static std::pair<GlobalModuleIndex *, ErrorCode>
   readIndex(StringRef Path);
 
-  /// \brief Returns an iterator for identifiers stored in the index table.
+  /// Returns an iterator for identifiers stored in the index table.
   ///
   /// The caller accepts ownership of the returned object.
   IdentifierIterator *createIdentifierIterator() const;
 
-  /// \brief Retrieve the set of modules that have up-to-date indexes.
+  /// Retrieve the set of modules that have up-to-date indexes.
   ///
   /// \param ModuleFiles Will be populated with the set of module files that
   /// have been indexed.
   void getKnownModules(SmallVectorImpl<ModuleFile *> &ModuleFiles);
 
-  /// \brief Retrieve the set of module files on which the given module file
+  /// Retrieve the set of module files on which the given module file
   /// directly depends.
   void getModuleDependencies(ModuleFile *File,
                              SmallVectorImpl<ModuleFile *> &Dependencies);
 
-  /// \brief A set of module files in which we found a result.
+  /// A set of module files in which we found a result.
   typedef llvm::SmallPtrSet<ModuleFile *, 4> HitSet;
   
-  /// \brief Look for all of the module files with information about the given
+  /// Look for all of the module files with information about the given
   /// identifier, e.g., a global function, variable, or type with that name.
   ///
   /// \param Name The identifier to look for.
@@ -179,19 +179,19 @@
   /// \returns true if the identifier is known to the index, false otherwise.
   bool lookupIdentifier(StringRef Name, HitSet &Hits);
 
-  /// \brief Note that the given module file has been loaded.
+  /// Note that the given module file has been loaded.
   ///
   /// \returns false if the global module index has information about this
   /// module file, and true otherwise.
   bool loadedModuleFile(ModuleFile *File);
 
-  /// \brief Print statistics to standard error.
+  /// Print statistics to standard error.
   void printStats();
 
-  /// \brief Print debugging view to standard error.
+  /// Print debugging view to standard error.
   void dump();
 
-  /// \brief Write a global index into the given
+  /// Write a global index into the given
   ///
   /// \param FileMgr The file manager to use to load module files.
   /// \param PCHContainerRdr - The PCHContainerOperations to use for loading and
Index: cfe/trunk/include/clang/Serialization/Module.h
===================================================================
--- cfe/trunk/include/clang/Serialization/Module.h
+++ cfe/trunk/include/clang/Serialization/Module.h
@@ -39,7 +39,7 @@
 
 namespace serialization {
 
-/// \brief Specifies the kind of module that has been loaded.
+/// Specifies the kind of module that has been loaded.
 enum ModuleKind {
   /// File is an implicitly-loaded module.
   MK_ImplicitModule,
@@ -60,7 +60,7 @@
   MK_PrebuiltModule
 };
 
-/// \brief The input file that has been loaded from this AST file, along with
+/// The input file that has been loaded from this AST file, along with
 /// bools indicating whether this was an overridden buffer or if it was
 /// out-of-date or not-found.
 class InputFile {
@@ -98,7 +98,7 @@
   bool isNotFound() const { return Val.getInt() == NotFound; }
 };
 
-/// \brief Information about a module that has been loaded by the ASTReader.
+/// Information about a module that has been loaded by the ASTReader.
 ///
 /// Each instance of the Module class corresponds to a single AST file, which
 /// may be a precompiled header, precompiled preamble, a module, or an AST file
@@ -113,81 +113,81 @@
 
   // === General information ===
 
-  /// \brief The index of this module in the list of modules.
+  /// The index of this module in the list of modules.
   unsigned Index = 0;
 
-  /// \brief The type of this module.
+  /// The type of this module.
   ModuleKind Kind;
 
-  /// \brief The file name of the module file.
+  /// The file name of the module file.
   std::string FileName;
 
-  /// \brief The name of the module.
+  /// The name of the module.
   std::string ModuleName;
 
-  /// \brief The base directory of the module.
+  /// The base directory of the module.
   std::string BaseDirectory;
 
   std::string getTimestampFilename() const {
     return FileName + ".timestamp";
   }
 
-  /// \brief The original source file name that was used to build the
+  /// The original source file name that was used to build the
   /// primary AST file, which may have been modified for
   /// relocatable-pch support.
   std::string OriginalSourceFileName;
 
-  /// \brief The actual original source file name that was used to
+  /// The actual original source file name that was used to
   /// build this AST file.
   std::string ActualOriginalSourceFileName;
 
-  /// \brief The file ID for the original source file that was used to
+  /// The file ID for the original source file that was used to
   /// build this AST file.
   FileID OriginalSourceFileID;
 
-  /// \brief The directory that the PCH was originally created in. Used to
+  /// The directory that the PCH was originally created in. Used to
   /// allow resolving headers even after headers+PCH was moved to a new path.
   std::string OriginalDir;
 
   std::string ModuleMapPath;
 
-  /// \brief Whether this precompiled header is a relocatable PCH file.
+  /// Whether this precompiled header is a relocatable PCH file.
   bool RelocatablePCH = false;
 
-  /// \brief Whether timestamps are included in this module file.
+  /// Whether timestamps are included in this module file.
   bool HasTimestamps = false;
 
-  /// \brief The file entry for the module file.
+  /// The file entry for the module file.
   const FileEntry *File = nullptr;
 
   /// The signature of the module file, which may be used instead of the size
   /// and modification time to identify this particular file.
   ASTFileSignature Signature;
 
-  /// \brief Whether this module has been directly imported by the
+  /// Whether this module has been directly imported by the
   /// user.
   bool DirectlyImported = false;
 
-  /// \brief The generation of which this module file is a part.
+  /// The generation of which this module file is a part.
   unsigned Generation;
   
   /// The memory buffer that stores the data associated with
   /// this AST file, owned by the PCMCache in the ModuleManager.
   llvm::MemoryBuffer *Buffer;
 
-  /// \brief The size of this file, in bits.
+  /// The size of this file, in bits.
   uint64_t SizeInBits = 0;
 
-  /// \brief The global bit offset (or base) of this module
+  /// The global bit offset (or base) of this module
   uint64_t GlobalBitOffset = 0;
 
-  /// \brief The serialized bitstream data for this file.
+  /// The serialized bitstream data for this file.
   StringRef Data;
 
-  /// \brief The main bitstream cursor for the main block.
+  /// The main bitstream cursor for the main block.
   llvm::BitstreamCursor Stream;
 
-  /// \brief The source location where the module was explicitly or implicitly
+  /// The source location where the module was explicitly or implicitly
   /// imported in the local translation unit.
   ///
   /// If module A depends on and imports module B, both modules will have the
@@ -198,10 +198,10 @@
   /// made visible, just when the first submodule of that module was imported.
   SourceLocation DirectImportLoc;
 
-  /// \brief The source location where this module was first imported.
+  /// The source location where this module was first imported.
   SourceLocation ImportLoc;
 
-  /// \brief The first source location in this module.
+  /// The first source location in this module.
   SourceLocation FirstLoc;
 
   /// The list of extension readers that are attached to this module
@@ -214,20 +214,20 @@
 
   // === Input Files ===
 
-  /// \brief The cursor to the start of the input-files block.
+  /// The cursor to the start of the input-files block.
   llvm::BitstreamCursor InputFilesCursor;
 
-  /// \brief Offsets for all of the input file entries in the AST file.
+  /// Offsets for all of the input file entries in the AST file.
   const llvm::support::unaligned_uint64_t *InputFileOffsets = nullptr;
 
-  /// \brief The input files that have been loaded from this AST file.
+  /// The input files that have been loaded from this AST file.
   std::vector<InputFile> InputFilesLoaded;
 
   // All user input files reside at the index range [0, NumUserInputFiles), and
   // system input files reside at [NumUserInputFiles, InputFilesLoaded.size()).
   unsigned NumUserInputFiles = 0;
 
-  /// \brief If non-zero, specifies the time when we last validated input
+  /// If non-zero, specifies the time when we last validated input
   /// files.  Zero means we never validated them.
   ///
   /// The time is specified in seconds since the start of the Epoch.
@@ -235,105 +235,105 @@
 
   // === Source Locations ===
 
-  /// \brief Cursor used to read source location entries.
+  /// Cursor used to read source location entries.
   llvm::BitstreamCursor SLocEntryCursor;
 
-  /// \brief The number of source location entries in this AST file.
+  /// The number of source location entries in this AST file.
   unsigned LocalNumSLocEntries = 0;
 
-  /// \brief The base ID in the source manager's view of this module.
+  /// The base ID in the source manager's view of this module.
   int SLocEntryBaseID = 0;
 
-  /// \brief The base offset in the source manager's view of this module.
+  /// The base offset in the source manager's view of this module.
   unsigned SLocEntryBaseOffset = 0;
 
-  /// \brief Offsets for all of the source location entries in the
+  /// Offsets for all of the source location entries in the
   /// AST file.
   const uint32_t *SLocEntryOffsets = nullptr;
 
-  /// \brief SLocEntries that we're going to preload.
+  /// SLocEntries that we're going to preload.
   SmallVector<uint64_t, 4> PreloadSLocEntries;
 
-  /// \brief Remapping table for source locations in this module.
+  /// Remapping table for source locations in this module.
   ContinuousRangeMap<uint32_t, int, 2> SLocRemap;
 
   // === Identifiers ===
 
-  /// \brief The number of identifiers in this AST file.
+  /// The number of identifiers in this AST file.
   unsigned LocalNumIdentifiers = 0;
 
-  /// \brief Offsets into the identifier table data.
+  /// Offsets into the identifier table data.
   ///
   /// This array is indexed by the identifier ID (-1), and provides
   /// the offset into IdentifierTableData where the string data is
   /// stored.
   const uint32_t *IdentifierOffsets = nullptr;
 
-  /// \brief Base identifier ID for identifiers local to this module.
+  /// Base identifier ID for identifiers local to this module.
   serialization::IdentID BaseIdentifierID = 0;
 
-  /// \brief Remapping table for identifier IDs in this module.
+  /// Remapping table for identifier IDs in this module.
   ContinuousRangeMap<uint32_t, int, 2> IdentifierRemap;
 
-  /// \brief Actual data for the on-disk hash table of identifiers.
+  /// Actual data for the on-disk hash table of identifiers.
   ///
   /// This pointer points into a memory buffer, where the on-disk hash
   /// table for identifiers actually lives.
   const char *IdentifierTableData = nullptr;
 
-  /// \brief A pointer to an on-disk hash table of opaque type
+  /// A pointer to an on-disk hash table of opaque type
   /// IdentifierHashTable.
   void *IdentifierLookupTable = nullptr;
 
-  /// \brief Offsets of identifiers that we're going to preload within
+  /// Offsets of identifiers that we're going to preload within
   /// IdentifierTableData.
   std::vector<unsigned> PreloadIdentifierOffsets;
 
   // === Macros ===
 
-  /// \brief The cursor to the start of the preprocessor block, which stores
+  /// The cursor to the start of the preprocessor block, which stores
   /// all of the macro definitions.
   llvm::BitstreamCursor MacroCursor;
 
-  /// \brief The number of macros in this AST file.
+  /// The number of macros in this AST file.
   unsigned LocalNumMacros = 0;
 
-  /// \brief Offsets of macros in the preprocessor block.
+  /// Offsets of macros in the preprocessor block.
   ///
   /// This array is indexed by the macro ID (-1), and provides
   /// the offset into the preprocessor block where macro definitions are
   /// stored.
   const uint32_t *MacroOffsets = nullptr;
 
-  /// \brief Base macro ID for macros local to this module.
+  /// Base macro ID for macros local to this module.
   serialization::MacroID BaseMacroID = 0;
 
-  /// \brief Remapping table for macro IDs in this module.
+  /// Remapping table for macro IDs in this module.
   ContinuousRangeMap<uint32_t, int, 2> MacroRemap;
 
-  /// \brief The offset of the start of the set of defined macros.
+  /// The offset of the start of the set of defined macros.
   uint64_t MacroStartOffset = 0;
 
   // === Detailed PreprocessingRecord ===
 
-  /// \brief The cursor to the start of the (optional) detailed preprocessing
+  /// The cursor to the start of the (optional) detailed preprocessing
   /// record block.
   llvm::BitstreamCursor PreprocessorDetailCursor;
 
-  /// \brief The offset of the start of the preprocessor detail cursor.
+  /// The offset of the start of the preprocessor detail cursor.
   uint64_t PreprocessorDetailStartOffset = 0;
 
-  /// \brief Base preprocessed entity ID for preprocessed entities local to
+  /// Base preprocessed entity ID for preprocessed entities local to
   /// this module.
   serialization::PreprocessedEntityID BasePreprocessedEntityID = 0;
 
-  /// \brief Remapping table for preprocessed entity IDs in this module.
+  /// Remapping table for preprocessed entity IDs in this module.
   ContinuousRangeMap<uint32_t, int, 2> PreprocessedEntityRemap;
 
   const PPEntityOffset *PreprocessedEntityOffsets = nullptr;
   unsigned NumPreprocessedEntities = 0;
 
-  /// \brief Base ID for preprocessed skipped ranges local to this module.
+  /// Base ID for preprocessed skipped ranges local to this module.
   unsigned BasePreprocessedSkippedRangeID = 0;
 
   const PPSkippedRange *PreprocessedSkippedRangeOffsets = nullptr;
@@ -341,54 +341,54 @@
 
   // === Header search information ===
 
-  /// \brief The number of local HeaderFileInfo structures.
+  /// The number of local HeaderFileInfo structures.
   unsigned LocalNumHeaderFileInfos = 0;
 
-  /// \brief Actual data for the on-disk hash table of header file
+  /// Actual data for the on-disk hash table of header file
   /// information.
   ///
   /// This pointer points into a memory buffer, where the on-disk hash
   /// table for header file information actually lives.
   const char *HeaderFileInfoTableData = nullptr;
 
-  /// \brief The on-disk hash table that contains information about each of
+  /// The on-disk hash table that contains information about each of
   /// the header files.
   void *HeaderFileInfoTable = nullptr;
 
   // === Submodule information ===  
 
-  /// \brief The number of submodules in this module.
+  /// The number of submodules in this module.
   unsigned LocalNumSubmodules = 0;
   
-  /// \brief Base submodule ID for submodules local to this module.
+  /// Base submodule ID for submodules local to this module.
   serialization::SubmoduleID BaseSubmoduleID = 0;
   
-  /// \brief Remapping table for submodule IDs in this module.
+  /// Remapping table for submodule IDs in this module.
   ContinuousRangeMap<uint32_t, int, 2> SubmoduleRemap;
   
   // === Selectors ===
 
-  /// \brief The number of selectors new to this file.
+  /// The number of selectors new to this file.
   ///
   /// This is the number of entries in SelectorOffsets.
   unsigned LocalNumSelectors = 0;
 
-  /// \brief Offsets into the selector lookup table's data array
+  /// Offsets into the selector lookup table's data array
   /// where each selector resides.
   const uint32_t *SelectorOffsets = nullptr;
 
-  /// \brief Base selector ID for selectors local to this module.
+  /// Base selector ID for selectors local to this module.
   serialization::SelectorID BaseSelectorID = 0;
 
-  /// \brief Remapping table for selector IDs in this module.
+  /// Remapping table for selector IDs in this module.
   ContinuousRangeMap<uint32_t, int, 2> SelectorRemap;
 
-  /// \brief A pointer to the character data that comprises the selector table
+  /// A pointer to the character data that comprises the selector table
   ///
   /// The SelectorOffsets table refers into this memory.
   const unsigned char *SelectorLookupTableData = nullptr;
 
-  /// \brief A pointer to an on-disk hash table of opaque type
+  /// A pointer to an on-disk hash table of opaque type
   /// ASTSelectorLookupTable.
   ///
   /// This hash table provides the IDs of all selectors, and the associated
@@ -402,20 +402,20 @@
   /// jump around with these in context.
   llvm::BitstreamCursor DeclsCursor;
 
-  /// \brief The number of declarations in this AST file.
+  /// The number of declarations in this AST file.
   unsigned LocalNumDecls = 0;
 
-  /// \brief Offset of each declaration within the bitstream, indexed
+  /// Offset of each declaration within the bitstream, indexed
   /// by the declaration ID (-1).
   const DeclOffset *DeclOffsets = nullptr;
 
-  /// \brief Base declaration ID for declarations local to this module.
+  /// Base declaration ID for declarations local to this module.
   serialization::DeclID BaseDeclID = 0;
 
-  /// \brief Remapping table for declaration IDs in this module.
+  /// Remapping table for declaration IDs in this module.
   ContinuousRangeMap<uint32_t, int, 2> DeclRemap;
 
-  /// \brief Mapping from the module files that this module file depends on
+  /// Mapping from the module files that this module file depends on
   /// to the base declaration ID for that module as it is understood within this
   /// module.
   ///
@@ -424,59 +424,59 @@
   /// as a local ID (for this module file).
   llvm::DenseMap<ModuleFile *, serialization::DeclID> GlobalToLocalDeclIDs;
 
-  /// \brief Array of file-level DeclIDs sorted by file.
+  /// Array of file-level DeclIDs sorted by file.
   const serialization::DeclID *FileSortedDecls = nullptr;
   unsigned NumFileSortedDecls = 0;
 
-  /// \brief Array of category list location information within this 
+  /// Array of category list location information within this 
   /// module file, sorted by the definition ID.
   const serialization::ObjCCategoriesInfo *ObjCCategoriesMap = nullptr;
   
-  /// \brief The number of redeclaration info entries in ObjCCategoriesMap.
+  /// The number of redeclaration info entries in ObjCCategoriesMap.
   unsigned LocalNumObjCCategoriesInMap = 0;
   
-  /// \brief The Objective-C category lists for categories known to this
+  /// The Objective-C category lists for categories known to this
   /// module.
   SmallVector<uint64_t, 1> ObjCCategories;
 
   // === Types ===
 
-  /// \brief The number of types in this AST file.
+  /// The number of types in this AST file.
   unsigned LocalNumTypes = 0;
 
-  /// \brief Offset of each type within the bitstream, indexed by the
+  /// Offset of each type within the bitstream, indexed by the
   /// type ID, or the representation of a Type*.
   const uint32_t *TypeOffsets = nullptr;
 
-  /// \brief Base type ID for types local to this module as represented in
+  /// Base type ID for types local to this module as represented in
   /// the global type ID space.
   serialization::TypeID BaseTypeIndex = 0;
 
-  /// \brief Remapping table for type IDs in this module.
+  /// Remapping table for type IDs in this module.
   ContinuousRangeMap<uint32_t, int, 2> TypeRemap;
 
   // === Miscellaneous ===
 
-  /// \brief Diagnostic IDs and their mappings that the user changed.
+  /// Diagnostic IDs and their mappings that the user changed.
   SmallVector<uint64_t, 8> PragmaDiagMappings;
 
-  /// \brief List of modules which depend on this module
+  /// List of modules which depend on this module
   llvm::SetVector<ModuleFile *> ImportedBy;
 
-  /// \brief List of modules which this module depends on
+  /// List of modules which this module depends on
   llvm::SetVector<ModuleFile *> Imports;
 
-  /// \brief Determine whether this module was directly imported at
+  /// Determine whether this module was directly imported at
   /// any point during translation.
   bool isDirectlyImported() const { return DirectlyImported; }
 
-  /// \brief Is this a module file for a module (rather than a PCH or similar).
+  /// Is this a module file for a module (rather than a PCH or similar).
   bool isModule() const {
     return Kind == MK_ImplicitModule || Kind == MK_ExplicitModule ||
            Kind == MK_PrebuiltModule;
   }
 
-  /// \brief Dump debugging output for this module.
+  /// Dump debugging output for this module.
   void dump();
 };
 
Index: cfe/trunk/include/clang/Serialization/ModuleManager.h
===================================================================
--- cfe/trunk/include/clang/Serialization/ModuleManager.h
+++ cfe/trunk/include/clang/Serialization/ModuleManager.h
@@ -45,45 +45,45 @@
 
 namespace serialization {
 
-/// \brief Manages the set of modules loaded by an AST reader.
+/// Manages the set of modules loaded by an AST reader.
 class ModuleManager {
-  /// \brief The chain of AST files, in the order in which we started to load
+  /// The chain of AST files, in the order in which we started to load
   /// them (this order isn't really useful for anything).
   SmallVector<std::unique_ptr<ModuleFile>, 2> Chain;
 
-  /// \brief The chain of non-module PCH files. The first entry is the one named
+  /// The chain of non-module PCH files. The first entry is the one named
   /// by the user, the last one is the one that doesn't depend on anything
   /// further.
   SmallVector<ModuleFile *, 2> PCHChain;
 
-  // \brief The roots of the dependency DAG of AST files. This is used
+  // The roots of the dependency DAG of AST files. This is used
   // to implement short-circuiting logic when running DFS over the dependencies.
   SmallVector<ModuleFile *, 2> Roots;
 
-  /// \brief All loaded modules, indexed by name.
+  /// All loaded modules, indexed by name.
   llvm::DenseMap<const FileEntry *, ModuleFile *> Modules;
 
-  /// \brief FileManager that handles translating between filenames and
+  /// FileManager that handles translating between filenames and
   /// FileEntry *.
   FileManager &FileMgr;
 
   /// Cache of PCM files.
   IntrusiveRefCntPtr<MemoryBufferCache> PCMCache;
 
-  /// \brief Knows how to unwrap module containers.
+  /// Knows how to unwrap module containers.
   const PCHContainerReader &PCHContainerRdr;
 
-  /// \brief Preprocessor's HeaderSearchInfo containing the module map.
+  /// Preprocessor's HeaderSearchInfo containing the module map.
   const HeaderSearch &HeaderSearchInfo;
 
-  /// \brief A lookup of in-memory (virtual file) buffers
+  /// A lookup of in-memory (virtual file) buffers
   llvm::DenseMap<const FileEntry *, std::unique_ptr<llvm::MemoryBuffer>>
       InMemoryBuffers;
 
-  /// \brief The visitation order.
+  /// The visitation order.
   SmallVector<ModuleFile *, 4> VisitOrder;
       
-  /// \brief The list of module files that both we and the global module index
+  /// The list of module files that both we and the global module index
   /// know about.
   ///
   /// Either the global index or the module manager may have modules that the
@@ -93,13 +93,13 @@
   /// known to the global index.
   SmallVector<ModuleFile *, 4> ModulesInCommonWithGlobalIndex;
 
-  /// \brief The global module index, if one is attached.
+  /// The global module index, if one is attached.
   ///
   /// The global module index will actually be owned by the ASTReader; this is
   /// just an non-owning pointer.
   GlobalModuleIndex *GlobalIndex = nullptr;
 
-  /// \brief State used by the "visit" operation to avoid malloc traffic in
+  /// State used by the "visit" operation to avoid malloc traffic in
   /// calls to visit().
   struct VisitState {
     explicit VisitState(unsigned N) : VisitNumber(N, 0) {
@@ -110,22 +110,22 @@
       delete NextState;
     }
 
-    /// \brief The stack used when marking the imports of a particular module
+    /// The stack used when marking the imports of a particular module
     /// as not-to-be-visited.
     SmallVector<ModuleFile *, 4> Stack;
 
-    /// \brief The visit number of each module file, which indicates when
+    /// The visit number of each module file, which indicates when
     /// this module file was last visited.
     SmallVector<unsigned, 4> VisitNumber;
 
-    /// \brief The next visit number to use to mark visited module files.
+    /// The next visit number to use to mark visited module files.
     unsigned NextVisitNumber = 1;
 
-    /// \brief The next visit state.
+    /// The next visit state.
     VisitState *NextState = nullptr;
   };
 
-  /// \brief The first visit() state in the chain.
+  /// The first visit() state in the chain.
   VisitState *FirstVisitState = nullptr;
 
   VisitState *allocateVisitState();
@@ -145,74 +145,74 @@
                          const HeaderSearch &HeaderSearchInfo);
   ~ModuleManager();
 
-  /// \brief Forward iterator to traverse all loaded modules.
+  /// Forward iterator to traverse all loaded modules.
   ModuleIterator begin() { return Chain.begin(); }
 
-  /// \brief Forward iterator end-point to traverse all loaded modules
+  /// Forward iterator end-point to traverse all loaded modules
   ModuleIterator end() { return Chain.end(); }
   
-  /// \brief Const forward iterator to traverse all loaded modules.
+  /// Const forward iterator to traverse all loaded modules.
   ModuleConstIterator begin() const { return Chain.begin(); }
 
-  /// \brief Const forward iterator end-point to traverse all loaded modules
+  /// Const forward iterator end-point to traverse all loaded modules
   ModuleConstIterator end() const { return Chain.end(); }
   
-  /// \brief Reverse iterator to traverse all loaded modules.
+  /// Reverse iterator to traverse all loaded modules.
   ModuleReverseIterator rbegin() { return Chain.rbegin(); }
 
-  /// \brief Reverse iterator end-point to traverse all loaded modules.
+  /// Reverse iterator end-point to traverse all loaded modules.
   ModuleReverseIterator rend() { return Chain.rend(); }
 
-  /// \brief A range covering the PCH and preamble module files loaded.
+  /// A range covering the PCH and preamble module files loaded.
   llvm::iterator_range<SmallVectorImpl<ModuleFile *>::const_iterator>
   pch_modules() const {
     return llvm::make_range(PCHChain.begin(), PCHChain.end());
   }
 
-  /// \brief Returns the primary module associated with the manager, that is,
+  /// Returns the primary module associated with the manager, that is,
   /// the first module loaded
   ModuleFile &getPrimaryModule() { return *Chain[0]; }
   
-  /// \brief Returns the primary module associated with the manager, that is,
+  /// Returns the primary module associated with the manager, that is,
   /// the first module loaded.
   ModuleFile &getPrimaryModule() const { return *Chain[0]; }
   
-  /// \brief Returns the module associated with the given index
+  /// Returns the module associated with the given index
   ModuleFile &operator[](unsigned Index) const { return *Chain[Index]; }
   
-  /// \brief Returns the module associated with the given file name.
+  /// Returns the module associated with the given file name.
   ModuleFile *lookupByFileName(StringRef FileName) const;
 
-  /// \brief Returns the module associated with the given module name.
+  /// Returns the module associated with the given module name.
   ModuleFile *lookupByModuleName(StringRef ModName) const;
 
-  /// \brief Returns the module associated with the given module file.
+  /// Returns the module associated with the given module file.
   ModuleFile *lookup(const FileEntry *File) const;
 
-  /// \brief Returns the in-memory (virtual file) buffer with the given name
+  /// Returns the in-memory (virtual file) buffer with the given name
   std::unique_ptr<llvm::MemoryBuffer> lookupBuffer(StringRef Name);
   
-  /// \brief Number of modules loaded
+  /// Number of modules loaded
   unsigned size() const { return Chain.size(); }
 
-  /// \brief The result of attempting to add a new module.
+  /// The result of attempting to add a new module.
   enum AddModuleResult {
-    /// \brief The module file had already been loaded.
+    /// The module file had already been loaded.
     AlreadyLoaded,
 
-    /// \brief The module file was just loaded in response to this call.
+    /// The module file was just loaded in response to this call.
     NewlyLoaded,
 
-    /// \brief The module file is missing.
+    /// The module file is missing.
     Missing,
 
-    /// \brief The module file is out-of-date.
+    /// The module file is out-of-date.
     OutOfDate
   };
 
   using ASTFileSignatureReader = ASTFileSignature (*)(StringRef);
 
-  /// \brief Attempts to create a new module and add it to the list of known
+  /// Attempts to create a new module and add it to the list of known
   /// modules.
   ///
   /// \param FileName The file name of the module to be loaded.
@@ -255,23 +255,23 @@
                             ModuleFile *&Module,
                             std::string &ErrorStr);
 
-  /// \brief Remove the modules starting from First (to the end).
+  /// Remove the modules starting from First (to the end).
   void removeModules(ModuleIterator First,
                      llvm::SmallPtrSetImpl<ModuleFile *> &LoadedSuccessfully,
                      ModuleMap *modMap);
 
-  /// \brief Add an in-memory buffer the list of known buffers
+  /// Add an in-memory buffer the list of known buffers
   void addInMemoryBuffer(StringRef FileName,
                          std::unique_ptr<llvm::MemoryBuffer> Buffer);
 
-  /// \brief Set the global module index.
+  /// Set the global module index.
   void setGlobalIndex(GlobalModuleIndex *Index);
 
-  /// \brief Notification from the AST reader that the given module file
+  /// Notification from the AST reader that the given module file
   /// has been "accepted", and will not (can not) be unloaded.
   void moduleFileAccepted(ModuleFile *MF);
 
-  /// \brief Visit each of the modules.
+  /// Visit each of the modules.
   ///
   /// This routine visits each of the modules, starting with the
   /// "root" modules that no other loaded modules depend on, and
@@ -293,7 +293,7 @@
   void visit(llvm::function_ref<bool(ModuleFile &M)> Visitor,
              llvm::SmallPtrSetImpl<ModuleFile *> *ModuleFilesHit = nullptr);
 
-  /// \brief Attempt to resolve the given module file name to a file entry.
+  /// Attempt to resolve the given module file name to a file entry.
   ///
   /// \param FileName The name of the module file.
   ///
@@ -315,7 +315,7 @@
                         time_t ExpectedModTime,
                         const FileEntry *&File);
 
-  /// \brief View the graphviz representation of the module graph.
+  /// View the graphviz representation of the module graph.
   void viewGraph();
 
   MemoryBufferCache &getPCMCache() const { return *PCMCache; }
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
@@ -76,7 +76,7 @@
 NumInliningModes
 };
 
-/// \brief Describes the different kinds of C++ member functions which can be
+/// Describes the different kinds of C++ member functions which can be
 /// considered for inlining by the analyzer.
 ///
 /// These options are cumulative; enabling one kind of member function will
@@ -100,7 +100,7 @@
   CIMK_Destructors
 };
 
-/// \brief Describes the different modes of inter-procedural analysis.
+/// Describes the different modes of inter-procedural analysis.
 enum IPAKind {
   IPAK_NotSet = 0,
 
@@ -128,10 +128,10 @@
   static std::vector<StringRef>
   getRegisteredCheckers(bool IncludeExperimental = false);
 
-  /// \brief Pair of checker name and enable/disable.
+  /// Pair of checker name and enable/disable.
   std::vector<std::pair<std::string, bool>> CheckersControlList;
   
-  /// \brief A key-value table of use-specified configuration values.
+  /// A key-value table of use-specified configuration values.
   ConfigTable Config;
   AnalysisStores AnalysisStoreOpt = RegionStoreModel;
   AnalysisConstraints AnalysisConstraintsOpt = RangeConstraintsModel;
@@ -144,10 +144,10 @@
   /// generated report.
   std::string FullCompilerInvocation;
   
-  /// \brief The maximum number of times the analyzer visits a block.
+  /// The maximum number of times the analyzer visits a block.
   unsigned maxBlockVisitOnPath;
   
-  /// \brief Disable all analyzer checks.
+  /// Disable all analyzer checks.
   ///
   /// This flag allows one to disable analyzer checks on the code processed by
   /// the given analysis consumer. Note, the code will get parsed and the
@@ -160,7 +160,7 @@
   unsigned AnalyzerDisplayProgress : 1;
   unsigned AnalyzeNestedBlocks : 1;
 
-  /// \brief The flag regulates if we should eagerly assume evaluations of
+  /// The flag regulates if we should eagerly assume evaluations of
   /// conditionals, thus, bifurcating the path.
   ///
   /// This flag indicates how the engine should handle expressions such as: 'x =
@@ -177,15 +177,15 @@
   unsigned UnoptimizedCFG : 1;
   unsigned PrintStats : 1;
   
-  /// \brief Do not re-analyze paths leading to exhausted nodes with a different
+  /// Do not re-analyze paths leading to exhausted nodes with a different
   /// strategy. We get better code coverage when retry is enabled.
   unsigned NoRetryExhausted : 1;
   
-  /// \brief The inlining stack depth limit.
+  /// The inlining stack depth limit.
   // Cap the stack depth at 4 calls (5 stack frames, base + 4 calls).
   unsigned InlineMaxStackDepth = 5;
   
-  /// \brief The mode of function selection used during inlining.
+  /// The mode of function selection used during inlining.
   AnalysisInliningMode InliningMode = NoRedundancy;
 
   enum class ExplorationStrategyKind {
@@ -200,7 +200,7 @@
 private:
   ExplorationStrategyKind ExplorationStrategy = ExplorationStrategyKind::NotSet;
 
-  /// \brief Describes the kinds for high-level analyzer mode.
+  /// Describes the kinds for high-level analyzer mode.
   enum UserModeKind {
     UMK_NotSet = 0,
 
@@ -431,14 +431,14 @@
                               const ento::CheckerBase *C = nullptr,
                               bool SearchInParents = false);
 
-  /// \brief Retrieves and sets the UserMode. This is a high-level option,
+  /// Retrieves and sets the UserMode. This is a high-level option,
   /// which is used to set other low-level options. It is not accessible
   /// outside of AnalyzerOptions.
   UserModeKind getUserMode();
 
   ExplorationStrategyKind getExplorationStrategy();
 
-  /// \brief Returns the inter-procedural analysis mode.
+  /// Returns the inter-procedural analysis mode.
   IPAKind getIPAMode();
 
   /// Returns the option controlling which C++ member functions will be
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
@@ -173,7 +173,7 @@
   BugReport(BugType &bt, StringRef desc, PathDiagnosticLocation l)
       : BT(bt), Description(desc), Location(l) {}
 
-  /// \brief Create a BugReport with a custom uniqueing location.
+  /// Create a BugReport with a custom uniqueing location.
   ///
   /// The reports that have the same report location, description, bug type, and
   /// ranges are uniqued - only one of the equivalent reports will be presented
@@ -190,7 +190,7 @@
   const BugType& getBugType() const { return BT; }
   BugType& getBugType() { return BT; }
 
-  /// \brief True when the report has an execution path associated with it.
+  /// True when the report has an execution path associated with it.
   ///
   /// A report is said to be path-sensitive if it was thrown against a
   /// particular exploded node in the path-sensitive analysis graph.
@@ -297,7 +297,7 @@
     return Notes;
   }
 
-  /// \brief This allows for addition of meta data to the diagnostic.
+  /// This allows for addition of meta data to the diagnostic.
   ///
   /// Currently, only the HTMLDiagnosticClient knows how to display it. 
   void addExtraText(StringRef S) {
@@ -308,26 +308,26 @@
     return ExtraText;
   }
 
-  /// \brief Return the "definitive" location of the reported bug.
+  /// Return the "definitive" location of the reported bug.
   ///
   ///  While a bug can span an entire path, usually there is a specific
   ///  location that can be used to identify where the key issue occurred.
   ///  This location is used by clients rendering diagnostics.
   virtual PathDiagnosticLocation getLocation(const SourceManager &SM) const;
 
-  /// \brief Get the location on which the report should be uniqued.
+  /// Get the location on which the report should be uniqued.
   PathDiagnosticLocation getUniqueingLocation() const {
     return UniqueingLocation;
   }
   
-  /// \brief Get the declaration containing the uniqueing location.
+  /// Get the declaration containing the uniqueing location.
   const Decl *getUniqueingDecl() const {
     return UniqueingDecl;
   }
 
   const Stmt *getStmt() const;
 
-  /// \brief Add a range to a bug report.
+  /// Add a range to a bug report.
   ///
   /// Ranges are used to highlight regions of interest in the source code.
   /// They should be at the same source code line as the BugReport location.
@@ -340,10 +340,10 @@
     Ranges.push_back(R);
   }
 
-  /// \brief Get the SourceRanges associated with the report.
+  /// Get the SourceRanges associated with the report.
   virtual llvm::iterator_range<ranges_iterator> getRanges();
 
-  /// \brief Add custom or predefined bug report visitors to this report.
+  /// Add custom or predefined bug report visitors to this report.
   ///
   /// The visitors should be used when the default trace is not sufficient.
   /// For example, they allow constructing a more elaborate trace.
@@ -450,7 +450,7 @@
       : BugTypes(F.getEmptySet()), kind(BaseBRKind), D(d) {}
   virtual ~BugReporter();
 
-  /// \brief Generate and flush diagnostics for all bug reports.
+  /// Generate and flush diagnostics for all bug reports.
   void FlushReports();
 
   Kind getKind() const { return kind; }
@@ -463,12 +463,12 @@
     return D.getPathDiagnosticConsumers();
   }
 
-  /// \brief Iterator over the set of BugTypes tracked by the BugReporter.
+  /// Iterator over the set of BugTypes tracked by the BugReporter.
   using iterator = BugTypesTy::iterator;
   iterator begin() { return BugTypes.begin(); }
   iterator end() { return BugTypes.end(); }
 
-  /// \brief Iterator over the set of BugReports tracked by the BugReporter.
+  /// Iterator over the set of BugReports tracked by the BugReporter.
   using EQClasses_iterator = llvm::FoldingSet<BugReportEquivClass>::iterator;
   EQClasses_iterator EQClasses_begin() { return EQClasses.begin(); }
   EQClasses_iterator EQClasses_end() { return EQClasses.end(); }
@@ -487,7 +487,7 @@
 
   void Register(BugType *BT);
 
-  /// \brief Add the given report to the set of reports tracked by BugReporter.
+  /// Add the given report to the set of reports tracked by BugReporter.
   ///
   /// The reports are usually generated by the checkers. Further, they are
   /// folded based on the profile value, which is done to coalesce similar
@@ -507,7 +507,7 @@
 private:
   llvm::StringMap<BugType *> StrBugTypes;
 
-  /// \brief Returns a BugType that is associated with the given name and
+  /// Returns a BugType that is associated with the given name and
   /// category.
   BugType *getBugTypeForName(CheckName CheckName, StringRef name,
                              StringRef category);
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
@@ -38,7 +38,7 @@
 class MemRegion;
 class PathDiagnosticPiece;
 
-/// \brief BugReporterVisitors are used to add custom diagnostics along a path.
+/// BugReporterVisitors are used to add custom diagnostics along a path.
 ///
 /// Custom visitors should subclass the BugReporterVisitorImpl class for a
 /// default implementation of the clone() method.
@@ -52,7 +52,7 @@
   BugReporterVisitor(BugReporterVisitor &&) {}
   virtual ~BugReporterVisitor();
 
-  /// \brief Returns a copy of this BugReporter.
+  /// Returns a copy of this BugReporter.
   ///
   /// Custom BugReporterVisitors should not override this method directly.
   /// Instead, they should inherit from BugReporterVisitorImpl and provide
@@ -63,7 +63,7 @@
   /// will have to provide your own implementation.)
   virtual std::unique_ptr<BugReporterVisitor> clone() const = 0;
 
-  /// \brief Return a diagnostic piece which should be associated with the
+  /// Return a diagnostic piece which should be associated with the
   /// given node.
   ///
   /// The last parameter can be used to register a new visitor with the given
@@ -72,7 +72,7 @@
   VisitNode(const ExplodedNode *Succ, const ExplodedNode *Pred,
             BugReporterContext &BRC, BugReport &BR) = 0;
 
-  /// \brief Provide custom definition for the final diagnostic piece on the
+  /// Provide custom definition for the final diagnostic piece on the
   /// path - the piece, which is displayed before the path is expanded.
   ///
   /// If returns NULL the default implementation will be used.
@@ -83,7 +83,7 @@
 
   virtual void Profile(llvm::FoldingSetNodeID &ID) const = 0;
 
-  /// \brief Generates the default final diagnostic piece.
+  /// Generates the default final diagnostic piece.
   static std::unique_ptr<PathDiagnosticPiece>
   getDefaultEndPath(BugReporterContext &BRC, const ExplodedNode *N,
                     BugReport &BR);
@@ -165,7 +165,7 @@
 };
 
 /// \class NilReceiverBRVisitor
-/// \brief Prints path notes when a message is sent to a nil receiver.
+/// Prints path notes when a message is sent to a nil receiver.
 class NilReceiverBRVisitor final
     : public BugReporterVisitorImpl<NilReceiverBRVisitor> {
 public:
@@ -245,7 +245,7 @@
   static bool isPieceMessageGeneric(const PathDiagnosticPiece *Piece);
 };
 
-/// \brief Suppress reports that might lead to known false positives.
+/// Suppress reports that might lead to known false positives.
 ///
 /// Currently this suppresses reports based on locations of bugs.
 class LikelyFalsePositiveSuppressionBRVisitor final
@@ -272,7 +272,7 @@
                                                   BugReport &BR) override;
 };
 
-/// \brief When a region containing undefined value or '0' value is passed 
+/// When a region containing undefined value or '0' value is passed 
 /// as an argument in a call, marks the call as interesting.
 ///
 /// As a result, BugReporter will not prune the path through the function even
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
@@ -72,13 +72,13 @@
 
     using ConsumerFiles = std::vector<std::pair<StringRef, StringRef>>;
     
-    /// \brief A vector of <consumer,file> pairs.
+    /// A vector of <consumer,file> pairs.
     ConsumerFiles files;
     
-    /// \brief A precomputed hash tag used for uniquing PDFileEntry objects.
+    /// A precomputed hash tag used for uniquing PDFileEntry objects.
     const llvm::FoldingSetNodeID NodeID;
 
-    /// \brief Used for profiling in the FoldingSet.
+    /// Used for profiling in the FoldingSet.
     void Profile(llvm::FoldingSetNodeID &ID) { ID = NodeID; }
   };
   
@@ -303,11 +303,11 @@
 
   void dump() const;
 
-  /// \brief Given an exploded node, retrieve the statement that should be used 
+  /// Given an exploded node, retrieve the statement that should be used 
   /// for the diagnostic location.
   static const Stmt *getStmt(const ExplodedNode *N);
 
-  /// \brief Retrieve the statement corresponding to the successor node.
+  /// Retrieve the statement corresponding to the successor node.
   static const Stmt *getNextStmt(const ExplodedNode *N);
 };
 
@@ -351,7 +351,7 @@
   const Kind kind;
   const DisplayHint Hint;
 
-  /// \brief In the containing bug report, this piece is the last piece from
+  /// In the containing bug report, this piece is the last piece from
   /// the main source file.
   bool LastInMainSourceFile = false;
   
@@ -462,7 +462,7 @@
   }
 };
 
-/// \brief Interface for classes constructing Stack hints.
+/// Interface for classes constructing Stack hints.
 ///
 /// If a PathDiagnosticEvent occurs in a different frame than the final 
 /// diagnostic the hints can be used to summarize the effect of the call.
@@ -470,11 +470,11 @@
 public:
   virtual ~StackHintGenerator() = 0;
 
-  /// \brief Construct the Diagnostic message for the given ExplodedNode.
+  /// Construct the Diagnostic message for the given ExplodedNode.
   virtual std::string getMessage(const ExplodedNode *N) = 0;
 };
 
-/// \brief Constructs a Stack hint for the given symbol.
+/// Constructs a Stack hint for the given symbol.
 ///
 /// The class knows how to construct the stack hint message based on
 /// traversing the CallExpr associated with the call and checking if the given
@@ -489,7 +489,7 @@
   StackHintGeneratorForSymbol(SymbolRef S, StringRef M) : Sym(S), Msg(M) {}
   ~StackHintGeneratorForSymbol() override = default;
 
-  /// \brief Search the call expression for the symbol Sym and dispatch the
+  /// Search the call expression for the symbol Sym and dispatch the
   /// 'getMessageForX()' methods to construct a specific message.
   std::string getMessage(const ExplodedNode *N) override;
 
@@ -750,13 +750,13 @@
   std::string Category;
   std::deque<std::string> OtherDesc;
 
-  /// \brief Loc The location of the path diagnostic report.
+  /// Loc The location of the path diagnostic report.
   PathDiagnosticLocation Loc;
 
   PathPieces pathImpl;
   SmallVector<PathPieces *, 3> pathStack;
   
-  /// \brief Important bug uniqueing location.
+  /// Important bug uniqueing location.
   /// The location info is useful to differentiate between bugs.
   PathDiagnosticLocation UniqueingLoc;
   const Decl *UniqueingDecl;
@@ -815,7 +815,7 @@
     Loc = PathDiagnosticLocation();
   }
 
-  /// \brief If the last piece of the report point to the header file, resets
+  /// If the last piece of the report point to the header file, resets
   /// the location of the report to be the last location in the main source
   /// file.
   void resetDiagnosticLocationToMainFile();
@@ -854,12 +854,12 @@
     return Loc;
   }
 
-  /// \brief Get the location on which the report should be uniqued.
+  /// Get the location on which the report should be uniqued.
   PathDiagnosticLocation getUniqueingLoc() const {
     return UniqueingLoc;
   }
 
-  /// \brief Get the declaration containing the uniqueing location.
+  /// Get the declaration containing the uniqueing location.
   const Decl *getUniqueingDecl() const {
     return UniqueingDecl;
   }
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/Checker.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/Checker.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/Checker.h
@@ -548,7 +548,7 @@
   }
 };
 
-/// \brief We dereferenced a location that may be null.
+/// We dereferenced a location that may be null.
 struct ImplicitNullDerefEvent {
   SVal Location;
   bool IsLoad;
@@ -560,7 +560,7 @@
   bool IsDirectDereference;
 };
 
-/// \brief A helper class which wraps a boolean value set to false by default.
+/// A helper class which wraps a boolean value set to false by default.
 ///
 /// This class should behave exactly like 'bool' except that it doesn't need to
 /// be explicitly initialized.
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/CheckerManager.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/CheckerManager.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/CheckerManager.h
@@ -71,7 +71,7 @@
   }
 };
 
-/// \brief Describes the different reasons a pointer escapes
+/// Describes the different reasons a pointer escapes
 /// during analysis.
 enum PointerEscapeKind {
   /// A pointer escapes due to binding its value to a location
@@ -143,7 +143,7 @@
 // registerChecker
 //===----------------------------------------------------------------------===//
 
-  /// \brief Used to register checkers.
+  /// Used to register checkers.
   ///
   /// \returns a pointer to the checker object.
   template <typename CHECKER>
@@ -180,11 +180,11 @@
 // Functions for running checkers for AST traversing..
 //===----------------------------------------------------------------------===//
 
-  /// \brief Run checkers handling Decls.
+  /// Run checkers handling Decls.
   void runCheckersOnASTDecl(const Decl *D, AnalysisManager& mgr,
                             BugReporter &BR);
 
-  /// \brief Run checkers handling Decls containing a Stmt body.
+  /// Run checkers handling Decls containing a Stmt body.
   void runCheckersOnASTBody(const Decl *D, AnalysisManager& mgr,
                             BugReporter &BR);
 
@@ -192,7 +192,7 @@
 // Functions for running checkers for path-sensitive checking.
 //===----------------------------------------------------------------------===//
 
-  /// \brief Run checkers for pre-visiting Stmts.
+  /// Run checkers for pre-visiting Stmts.
   ///
   /// The notification is performed for every explored CFGElement, which does
   /// not include the control flow statements such as IfStmt.
@@ -205,7 +205,7 @@
     runCheckersForStmt(/*isPreVisit=*/true, Dst, Src, S, Eng);
   }
 
-  /// \brief Run checkers for post-visiting Stmts.
+  /// Run checkers for post-visiting Stmts.
   ///
   /// The notification is performed for every explored CFGElement, which does
   /// not include the control flow statements such as IfStmt.
@@ -219,13 +219,13 @@
     runCheckersForStmt(/*isPreVisit=*/false, Dst, Src, S, Eng, wasInlined);
   }
 
-  /// \brief Run checkers for visiting Stmts.
+  /// Run checkers for visiting Stmts.
   void runCheckersForStmt(bool isPreVisit,
                           ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
                           const Stmt *S, ExprEngine &Eng,
                           bool wasInlined = false);
 
-  /// \brief Run checkers for pre-visiting obj-c messages.
+  /// Run checkers for pre-visiting obj-c messages.
   void runCheckersForPreObjCMessage(ExplodedNodeSet &Dst,
                                     const ExplodedNodeSet &Src,
                                     const ObjCMethodCall &msg,
@@ -233,7 +233,7 @@
     runCheckersForObjCMessage(ObjCMessageVisitKind::Pre, Dst, Src, msg, Eng);
   }
 
-  /// \brief Run checkers for post-visiting obj-c messages.
+  /// Run checkers for post-visiting obj-c messages.
   void runCheckersForPostObjCMessage(ExplodedNodeSet &Dst,
                                      const ExplodedNodeSet &Src,
                                      const ObjCMethodCall &msg,
@@ -243,7 +243,7 @@
                               wasInlined);
   }
 
-  /// \brief Run checkers for visiting an obj-c message to nil.
+  /// Run checkers for visiting an obj-c message to nil.
   void runCheckersForObjCMessageNil(ExplodedNodeSet &Dst,
                                     const ExplodedNodeSet &Src,
                                     const ObjCMethodCall &msg,
@@ -252,20 +252,20 @@
                               Eng);
   }
 
-  /// \brief Run checkers for visiting obj-c messages.
+  /// Run checkers for visiting obj-c messages.
   void runCheckersForObjCMessage(ObjCMessageVisitKind visitKind,
                                  ExplodedNodeSet &Dst,
                                  const ExplodedNodeSet &Src,
                                  const ObjCMethodCall &msg, ExprEngine &Eng,
                                  bool wasInlined = false);
 
-  /// \brief Run checkers for pre-visiting obj-c messages.
+  /// Run checkers for pre-visiting obj-c messages.
   void runCheckersForPreCall(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
                              const CallEvent &Call, ExprEngine &Eng) {
     runCheckersForCallEvent(/*isPreVisit=*/true, Dst, Src, Call, Eng);
   }
 
-  /// \brief Run checkers for post-visiting obj-c messages.
+  /// Run checkers for post-visiting obj-c messages.
   void runCheckersForPostCall(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
                               const CallEvent &Call, ExprEngine &Eng,
                               bool wasInlined = false) {
@@ -273,13 +273,13 @@
                             wasInlined);
   }
 
-  /// \brief Run checkers for visiting obj-c messages.
+  /// Run checkers for visiting obj-c messages.
   void runCheckersForCallEvent(bool isPreVisit, ExplodedNodeSet &Dst,
                                const ExplodedNodeSet &Src,
                                const CallEvent &Call, ExprEngine &Eng,
                                bool wasInlined = false);
 
-  /// \brief Run checkers for load/store of a location.
+  /// Run checkers for load/store of a location.
   void runCheckersForLocation(ExplodedNodeSet &Dst,
                               const ExplodedNodeSet &Src,
                               SVal location,
@@ -288,42 +288,42 @@
                               const Stmt *BoundEx,
                               ExprEngine &Eng);
 
-  /// \brief Run checkers for binding of a value to a location.
+  /// Run checkers for binding of a value to a location.
   void runCheckersForBind(ExplodedNodeSet &Dst,
                           const ExplodedNodeSet &Src,
                           SVal location, SVal val,
                           const Stmt *S, ExprEngine &Eng,
                           const ProgramPoint &PP);
 
-  /// \brief Run checkers for end of analysis.
+  /// Run checkers for end of analysis.
   void runCheckersForEndAnalysis(ExplodedGraph &G, BugReporter &BR,
                                  ExprEngine &Eng);
 
-  /// \brief Run checkers on beginning of function.
+  /// Run checkers on beginning of function.
   void runCheckersForBeginFunction(ExplodedNodeSet &Dst,
                                    const BlockEdge &L,
                                    ExplodedNode *Pred,
                                    ExprEngine &Eng);
 
-  /// \brief Run checkers on end of function.
+  /// Run checkers on end of function.
   void runCheckersForEndFunction(NodeBuilderContext &BC,
                                  ExplodedNodeSet &Dst,
                                  ExplodedNode *Pred,
                                  ExprEngine &Eng);
 
-  /// \brief Run checkers for branch condition.
+  /// Run checkers for branch condition.
   void runCheckersForBranchCondition(const Stmt *condition,
                                      ExplodedNodeSet &Dst, ExplodedNode *Pred,
                                      ExprEngine &Eng);
 
-  /// \brief Run checkers between C++ operator new and constructor calls.
+  /// Run checkers between C++ operator new and constructor calls.
   void runCheckersForNewAllocator(const CXXNewExpr *NE, SVal Target,
                                   ExplodedNodeSet &Dst,
                                   ExplodedNode *Pred,
                                   ExprEngine &Eng,
                                   bool wasInlined = false);
 
-  /// \brief Run checkers for live symbols.
+  /// Run checkers for live symbols.
   ///
   /// Allows modifying SymbolReaper object. For example, checkers can explicitly
   /// register symbols of interest as live. These symbols will not be marked
@@ -331,7 +331,7 @@
   void runCheckersForLiveSymbols(ProgramStateRef state,
                                  SymbolReaper &SymReaper);
 
-  /// \brief Run checkers for dead symbols.
+  /// Run checkers for dead symbols.
   ///
   /// Notifies checkers when symbols become dead. For example, this allows
   /// checkers to aggressively clean up/reduce the checker state and produce
@@ -342,7 +342,7 @@
                                  ExprEngine &Eng,
                                  ProgramPoint::Kind K);
 
-  /// \brief Run checkers for region changes.
+  /// Run checkers for region changes.
   ///
   /// This corresponds to the check::RegionChanges callback.
   /// \param state The current program state.
@@ -361,7 +361,7 @@
                               const LocationContext *LCtx,
                               const CallEvent *Call);
 
-  /// \brief Run checkers when pointers escape.
+  /// Run checkers when pointers escape.
   ///
   /// This notifies the checkers about pointer escape, which occurs whenever
   /// the analyzer cannot track the symbol any more. For example, as a
@@ -383,23 +383,23 @@
                               PointerEscapeKind Kind,
                               RegionAndSymbolInvalidationTraits *ITraits);
 
-  /// \brief Run checkers for handling assumptions on symbolic values.
+  /// Run checkers for handling assumptions on symbolic values.
   ProgramStateRef runCheckersForEvalAssume(ProgramStateRef state,
                                            SVal Cond, bool Assumption);
 
-  /// \brief Run checkers for evaluating a call.
+  /// Run checkers for evaluating a call.
   ///
   /// Warning: Currently, the CallEvent MUST come from a CallExpr!
   void runCheckersForEvalCall(ExplodedNodeSet &Dst,
                               const ExplodedNodeSet &Src,
                               const CallEvent &CE, ExprEngine &Eng);
   
-  /// \brief Run checkers for the entire Translation Unit.
+  /// Run checkers for the entire Translation Unit.
   void runCheckersOnEndOfTranslationUnit(const TranslationUnitDecl *TU,
                                          AnalysisManager &mgr,
                                          BugReporter &BR);
 
-  /// \brief Run checkers for debug-printing a ProgramState.
+  /// Run checkers for debug-printing a ProgramState.
   ///
   /// Unlike most other callbacks, any checker can simply implement the virtual
   /// method CheckerBase::printState if it has custom data to print.
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/IssueHash.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/IssueHash.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/IssueHash.h
@@ -17,7 +17,7 @@
 class FullSourceLoc;
 class LangOptions;
 
-/// \brief Get an MD5 hash to help identify bugs.
+/// Get an MD5 hash to help identify bugs.
 ///
 /// This function returns a hash that helps identify bugs within a source file.
 /// This identification can be utilized to diff diagnostic results on different
@@ -41,7 +41,7 @@
                                    llvm::StringRef BugType, const Decl *D,
                                    const LangOptions &LangOpts);
 
-/// \brief Get the string representation of issue hash. See GetIssueHash() for
+/// Get the string representation of issue hash. See GetIssueHash() for
 /// more information.
 std::string GetIssueString(const SourceManager &SM, FullSourceLoc &IssueLoc,
                            llvm::StringRef CheckerName, llvm::StringRef BugType,
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
@@ -16,7 +16,7 @@
 namespace clang {
 namespace ento {
 
-/// \brief A record of the "type" of an APSInt, used for conversions.
+/// A record of the "type" of an APSInt, used for conversions.
 class APSIntType {
   uint32_t BitWidth;
   bool IsUnsigned;
@@ -31,7 +31,7 @@
   uint32_t getBitWidth() const { return BitWidth; }
   bool isUnsigned() const { return IsUnsigned; }
 
-  /// \brief Convert a given APSInt, in place, to match this type.
+  /// Convert a given APSInt, in place, to match this type.
   ///
   /// This behaves like a C cast: converting 255u8 (0xFF) to s16 gives
   /// 255 (0x00FF), and converting -1s8 (0xFF) to u16 gives 65535 (0xFFFF).
@@ -93,7 +93,7 @@
     return BitWidth == Other.BitWidth && IsUnsigned == Other.IsUnsigned;
   }
 
-  /// \brief Provide an ordering for finding a common conversion type.
+  /// Provide an ordering for finding a common conversion type.
   ///
   /// Unsigned integers are considered to be better conversion types than
   /// signed integers of the same width.
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
@@ -25,7 +25,7 @@
 namespace ento {
 
 /// \class BlockCounter
-/// \brief An abstract data type used to count the number of times a given
+/// An abstract data type used to count the number of times a given
 /// block has been visited along a path analyzed by CoreEngine.
 class BlockCounter {
   void *Data;
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
@@ -85,7 +85,7 @@
 public:
   const static unsigned NoArgRequirement = std::numeric_limits<unsigned>::max();
 
-  /// \brief Constructs a CallDescription object.
+  /// Constructs a CallDescription object.
   ///
   /// @param FuncName The name of the function that will be matched.
   ///
@@ -95,7 +95,7 @@
   CallDescription(StringRef FuncName, unsigned RequiredArgs = NoArgRequirement)
       : FuncName(FuncName), RequiredArgs(RequiredArgs) {}
 
-  /// \brief Get the name of the function that this object matches.
+  /// Get the name of the function that this object matches.
   StringRef getFunctionName() const { return FuncName; }
 };
 
@@ -118,7 +118,7 @@
 };
 
 /// \class RuntimeDefinition 
-/// \brief Defines the runtime definition of the called function.
+/// Defines the runtime definition of the called function.
 /// 
 /// Encapsulates the information we have about which Decl will be used 
 /// when the call is executed on the given path. When dealing with dynamic
@@ -142,7 +142,7 @@
 
   const Decl *getDecl() { return D; }
     
-  /// \brief Check if the definition we have is precise. 
+  /// Check if the definition we have is precise. 
   /// If not, it is possible that the call dispatches to another definition at 
   /// execution time.
   bool mayHaveOtherDefinitions() { return R != nullptr; }
@@ -152,7 +152,7 @@
   const MemRegion *getDispatchRegion() { return R; }
 };
 
-/// \brief Represents an abstract call to a function or method along a
+/// Represents an abstract call to a function or method along a
 /// particular path.
 ///
 /// CallEvents are created through the factory methods of CallEventManager.
@@ -204,14 +204,14 @@
   /// Copies this CallEvent, with vtable intact, into a new block of memory.
   virtual void cloneTo(void *Dest) const = 0;
 
-  /// \brief Get the value of arbitrary expressions at this point in the path.
+  /// Get the value of arbitrary expressions at this point in the path.
   SVal getSVal(const Stmt *S) const {
     return getState()->getSVal(S, getLocationContext());
   }
 
   using ValueList = SmallVectorImpl<SVal>;
 
-  /// \brief Used to specify non-argument regions that will be invalidated as a
+  /// Used to specify non-argument regions that will be invalidated as a
   /// result of this call.
   virtual void getExtraInvalidatedValues(ValueList &Values,
                  RegionAndSymbolInvalidationTraits *ETraits) const {}
@@ -220,43 +220,43 @@
   CallEvent &operator=(const CallEvent &) = delete;
   virtual ~CallEvent() = default;
 
-  /// \brief Returns the kind of call this is.
+  /// Returns the kind of call this is.
   virtual Kind getKind() const = 0;
 
-  /// \brief Returns the declaration of the function or method that will be
+  /// Returns the declaration of the function or method that will be
   /// called. May be null.
   virtual const Decl *getDecl() const {
     return Origin.dyn_cast<const Decl *>();
   }
 
-  /// \brief The state in which the call is being evaluated.
+  /// The state in which the call is being evaluated.
   const ProgramStateRef &getState() const {
     return State;
   }
 
-  /// \brief The context in which the call is being evaluated.
+  /// The context in which the call is being evaluated.
   const LocationContext *getLocationContext() const {
     return LCtx;
   }
 
-  /// \brief Returns the definition of the function or method that will be
+  /// Returns the definition of the function or method that will be
   /// called.
   virtual RuntimeDefinition getRuntimeDefinition() const = 0;
 
-  /// \brief Returns the expression whose value will be the result of this call.
+  /// Returns the expression whose value will be the result of this call.
   /// May be null.
   const Expr *getOriginExpr() const {
     return Origin.dyn_cast<const Expr *>();
   }
 
-  /// \brief Returns the number of arguments (explicit and implicit).
+  /// Returns the number of arguments (explicit and implicit).
   ///
   /// Note that this may be greater than the number of parameters in the
   /// callee's declaration, and that it may include arguments not written in
   /// the source.
   virtual unsigned getNumArgs() const = 0;
 
-  /// \brief Returns true if the callee is known to be from a system header.
+  /// Returns true if the callee is known to be from a system header.
   bool isInSystemHeader() const {
     const Decl *D = getDecl();
     if (!D)
@@ -277,51 +277,51 @@
     return false;
   }
 
-  /// \brief Returns true if the CallEvent is a call to a function that matches
+  /// Returns true if the CallEvent is a call to a function that matches
   /// the CallDescription.
   ///
   /// Note that this function is not intended to be used to match Obj-C method
   /// calls.
   bool isCalled(const CallDescription &CD) const;
 
-  /// \brief Returns a source range for the entire call, suitable for
+  /// Returns a source range for the entire call, suitable for
   /// outputting in diagnostics.
   virtual SourceRange getSourceRange() const {
     return getOriginExpr()->getSourceRange();
   }
 
-  /// \brief Returns the value of a given argument at the time of the call.
+  /// Returns the value of a given argument at the time of the call.
   virtual SVal getArgSVal(unsigned Index) const;
 
-  /// \brief Returns the expression associated with a given argument.
+  /// Returns the expression associated with a given argument.
   /// May be null if this expression does not appear in the source.
   virtual const Expr *getArgExpr(unsigned Index) const { return nullptr; }
 
-  /// \brief Returns the source range for errors associated with this argument.
+  /// Returns the source range for errors associated with this argument.
   ///
   /// May be invalid if the argument is not written in the source.
   virtual SourceRange getArgSourceRange(unsigned Index) const;
 
-  /// \brief Returns the result type, adjusted for references.
+  /// Returns the result type, adjusted for references.
   QualType getResultType() const;
 
-  /// \brief Returns the return value of the call.
+  /// Returns the return value of the call.
   ///
   /// This should only be called if the CallEvent was created using a state in
   /// which the return value has already been bound to the origin expression.
   SVal getReturnValue() const;
 
-  /// \brief Returns true if the type of any of the non-null arguments satisfies
+  /// Returns true if the type of any of the non-null arguments satisfies
   /// the condition.
   bool hasNonNullArgumentsWithType(bool (*Condition)(QualType)) const;
 
-  /// \brief Returns true if any of the arguments appear to represent callbacks.
+  /// Returns true if any of the arguments appear to represent callbacks.
   bool hasNonZeroCallbackArg() const;
 
-  /// \brief Returns true if any of the arguments is void*.
+  /// Returns true if any of the arguments is void*.
   bool hasVoidPointerToNonConstArg() const;
 
-  /// \brief Returns true if any of the arguments are known to escape to long-
+  /// Returns true if any of the arguments are known to escape to long-
   /// term storage, even if this method will not modify them.
   // NOTE: The exact semantics of this are still being defined!
   // We don't really want a list of hardcoded exceptions in the long run,
@@ -330,7 +330,7 @@
     return hasNonZeroCallbackArg();
   }
 
-  /// \brief Returns true if the callee is an externally-visible function in the
+  /// Returns true if the callee is an externally-visible function in the
   /// top-level namespace, such as \c malloc.
   ///
   /// You can use this call to determine that a particular function really is
@@ -348,7 +348,7 @@
   // precise callbacks.
   bool isGlobalCFunction(StringRef SpecificName = StringRef()) const;
 
-  /// \brief Returns the name of the callee, if its name is a simple identifier.
+  /// Returns the name of the callee, if its name is a simple identifier.
   ///
   /// Note that this will fail for Objective-C methods, blocks, and C++
   /// overloaded operators. The former is named by a Selector rather than a
@@ -362,11 +362,11 @@
     return ND->getIdentifier();
   }
 
-  /// \brief Returns an appropriate ProgramPoint for this call.
+  /// Returns an appropriate ProgramPoint for this call.
   ProgramPoint getProgramPoint(bool IsPreVisit = false,
                                const ProgramPointTag *Tag = nullptr) const;
 
-  /// \brief Returns a new state with all argument regions invalidated.
+  /// Returns a new state with all argument regions invalidated.
   ///
   /// This accepts an alternate state in case some processing has already
   /// occurred.
@@ -390,16 +390,16 @@
     return cloneWithState<CallEvent>(NewState);
   }
 
-  /// \brief Returns true if this is a statement is a function or method call
+  /// Returns true if this is a statement is a function or method call
   /// of some kind.
   static bool isCallStmt(const Stmt *S);
 
-  /// \brief Returns the result type of a function or method declaration.
+  /// Returns the result type of a function or method declaration.
   ///
   /// This will return a null QualType if the result type cannot be determined.
   static QualType getDeclaredResultType(const Decl *D);
 
-  /// \brief Returns true if the given decl is known to be variadic.
+  /// Returns true if the given decl is known to be variadic.
   ///
   /// \p D must not be null.
   static bool isVariadic(const Decl *D);
@@ -439,7 +439,7 @@
   void dump() const;
 };
 
-/// \brief Represents a call to any sort of function that might have a
+/// Represents a call to any sort of function that might have a
 /// FunctionDecl.
 class AnyFunctionCall : public CallEvent {
 protected:
@@ -473,7 +473,7 @@
   }
 };
 
-/// \brief Represents a C function or static C++ member function call.
+/// Represents a C function or static C++ member function call.
 ///
 /// Example: \c fun()
 class SimpleFunctionCall : public AnyFunctionCall {
@@ -509,7 +509,7 @@
   }
 };
 
-/// \brief Represents a call to a block.
+/// Represents a call to a block.
 ///
 /// Example: <tt>^{ /* ... */ }()</tt>
 class BlockCall : public CallEvent {
@@ -537,7 +537,7 @@
     return getOriginExpr()->getArg(Index);
   }
 
-  /// \brief Returns the region associated with this instance of the block.
+  /// Returns the region associated with this instance of the block.
   ///
   /// This may be NULL if the block's origin is unknown.
   const BlockDataRegion *getBlockRegion() const;
@@ -557,7 +557,7 @@
     return BD->isConversionFromLambda();
   }
 
-  /// \brief For a block converted from a C++ lambda, returns the block
+  /// For a block converted from a C++ lambda, returns the block
   /// VarRegion for the variable holding the captured C++ lambda record.
   const VarRegion *getRegionStoringCapturedLambda() const {
     assert(isConversionFromLambda());
@@ -616,7 +616,7 @@
   }
 };
 
-/// \brief Represents a non-static C++ member function call, no matter how
+/// Represents a non-static C++ member function call, no matter how
 /// it is written.
 class CXXInstanceCall : public AnyFunctionCall {
 protected:
@@ -632,10 +632,10 @@
          RegionAndSymbolInvalidationTraits *ETraits) const override;
 
 public:
-  /// \brief Returns the expression representing the implicit 'this' object.
+  /// Returns the expression representing the implicit 'this' object.
   virtual const Expr *getCXXThisExpr() const { return nullptr; }
 
-  /// \brief Returns the value of the implicit 'this' object.
+  /// Returns the value of the implicit 'this' object.
   virtual SVal getCXXThisVal() const;
 
   const FunctionDecl *getDecl() const override;
@@ -651,7 +651,7 @@
   }
 };
 
-/// \brief Represents a non-static C++ member function call.
+/// Represents a non-static C++ member function call.
 ///
 /// Example: \c obj.fun()
 class CXXMemberCall : public CXXInstanceCall {
@@ -691,7 +691,7 @@
   }
 };
 
-/// \brief Represents a C++ overloaded operator call where the operator is
+/// Represents a C++ overloaded operator call where the operator is
 /// implemented as a non-static member function.
 ///
 /// Example: <tt>iter + 1</tt>
@@ -730,7 +730,7 @@
   }
 };
 
-/// \brief Represents an implicit call to a C++ destructor.
+/// Represents an implicit call to a C++ destructor.
 ///
 /// This can occur at the end of a scope (for automatic objects), at the end
 /// of a full-expression (for temporaries), or as part of a delete.
@@ -765,7 +765,7 @@
 
   RuntimeDefinition getRuntimeDefinition() const override;
 
-  /// \brief Returns the value of the implicit 'this' object.
+  /// Returns the value of the implicit 'this' object.
   SVal getCXXThisVal() const override;
 
   /// Returns true if this is a call to a base class destructor.
@@ -780,7 +780,7 @@
   }
 };
 
-/// \brief Represents a call to a C++ constructor.
+/// Represents a call to a C++ constructor.
 ///
 /// Example: \c T(1)
 class CXXConstructorCall : public AnyFunctionCall {
@@ -822,7 +822,7 @@
     return getOriginExpr()->getArg(Index);
   }
 
-  /// \brief Returns the value of the implicit 'this' object.
+  /// Returns the value of the implicit 'this' object.
   SVal getCXXThisVal() const;
 
   void getInitialStackFrameContents(const StackFrameContext *CalleeCtx,
@@ -835,7 +835,7 @@
   }
 };
 
-/// \brief Represents the memory allocation call in a C++ new-expression.
+/// Represents the memory allocation call in a C++ new-expression.
 ///
 /// This is a call to "operator new".
 class CXXAllocatorCall : public AnyFunctionCall {
@@ -876,7 +876,7 @@
   }
 };
 
-/// \brief Represents the ways an Objective-C message send can occur.
+/// Represents the ways an Objective-C message send can occur.
 //
 // Note to maintainers: OCM_Message should always be last, since it does not
 // need to fit in the Data field's low bits.
@@ -886,7 +886,7 @@
   OCM_Message
 };
 
-/// \brief Represents any expression that calls an Objective-C method.
+/// Represents any expression that calls an Objective-C method.
 ///
 /// This includes all of the kinds listed in ObjCMessageKind.
 class ObjCMethodCall : public CallEvent {
@@ -943,13 +943,13 @@
 
   SourceRange getSourceRange() const override;
 
-  /// \brief Returns the value of the receiver at the time of this call.
+  /// Returns the value of the receiver at the time of this call.
   SVal getReceiverSVal() const;
 
-  /// \brief Return the value of 'self' if available.
+  /// Return the value of 'self' if available.
   SVal getSelfSVal() const;
 
-  /// \brief Get the interface for the receiver.
+  /// Get the interface for the receiver.
   ///
   /// This works whether this is an instance message or a class message.
   /// However, it currently just uses the static type of the receiver.
@@ -957,7 +957,7 @@
     return getOriginExpr()->getReceiverInterface();
   }
 
-  /// \brief Checks if the receiver refers to 'self' or 'super'.
+  /// Checks if the receiver refers to 'self' or 'super'.
   bool isReceiverSelfOrSuper() const;
 
   /// Returns how the message was written in the source (property access,
@@ -999,7 +999,7 @@
   }
 };
 
-/// \brief Manages the lifetime of CallEvent objects.
+/// Manages the lifetime of CallEvent objects.
 ///
 /// CallEventManager provides a way to create arbitrary CallEvents "on the
 /// stack" as if they were value objects by keeping a cache of CallEvent-sized
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
@@ -111,17 +111,17 @@
     return Eng.getStoreManager();
   }
   
-  /// \brief Returns the previous node in the exploded graph, which includes
+  /// Returns the previous node in the exploded graph, which includes
   /// the state of the program before the checker ran. Note, checkers should
   /// not retain the node in their state since the nodes might get invalidated.
   ExplodedNode *getPredecessor() { return Pred; }
   const ProgramStateRef &getState() const { return Pred->getState(); }
 
-  /// \brief Check if the checker changed the state of the execution; ex: added
+  /// Check if the checker changed the state of the execution; ex: added
   /// a new transition or a bug report.
   bool isDifferent() { return Changed; }
 
-  /// \brief Returns the number of times the current block has been visited
+  /// Returns the number of times the current block has been visited
   /// along the analyzed path.
   unsigned blockCount() const {
     return NB.getContext().blockCount();
@@ -174,12 +174,12 @@
     return Pred->getLocationContext()->getAnalysisDeclContext();
   }
 
-  /// \brief Get the blockID.
+  /// Get the blockID.
   unsigned getBlockID() const {
     return NB.getContext().getBlock()->getBlockID();
   }
 
-  /// \brief If the given node corresponds to a PostStore program point,
+  /// If the given node corresponds to a PostStore program point,
   /// retrieve the location region as it was uttered in the code.
   ///
   /// This utility can be useful for generating extensive diagnostics, for
@@ -191,19 +191,19 @@
     return nullptr;
   }
 
-  /// \brief Get the value of arbitrary expressions at this point in the path.
+  /// Get the value of arbitrary expressions at this point in the path.
   SVal getSVal(const Stmt *S) const {
     return Pred->getSVal(S);
   }
 
-  /// \brief Returns true if the value of \p E is greater than or equal to \p
+  /// Returns true if the value of \p E is greater than or equal to \p
   /// Val under unsigned comparison
   bool isGreaterOrEqual(const Expr *E, unsigned long long Val);
 
   /// Returns true if the value of \p E is negative.
   bool isNegative(const Expr *E);
 
-  /// \brief Generates a new transition in the program state graph
+  /// Generates a new transition in the program state graph
   /// (ExplodedGraph). Uses the default CheckerContext predecessor node.
   ///
   /// @param State The state of the generated node. If not specified, the state
@@ -217,7 +217,7 @@
     return addTransitionImpl(State ? State : getState(), false, nullptr, Tag);
   }
 
-  /// \brief Generates a new transition with the given predecessor.
+  /// Generates a new transition with the given predecessor.
   /// Allows checkers to generate a chain of nodes.
   ///
   /// @param State The state of the generated node.
@@ -230,7 +230,7 @@
     return addTransitionImpl(State, false, Pred, Tag);
   }
 
-  /// \brief Generate a sink node. Generating a sink stops exploration of the
+  /// Generate a sink node. Generating a sink stops exploration of the
   /// given path. To create a sink node for the purpose of reporting an error,
   /// checkers should use generateErrorNode() instead.
   ExplodedNode *generateSink(ProgramStateRef State, ExplodedNode *Pred,
@@ -238,7 +238,7 @@
     return addTransitionImpl(State ? State : getState(), true, Pred, Tag);
   }
 
-  /// \brief Generate a transition to a node that will be used to report
+  /// Generate a transition to a node that will be used to report
   /// an error. This node will be a sink. That is, it will stop exploration of
   /// the given path.
   ///
@@ -251,7 +251,7 @@
                        (Tag ? Tag : Location.getTag()));
   }
 
-  /// \brief Generate a transition to a node that will be used to report
+  /// Generate a transition to a node that will be used to report
   /// an error. This node will not be a sink. That is, exploration will
   /// continue along this path.
   ///
@@ -264,23 +264,23 @@
     return addTransition(State, (Tag ? Tag : Location.getTag()));
   }
 
-  /// \brief Emit the diagnostics report.
+  /// Emit the diagnostics report.
   void emitReport(std::unique_ptr<BugReport> R) {
     Changed = true;
     Eng.getBugReporter().emitReport(std::move(R));
   }
 
-  /// \brief Returns the word that should be used to refer to the declaration
+  /// Returns the word that should be used to refer to the declaration
   /// in the report.
   StringRef getDeclDescription(const Decl *D);
 
-  /// \brief Get the declaration of the called function (path-sensitive).
+  /// Get the declaration of the called function (path-sensitive).
   const FunctionDecl *getCalleeDecl(const CallExpr *CE) const;
 
-  /// \brief Get the name of the called function (path-sensitive).
+  /// Get the name of the called function (path-sensitive).
   StringRef getCalleeName(const FunctionDecl *FunDecl) const;
 
-  /// \brief Get the identifier of the called function (path-sensitive).
+  /// Get the identifier of the called function (path-sensitive).
   const IdentifierInfo *getCalleeIdentifier(const CallExpr *CE) const {
     const FunctionDecl *FunDecl = getCalleeDecl(CE);
     if (FunDecl)
@@ -289,13 +289,13 @@
       return nullptr;
   }
 
-  /// \brief Get the name of the called function (path-sensitive).
+  /// Get the name of the called function (path-sensitive).
   StringRef getCalleeName(const CallExpr *CE) const {
     const FunctionDecl *FunDecl = getCalleeDecl(CE);
     return getCalleeName(FunDecl);
   }
 
-  /// \brief Returns true if the callee is an externally-visible function in the
+  /// Returns true if the callee is an externally-visible function in the
   /// top-level namespace, such as \c malloc.
   ///
   /// If a name is provided, the function must additionally match the given
@@ -308,7 +308,7 @@
   static bool isCLibraryFunction(const FunctionDecl *FD,
                                  StringRef Name = StringRef());
 
-  /// \brief Depending on wither the location corresponds to a macro, return 
+  /// Depending on wither the location corresponds to a macro, return 
   /// either the macro name or the token spelling.
   ///
   /// This could be useful when checkers' logic depends on whether a function
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
@@ -145,7 +145,7 @@
     return ProgramStatePair(StInRange, StOutOfRange);
   }
 
-  /// \brief If a symbol is perfectly constrained to a constant, attempt
+  /// If a symbol is perfectly constrained to a constant, attempt
   /// to return the concrete value.
   ///
   /// Note that a ConstraintManager is not obligated to return a concretized
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
@@ -180,18 +180,18 @@
     return blocksAborted.end();
   }
 
-  /// \brief Enqueue the given set of nodes onto the work list.
+  /// Enqueue the given set of nodes onto the work list.
   void enqueue(ExplodedNodeSet &Set);
 
-  /// \brief Enqueue nodes that were created as a result of processing
+  /// Enqueue nodes that were created as a result of processing
   /// a statement onto the work list.
   void enqueue(ExplodedNodeSet &Set, const CFGBlock *Block, unsigned Idx);
 
-  /// \brief enqueue the nodes corresponding to the end of function onto the
+  /// enqueue the nodes corresponding to the end of function onto the
   /// end of path / work list.
   void enqueueEndOfFunction(ExplodedNodeSet &Set, const ReturnStmt *RS);
 
-  /// \brief Enqueue a single node created as a result of statement processing.
+  /// Enqueue a single node created as a result of statement processing.
   void enqueueStmtNode(ExplodedNode *N, const CFGBlock *Block, unsigned Idx);
 };
 
@@ -204,10 +204,10 @@
   NodeBuilderContext(const CoreEngine &E, const CFGBlock *B, ExplodedNode *N)
       : Eng(E), Block(B), LC(N->getLocationContext()) { assert(B); }
 
-  /// \brief Return the CFGBlock associated with this builder.
+  /// Return the CFGBlock associated with this builder.
   const CFGBlock *getBlock() const { return Block; }
 
-  /// \brief Returns the number of times the current basic block has been
+  /// Returns the number of times the current basic block has been
   /// visited on the exploded graph path.
   unsigned blockCount() const {
     return Eng.WList->getBlockCounter().getNumVisited(
@@ -217,7 +217,7 @@
 };
 
 /// \class NodeBuilder
-/// \brief This is the simplest builder which generates nodes in the
+/// This is the simplest builder which generates nodes in the
 /// ExplodedGraph.
 ///
 /// The main benefit of the builder is that it automatically tracks the
@@ -237,7 +237,7 @@
 
   bool HasGeneratedNodes = false;
 
-  /// \brief The frontier set - a set of nodes which need to be propagated after
+  /// The frontier set - a set of nodes which need to be propagated after
   /// the builder dies.
   ExplodedNodeSet &Frontier;
 
@@ -277,14 +277,14 @@
 
   virtual ~NodeBuilder() = default;
 
-  /// \brief Generates a node in the ExplodedGraph.
+  /// Generates a node in the ExplodedGraph.
   ExplodedNode *generateNode(const ProgramPoint &PP,
                              ProgramStateRef State,
                              ExplodedNode *Pred) {
     return generateNodeImpl(PP, State, Pred, false);
   }
 
-  /// \brief Generates a sink in the ExplodedGraph.
+  /// Generates a sink in the ExplodedGraph.
   ///
   /// When a node is marked as sink, the exploration from the node is stopped -
   /// the node becomes the last node on the path and certain kinds of bugs are
@@ -303,7 +303,7 @@
 
   using iterator = ExplodedNodeSet::iterator;
 
-  /// \brief Iterators through the results frontier.
+  /// Iterators through the results frontier.
   iterator begin() {
     finalizeResults();
     assert(checkResults());
@@ -329,7 +329,7 @@
 };
 
 /// \class NodeBuilderWithSinks
-/// \brief This node builder keeps track of the generated sink nodes.
+/// This node builder keeps track of the generated sink nodes.
 class NodeBuilderWithSinks: public NodeBuilder {
   void anchor() override;
 
@@ -364,14 +364,14 @@
 };
 
 /// \class StmtNodeBuilder
-/// \brief This builder class is useful for generating nodes that resulted from
+/// This builder class is useful for generating nodes that resulted from
 /// visiting a statement. The main difference from its parent NodeBuilder is
 /// that it creates a statement specific ProgramPoint.
 class StmtNodeBuilder: public NodeBuilder {
   NodeBuilder *EnclosingBldr;
 
 public:
-  /// \brief Constructs a StmtNodeBuilder. If the builder is going to process
+  /// Constructs a StmtNodeBuilder. If the builder is going to process
   /// nodes currently owned by another builder(with larger scope), use
   /// Enclosing builder to transfer ownership.
   StmtNodeBuilder(ExplodedNode *SrcNode, ExplodedNodeSet &DstSet,
@@ -417,7 +417,7 @@
   }
 };
 
-/// \brief BranchNodeBuilder is responsible for constructing the nodes
+/// BranchNodeBuilder is responsible for constructing the nodes
 /// corresponding to the two branches of the if statement - true and false.
 class BranchNodeBuilder: public NodeBuilder {
   const CFGBlock *DstT;
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
@@ -14,7 +14,7 @@
 namespace clang {
 namespace ento {
 
-/// \brief Stores the currently inferred strictest bound on the runtime type
+/// Stores the currently inferred strictest bound on the runtime type
 /// of a region in a given state along the analysis path.
 class DynamicTypeInfo {
 private:
@@ -27,13 +27,13 @@
   DynamicTypeInfo(QualType WithType, bool CanBeSub = true)
     : T(WithType), CanBeASubClass(CanBeSub) {}
 
-  /// \brief Return false if no dynamic type info is available.
+  /// Return false if no dynamic type info is available.
   bool isValid() const { return !T.isNull(); }
 
-  /// \brief Returns the currently inferred upper bound on the runtime type.
+  /// Returns the currently inferred upper bound on the runtime type.
   QualType getType() const { return T; }
 
-  /// \brief Returns false if the type information is precise (the type T is
+  /// Returns false if the type information is precise (the type T is
   /// the only type in the lattice), true otherwise.
   bool canBeASubClass() const { return CanBeASubClass; }
 
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h
@@ -42,15 +42,15 @@
   }
 };
 
-/// \brief Get dynamic type information for a region.
+/// Get dynamic type information for a region.
 DynamicTypeInfo getDynamicTypeInfo(ProgramStateRef State,
                                    const MemRegion *Reg);
 
-/// \brief Set dynamic type information of the region; return the new state.
+/// Set dynamic type information of the region; return the new state.
 ProgramStateRef setDynamicTypeInfo(ProgramStateRef State, const MemRegion *Reg,
                                    DynamicTypeInfo NewTy);
 
-/// \brief Set dynamic type information of the region; return the new state.
+/// Set dynamic type information of the region; return the new state.
 inline ProgramStateRef setDynamicTypeInfo(ProgramStateRef State,
                                           const MemRegion *Reg, QualType NewTy,
                                           bool CanBeSubClassed = true) {
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
@@ -305,7 +305,7 @@
   ExplodedGraph();
   ~ExplodedGraph();
 
-  /// \brief Retrieve the node associated with a (Location,State) pair,
+  /// Retrieve the node associated with a (Location,State) pair,
   ///  where the 'Location' is a ProgramPoint in the CFG.  If no node for
   ///  this pair exists, it is created. IsNew is set to true if
   ///  the node was freshly created.
@@ -313,7 +313,7 @@
                         bool IsSink = false,
                         bool* IsNew = nullptr);
 
-  /// \brief Create a node for a (Location, State) pair,
+  /// Create a node for a (Location, State) pair,
   ///  but don't store it for deduplication later.  This
   ///  is useful when copying an already completed
   ///  ExplodedGraph for further processing.
@@ -409,7 +409,7 @@
   /// was called.
   void reclaimRecentlyAllocatedNodes();
 
-  /// \brief Returns true if nodes for the given expression kind are always
+  /// Returns true if nodes for the given expression kind are always
   ///        kept around.
   static bool isInterestingLValueExpr(const Expr *Ex);
 
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
@@ -228,7 +228,7 @@
   ExplodedGraph &getGraph() { return G; }
   const ExplodedGraph &getGraph() const { return G; }
 
-  /// \brief Run the analyzer's garbage collection - remove dead symbols and
+  /// Run the analyzer's garbage collection - remove dead symbols and
   /// bindings from the state.
   ///
   /// Checkers can participate in this process with two callbacks:
@@ -642,7 +642,7 @@
     return (*currBldrCtx->getBlock())[currStmtIdx];
   }
 
-  /// \brief Create a new state in which the call return value is binded to the
+  /// Create a new state in which the call return value is binded to the
   /// call origin expression.
   ProgramStateRef bindReturnValue(const CallEvent &Call,
                                   const LocationContext *LCtx,
@@ -653,7 +653,7 @@
   void evalCall(ExplodedNodeSet &Dst, ExplodedNode *Pred,
                 const CallEvent &Call);
 
-  /// \brief Default implementation of call evaluation.
+  /// Default implementation of call evaluation.
   void defaultEvalCall(NodeBuilder &B, ExplodedNode *Pred,
                        const CallEvent &Call,
                        const EvalCallOptions &CallOpts = {});
@@ -687,7 +687,7 @@
     CIP_DisallowedAlways
   };
 
-  /// \brief See if a particular call should be inlined, by only looking
+  /// See if a particular call should be inlined, by only looking
   /// at the call event and the current state of analysis.
   CallInlinePolicy mayInlineCallKind(const CallEvent &Call,
                                      const ExplodedNode *Pred,
@@ -702,12 +702,12 @@
   bool inlineCall(const CallEvent &Call, const Decl *D, NodeBuilder &Bldr,
                   ExplodedNode *Pred, ProgramStateRef State);
 
-  /// \brief Conservatively evaluate call by invalidating regions and binding
+  /// Conservatively evaluate call by invalidating regions and binding
   /// a conjured return value.
   void conservativeEvalCall(const CallEvent &Call, NodeBuilder &Bldr,
                             ExplodedNode *Pred, ProgramStateRef State);
 
-  /// \brief Either inline or process the call conservatively (or both), based
+  /// Either inline or process the call conservatively (or both), based
   /// on DynamicDispatchBifurcation data.
   void BifurcateCall(const MemRegion *BifurReg,
                      const CallEvent &Call, const Decl *D, NodeBuilder &Bldr,
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h
@@ -22,7 +22,7 @@
 namespace clang {
 namespace ento {
 
-/// \brief Get the states that result from widening the loop.
+/// Get the states that result from widening the loop.
 ///
 /// Widen the loop by invalidating anything that might be modified
 /// by the loop body in any iteration.
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
@@ -124,7 +124,7 @@
 
   const MemRegion *StripCasts(bool StripBaseCasts = true) const;
 
-  /// \brief If this is a symbolic region, returns the region. Otherwise,
+  /// If this is a symbolic region, returns the region. Otherwise,
   /// goes up the base chain looking for the first symbolic base region.
   const SymbolicRegion *getSymbolicBase() const;
 
@@ -139,24 +139,24 @@
   /// Compute the offset within the top level memory object.
   RegionOffset getAsOffset() const;
 
-  /// \brief Get a string representation of a region for debug use.
+  /// Get a string representation of a region for debug use.
   std::string getString() const;
 
   virtual void dumpToStream(raw_ostream &os) const;
 
   void dump() const;
 
-  /// \brief Returns true if this region can be printed in a user-friendly way.
+  /// Returns true if this region can be printed in a user-friendly way.
   virtual bool canPrintPretty() const;
 
-  /// \brief Print the region for use in diagnostics.
+  /// Print the region for use in diagnostics.
   virtual void printPretty(raw_ostream &os) const;
 
-  /// \brief Returns true if this region's textual representation can be used
+  /// Returns true if this region's textual representation can be used
   /// as part of a larger expression.
   virtual bool canPrintPrettyAsExpr() const;
 
-  /// \brief Print the region as expression.
+  /// Print the region as expression.
   ///
   /// When this region represents a subexpression, the method is for printing
   /// an expression containing it.
@@ -244,7 +244,7 @@
   }
 };
 
-/// \brief The region of the static variables within the current CodeTextRegion
+/// The region of the static variables within the current CodeTextRegion
 /// scope.
 ///
 /// Currently, only the static locals are placed there, so we know that these
@@ -271,7 +271,7 @@
   }
 };
 
-/// \brief The region for all the non-static global variables.
+/// The region for all the non-static global variables.
 ///
 /// This class is further split into subclasses for efficient implementation of
 /// invalidating a set of related global values as is done in
@@ -294,7 +294,7 @@
   }
 };
 
-/// \brief The region containing globals which are defined in system/external
+/// The region containing globals which are defined in system/external
 /// headers and are considered modifiable by system calls (ex: errno).
 class GlobalSystemSpaceRegion : public NonStaticGlobalSpaceRegion {
   friend class MemRegionManager;
@@ -310,7 +310,7 @@
   }
 };
 
-/// \brief The region containing globals which are considered not to be modified
+/// The region containing globals which are considered not to be modified
 /// or point to data which could be modified as a result of a function call
 /// (system or internal). Ex: Const global scalars would be modeled as part of
 /// this region. This region also includes most system globals since they have
@@ -329,7 +329,7 @@
   }
 };
 
-/// \brief The region containing globals which can be modified by calls to
+/// The region containing globals which can be modified by calls to
 /// "internally" defined functions - (for now just) functions other then system
 /// calls.
 class GlobalInternalSpaceRegion : public NonStaticGlobalSpaceRegion {
@@ -1072,7 +1072,7 @@
   void dump() const;
 };
 
-/// \brief ElementRegin is used to represent both array elements and casts.
+/// ElementRegin is used to represent both array elements and casts.
 class ElementRegion : public TypedValueRegion {
   friend class MemRegionManager;
 
@@ -1257,10 +1257,10 @@
   const CXXThisRegion *getCXXThisRegion(QualType thisPointerTy,
                                         const LocationContext *LC);
 
-  /// \brief Retrieve or create a "symbolic" memory region.
+  /// Retrieve or create a "symbolic" memory region.
   const SymbolicRegion* getSymbolicRegion(SymbolRef Sym);
 
-  /// \brief Return a unique symbolic region belonging to heap memory space.
+  /// Return a unique symbolic region belonging to heap memory space.
   const SymbolicRegion *getSymbolicHeapRegion(SymbolRef sym);
 
   const StringRegion *getStringRegion(const StringLiteral *Str);
@@ -1393,7 +1393,7 @@
       llvm::DenseMap<SymbolRef, StorageTypeForKinds>::const_iterator;
 
 public:
-  /// \brief Describes different invalidation traits.
+  /// Describes different invalidation traits.
   enum InvalidationKinds {
     /// Tells that a region's contents is not changed.
     TK_PreserveContents = 0x1,
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
@@ -212,11 +212,11 @@
   assumeInclusiveRange(DefinedOrUnknownSVal Val, const llvm::APSInt &From,
                        const llvm::APSInt &To) const;
 
-  /// \brief Check if the given SVal is not constrained to zero and is not
+  /// Check if the given SVal is not constrained to zero and is not
   ///        a zero constant.
   ConditionTruthVal isNonNull(SVal V) const;
 
-  /// \brief Check if the given SVal is constrained to zero or is a zero
+  /// Check if the given SVal is constrained to zero or is a zero
   ///        constant.
   ConditionTruthVal isNull(SVal V) const;
 
@@ -257,7 +257,7 @@
 
   ProgramStateRef killBinding(Loc LV) const;
 
-  /// \brief Returns the state with bindings for the given regions
+  /// Returns the state with bindings for the given regions
   ///  cleared from the store.
   ///
   /// Optionally invalidates global regions as well.
@@ -317,24 +317,24 @@
 
   SVal getSValAsScalarOrLoc(const Stmt *Ex, const LocationContext *LCtx) const;
 
-  /// \brief Return the value bound to the specified location.
+  /// Return the value bound to the specified location.
   /// Returns UnknownVal() if none found.
   SVal getSVal(Loc LV, QualType T = QualType()) const;
 
   /// Returns the "raw" SVal bound to LV before any value simplfication.
   SVal getRawSVal(Loc LV, QualType T= QualType()) const;
 
-  /// \brief Return the value bound to the specified location.
+  /// Return the value bound to the specified location.
   /// Returns UnknownVal() if none found.
   SVal getSVal(const MemRegion* R, QualType T = QualType()) const;
 
-  /// \brief Return the value bound to the specified location, assuming
+  /// Return the value bound to the specified location, assuming
   /// that the value is a scalar integer or an enumeration or a pointer.
   /// Returns UnknownVal() if none found or the region is not known to hold
   /// a value of such type.
   SVal getSValAsScalarOrLoc(const MemRegion *R) const;
 
-  /// \brief Visits the symbols reachable from the given SVal using the provided
+  /// Visits the symbols reachable from the given SVal using the provided
   /// SymbolVisitor.
   ///
   /// This is a convenience API. Consider using ScanReachableSymbols class
@@ -343,12 +343,12 @@
   /// \sa ScanReachableSymbols
   bool scanReachableSymbols(SVal val, SymbolVisitor& visitor) const;
 
-  /// \brief Visits the symbols reachable from the SVals in the given range
+  /// Visits the symbols reachable from the SVals in the given range
   /// using the provided SymbolVisitor.
   bool scanReachableSymbols(const SVal *I, const SVal *E,
                             SymbolVisitor &visitor) const;
 
-  /// \brief Visits the symbols reachable from the regions in the given
+  /// Visits the symbols reachable from the regions in the given
   /// MemRegions range using the provided SymbolVisitor.
   bool scanReachableSymbols(const MemRegion * const *I,
                             const MemRegion * const *E,
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
@@ -198,7 +198,7 @@
   /// Make a unique symbol for value of region.
   DefinedOrUnknownSVal getRegionValueSymbolVal(const TypedValueRegion *region);
 
-  /// \brief Create a new symbol with a unique 'name'.
+  /// Create a new symbol with a unique 'name'.
   ///
   /// We resort to conjured symbols when we cannot construct a derived symbol.
   /// The advantage of symbols derived/built from other symbols is that we
@@ -218,7 +218,7 @@
                                         QualType type,
                                         unsigned visitCount);
 
-  /// \brief Conjure a symbol representing heap allocated memory region.
+  /// Conjure a symbol representing heap allocated memory region.
   ///
   /// Note, the expression should represent a location.
   DefinedOrUnknownSVal getConjuredHeapSymbolVal(const Expr *E,
@@ -329,7 +329,7 @@
   NonLoc makeNonLoc(const SymExpr *lhs, BinaryOperator::Opcode op,
                     const SymExpr *rhs, QualType type);
 
-  /// \brief Create a NonLoc value for cast.
+  /// Create a NonLoc value for cast.
   NonLoc makeNonLoc(const SymExpr *operand, QualType fromTy, QualType toTy);
 
   nonloc::ConcreteInt makeTruthVal(bool b, QualType type) {
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
@@ -98,7 +98,7 @@
 public:
   explicit SVal() = default;
 
-  /// \brief Convert to the specified SVal type, asserting that this SVal is of
+  /// Convert to the specified SVal type, asserting that this SVal is of
   /// the desired type.
   template<typename T>
   T castAs() const {
@@ -106,7 +106,7 @@
     return *static_cast<const T *>(this);
   }
 
-  /// \brief Convert to the specified SVal type, returning None if this SVal is
+  /// Convert to the specified SVal type, returning None if this SVal is
   /// not of the desired type.
   template<typename T>
   Optional<T> getAs() const {
@@ -164,7 +164,7 @@
   /// Otherwise return 0.
   const FunctionDecl *getAsFunctionDecl() const;
 
-  /// \brief If this SVal is a location and wraps a symbol, return that
+  /// If this SVal is a location and wraps a symbol, return that
   ///  SymbolRef. Otherwise return 0.
   ///
   /// Casts are ignored during lookup.
@@ -175,7 +175,7 @@
   /// Get the symbol in the SVal or its base region.
   SymbolRef getLocSymbolInBase() const;
 
-  /// \brief If this SVal wraps a symbol return that SymbolRef.
+  /// If this SVal wraps a symbol return that SymbolRef.
   /// Otherwise, return 0.
   ///
   /// Casts are ignored during lookup.
@@ -278,7 +278,7 @@
   }
 };
 
-/// \brief Represents an SVal that is guaranteed to not be UnknownVal.
+/// Represents an SVal that is guaranteed to not be UnknownVal.
 class KnownSVal : public SVal {
   friend class SVal;
 
@@ -343,7 +343,7 @@
 
 namespace nonloc {
 
-/// \brief Represents symbolic expression.
+/// Represents symbolic expression.
 class SymbolVal : public NonLoc {
 public:
   SymbolVal() = delete;
@@ -370,7 +370,7 @@
   }
 };
 
-/// \brief Value representing integer constant.
+/// Value representing integer constant.
 class ConcreteInt : public NonLoc {
 public:
   explicit ConcreteInt(const llvm::APSInt& V) : NonLoc(ConcreteIntKind, &V) {}
@@ -507,7 +507,7 @@
   }
 };
 
-/// \brief Value representing pointer-to-member.
+/// Value representing pointer-to-member.
 ///
 /// This value is qualified as NonLoc because neither loading nor storing
 /// operations are applied to it. Instead, the analyzer uses the L-value coming
@@ -598,12 +598,12 @@
     assert(r);
   }
 
-  /// \brief Get the underlining region.
+  /// Get the underlining region.
   const MemRegion *getRegion() const {
     return static_cast<const MemRegion *>(Data);
   }
 
-  /// \brief Get the underlining region and strip casts.
+  /// Get the underlining region and strip casts.
   const MemRegion* stripCasts(bool StripBaseCasts = true) const;
 
   template <typename REGION>
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
@@ -117,7 +117,7 @@
   /// reset to zero. This method is allowed to overwrite previous bindings.
   virtual StoreRef BindDefaultZero(Store store, const MemRegion *R) = 0;
 
-  /// \brief Create a new store with the specified binding removed.
+  /// Create a new store with the specified binding removed.
   /// \param ST the original store, that is the basis for the new store.
   /// \param L the location whose binding should be removed.
   virtual StoreRef killBinding(Store ST, Loc L) = 0;
@@ -170,7 +170,7 @@
   SVal evalDerivedToBase(SVal Derived, QualType DerivedPtrType,
                          bool IsVirtual);
 
-  /// \brief Attempts to do a down cast. Used to model BaseToDerived and C++
+  /// Attempts to do a down cast. Used to model BaseToDerived and C++
   ///        dynamic_cast.
   /// The callback may result in the following 3 scenarios:
   ///  - Successful cast (ex: derived is subclass of base).
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h
@@ -25,7 +25,7 @@
 
 class MemRegion;
 
-/// \brief Symbolic value. These values used to capture symbolic execution of
+/// Symbolic value. These values used to capture symbolic execution of
 /// the program.
 class SymExpr : public llvm::FoldingSetNode {
   virtual void anchor();
@@ -61,7 +61,7 @@
   virtual QualType getType() const = 0;
   virtual void Profile(llvm::FoldingSetNodeID &profile) = 0;
 
-  /// \brief Iterator over symbols that the current symbol depends on.
+  /// Iterator over symbols that the current symbol depends on.
   ///
   /// For SymbolData, it's the symbol itself; for expressions, it's the
   /// expression symbol and all the operands in it. Note, SymbolDerived is
@@ -87,7 +87,7 @@
 
   unsigned computeComplexity() const;
 
-  /// \brief Find the region from which this symbol originates.
+  /// Find the region from which this symbol originates.
   ///
   /// Whenever the symbol was constructed to denote an unknown value of
   /// a certain memory region, return this region. This method
@@ -110,7 +110,7 @@
 using SymbolRefSmallVectorTy = SmallVector<SymbolRef, 2>;
 using SymbolID = unsigned;
 
-/// \brief A symbol representing data which can be stored in a memory location
+/// A symbol representing data which can be stored in a memory location
 /// (region).
 class SymbolData : public SymExpr {
   const SymbolID Sym;
Index: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -38,7 +38,7 @@
 class BasicValueFactory;
 class StoreManager;
 
-///\brief A symbol representing the value stored at a MemRegion.
+///A symbol representing the value stored at a MemRegion.
 class SymbolRegionValue : public SymbolData {
   const TypedValueRegion *R;
 
@@ -251,7 +251,7 @@
   }
 };
 
-/// \brief Represents a cast expression.
+/// Represents a cast expression.
 class SymbolCast : public SymExpr {
   const SymExpr *Operand;
 
@@ -294,7 +294,7 @@
   }
 };
 
-/// \brief Represents a symbolic expression involving a binary operator 
+/// Represents a symbolic expression involving a binary operator 
 class BinarySymExpr : public SymExpr {
   BinaryOperator::Opcode Op;
   QualType T;
@@ -320,7 +320,7 @@
   }
 };
 
-/// \brief Represents a symbolic expression like 'x' + 3.
+/// Represents a symbolic expression like 'x' + 3.
 class SymIntExpr : public BinarySymExpr {
   const SymExpr *LHS;
   const llvm::APSInt& RHS;
@@ -357,7 +357,7 @@
   }
 };
 
-/// \brief Represents a symbolic expression like 3 - 'x'.
+/// Represents a symbolic expression like 3 - 'x'.
 class IntSymExpr : public BinarySymExpr {
   const llvm::APSInt& LHS;
   const SymExpr *RHS;
@@ -394,7 +394,7 @@
   }
 };
 
-/// \brief Represents a symbolic expression like 'x' + 'y'.
+/// Represents a symbolic expression like 'x' + 'y'.
 class SymSymExpr : public BinarySymExpr {
   const SymExpr *LHS;
   const SymExpr *RHS;
@@ -454,7 +454,7 @@
 
   static bool canSymbolicate(QualType T);
 
-  /// \brief Make a unique symbol for MemRegion R according to its kind.
+  /// Make a unique symbol for MemRegion R according to its kind.
   const SymbolRegionValue* getRegionValueSymbol(const TypedValueRegion* R);
 
   const SymbolConjured* conjureSymbol(const Stmt *E,
@@ -475,7 +475,7 @@
 
   const SymbolExtent *getExtentSymbol(const SubRegion *R);
 
-  /// \brief Creates a metadata symbol associated with a specific region.
+  /// Creates a metadata symbol associated with a specific region.
   ///
   /// VisitCount can be used to differentiate regions corresponding to
   /// different loop iterations, thus, making the symbol path-dependent.
@@ -507,7 +507,7 @@
     return SE->getType();
   }
 
-  /// \brief Add artificial symbol dependency.
+  /// Add artificial symbol dependency.
   ///
   /// The dependent symbol should stay alive as long as the primary is alive.
   void addSymbolDependency(const SymbolRef Primary, const SymbolRef Dependent);
@@ -518,7 +518,7 @@
   BasicValueFactory &getBasicVals() { return BV; }
 };
 
-/// \brief A class responsible for cleaning up unused symbols.
+/// A class responsible for cleaning up unused symbols.
 class SymbolReaper {
   enum SymbolStatus {
     NotProcessed,
@@ -542,7 +542,7 @@
   llvm::DenseMap<const MemRegion *, unsigned> includedRegionCache;
 
 public:
-  /// \brief Construct a reaper object, which removes everything which is not
+  /// Construct a reaper object, which removes everything which is not
   /// live before we execute statement s in the given location context.
   ///
   /// If the statement is NULL, everything is this and parent contexts is
@@ -560,14 +560,14 @@
   bool isLive(const Stmt *ExprVal, const LocationContext *LCtx) const;
   bool isLive(const VarRegion *VR, bool includeStoreBindings = false) const;
 
-  /// \brief Unconditionally marks a symbol as live.
+  /// Unconditionally marks a symbol as live.
   ///
   /// This should never be
   /// used by checkers, only by the state infrastructure such as the store and
   /// environment. Checkers should instead use metadata symbols and markInUse.
   void markLive(SymbolRef sym);
 
-  /// \brief Marks a symbol as important to a checker.
+  /// Marks a symbol as important to a checker.
   ///
   /// For metadata symbols,
   /// this will keep the symbol alive as long as its associated region is also
@@ -576,7 +576,7 @@
   /// symbol marking has occurred, i.e. in the MarkLiveSymbols callback.
   void markInUse(SymbolRef sym);
 
-  /// \brief If a symbol is known to be live, marks the symbol as live.
+  /// If a symbol is known to be live, marks the symbol as live.
   ///
   ///  Otherwise, if the symbol cannot be proven live, it is marked as dead.
   ///  Returns true if the symbol is dead, false if live.
@@ -596,7 +596,7 @@
   region_iterator region_begin() const { return RegionRoots.begin(); }
   region_iterator region_end() const { return RegionRoots.end(); }
 
-  /// \brief Returns whether or not a symbol has been confirmed dead.
+  /// Returns whether or not a symbol has been confirmed dead.
   ///
   /// This should only be called once all marking of dead symbols has completed.
   /// (For checkers, this means only in the evalDeadSymbols callback.)
@@ -607,7 +607,7 @@
   void markLive(const MemRegion *region);
   void markElementIndicesLive(const MemRegion *region);
   
-  /// \brief Set to the value of the symbolic store after
+  /// Set to the value of the symbolic store after
   /// StoreManager::removeDeadBindings has been called.
   void setReapedStore(StoreRef st) { reapedStore = st; }
 
@@ -625,7 +625,7 @@
   SymbolVisitor(const SymbolVisitor &) = default;
   SymbolVisitor(SymbolVisitor &&) {}
 
-  /// \brief A visitor method invoked by ProgramStateManager::scanReachableSymbols.
+  /// A visitor method invoked by ProgramStateManager::scanReachableSymbols.
   ///
   /// The method returns \c true if symbols should continue be scanned and \c
   /// false otherwise.
Index: cfe/trunk/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
@@ -31,7 +31,7 @@
                                                  StringRef InFile) override;
 };
 
-/// \brief Frontend action to parse model files.
+/// Frontend action to parse model files.
 ///
 /// This frontend action is responsible for parsing model files. Model files can
 /// not be parsed on their own, they rely on type information that is available
Index: cfe/trunk/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
===================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
+++ cfe/trunk/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements clang::ento::ModelConsumer which is an
+/// This file implements clang::ento::ModelConsumer which is an
 /// ASTConsumer for model files.
 ///
 //===----------------------------------------------------------------------===//
@@ -25,7 +25,7 @@
 
 namespace ento {
 
-/// \brief ASTConsumer to consume model files' AST.
+/// ASTConsumer to consume model files' AST.
 ///
 /// This consumer collects the bodies of function definitions into a StringMap
 /// from a model file.
Index: cfe/trunk/include/clang/Tooling/AllTUsExecution.h
===================================================================
--- cfe/trunk/include/clang/Tooling/AllTUsExecution.h
+++ cfe/trunk/include/clang/Tooling/AllTUsExecution.h
@@ -21,13 +21,13 @@
 namespace clang {
 namespace tooling {
 
-/// \brief Executes given frontend actions on all files/TUs in the compilation
+/// Executes given frontend actions on all files/TUs in the compilation
 /// database.
 class AllTUsToolExecutor : public ToolExecutor {
 public:
   static const char *ExecutorName;
 
-  /// \brief Init with \p CompilationDatabase.
+  /// Init with \p CompilationDatabase.
   /// This uses \p ThreadCount threads to exececute the actions on all files in
   /// parallel. If \p ThreadCount is 0, this uses `llvm::hardware_concurrency`.
   AllTUsToolExecutor(const CompilationDatabase &Compilations,
@@ -35,7 +35,7 @@
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps =
                          std::make_shared<PCHContainerOperations>());
 
-  /// \brief Init with \p CommonOptionsParser. This is expected to be used by
+  /// Init with \p CommonOptionsParser. This is expected to be used by
   /// `createExecutorFromCommandLineArgs` based on commandline options.
   ///
   /// The executor takes ownership of \p Options.
Index: cfe/trunk/include/clang/Tooling/ArgumentsAdjusters.h
===================================================================
--- cfe/trunk/include/clang/Tooling/ArgumentsAdjusters.h
+++ cfe/trunk/include/clang/Tooling/ArgumentsAdjusters.h
@@ -26,42 +26,42 @@
 namespace clang {
 namespace tooling {
 
-/// \brief A sequence of command line arguments.
+/// A sequence of command line arguments.
 using CommandLineArguments = std::vector<std::string>;
 
-/// \brief A prototype of a command line adjuster.
+/// A prototype of a command line adjuster.
 ///
 /// Command line argument adjuster is responsible for command line arguments
 /// modification before the arguments are used to run a frontend action.
 using ArgumentsAdjuster = std::function<CommandLineArguments(
     const CommandLineArguments &, StringRef Filename)>;
 
-/// \brief Gets an argument adjuster that converts input command line arguments
+/// Gets an argument adjuster that converts input command line arguments
 /// to the "syntax check only" variant.
 ArgumentsAdjuster getClangSyntaxOnlyAdjuster();
 
-/// \brief Gets an argument adjuster which removes output-related command line
+/// Gets an argument adjuster which removes output-related command line
 /// arguments.
 ArgumentsAdjuster getClangStripOutputAdjuster();
 
-/// \brief Gets an argument adjuster which removes dependency-file
+/// Gets an argument adjuster which removes dependency-file
 /// related command line arguments.
 ArgumentsAdjuster getClangStripDependencyFileAdjuster();
 
 enum class ArgumentInsertPosition { BEGIN, END };
 
-/// \brief Gets an argument adjuster which inserts \p Extra arguments in the
+/// Gets an argument adjuster which inserts \p Extra arguments in the
 /// specified position.
 ArgumentsAdjuster getInsertArgumentAdjuster(const CommandLineArguments &Extra,
                                             ArgumentInsertPosition Pos);
 
-/// \brief Gets an argument adjuster which inserts an \p Extra argument in the
+/// Gets an argument adjuster which inserts an \p Extra argument in the
 /// specified position.
 ArgumentsAdjuster getInsertArgumentAdjuster(
     const char *Extra,
     ArgumentInsertPosition Pos = ArgumentInsertPosition::END);
 
-/// \brief Gets an argument adjuster which adjusts the arguments in sequence
+/// Gets an argument adjuster which adjusts the arguments in sequence
 /// with the \p First adjuster and then with the \p Second one.
 ArgumentsAdjuster combineAdjusters(ArgumentsAdjuster First,
                                    ArgumentsAdjuster Second);
Index: cfe/trunk/include/clang/Tooling/CommonOptionsParser.h
===================================================================
--- cfe/trunk/include/clang/Tooling/CommonOptionsParser.h
+++ cfe/trunk/include/clang/Tooling/CommonOptionsParser.h
@@ -34,7 +34,7 @@
 
 namespace clang {
 namespace tooling {
-/// \brief A parser for options common to all command-line Clang tools.
+/// A parser for options common to all command-line Clang tools.
 ///
 /// Parses a common subset of command-line arguments, locates and loads a
 /// compilation commands database and runs a tool with user-specified action. It
@@ -65,7 +65,7 @@
 /// \endcode
 class CommonOptionsParser {
 public:
-  /// \brief Parses command-line, initializes a compilation database.
+  /// Parses command-line, initializes a compilation database.
   ///
   /// This constructor can change argc and argv contents, e.g. consume
   /// command-line options used for creating FixedCompilationDatabase.
@@ -79,7 +79,7 @@
       : CommonOptionsParser(argc, argv, Category, llvm::cl::OneOrMore,
                             Overview) {}
 
-  /// \brief Parses command-line, initializes a compilation database.
+  /// Parses command-line, initializes a compilation database.
   ///
   /// This constructor can change argc and argv contents, e.g. consume
   /// command-line options used for creating FixedCompilationDatabase.
@@ -92,7 +92,7 @@
                       llvm::cl::NumOccurrencesFlag OccurrencesFlag,
                       const char *Overview = nullptr);
 
-  /// \brief A factory method that is similar to the above constructor, except
+  /// A factory method that is similar to the above constructor, except
   /// this returns an error instead exiting the program on error.
   static llvm::Expected<CommonOptionsParser>
   create(int &argc, const char **argv, llvm::cl::OptionCategory &Category,
Index: cfe/trunk/include/clang/Tooling/CompilationDatabase.h
===================================================================
--- cfe/trunk/include/clang/Tooling/CompilationDatabase.h
+++ cfe/trunk/include/clang/Tooling/CompilationDatabase.h
@@ -40,7 +40,7 @@
 namespace clang {
 namespace tooling {
 
-/// \brief Specifies the working directory and command of a compilation.
+/// Specifies the working directory and command of a compilation.
 struct CompileCommand {
   CompileCommand() = default;
   CompileCommand(Twine Directory, Twine Filename,
@@ -48,20 +48,20 @@
       : Directory(Directory.str()), Filename(Filename.str()),
         CommandLine(std::move(CommandLine)), Output(Output.str()){}
 
-  /// \brief The working directory the command was executed from.
+  /// The working directory the command was executed from.
   std::string Directory;
 
   /// The source file associated with the command.
   std::string Filename;
 
-  /// \brief The command line that was executed.
+  /// The command line that was executed.
   std::vector<std::string> CommandLine;
 
   /// The output file associated with the command.
   std::string Output;
 };
 
-/// \brief Interface for compilation databases.
+/// Interface for compilation databases.
 ///
 /// A compilation database allows the user to retrieve compile command lines
 /// for the files in a project.
@@ -73,7 +73,7 @@
 public:
   virtual ~CompilationDatabase();
 
-  /// \brief Loads a compilation database from a build directory.
+  /// Loads a compilation database from a build directory.
   ///
   /// Looks at the specified 'BuildDirectory' and creates a compilation database
   /// that allows to query compile commands for source files in the
@@ -88,21 +88,21 @@
   static std::unique_ptr<CompilationDatabase>
   loadFromDirectory(StringRef BuildDirectory, std::string &ErrorMessage);
 
-  /// \brief Tries to detect a compilation database location and load it.
+  /// Tries to detect a compilation database location and load it.
   ///
   /// Looks for a compilation database in all parent paths of file 'SourceFile'
   /// by calling loadFromDirectory.
   static std::unique_ptr<CompilationDatabase>
   autoDetectFromSource(StringRef SourceFile, std::string &ErrorMessage);
 
-  /// \brief Tries to detect a compilation database location and load it.
+  /// Tries to detect a compilation database location and load it.
   ///
   /// Looks for a compilation database in directory 'SourceDir' and all
   /// its parent paths by calling loadFromDirectory.
   static std::unique_ptr<CompilationDatabase>
   autoDetectFromDirectory(StringRef SourceDir, std::string &ErrorMessage);
 
-  /// \brief Returns all compile commands in which the specified file was
+  /// Returns all compile commands in which the specified file was
   /// compiled.
   ///
   /// This includes compile commands that span multiple source files.
@@ -114,13 +114,13 @@
   virtual std::vector<CompileCommand> getCompileCommands(
       StringRef FilePath) const = 0;
 
-  /// \brief Returns the list of all files available in the compilation database.
+  /// Returns the list of all files available in the compilation database.
   ///
   /// By default, returns nothing. Implementations should override this if they
   /// can enumerate their source files.
   virtual std::vector<std::string> getAllFiles() const { return {}; }
 
-  /// \brief Returns all compile commands for all the files in the compilation
+  /// Returns all compile commands for all the files in the compilation
   /// database.
   ///
   /// FIXME: Add a layer in Tooling that provides an interface to run a tool
@@ -132,7 +132,7 @@
   virtual std::vector<CompileCommand> getAllCompileCommands() const;
 };
 
-/// \brief Interface for compilation database plugins.
+/// Interface for compilation database plugins.
 ///
 /// A compilation database plugin allows the user to register custom compilation
 /// databases that are picked up as compilation database if the corresponding
@@ -146,20 +146,20 @@
 public:
   virtual ~CompilationDatabasePlugin();
 
-  /// \brief Loads a compilation database from a build directory.
+  /// Loads a compilation database from a build directory.
   ///
   /// \see CompilationDatabase::loadFromDirectory().
   virtual std::unique_ptr<CompilationDatabase>
   loadFromDirectory(StringRef Directory, std::string &ErrorMessage) = 0;
 };
 
-/// \brief A compilation database that returns a single compile command line.
+/// A compilation database that returns a single compile command line.
 ///
 /// Useful when we want a tool to behave more like a compiler invocation.
 /// This compilation database is not enumerable: getAllFiles() returns {}.
 class FixedCompilationDatabase : public CompilationDatabase {
 public:
-  /// \brief Creates a FixedCompilationDatabase from the arguments after "--".
+  /// Creates a FixedCompilationDatabase from the arguments after "--".
   ///
   /// Parses the given command line for "--". If "--" is found, the rest of
   /// the arguments will make up the command line in the returned
@@ -195,11 +195,11 @@
   static std::unique_ptr<FixedCompilationDatabase>
   loadFromFile(StringRef Path, std::string &ErrorMsg);
 
-  /// \brief Constructs a compilation data base from a specified directory
+  /// Constructs a compilation data base from a specified directory
   /// and command line.
   FixedCompilationDatabase(Twine Directory, ArrayRef<std::string> CommandLine);
 
-  /// \brief Returns the given compile command.
+  /// Returns the given compile command.
   ///
   /// Will always return a vector with one entry that contains the directory
   /// and command line specified at construction with "clang-tool" as argv[0]
Index: cfe/trunk/include/clang/Tooling/Core/Diagnostic.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Core/Diagnostic.h
+++ cfe/trunk/include/clang/Tooling/Core/Diagnostic.h
@@ -27,12 +27,12 @@
 namespace clang {
 namespace tooling {
 
-/// \brief Represents the diagnostic message with the error message associated
+/// Represents the diagnostic message with the error message associated
 /// and the information on the location of the problem.
 struct DiagnosticMessage {
   DiagnosticMessage(llvm::StringRef Message = "");
 
-  /// \brief Constructs a diagnostic message with anoffset to the diagnostic
+  /// Constructs a diagnostic message with anoffset to the diagnostic
   /// within the file where the problem occurred.
   ///
   /// \param Loc Should be a file location, it is not meaningful for a macro
@@ -45,7 +45,7 @@
   unsigned FileOffset;
 };
 
-/// \brief Represents the diagnostic with the level of severity and possible
+/// Represents the diagnostic with the level of severity and possible
 /// fixes to be applied.
 struct Diagnostic {
   enum Level {
@@ -63,22 +63,22 @@
              const SmallVector<DiagnosticMessage, 1> &Notes, Level DiagLevel,
              llvm::StringRef BuildDirectory);
 
-  /// \brief Name identifying the Diagnostic.
+  /// Name identifying the Diagnostic.
   std::string DiagnosticName;
 
-  /// \brief Message associated to the diagnostic.
+  /// Message associated to the diagnostic.
   DiagnosticMessage Message;
 
-  /// \brief Fixes to apply, grouped by file path.
+  /// Fixes to apply, grouped by file path.
   llvm::StringMap<Replacements> Fix;
 
-  /// \brief Potential notes about the diagnostic.
+  /// Potential notes about the diagnostic.
   SmallVector<DiagnosticMessage, 1> Notes;
 
-  /// \brief Diagnostic level. Can indicate either an error or a warning.
+  /// Diagnostic level. Can indicate either an error or a warning.
   Level DiagLevel;
 
-  /// \brief A build directory of the diagnostic source file.
+  /// A build directory of the diagnostic source file.
   ///
   /// It's an absolute path which is `directory` field of the source file in
   /// compilation database. If users don't specify the compilation database
@@ -88,7 +88,7 @@
   std::string BuildDirectory;
 };
 
-/// \brief Collection of Diagnostics generated from a single translation unit.
+/// Collection of Diagnostics generated from a single translation unit.
 struct TranslationUnitDiagnostics {
   /// Name of the main source for the translation unit.
   std::string MainSourceFile;
Index: cfe/trunk/include/clang/Tooling/Core/Replacement.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Core/Replacement.h
+++ cfe/trunk/include/clang/Tooling/Core/Replacement.h
@@ -41,13 +41,13 @@
 
 namespace tooling {
 
-/// \brief A source range independent of the \c SourceManager.
+/// A source range independent of the \c SourceManager.
 class Range {
 public:
   Range() = default;
   Range(unsigned Offset, unsigned Length) : Offset(Offset), Length(Length) {}
 
-  /// \brief Accessors.
+  /// Accessors.
   /// @{
   unsigned getOffset() const { return Offset; }
   unsigned getLength() const { return Length; }
@@ -55,18 +55,18 @@
 
   /// \name Range Predicates
   /// @{
-  /// \brief Whether this range overlaps with \p RHS or not.
+  /// Whether this range overlaps with \p RHS or not.
   bool overlapsWith(Range RHS) const {
     return Offset + Length > RHS.Offset && Offset < RHS.Offset + RHS.Length;
   }
 
-  /// \brief Whether this range contains \p RHS or not.
+  /// Whether this range contains \p RHS or not.
   bool contains(Range RHS) const {
     return RHS.Offset >= Offset &&
            (RHS.Offset + RHS.Length) <= (Offset + Length);
   }
 
-  /// \brief Whether this range equals to \p RHS or not.
+  /// Whether this range equals to \p RHS or not.
   bool operator==(const Range &RHS) const {
     return Offset == RHS.getOffset() && Length == RHS.getLength();
   }
@@ -77,16 +77,16 @@
   unsigned Length = 0;
 };
 
-/// \brief A text replacement.
+/// A text replacement.
 ///
 /// Represents a SourceManager independent replacement of a range of text in a
 /// specific file.
 class Replacement {
 public:
-  /// \brief Creates an invalid (not applicable) replacement.
+  /// Creates an invalid (not applicable) replacement.
   Replacement();
 
-  /// \brief Creates a replacement of the range [Offset, Offset+Length) in
+  /// Creates a replacement of the range [Offset, Offset+Length) in
   /// FilePath with ReplacementText.
   ///
   /// \param FilePath A source file accessible via a SourceManager.
@@ -95,28 +95,28 @@
   Replacement(StringRef FilePath, unsigned Offset, unsigned Length,
               StringRef ReplacementText);
 
-  /// \brief Creates a Replacement of the range [Start, Start+Length) with
+  /// Creates a Replacement of the range [Start, Start+Length) with
   /// ReplacementText.
   Replacement(const SourceManager &Sources, SourceLocation Start,
               unsigned Length, StringRef ReplacementText);
 
-  /// \brief Creates a Replacement of the given range with ReplacementText.
+  /// Creates a Replacement of the given range with ReplacementText.
   Replacement(const SourceManager &Sources, const CharSourceRange &Range,
               StringRef ReplacementText,
               const LangOptions &LangOpts = LangOptions());
 
-  /// \brief Creates a Replacement of the node with ReplacementText.
+  /// Creates a Replacement of the node with ReplacementText.
   template <typename Node>
   Replacement(const SourceManager &Sources, const Node &NodeToReplace,
               StringRef ReplacementText,
               const LangOptions &LangOpts = LangOptions());
 
-  /// \brief Returns whether this replacement can be applied to a file.
+  /// Returns whether this replacement can be applied to a file.
   ///
   /// Only replacements that are in a valid file can be applied.
   bool isApplicable() const;
 
-  /// \brief Accessors.
+  /// Accessors.
   /// @{
   StringRef getFilePath() const { return FilePath; }
   unsigned getOffset() const { return ReplacementRange.getOffset(); }
@@ -124,10 +124,10 @@
   StringRef getReplacementText() const { return ReplacementText; }
   /// @}
 
-  /// \brief Applies the replacement on the Rewriter.
+  /// Applies the replacement on the Rewriter.
   bool apply(Rewriter &Rewrite) const;
 
-  /// \brief Returns a human readable string representation.
+  /// Returns a human readable string representation.
   std::string toString() const;
 
 private:
@@ -150,17 +150,17 @@
   insert_conflict,
 };
 
-/// \brief Carries extra error information in replacement-related llvm::Error,
+/// Carries extra error information in replacement-related llvm::Error,
 /// e.g. fail applying replacements and replacements conflict.
 class ReplacementError : public llvm::ErrorInfo<ReplacementError> {
 public:
   ReplacementError(replacement_error Err) : Err(Err) {}
 
-  /// \brief Constructs an error related to an existing replacement.
+  /// Constructs an error related to an existing replacement.
   ReplacementError(replacement_error Err, Replacement Existing)
       : Err(Err), ExistingReplacement(std::move(Existing)) {}
 
-  /// \brief Constructs an error related to a new replacement and an existing
+  /// Constructs an error related to a new replacement and an existing
   /// replacement in a set of replacements.
   ReplacementError(replacement_error Err, Replacement New, Replacement Existing)
       : Err(Err), NewReplacement(std::move(New)),
@@ -198,13 +198,13 @@
   llvm::Optional<Replacement> ExistingReplacement;
 };
 
-/// \brief Less-than operator between two Replacements.
+/// Less-than operator between two Replacements.
 bool operator<(const Replacement &LHS, const Replacement &RHS);
 
-/// \brief Equal-to operator between two Replacements.
+/// Equal-to operator between two Replacements.
 bool operator==(const Replacement &LHS, const Replacement &RHS);
 
-/// \brief Maintains a set of replacements that are conflict-free.
+/// Maintains a set of replacements that are conflict-free.
 /// Two replacements are considered conflicts if they overlap or have the same
 /// offset (i.e. order-dependent).
 class Replacements {
@@ -219,7 +219,7 @@
 
   explicit Replacements(const Replacement &R) { Replaces.insert(R); }
 
-  /// \brief Adds a new replacement \p R to the current set of replacements.
+  /// Adds a new replacement \p R to the current set of replacements.
   /// \p R must have the same file path as all existing replacements.
   /// Returns `success` if the replacement is successfully inserted; otherwise,
   /// it returns an llvm::Error, i.e. there is a conflict between R and the
@@ -258,7 +258,7 @@
   /// category of replacements.
   llvm::Error add(const Replacement &R);
 
-  /// \brief Merges \p Replaces into the current replacements. \p Replaces
+  /// Merges \p Replaces into the current replacements. \p Replaces
   /// refers to code after applying the current replacements.
   LLVM_NODISCARD Replacements merge(const Replacements &Replaces) const;
 
@@ -311,7 +311,7 @@
   ReplacementsImpl Replaces;
 };
 
-/// \brief Apply all replacements in \p Replaces to the Rewriter \p Rewrite.
+/// Apply all replacements in \p Replaces to the Rewriter \p Rewrite.
 ///
 /// Replacement applications happen independently of the success of
 /// other applications.
@@ -319,7 +319,7 @@
 /// \returns true if all replacements apply. false otherwise.
 bool applyAllReplacements(const Replacements &Replaces, Rewriter &Rewrite);
 
-/// \brief Applies all replacements in \p Replaces to \p Code.
+/// Applies all replacements in \p Replaces to \p Code.
 ///
 /// This completely ignores the path stored in each replacement. If all
 /// replacements are applied successfully, this returns the code with
@@ -329,7 +329,7 @@
 llvm::Expected<std::string> applyAllReplacements(StringRef Code,
                                                  const Replacements &Replaces);
 
-/// \brief Collection of Replacements generated from a single translation unit.
+/// Collection of Replacements generated from a single translation unit.
 struct TranslationUnitReplacements {
   /// Name of the main source for the translation unit.
   std::string MainSourceFile;
@@ -337,7 +337,7 @@
   std::vector<Replacement> Replacements;
 };
 
-/// \brief Calculates the new ranges after \p Replaces are applied. These
+/// Calculates the new ranges after \p Replaces are applied. These
 /// include both the original \p Ranges and the affected ranges of \p Replaces
 /// in the new code.
 ///
@@ -349,7 +349,7 @@
 calculateRangesAfterReplacements(const Replacements &Replaces,
                                  const std::vector<Range> &Ranges);
 
-/// \brief If there are multiple <File, Replacements> pairs with the same file
+/// If there are multiple <File, Replacements> pairs with the same file
 /// entry, we only keep one pair and discard the rest.
 /// If a file does not exist, its corresponding replacements will be ignored.
 std::map<std::string, Replacements> groupReplacementsByFile(
Index: cfe/trunk/include/clang/Tooling/DiagnosticsYaml.h
===================================================================
--- cfe/trunk/include/clang/Tooling/DiagnosticsYaml.h
+++ cfe/trunk/include/clang/Tooling/DiagnosticsYaml.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file defines the structure of a YAML document for serializing
+/// This file defines the structure of a YAML document for serializing
 /// diagnostics.
 ///
 //===----------------------------------------------------------------------===//
@@ -27,7 +27,7 @@
 namespace yaml {
 
 template <> struct MappingTraits<clang::tooling::Diagnostic> {
-  /// \brief Helper to (de)serialize a Diagnostic since we don't have direct
+  /// Helper to (de)serialize a Diagnostic since we don't have direct
   /// access to its data members.
   class NormalizedDiagnostic {
   public:
@@ -80,7 +80,7 @@
   }
 };
 
-/// \brief Specialized MappingTraits to describe how a
+/// Specialized MappingTraits to describe how a
 /// TranslationUnitDiagnostics is (de)serialized.
 template <> struct MappingTraits<clang::tooling::TranslationUnitDiagnostics> {
   static void mapping(IO &Io, clang::tooling::TranslationUnitDiagnostics &Doc) {
Index: cfe/trunk/include/clang/Tooling/Execution.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Execution.h
+++ cfe/trunk/include/clang/Tooling/Execution.h
@@ -37,7 +37,7 @@
 namespace clang {
 namespace tooling {
 
-/// \brief An abstraction for the result of a tool execution. For example, the
+/// An abstraction for the result of a tool execution. For example, the
 /// underlying result can be in-memory or on-disk.
 ///
 /// Results should be string key-value pairs. For example, a refactoring tool
@@ -52,7 +52,7 @@
       llvm::function_ref<void(StringRef Key, StringRef Value)> Callback) = 0;
 };
 
-/// \brief Stores the key-value results in memory. It maintains the lifetime of
+/// Stores the key-value results in memory. It maintains the lifetime of
 /// the result. Clang tools using this class are expected to generate a small
 /// set of different results, or a large set of duplicated results.
 class InMemoryToolResults : public ToolResults {
@@ -72,16 +72,16 @@
   std::vector<std::pair<llvm::StringRef, llvm::StringRef>> KVResults;
 };
 
-/// \brief The context of an execution, including the information about
+/// The context of an execution, including the information about
 /// compilation and results.
 class ExecutionContext {
 public:
   virtual ~ExecutionContext() {}
 
-  /// \brief Initializes a context. This does not take ownership of `Results`.
+  /// Initializes a context. This does not take ownership of `Results`.
   explicit ExecutionContext(ToolResults *Results) : Results(Results) {}
 
-  /// \brief Adds a KV pair to the result container of this execution.
+  /// Adds a KV pair to the result container of this execution.
   void reportResult(StringRef Key, StringRef Value);
 
   // Returns the source control system's revision number if applicable.
@@ -99,7 +99,7 @@
   ToolResults *Results;
 };
 
-/// \brief Interface for executing clang frontend actions.
+/// Interface for executing clang frontend actions.
 ///
 /// This can be extended to support running tool actions in different
 /// execution mode, e.g. on a specific set of TUs or many TUs in parallel.
@@ -112,54 +112,54 @@
 public:
   virtual ~ToolExecutor() {}
 
-  /// \brief Returns the name of a specific executor.
+  /// Returns the name of a specific executor.
   virtual StringRef getExecutorName() const = 0;
 
-  /// \brief Executes each action with a corresponding arguments adjuster.
+  /// Executes each action with a corresponding arguments adjuster.
   virtual llvm::Error
   execute(llvm::ArrayRef<
           std::pair<std::unique_ptr<FrontendActionFactory>, ArgumentsAdjuster>>
               Actions) = 0;
 
-  /// \brief Convenient functions for the above `execute`.
+  /// Convenient functions for the above `execute`.
   llvm::Error execute(std::unique_ptr<FrontendActionFactory> Action);
   /// Executes an action with an argument adjuster.
   llvm::Error execute(std::unique_ptr<FrontendActionFactory> Action,
                       ArgumentsAdjuster Adjuster);
 
-  /// \brief Returns a reference to the execution context.
+  /// Returns a reference to the execution context.
   ///
   /// This should be passed to tool callbacks, and tool callbacks should report
   /// results via the returned context.
   virtual ExecutionContext *getExecutionContext() = 0;
 
-  /// \brief Returns a reference to the result container.
+  /// Returns a reference to the result container.
   ///
   /// NOTE: This should only be used after the execution finishes. Tool
   /// callbacks should report results via `ExecutionContext` instead.
   virtual ToolResults *getToolResults() = 0;
 
-  /// \brief Map a virtual file to be used while running the tool.
+  /// Map a virtual file to be used while running the tool.
   ///
   /// \param FilePath The path at which the content will be mapped.
   /// \param Content A buffer of the file's content.
   virtual void mapVirtualFile(StringRef FilePath, StringRef Content) = 0;
 };
 
-/// \brief Interface for factories that create specific executors. This is also
+/// Interface for factories that create specific executors. This is also
 /// used as a plugin to be registered into ToolExecutorPluginRegistry.
 class ToolExecutorPlugin {
 public:
   virtual ~ToolExecutorPlugin() {}
 
-  /// \brief Create an `ToolExecutor`.
+  /// Create an `ToolExecutor`.
   ///
   /// `OptionsParser` can be consumed (e.g. moved) if the creation succeeds.
   virtual llvm::Expected<std::unique_ptr<ToolExecutor>>
   create(CommonOptionsParser &OptionsParser) = 0;
 };
 
-/// \brief This creates a ToolExecutor that is in the global registry based on
+/// This creates a ToolExecutor that is in the global registry based on
 /// commandline arguments.
 ///
 /// This picks the right executor based on the `--executor` option. This parses
Index: cfe/trunk/include/clang/Tooling/FileMatchTrie.h
===================================================================
--- cfe/trunk/include/clang/Tooling/FileMatchTrie.h
+++ cfe/trunk/include/clang/Tooling/FileMatchTrie.h
@@ -30,7 +30,7 @@
   virtual bool equivalent(StringRef FileA, StringRef FileB) const = 0;
 };
 
-/// \brief A trie to efficiently match against the entries of the compilation
+/// A trie to efficiently match against the entries of the compilation
 /// database in order of matching suffix length.
 ///
 /// When a clang tool is supposed to operate on a specific file, we have to
@@ -58,17 +58,17 @@
 public:
   FileMatchTrie();
 
-  /// \brief Construct a new \c FileMatchTrie with the given \c PathComparator.
+  /// Construct a new \c FileMatchTrie with the given \c PathComparator.
   ///
   /// The \c FileMatchTrie takes ownership of 'Comparator'. Used for testing.
   FileMatchTrie(PathComparator* Comparator);
 
   ~FileMatchTrie();
 
-  /// \brief Insert a new absolute path. Relative paths are ignored.
+  /// Insert a new absolute path. Relative paths are ignored.
   void insert(StringRef NewPath);
 
-  /// \brief Finds the corresponding file in this trie.
+  /// Finds the corresponding file in this trie.
   ///
   /// Returns file name stored in this trie that is equivalent to 'FileName'
   /// according to 'Comparator', if it can be uniquely identified. If there
Index: cfe/trunk/include/clang/Tooling/FixIt.h
===================================================================
--- cfe/trunk/include/clang/Tooling/FixIt.h
+++ cfe/trunk/include/clang/Tooling/FixIt.h
@@ -29,35 +29,35 @@
 namespace internal {
 StringRef getText(SourceRange Range, const ASTContext &Context);
 
-/// \brief Returns the SourceRange of a SourceRange. This identity function is
+/// Returns the SourceRange of a SourceRange. This identity function is
 ///        used by the following template abstractions.
 inline SourceRange getSourceRange(const SourceRange &Range) { return Range; }
 
-/// \brief Returns the SourceRange of the token at Location \p Loc.
+/// Returns the SourceRange of the token at Location \p Loc.
 inline SourceRange getSourceRange(const SourceLocation &Loc) {
   return SourceRange(Loc);
 }
 
-/// \brief Returns the SourceRange of an given Node. \p Node is typically a
+/// Returns the SourceRange of an given Node. \p Node is typically a
 ///        'Stmt', 'Expr' or a 'Decl'.
 template <typename T> SourceRange getSourceRange(const T &Node) {
   return Node.getSourceRange();
 }
 } // end namespace internal
 
-// \brief Returns a textual representation of \p Node.
+// Returns a textual representation of \p Node.
 template <typename T>
 StringRef getText(const T &Node, const ASTContext &Context) {
   return internal::getText(internal::getSourceRange(Node), Context);
 }
 
-// \brief Returns a FixItHint to remove \p Node.
+// Returns a FixItHint to remove \p Node.
 // TODO: Add support for related syntactical elements (i.e. comments, ...).
 template <typename T> FixItHint createRemoval(const T &Node) {
   return FixItHint::CreateRemoval(internal::getSourceRange(Node));
 }
 
-// \brief Returns a FixItHint to replace \p Destination by \p Source.
+// Returns a FixItHint to replace \p Destination by \p Source.
 template <typename D, typename S>
 FixItHint createReplacement(const D &Destination, const S &Source,
                                    const ASTContext &Context) {
@@ -65,7 +65,7 @@
                                       getText(Source, Context));
 }
 
-// \brief Returns a FixItHint to replace \p Destination by \p Source.
+// Returns a FixItHint to replace \p Destination by \p Source.
 template <typename D>
 FixItHint createReplacement(const D &Destination, StringRef Source) {
   return FixItHint::CreateReplacement(internal::getSourceRange(Destination),
Index: cfe/trunk/include/clang/Tooling/JSONCompilationDatabase.h
===================================================================
--- cfe/trunk/include/clang/Tooling/JSONCompilationDatabase.h
+++ cfe/trunk/include/clang/Tooling/JSONCompilationDatabase.h
@@ -33,7 +33,7 @@
 namespace clang {
 namespace tooling {
 
-/// \brief A JSON based compilation database.
+/// A JSON based compilation database.
 ///
 /// JSON compilation database files must contain a list of JSON objects which
 /// provide the command lines in the attributes 'directory', 'command',
@@ -61,7 +61,7 @@
 enum class JSONCommandLineSyntax { Windows, Gnu, AutoDetect };
 class JSONCompilationDatabase : public CompilationDatabase {
 public:
-  /// \brief Loads a JSON compilation database from the specified file.
+  /// Loads a JSON compilation database from the specified file.
   ///
   /// Returns NULL and sets ErrorMessage if the database could not be
   /// loaded from the given file.
@@ -69,14 +69,14 @@
   loadFromFile(StringRef FilePath, std::string &ErrorMessage,
                JSONCommandLineSyntax Syntax);
 
-  /// \brief Loads a JSON compilation database from a data buffer.
+  /// Loads a JSON compilation database from a data buffer.
   ///
   /// Returns NULL and sets ErrorMessage if the database could not be loaded.
   static std::unique_ptr<JSONCompilationDatabase>
   loadFromBuffer(StringRef DatabaseString, std::string &ErrorMessage,
                  JSONCommandLineSyntax Syntax);
 
-  /// \brief Returns all compile commands in which the specified file was
+  /// Returns all compile commands in which the specified file was
   /// compiled.
   ///
   /// FIXME: Currently FilePath must be an absolute path inside the
@@ -84,23 +84,23 @@
   std::vector<CompileCommand>
   getCompileCommands(StringRef FilePath) const override;
 
-  /// \brief Returns the list of all files available in the compilation database.
+  /// Returns the list of all files available in the compilation database.
   ///
   /// These are the 'file' entries of the JSON objects.
   std::vector<std::string> getAllFiles() const override;
 
-  /// \brief Returns all compile commands for all the files in the compilation
+  /// Returns all compile commands for all the files in the compilation
   /// database.
   std::vector<CompileCommand> getAllCompileCommands() const override;
 
 private:
-  /// \brief Constructs a JSON compilation database on a memory buffer.
+  /// Constructs a JSON compilation database on a memory buffer.
   JSONCompilationDatabase(std::unique_ptr<llvm::MemoryBuffer> Database,
                           JSONCommandLineSyntax Syntax)
       : Database(std::move(Database)), Syntax(Syntax),
         YAMLStream(this->Database->getBuffer(), SM) {}
 
-  /// \brief Parses the database file and creates the index.
+  /// Parses the database file and creates the index.
   ///
   /// Returns whether parsing succeeded. Sets ErrorMessage if parsing
   /// failed.
@@ -118,7 +118,7 @@
                  std::vector<llvm::yaml::ScalarNode *>,
                  llvm::yaml::ScalarNode *>;
 
-  /// \brief Converts the given array of CompileCommandRefs to CompileCommands.
+  /// Converts the given array of CompileCommandRefs to CompileCommands.
   void getCommands(ArrayRef<CompileCommandRef> CommandsRef,
                    std::vector<CompileCommand> &Commands) const;
 
Index: cfe/trunk/include/clang/Tooling/Refactoring.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Refactoring.h
+++ cfe/trunk/include/clang/Tooling/Refactoring.h
@@ -30,7 +30,7 @@
 
 namespace tooling {
 
-/// \brief A tool to run refactorings.
+/// A tool to run refactorings.
 ///
 /// This is a refactoring specific version of \see ClangTool. FrontendActions
 /// passed to run() and runAndSave() should add replacements to
@@ -43,17 +43,17 @@
                   std::shared_ptr<PCHContainerOperations> PCHContainerOps =
                       std::make_shared<PCHContainerOperations>());
 
-  /// \brief Returns the file path to replacements map to which replacements
+  /// Returns the file path to replacements map to which replacements
   /// should be added during the run of the tool.
   std::map<std::string, Replacements> &getReplacements();
 
-  /// \brief Call run(), apply all generated replacements, and immediately save
+  /// Call run(), apply all generated replacements, and immediately save
   /// the results to disk.
   ///
   /// \returns 0 upon success. Non-zero upon failure.
   int runAndSave(FrontendActionFactory *ActionFactory);
 
-  /// \brief Apply all stored replacements to the given Rewriter.
+  /// Apply all stored replacements to the given Rewriter.
   ///
   /// FileToReplaces will be deduplicated with `groupReplacementsByFile` before
   /// application.
@@ -65,14 +65,14 @@
   bool applyAllReplacements(Rewriter &Rewrite);
 
 private:
-  /// \brief Write all refactored files to disk.
+  /// Write all refactored files to disk.
   int saveRewrittenFiles(Rewriter &Rewrite);
 
 private:
   std::map<std::string, Replacements> FileToReplaces;
 };
 
-/// \brief Groups \p Replaces by the file path and applies each group of
+/// Groups \p Replaces by the file path and applies each group of
 /// Replacements on the related file in \p Rewriter. In addition to applying
 /// given Replacements, this function also formats the changed code.
 ///
Index: cfe/trunk/include/clang/Tooling/Refactoring/AtomicChange.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Refactoring/AtomicChange.h
+++ cfe/trunk/include/clang/Tooling/Refactoring/AtomicChange.h
@@ -24,7 +24,7 @@
 namespace clang {
 namespace tooling {
 
-/// \brief An atomic change is used to create and group a set of source edits,
+/// An atomic change is used to create and group a set of source edits,
 /// e.g. replacements or header insertions. Edits in an AtomicChange should be
 /// related, e.g. replacements for the same type reference and the corresponding
 /// header insertion/deletion.
@@ -36,13 +36,13 @@
 /// bad, i.e. none of its source edits will be applied.
 class AtomicChange {
 public:
-  /// \brief Creates an atomic change around \p KeyPosition with the key being a
+  /// Creates an atomic change around \p KeyPosition with the key being a
   /// concatenation of the file name and the offset of \p KeyPosition.
   /// \p KeyPosition should be the location of the key syntactical element that
   /// is being changed, e.g. the call to a refactored method.
   AtomicChange(const SourceManager &SM, SourceLocation KeyPosition);
 
-  /// \brief Creates an atomic change for \p FilePath with a customized key.
+  /// Creates an atomic change for \p FilePath with a customized key.
   AtomicChange(llvm::StringRef FilePath, llvm::StringRef Key)
       : Key(Key), FilePath(FilePath) {}
 
@@ -54,44 +54,44 @@
 
   bool operator==(const AtomicChange &Other) const;
 
-  /// \brief Returns the atomic change as a YAML string.
+  /// Returns the atomic change as a YAML string.
   std::string toYAMLString();
 
-  /// \brief Converts a YAML-encoded automic change to AtomicChange.
+  /// Converts a YAML-encoded automic change to AtomicChange.
   static AtomicChange convertFromYAML(llvm::StringRef YAMLContent);
 
-  /// \brief Returns the key of this change, which is a concatenation of the
+  /// Returns the key of this change, which is a concatenation of the
   /// file name and offset of the key position.
   const std::string &getKey() const { return Key; }
 
-  /// \brief Returns the path of the file containing this atomic change.
+  /// Returns the path of the file containing this atomic change.
   const std::string &getFilePath() const { return FilePath; }
 
-  /// \brief If this change could not be created successfully, e.g. because of
+  /// If this change could not be created successfully, e.g. because of
   /// conflicts among replacements, use this to set an error description.
   /// Thereby, places that cannot be fixed automatically can be gathered when
   /// applying changes.
   void setError(llvm::StringRef Error) { this->Error = Error; }
 
-  /// \brief Returns whether an error has been set on this list.
+  /// Returns whether an error has been set on this list.
   bool hasError() const { return !Error.empty(); }
 
-  /// \brief Returns the error message or an empty string if it does not exist.
+  /// Returns the error message or an empty string if it does not exist.
   const std::string &getError() const { return Error; }
 
-  /// \brief Adds a replacement that replaces the given Range with
+  /// Adds a replacement that replaces the given Range with
   /// ReplacementText.
   /// \returns An llvm::Error carrying ReplacementError on error.
   llvm::Error replace(const SourceManager &SM, const CharSourceRange &Range,
                       llvm::StringRef ReplacementText);
 
-  /// \brief Adds a replacement that replaces range [Loc, Loc+Length) with
+  /// Adds a replacement that replaces range [Loc, Loc+Length) with
   /// \p Text.
   /// \returns An llvm::Error carrying ReplacementError on error.
   llvm::Error replace(const SourceManager &SM, SourceLocation Loc,
                       unsigned Length, llvm::StringRef Text);
 
-  /// \brief Adds a replacement that inserts \p Text at \p Loc. If this
+  /// Adds a replacement that inserts \p Text at \p Loc. If this
   /// insertion conflicts with an existing insertion (at the same position),
   /// this will be inserted before/after the existing insertion depending on
   /// \p InsertAfter. Users should use `replace` with `Length=0` instead if they
@@ -102,15 +102,15 @@
   llvm::Error insert(const SourceManager &SM, SourceLocation Loc,
                      llvm::StringRef Text, bool InsertAfter = true);
 
-  /// \brief Adds a header into the file that contains the key position.
+  /// Adds a header into the file that contains the key position.
   /// Header can be in angle brackets or double quotation marks. By default
   /// (header is not quoted), header will be surrounded with double quotes.
   void addHeader(llvm::StringRef Header);
 
-  /// \brief Removes a header from the file that contains the key position.
+  /// Removes a header from the file that contains the key position.
   void removeHeader(llvm::StringRef Header);
 
-  /// \brief Returns a const reference to existing replacements.
+  /// Returns a const reference to existing replacements.
   const Replacements &getReplacements() const { return Replaces; }
 
   llvm::ArrayRef<std::string> getInsertedHeaders() const {
@@ -158,7 +158,7 @@
   FormatOption Format = kNone;
 };
 
-/// \brief Applies all AtomicChanges in \p Changes to the \p Code.
+/// Applies all AtomicChanges in \p Changes to the \p Code.
 ///
 /// This completely ignores the file path in each change and replaces them with
 /// \p FilePath, i.e. callers are responsible for ensuring all changes are for
Index: cfe/trunk/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h
+++ cfe/trunk/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief A wrapper class around \c RecursiveASTVisitor that visits each
+/// A wrapper class around \c RecursiveASTVisitor that visits each
 /// occurrences of a named symbol.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/include/clang/Tooling/Refactoring/Rename/RenamingAction.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Refactoring/Rename/RenamingAction.h
+++ cfe/trunk/include/clang/Tooling/Refactoring/Rename/RenamingAction.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Provides an action to rename every symbol at a point.
+/// Provides an action to rename every symbol at a point.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/include/clang/Tooling/Refactoring/Rename/USRFinder.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Refactoring/Rename/USRFinder.h
+++ cfe/trunk/include/clang/Tooling/Refactoring/Rename/USRFinder.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Methods for determining the USR of a symbol at a location in source
+/// Methods for determining the USR of a symbol at a location in source
 /// code.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/include/clang/Tooling/Refactoring/Rename/USRFindingAction.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Refactoring/Rename/USRFindingAction.h
+++ cfe/trunk/include/clang/Tooling/Refactoring/Rename/USRFindingAction.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Provides an action to find all relevant USRs at a point.
+/// Provides an action to find all relevant USRs at a point.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/include/clang/Tooling/Refactoring/Rename/USRLocFinder.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Refactoring/Rename/USRLocFinder.h
+++ cfe/trunk/include/clang/Tooling/Refactoring/Rename/USRLocFinder.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Provides functionality for finding all instances of a USR in a given
+/// Provides functionality for finding all instances of a USR in a given
 /// AST.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/include/clang/Tooling/RefactoringCallbacks.h
===================================================================
--- cfe/trunk/include/clang/Tooling/RefactoringCallbacks.h
+++ cfe/trunk/include/clang/Tooling/RefactoringCallbacks.h
@@ -35,7 +35,7 @@
 namespace clang {
 namespace tooling {
 
-/// \brief Base class for RefactoringCallbacks.
+/// Base class for RefactoringCallbacks.
 ///
 /// Collects \c tooling::Replacements while running.
 class RefactoringCallback : public ast_matchers::MatchFinder::MatchCallback {
@@ -47,7 +47,7 @@
   Replacements Replace;
 };
 
-/// \brief Adaptor between \c ast_matchers::MatchFinder and \c
+/// Adaptor between \c ast_matchers::MatchFinder and \c
 /// tooling::RefactoringTool.
 ///
 /// Runs AST matchers and stores the \c tooling::Replacements in a map.
@@ -74,7 +74,7 @@
   std::map<std::string, Replacements> &FileToReplaces;
 };
 
-/// \brief Replace the text of the statement bound to \c FromId with the text in
+/// Replace the text of the statement bound to \c FromId with the text in
 /// \c ToText.
 class ReplaceStmtWithText : public RefactoringCallback {
 public:
@@ -86,7 +86,7 @@
   std::string ToText;
 };
 
-/// \brief Replace the text of an AST node bound to \c FromId with the result of
+/// Replace the text of an AST node bound to \c FromId with the result of
 /// evaluating the template in \c ToTemplate.
 ///
 /// Expressions of the form ${NodeName} in \c ToTemplate will be
@@ -109,7 +109,7 @@
   std::vector<TemplateElement> Template;
 };
 
-/// \brief Replace the text of the statement bound to \c FromId with the text of
+/// Replace the text of the statement bound to \c FromId with the text of
 /// the statement bound to \c ToId.
 class ReplaceStmtWithStmt : public RefactoringCallback {
 public:
@@ -121,7 +121,7 @@
   std::string ToId;
 };
 
-/// \brief Replace an if-statement bound to \c Id with the outdented text of its
+/// Replace an if-statement bound to \c Id with the outdented text of its
 /// body, choosing the consequent or the alternative based on whether
 /// \c PickTrueBranch is true.
 class ReplaceIfStmtWithItsBody : public RefactoringCallback {
Index: cfe/trunk/include/clang/Tooling/ReplacementsYaml.h
===================================================================
--- cfe/trunk/include/clang/Tooling/ReplacementsYaml.h
+++ cfe/trunk/include/clang/Tooling/ReplacementsYaml.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file defines the structure of a YAML document for serializing
+/// This file defines the structure of a YAML document for serializing
 /// replacements.
 ///
 //===----------------------------------------------------------------------===//
@@ -25,10 +25,10 @@
 namespace llvm {
 namespace yaml {
 
-/// \brief Specialized MappingTraits to describe how a Replacement is
+/// Specialized MappingTraits to describe how a Replacement is
 /// (de)serialized.
 template <> struct MappingTraits<clang::tooling::Replacement> {
-  /// \brief Helper to (de)serialize a Replacement since we don't have direct
+  /// Helper to (de)serialize a Replacement since we don't have direct
   /// access to its data members.
   struct NormalizedReplacement {
     NormalizedReplacement(const IO &)
@@ -59,7 +59,7 @@
   }
 };
 
-/// \brief Specialized MappingTraits to describe how a
+/// Specialized MappingTraits to describe how a
 /// TranslationUnitReplacements is (de)serialized.
 template <> struct MappingTraits<clang::tooling::TranslationUnitReplacements> {
   static void mapping(IO &Io,
Index: cfe/trunk/include/clang/Tooling/StandaloneExecution.h
===================================================================
--- cfe/trunk/include/clang/Tooling/StandaloneExecution.h
+++ cfe/trunk/include/clang/Tooling/StandaloneExecution.h
@@ -20,7 +20,7 @@
 namespace clang {
 namespace tooling {
 
-/// \brief A standalone executor that runs FrontendActions on a given set of
+/// A standalone executor that runs FrontendActions on a given set of
 /// TUs in sequence.
 ///
 /// By default, this executor uses the following arguments adjusters (as defined
@@ -32,7 +32,7 @@
 public:
   static const char *ExecutorName;
 
-  /// \brief Init with \p CompilationDatabase and the paths of all files to be
+  /// Init with \p CompilationDatabase and the paths of all files to be
   /// proccessed.
   StandaloneToolExecutor(
       const CompilationDatabase &Compilations,
@@ -40,7 +40,7 @@
       std::shared_ptr<PCHContainerOperations> PCHContainerOps =
           std::make_shared<PCHContainerOperations>());
 
-  /// \brief Init with \p CommonOptionsParser. This is expected to be used by
+  /// Init with \p CommonOptionsParser. This is expected to be used by
   /// `createExecutorFromCommandLineArgs` based on commandline options.
   ///
   /// The executor takes ownership of \p Options.
@@ -58,7 +58,7 @@
           std::pair<std::unique_ptr<FrontendActionFactory>, ArgumentsAdjuster>>
               Actions) override;
 
-  /// \brief Set a \c DiagnosticConsumer to use during parsing.
+  /// Set a \c DiagnosticConsumer to use during parsing.
   void setDiagnosticConsumer(DiagnosticConsumer *DiagConsumer) {
     Tool.setDiagnosticConsumer(DiagConsumer);
   }
@@ -75,7 +75,7 @@
     Tool.mapVirtualFile(FilePath, Content);
   }
 
-  /// \brief Returns the file manager used in the tool.
+  /// Returns the file manager used in the tool.
   ///
   /// The file manager is shared between all translation units.
   FileManager &getFiles() { return Tool.getFiles(); }
Index: cfe/trunk/include/clang/Tooling/Tooling.h
===================================================================
--- cfe/trunk/include/clang/Tooling/Tooling.h
+++ cfe/trunk/include/clang/Tooling/Tooling.h
@@ -67,7 +67,7 @@
 
 class CompilationDatabase;
 
-/// \brief Interface to process a clang::CompilerInvocation.
+/// Interface to process a clang::CompilerInvocation.
 ///
 /// If your tool is based on FrontendAction, you should be deriving from
 /// FrontendActionFactory instead.
@@ -75,7 +75,7 @@
 public:
   virtual ~ToolAction();
 
-  /// \brief Perform an action for an invocation.
+  /// Perform an action for an invocation.
   virtual bool
   runInvocation(std::shared_ptr<CompilerInvocation> Invocation,
                 FileManager *Files,
@@ -83,7 +83,7 @@
                 DiagnosticConsumer *DiagConsumer) = 0;
 };
 
-/// \brief Interface to generate clang::FrontendActions.
+/// Interface to generate clang::FrontendActions.
 ///
 /// Having a factory interface allows, for example, a new FrontendAction to be
 /// created for each translation unit processed by ClangTool.  This class is
@@ -93,19 +93,19 @@
 public:
   ~FrontendActionFactory() override;
 
-  /// \brief Invokes the compiler with a FrontendAction created by create().
+  /// Invokes the compiler with a FrontendAction created by create().
   bool runInvocation(std::shared_ptr<CompilerInvocation> Invocation,
                      FileManager *Files,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
                      DiagnosticConsumer *DiagConsumer) override;
 
-  /// \brief Returns a new clang::FrontendAction.
+  /// Returns a new clang::FrontendAction.
   ///
   /// The caller takes ownership of the returned action.
   virtual FrontendAction *create() = 0;
 };
 
-/// \brief Returns a new FrontendActionFactory for a given type.
+/// Returns a new FrontendActionFactory for a given type.
 ///
 /// T must derive from clang::FrontendAction.
 ///
@@ -115,25 +115,25 @@
 template <typename T>
 std::unique_ptr<FrontendActionFactory> newFrontendActionFactory();
 
-/// \brief Callbacks called before and after each source file processed by a
+/// Callbacks called before and after each source file processed by a
 /// FrontendAction created by the FrontedActionFactory returned by \c
 /// newFrontendActionFactory.
 class SourceFileCallbacks {
 public:
   virtual ~SourceFileCallbacks() = default;
 
-  /// \brief Called before a source file is processed by a FrontEndAction.
+  /// Called before a source file is processed by a FrontEndAction.
   /// \see clang::FrontendAction::BeginSourceFileAction
   virtual bool handleBeginSource(CompilerInstance &CI) {
     return true;
   }
 
-  /// \brief Called after a source file is processed by a FrontendAction.
+  /// Called after a source file is processed by a FrontendAction.
   /// \see clang::FrontendAction::EndSourceFileAction
   virtual void handleEndSource() {}
 };
 
-/// \brief Returns a new FrontendActionFactory for any type that provides an
+/// Returns a new FrontendActionFactory for any type that provides an
 /// implementation of newASTConsumer().
 ///
 /// FactoryT must implement: ASTConsumer *newASTConsumer().
@@ -148,7 +148,7 @@
 inline std::unique_ptr<FrontendActionFactory> newFrontendActionFactory(
     FactoryT *ConsumerFactory, SourceFileCallbacks *Callbacks = nullptr);
 
-/// \brief Runs (and deletes) the tool on 'Code' with the -fsyntax-only flag.
+/// Runs (and deletes) the tool on 'Code' with the -fsyntax-only flag.
 ///
 /// \param ToolAction The action to run over the code.
 /// \param Code C++ code.
@@ -166,7 +166,7 @@
 /// file-content.
 using FileContentMappings = std::vector<std::pair<std::string, std::string>>;
 
-/// \brief Runs (and deletes) the tool on 'Code' with the -fsyntax-only flag and
+/// Runs (and deletes) the tool on 'Code' with the -fsyntax-only flag and
 ///        with additional other flags.
 ///
 /// \param ToolAction The action to run over the code.
@@ -187,7 +187,7 @@
         std::make_shared<PCHContainerOperations>(),
     const FileContentMappings &VirtualMappedFiles = FileContentMappings());
 
-/// \brief Builds an AST for 'Code'.
+/// Builds an AST for 'Code'.
 ///
 /// \param Code C++ code.
 /// \param FileName The file name which 'Code' will be mapped as.
@@ -200,7 +200,7 @@
                  std::shared_ptr<PCHContainerOperations> PCHContainerOps =
                      std::make_shared<PCHContainerOperations>());
 
-/// \brief Builds an AST for 'Code' with additional flags.
+/// Builds an AST for 'Code' with additional flags.
 ///
 /// \param Code C++ code.
 /// \param Args Additional flags to pass on.
@@ -220,10 +220,10 @@
       std::make_shared<PCHContainerOperations>(),
     ArgumentsAdjuster Adjuster = getClangStripDependencyFileAdjuster());
 
-/// \brief Utility to run a FrontendAction in a single clang invocation.
+/// Utility to run a FrontendAction in a single clang invocation.
 class ToolInvocation {
 public:
-  /// \brief Create a tool invocation.
+  /// Create a tool invocation.
   ///
   /// \param CommandLine The command line arguments to clang. Note that clang
   /// uses its binary name (CommandLine[0]) to locate its builtin headers.
@@ -239,7 +239,7 @@
                  std::shared_ptr<PCHContainerOperations> PCHContainerOps =
                      std::make_shared<PCHContainerOperations>());
 
-  /// \brief Create a tool invocation.
+  /// Create a tool invocation.
   ///
   /// \param CommandLine The command line arguments to clang.
   /// \param Action The action to be executed.
@@ -252,19 +252,19 @@
 
   ~ToolInvocation();
 
-  /// \brief Set a \c DiagnosticConsumer to use during parsing.
+  /// Set a \c DiagnosticConsumer to use during parsing.
   void setDiagnosticConsumer(DiagnosticConsumer *DiagConsumer) {
     this->DiagConsumer = DiagConsumer;
   }
 
-  /// \brief Map a virtual file to be used while running the tool.
+  /// Map a virtual file to be used while running the tool.
   ///
   /// \param FilePath The path at which the content will be mapped.
   /// \param Content A null terminated buffer of the file's content.
   // FIXME: remove this when all users have migrated!
   void mapVirtualFile(StringRef FilePath, StringRef Content);
 
-  /// \brief Run the clang invocation.
+  /// Run the clang invocation.
   ///
   /// \returns True if there were no errors during execution.
   bool run();
@@ -287,7 +287,7 @@
   DiagnosticConsumer *DiagConsumer = nullptr;
 };
 
-/// \brief Utility to run a FrontendAction over a set of files.
+/// Utility to run a FrontendAction over a set of files.
 ///
 /// This class is written to be usable for command line utilities.
 /// By default the class uses ClangSyntaxOnlyAdjuster to modify
@@ -296,7 +296,7 @@
 /// arguments adjuster by calling the appendArgumentsAdjuster() method.
 class ClangTool {
 public:
-  /// \brief Constructs a clang tool to run over a list of files.
+  /// Constructs a clang tool to run over a list of files.
   ///
   /// \param Compilations The CompilationDatabase which contains the compile
   ///        command lines for the given source paths.
@@ -315,24 +315,24 @@
 
   ~ClangTool();
 
-  /// \brief Set a \c DiagnosticConsumer to use during parsing.
+  /// Set a \c DiagnosticConsumer to use during parsing.
   void setDiagnosticConsumer(DiagnosticConsumer *DiagConsumer) {
     this->DiagConsumer = DiagConsumer;
   }
 
-  /// \brief Map a virtual file to be used while running the tool.
+  /// Map a virtual file to be used while running the tool.
   ///
   /// \param FilePath The path at which the content will be mapped.
   /// \param Content A null terminated buffer of the file's content.
   void mapVirtualFile(StringRef FilePath, StringRef Content);
 
-  /// \brief Append a command line arguments adjuster to the adjuster chain.
+  /// Append a command line arguments adjuster to the adjuster chain.
   ///
   /// \param Adjuster An argument adjuster, which will be run on the output of
   ///        previous argument adjusters.
   void appendArgumentsAdjuster(ArgumentsAdjuster Adjuster);
 
-  /// \brief Clear the command line arguments adjuster chain.
+  /// Clear the command line arguments adjuster chain.
   void clearArgumentsAdjusters();
 
   /// Runs an action over all files specified in the command line.
@@ -343,11 +343,11 @@
   /// some files are skipped due to missing compile commands.
   int run(ToolAction *Action);
 
-  /// \brief Create an AST for each file specified in the command line and
+  /// Create an AST for each file specified in the command line and
   /// append them to ASTs.
   int buildASTs(std::vector<std::unique_ptr<ASTUnit>> &ASTs);
 
-  /// \brief Returns the file manager used in the tool.
+  /// Returns the file manager used in the tool.
   ///
   /// The file manager is shared between all translation units.
   FileManager &getFiles() { return *Files; }
@@ -436,7 +436,7 @@
       new FrontendActionFactoryAdapter(ConsumerFactory, Callbacks));
 }
 
-/// \brief Returns the absolute path of \c File, by prepending it with
+/// Returns the absolute path of \c File, by prepending it with
 /// the current directory if \c File is not absolute.
 ///
 /// Otherwise returns \c File.
@@ -450,7 +450,7 @@
 /// \param File Either an absolute or relative path.
 std::string getAbsolutePath(StringRef File);
 
-/// \brief Changes CommandLine to contain implicit flags that would have been
+/// Changes CommandLine to contain implicit flags that would have been
 /// defined had the compiler driver been invoked through the path InvokedAs.
 ///
 /// For example, when called with \c InvokedAs set to `i686-linux-android-g++`,
@@ -473,7 +473,7 @@
 void addTargetAndModeForProgramName(std::vector<std::string> &CommandLine,
                                     StringRef InvokedAs);
 
-/// \brief Creates a \c CompilerInvocation.
+/// Creates a \c CompilerInvocation.
 CompilerInvocation *newInvocation(DiagnosticsEngine *Diagnostics,
                                   const llvm::opt::ArgStringList &CC1Args);
 
Index: cfe/trunk/lib/ARCMigrate/ARCMT.cpp
===================================================================
--- cfe/trunk/lib/ARCMigrate/ARCMT.cpp
+++ cfe/trunk/lib/ARCMigrate/ARCMT.cpp
@@ -503,7 +503,7 @@
 
 } // end anonymous namespace.
 
-/// \brief Anchor for VTable.
+/// Anchor for VTable.
 MigrationProcess::RewriteListener::~RewriteListener() { }
 
 MigrationProcess::MigrationProcess(
Index: cfe/trunk/lib/ARCMigrate/ObjCMT.cpp
===================================================================
--- cfe/trunk/lib/ARCMigrate/ObjCMT.cpp
+++ cfe/trunk/lib/ARCMigrate/ObjCMT.cpp
@@ -226,7 +226,7 @@
              isa<ParenListExpr>(Expr) || isa<SizeOfPackExpr>(Expr));
   }
   
-  /// \brief - Rewrite message expression for Objective-C setter and getters into
+  /// - Rewrite message expression for Objective-C setter and getters into
   /// property-dot syntax.
   bool rewriteToPropertyDotSyntax(const ObjCMessageExpr *Msg,
                                   Preprocessor &PP,
@@ -1065,7 +1065,7 @@
   return true;
 }
 
-/// \brief Check whether the two versions match.
+/// Check whether the two versions match.
 static bool versionsMatch(const VersionTuple &X, const VersionTuple &Y) {
   return (X == Y);
 }
Index: cfe/trunk/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp
===================================================================
--- cfe/trunk/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp
+++ cfe/trunk/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp
@@ -73,7 +73,7 @@
 
 namespace {
 
-/// \brief Returns true if the statement became empty due to previous
+/// Returns true if the statement became empty due to previous
 /// transformations.
 class EmptyChecker : public StmtVisitor<EmptyChecker, bool> {
   ASTContext &Ctx;
Index: cfe/trunk/lib/ARCMigrate/TransGCAttrs.cpp
===================================================================
--- cfe/trunk/lib/ARCMigrate/TransGCAttrs.cpp
+++ cfe/trunk/lib/ARCMigrate/TransGCAttrs.cpp
@@ -23,7 +23,7 @@
 
 namespace {
 
-/// \brief Collects all the places where GC attributes __strong/__weak occur.
+/// Collects all the places where GC attributes __strong/__weak occur.
 class GCAttrsCollector : public RecursiveASTVisitor<GCAttrsCollector> {
   MigrationContext &MigrateCtx;
   bool FullyMigratable;
Index: cfe/trunk/lib/ARCMigrate/TransProperties.cpp
===================================================================
--- cfe/trunk/lib/ARCMigrate/TransProperties.cpp
+++ cfe/trunk/lib/ARCMigrate/TransProperties.cpp
@@ -330,7 +330,7 @@
     return false;    
   }
 
-  // \brief Returns true if all declarations in the @property have GC __weak.
+  // Returns true if all declarations in the @property have GC __weak.
   bool hasGCWeak(PropsTy &props, SourceLocation atLoc) const {
     if (!Pass.isGCMigration())
       return false;
Index: cfe/trunk/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
===================================================================
--- cfe/trunk/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
+++ cfe/trunk/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
@@ -158,7 +158,7 @@
   }
 
 private:
-  /// \brief Checks for idioms where an unused -autorelease is common.
+  /// Checks for idioms where an unused -autorelease is common.
   ///
   /// Returns true for this idiom which is common in property
   /// setters:
@@ -309,7 +309,7 @@
     return nullptr;
   }
 
-  /// \brief Check if the retain/release is due to a GCD/XPC macro that are
+  /// Check if the retain/release is due to a GCD/XPC macro that are
   /// defined as:
   ///
   /// #define dispatch_retain(object) ({ dispatch_object_t _o = (object); _dispatch_object_validate(_o); (void)[_o retain]; })
Index: cfe/trunk/lib/ARCMigrate/TransformActions.cpp
===================================================================
--- cfe/trunk/lib/ARCMigrate/TransformActions.cpp
+++ cfe/trunk/lib/ARCMigrate/TransformActions.cpp
@@ -19,7 +19,7 @@
 
 namespace {
 
-/// \brief Collects transformations and merges them before applying them with
+/// Collects transformations and merges them before applying them with
 /// with applyRewrites(). E.g. if the same source range
 /// is requested to be removed twice, only one rewriter remove will be invoked.
 /// Rewrites happen in "transactions"; if one rewrite in the transaction cannot
@@ -61,7 +61,7 @@
     Range_ExtendsEnd
   };
 
-  /// \brief A range to remove. It is a character range.
+  /// A range to remove. It is a character range.
   struct CharRange {
     FullSourceLoc Begin, End;
 
@@ -107,7 +107,7 @@
   typedef std::map<FullSourceLoc, TextsVec, FullSourceLoc::BeforeThanCompare>
       InsertsMap;
   InsertsMap Inserts;
-  /// \brief A list of ranges to remove. They are always sorted and they never
+  /// A list of ranges to remove. They are always sorted and they never
   /// intersect with each other.
   std::list<CharRange> Removals;
 
@@ -115,7 +115,7 @@
 
   std::vector<std::pair<CharRange, SourceLocation> > IndentationRanges;
 
-  /// \brief Keeps text passed to transformation methods.
+  /// Keeps text passed to transformation methods.
   llvm::StringMap<bool> UniqueText;
 
 public:
@@ -167,12 +167,12 @@
   void addRemoval(CharSourceRange range);
   void addInsertion(SourceLocation loc, StringRef text);
 
-  /// \brief Stores text passed to the transformation methods to keep the string
+  /// Stores text passed to the transformation methods to keep the string
   /// "alive". Since the vast majority of text will be the same, we also unique
   /// the strings using a StringMap.
   StringRef getUniqueText(StringRef text);
 
-  /// \brief Computes the source location just past the end of the token at
+  /// Computes the source location just past the end of the token at
   /// the given source location. If the location points at a macro, the whole
   /// macro expansion is skipped.
   static SourceLocation getLocForEndOfToken(SourceLocation loc,
@@ -577,14 +577,14 @@
   }
 }
 
-/// \brief Stores text passed to the transformation methods to keep the string
+/// Stores text passed to the transformation methods to keep the string
 /// "alive". Since the vast majority of text will be the same, we also unique
 /// the strings using a StringMap.
 StringRef TransformActionsImpl::getUniqueText(StringRef text) {
   return UniqueText.insert(std::make_pair(text, false)).first->first();
 }
 
-/// \brief Computes the source location just past the end of the token at
+/// Computes the source location just past the end of the token at
 /// the given source location. If the location points at a macro, the whole
 /// macro expansion is skipped.
 SourceLocation TransformActionsImpl::getLocForEndOfToken(SourceLocation loc,
Index: cfe/trunk/lib/ARCMigrate/Transforms.h
===================================================================
--- cfe/trunk/lib/ARCMigrate/Transforms.h
+++ cfe/trunk/lib/ARCMigrate/Transforms.h
@@ -89,7 +89,7 @@
     SourceLocation Loc;
     QualType ModifiedType;
     Decl *Dcl;
-    /// \brief true if the attribute is owned, e.g. it is in a body and not just
+    /// true if the attribute is owned, e.g. it is in a body and not just
     /// in an interface.
     bool FullyMigratable;
   };
@@ -97,7 +97,7 @@
   llvm::DenseSet<unsigned> AttrSet;
   llvm::DenseSet<unsigned> RemovedAttrSet;
 
-  /// \brief Set of raw '@' locations for 'assign' properties group that contain
+  /// Set of raw '@' locations for 'assign' properties group that contain
   /// GC __weak.
   llvm::DenseSet<unsigned> AtPropsWeak;
 
@@ -156,21 +156,21 @@
 // Helpers.
 //===----------------------------------------------------------------------===//
 
-/// \brief Determine whether we can add weak to the given type.
+/// Determine whether we can add weak to the given type.
 bool canApplyWeak(ASTContext &Ctx, QualType type,
                   bool AllowOnUnknownClass = false);
 
 bool isPlusOneAssign(const BinaryOperator *E);
 bool isPlusOne(const Expr *E);
 
-/// \brief 'Loc' is the end of a statement range. This returns the location
+/// 'Loc' is the end of a statement range. This returns the location
 /// immediately after the semicolon following the statement.
 /// If no semicolon is found or the location is inside a macro, the returned
 /// source location will be invalid.
 SourceLocation findLocationAfterSemi(SourceLocation loc, ASTContext &Ctx,
                                      bool IsDecl = false);
 
-/// \brief 'Loc' is the end of a statement range. This returns the location
+/// 'Loc' is the end of a statement range. This returns the location
 /// of the semicolon following the statement.
 /// If no semicolon is found or the location is inside a macro, the returned
 /// source location will be invalid.
@@ -179,7 +179,7 @@
 
 bool hasSideEffects(Expr *E, ASTContext &Ctx);
 bool isGlobalVar(Expr *E);
-/// \brief Returns "nil" or "0" if 'nil' macro is not actually defined.
+/// Returns "nil" or "0" if 'nil' macro is not actually defined.
 StringRef getNilString(MigrationPass &Pass);
 
 template <typename BODY_TRANS>
Index: cfe/trunk/lib/ARCMigrate/Transforms.cpp
===================================================================
--- cfe/trunk/lib/ARCMigrate/Transforms.cpp
+++ cfe/trunk/lib/ARCMigrate/Transforms.cpp
@@ -111,7 +111,7 @@
   return implCE && implCE->getCastKind() == CK_ARCConsumeObject;
 }
 
-/// \brief 'Loc' is the end of a statement range. This returns the location
+/// 'Loc' is the end of a statement range. This returns the location
 /// immediately after the semicolon following the statement.
 /// If no semicolon is found or the location is inside a macro, the returned
 /// source location will be invalid.
@@ -123,7 +123,7 @@
   return SemiLoc.getLocWithOffset(1);
 }
 
-/// \brief \arg Loc is the end of a statement range. This returns the location
+/// \arg Loc is the end of a statement range. This returns the location
 /// of the semicolon following the statement.
 /// If no semicolon is found or the location is inside a macro, the returned
 /// source location will be invalid.
Index: cfe/trunk/lib/AST/ASTContext.cpp
===================================================================
--- cfe/trunk/lib/AST/ASTContext.cpp
+++ cfe/trunk/lib/AST/ASTContext.cpp
@@ -1259,7 +1259,7 @@
   return *Result;
 }
 
-/// \brief Erase the attributes corresponding to the given declaration.
+/// Erase the attributes corresponding to the given declaration.
 void ASTContext::eraseDeclAttrs(const Decl *D) {
   llvm::DenseMap<const Decl*, AttrVec*>::iterator Pos = DeclAttrs.find(D);
   if (Pos != DeclAttrs.end()) {
@@ -2336,7 +2336,7 @@
   return false;
 }
 
-/// \brief Get the implementation of ObjCInterfaceDecl, or nullptr if none
+/// Get the implementation of ObjCInterfaceDecl, or nullptr if none
 /// exists.
 ObjCImplementationDecl *ASTContext::getObjCImplementation(ObjCInterfaceDecl *D) {
   llvm::DenseMap<ObjCContainerDecl*, ObjCImplDecl*>::iterator
@@ -2346,7 +2346,7 @@
   return nullptr;
 }
 
-/// \brief Get the implementation of ObjCCategoryDecl, or nullptr if none
+/// Get the implementation of ObjCCategoryDecl, or nullptr if none
 /// exists.
 ObjCCategoryImplDecl *ASTContext::getObjCImplementation(ObjCCategoryDecl *D) {
   llvm::DenseMap<ObjCContainerDecl*, ObjCImplDecl*>::iterator
@@ -2356,14 +2356,14 @@
   return nullptr;
 }
 
-/// \brief Set the implementation of ObjCInterfaceDecl.
+/// Set the implementation of ObjCInterfaceDecl.
 void ASTContext::setObjCImplementation(ObjCInterfaceDecl *IFaceD,
                            ObjCImplementationDecl *ImplD) {
   assert(IFaceD && ImplD && "Passed null params");
   ObjCImpls[IFaceD] = ImplD;
 }
 
-/// \brief Set the implementation of ObjCCategoryDecl.
+/// Set the implementation of ObjCCategoryDecl.
 void ASTContext::setObjCImplementation(ObjCCategoryDecl *CatD,
                            ObjCCategoryImplDecl *ImplD) {
   assert(CatD && ImplD && "Passed null params");
@@ -2393,7 +2393,7 @@
   return nullptr;
 }
 
-/// \brief Get the copy initialization expression of VarDecl, or nullptr if
+/// Get the copy initialization expression of VarDecl, or nullptr if
 /// none exists.
 Expr *ASTContext::getBlockVarCopyInits(const VarDecl*VD) {
   assert(VD && "Passed null params");
@@ -2404,7 +2404,7 @@
   return (I != BlockVarCopyInits.end()) ? I->second : nullptr;
 }
 
-/// \brief Set the copy inialization expression of a block var decl.
+/// Set the copy inialization expression of a block var decl.
 void ASTContext::setBlockVarCopyInits(VarDecl*VD, Expr* Init) {
   assert(VD && Init && "Passed null params");
   assert(VD->hasAttr<BlocksAttr>() && 
@@ -3355,7 +3355,7 @@
   return QualType(sugaredType, 0);  
 }
 
-/// \brief Determine whether \p T is canonical as the result type of a function.
+/// Determine whether \p T is canonical as the result type of a function.
 static bool isCanonicalResultType(QualType T) {
   return T.isCanonical() &&
          (T.getObjCLifetime() == Qualifiers::OCL_None ||
@@ -3747,7 +3747,7 @@
   return QualType(type, 0);
 }
 
-/// \brief Retrieve a substitution-result type.
+/// Retrieve a substitution-result type.
 QualType
 ASTContext::getSubstTemplateTypeParmType(const TemplateTypeParmType *Parm,
                                          QualType Replacement) const {
@@ -3770,7 +3770,7 @@
   return QualType(SubstParm, 0);
 }
 
-/// \brief Retrieve a 
+/// Retrieve a 
 QualType ASTContext::getSubstTemplateTypeParmPackType(
                                           const TemplateTypeParmType *Parm,
                                               const TemplateArgument &ArgPack) {
@@ -3804,7 +3804,7 @@
   return QualType(SubstParm, 0);  
 }
 
-/// \brief Retrieve the template type parameter type for a template
+/// Retrieve the template type parameter type for a template
 /// parameter or parameter pack with the given depth, index, and (optionally)
 /// name.
 QualType ASTContext::getTemplateTypeParmType(unsigned Depth, unsigned Index,
@@ -4580,7 +4580,7 @@
   return QualType(tot, 0);
 }
 
-/// \brief Unlike many "get<Type>" functions, we don't unique DecltypeType
+/// Unlike many "get<Type>" functions, we don't unique DecltypeType
 /// nodes. This would never be helpful, since each such type has its own
 /// expression, and would not give a significant memory saving, since there
 /// is an Expr tree under each such type.
@@ -4801,14 +4801,14 @@
   return getFromTargetType(Target->getPtrDiffType(0));
 }
 
-/// \brief Return the unique unsigned counterpart of "ptrdiff_t"
+/// Return the unique unsigned counterpart of "ptrdiff_t"
 /// integer type. The standard (C11 7.21.6.1p7) refers to this type
 /// in the definition of %tu format specifier.
 QualType ASTContext::getUnsignedPointerDiffType() const {
   return getFromTargetType(Target->getUnsignedPtrDiffType(0));
 }
 
-/// \brief Return the unique type for "pid_t" defined in
+/// Return the unique type for "pid_t" defined in
 /// <sys/types.h>. We need this to compute the correct type for vfork().
 QualType ASTContext::getProcessIDType() const {
   return getFromTargetType(Target->getProcessIDType());
@@ -5374,7 +5374,7 @@
   }
 }
 
-/// \brief Whether this is a promotable bitfield reference according
+/// Whether this is a promotable bitfield reference according
 /// to C99 6.3.1.1p2, bullet 2 (and GCC extensions).
 ///
 /// \returns the type this bit-field will promote to, or NULL if no
@@ -5468,7 +5468,7 @@
   return (PromotableSize != IntSize) ? IntTy : UnsignedIntTy;
 }
 
-/// \brief Recurses in pointer/array types until it finds an objc retainable
+/// Recurses in pointer/array types until it finds an objc retainable
 /// type and returns its ownership.
 Qualifiers::ObjCLifetime ASTContext::getInnerObjCOwnership(QualType T) const {
   while (!T.isNull()) {
@@ -7242,7 +7242,7 @@
   ObjCConstantStringType = getObjCInterfaceType(Decl);
 }
 
-/// \brief Retrieve the template name that corresponds to a non-empty
+/// Retrieve the template name that corresponds to a non-empty
 /// lookup.
 TemplateName
 ASTContext::getOverloadedTemplateName(UnresolvedSetIterator Begin,
@@ -7266,7 +7266,7 @@
   return TemplateName(OT);
 }
 
-/// \brief Retrieve the template name that represents a qualified
+/// Retrieve the template name that represents a qualified
 /// template name such as \c std::vector.
 TemplateName
 ASTContext::getQualifiedTemplateName(NestedNameSpecifier *NNS,
@@ -7290,7 +7290,7 @@
   return TemplateName(QTN);
 }
 
-/// \brief Retrieve the template name that represents a dependent
+/// Retrieve the template name that represents a dependent
 /// template name such as \c MetaFun::template apply.
 TemplateName
 ASTContext::getDependentTemplateName(NestedNameSpecifier *NNS,
@@ -7326,7 +7326,7 @@
   return TemplateName(QTN);
 }
 
-/// \brief Retrieve the template name that represents a dependent
+/// Retrieve the template name that represents a dependent
 /// template name such as \c MetaFun::template operator+.
 TemplateName 
 ASTContext::getDependentTemplateName(NestedNameSpecifier *NNS,
@@ -9760,7 +9760,7 @@
 }
 /// @}
 
-  /// \brief A \c RecursiveASTVisitor that builds a map from nodes to their
+  /// A \c RecursiveASTVisitor that builds a map from nodes to their
   /// parents as defined by the \c RecursiveASTVisitor.
   ///
   /// Note that the relationship described here is purely in terms of AST
@@ -9770,7 +9770,7 @@
   /// FIXME: Currently only builds up the map using \c Stmt and \c Decl nodes.
   class ParentMapASTVisitor : public RecursiveASTVisitor<ParentMapASTVisitor> {
   public:
-    /// \brief Builds and returns the translation unit's parent map.
+    /// Builds and returns the translation unit's parent map.
     ///
     ///  The caller takes ownership of the returned \c ParentMap.
     static std::pair<ASTContext::ParentMapPointers *,
Index: cfe/trunk/lib/AST/ASTDiagnostic.cpp
===================================================================
--- cfe/trunk/lib/AST/ASTDiagnostic.cpp
+++ cfe/trunk/lib/AST/ASTDiagnostic.cpp
@@ -200,7 +200,7 @@
   return QC.apply(Context, QT);
 }
 
-/// \brief Convert the given type to a string suitable for printing as part of 
+/// Convert the given type to a string suitable for printing as part of 
 /// a diagnostic.
 ///
 /// There are four main criteria when determining whether we should have an
Index: cfe/trunk/lib/AST/ASTImporter.cpp
===================================================================
--- cfe/trunk/lib/AST/ASTImporter.cpp
+++ cfe/trunk/lib/AST/ASTImporter.cpp
@@ -146,17 +146,17 @@
 
     Optional<LambdaCapture> ImportLambdaCapture(const LambdaCapture &From);
                         
-    /// \brief What we should import from the definition.
+    /// What we should import from the definition.
     enum ImportDefinitionKind { 
-      /// \brief Import the default subset of the definition, which might be
+      /// Import the default subset of the definition, which might be
       /// nothing (if minimal import is set) or might be everything (if minimal
       /// import is not set).
       IDK_Default,
 
-      /// \brief Import everything.
+      /// Import everything.
       IDK_Everything,
 
-      /// \brief Import only the bare bones needed to establish a valid
+      /// Import only the bare bones needed to establish a valid
       /// DeclContext.
       IDK_Basic
     };
Index: cfe/trunk/lib/AST/CXXInheritance.cpp
===================================================================
--- cfe/trunk/lib/AST/CXXInheritance.cpp
+++ cfe/trunk/lib/AST/CXXInheritance.cpp
@@ -34,7 +34,7 @@
 
 using namespace clang;
 
-/// \brief Computes the set of declarations referenced by these base
+/// Computes the set of declarations referenced by these base
 /// paths.
 void CXXBasePaths::ComputeDeclsFound() {
   assert(NumDeclsFound == 0 && !DeclsFound &&
@@ -76,7 +76,7 @@
   DetectedVirtual = nullptr;
 }
 
-/// @brief Swaps the contents of this CXXBasePaths structure with the
+/// Swaps the contents of this CXXBasePaths structure with the
 /// contents of Other.
 void CXXBasePaths::swap(CXXBasePaths &Other) {
   std::swap(Origin, Other.Origin);
@@ -567,11 +567,11 @@
 namespace {
 
 class FinalOverriderCollector {
-  /// \brief The number of subobjects of a given class type that
+  /// The number of subobjects of a given class type that
   /// occur within the class hierarchy.
   llvm::DenseMap<const CXXRecordDecl *, unsigned> SubobjectCount;
 
-  /// \brief Overriders for each virtual base subobject.
+  /// Overriders for each virtual base subobject.
   llvm::DenseMap<const CXXRecordDecl *, CXXFinalOverriderMap *> VirtualOverriders;
 
   CXXFinalOverriderMap FinalOverriders;
Index: cfe/trunk/lib/AST/CommentBriefParser.cpp
===================================================================
--- cfe/trunk/lib/AST/CommentBriefParser.cpp
+++ cfe/trunk/lib/AST/CommentBriefParser.cpp
@@ -122,8 +122,8 @@
       if (Tok.is(tok::newline)) {
         ConsumeToken();
         // We found a paragraph end.  This ends the brief description if
-        // \\brief command or its equivalent was explicitly used.
-        // Stop scanning text because an explicit \\brief paragraph is the
+        // \command or its equivalent was explicitly used.
+        // Stop scanning text because an explicit \paragraph is the
         // preffered one.
         if (InBrief)
           break;
Index: cfe/trunk/lib/AST/CommentSema.cpp
===================================================================
--- cfe/trunk/lib/AST/CommentSema.cpp
+++ cfe/trunk/lib/AST/CommentSema.cpp
@@ -215,7 +215,7 @@
     << Comment->getSourceRange();
 }
 
-/// \brief Turn a string into the corresponding PassDirection or -1 if it's not
+/// Turn a string into the corresponding PassDirection or -1 if it's not
 /// valid.
 static int getParamPassDirection(StringRef Arg) {
   return llvm::StringSwitch<int>(Arg)
Index: cfe/trunk/lib/AST/Decl.cpp
===================================================================
--- cfe/trunk/lib/AST/Decl.cpp
+++ cfe/trunk/lib/AST/Decl.cpp
@@ -243,7 +243,7 @@
   return getTypeLinkageAndVisibility(&T);
 }
 
-/// \brief Get the most restrictive linkage for the types in the given
+/// Get the most restrictive linkage for the types in the given
 /// template parameter list.  For visibility purposes, template
 /// parameters are part of the signature of a template.
 LinkageInfo LinkageComputer::getLVForTemplateParameterList(
@@ -310,7 +310,7 @@
   return Ret;
 }
 
-/// \brief Get the most restrictive linkage for the types and
+/// Get the most restrictive linkage for the types and
 /// declarations in the given template argument list.
 ///
 /// Note that we don't take an LVComputationKind because we always
@@ -2873,7 +2873,7 @@
 
 FunctionDecl *FunctionDecl::getCanonicalDecl() { return getFirstDecl(); }
 
-/// \brief Returns a value indicating whether this function
+/// Returns a value indicating whether this function
 /// corresponds to a builtin function.
 ///
 /// The function corresponds to a built-in function if it is
@@ -2975,7 +2975,7 @@
   return NumRequiredArgs;
 }
 
-/// \brief The combination of the extern and inline keywords under MSVC forces
+/// The combination of the extern and inline keywords under MSVC forces
 /// the function to be required.
 ///
 /// Note: This function assumes that we will only get called when isInlined()
@@ -3024,7 +3024,7 @@
   return false;
 }
 
-/// \brief For a function declaration in C or C++, determine whether this
+/// For a function declaration in C or C++, determine whether this
 /// declaration causes the definition to be externally visible.
 ///
 /// For instance, this determines if adding the current declaration to the set
@@ -3139,7 +3139,7 @@
   return getAttr<WarnUnusedResultAttr>();
 }
 
-/// \brief For an inline function definition in C, or for a gnu_inline function
+/// For an inline function definition in C, or for a gnu_inline function
 /// in C++, determine whether the definition will be externally visible.
 ///
 /// Inline function definitions are always available for inlining optimizations.
@@ -4481,7 +4481,7 @@
 // ImportDecl Implementation
 //===----------------------------------------------------------------------===//
 
-/// \brief Retrieve the number of module identifiers needed to name the given
+/// Retrieve the number of module identifiers needed to name the given
 /// module.
 static unsigned getNumModuleIdentifiers(Module *Mod) {
   unsigned Result = 1;
Index: cfe/trunk/lib/AST/DeclBase.cpp
===================================================================
--- cfe/trunk/lib/AST/DeclBase.cpp
+++ cfe/trunk/lib/AST/DeclBase.cpp
@@ -493,7 +493,7 @@
   return RealizedPlatform;
 }
 
-/// \brief Determine the availability of the given declaration based on
+/// Determine the availability of the given declaration based on
 /// the target platform.
 ///
 /// When it returns an availability result other than \c AR_Available,
@@ -1003,7 +1003,7 @@
 
 DeclContext::~DeclContext() = default;
 
-/// \brief Find the parent context of this context that will be
+/// Find the parent context of this context that will be
 /// used for unqualified name lookup.
 ///
 /// Generally, the parent lookup context is the semantic context. However, for
@@ -1221,7 +1221,7 @@
   return std::make_pair(FirstNewDecl, PrevDecl);
 }
 
-/// \brief We have just acquired external visible storage, and we already have
+/// We have just acquired external visible storage, and we already have
 /// built a lookup map. For every name in the map, pull in the new names from
 /// the external storage.
 void DeclContext::reconcileExternalVisibleStorage() const {
@@ -1232,7 +1232,7 @@
     Lookup.second.setHasExternalDecls();
 }
 
-/// \brief Load the declarations within this lexical storage from an
+/// Load the declarations within this lexical storage from an
 /// external source.
 /// \return \c true if any declarations were added.
 bool
Index: cfe/trunk/lib/AST/DeclCXX.cpp
===================================================================
--- cfe/trunk/lib/AST/DeclCXX.cpp
+++ cfe/trunk/lib/AST/DeclCXX.cpp
@@ -2305,7 +2305,7 @@
     getParamDecl(0)->getType()->isRValueReferenceType();
 }
 
-/// \brief Determine whether this is a copy or move constructor.
+/// Determine whether this is a copy or move constructor.
 bool CXXConstructorDecl::isCopyOrMoveConstructor(unsigned &TypeQuals) const {
   // C++ [class.copy]p2:
   //   A non-template constructor for class X is a copy constructor
Index: cfe/trunk/lib/AST/DeclObjC.cpp
===================================================================
--- cfe/trunk/lib/AST/DeclObjC.cpp
+++ cfe/trunk/lib/AST/DeclObjC.cpp
@@ -109,7 +109,7 @@
   return nullptr;
 }
 
-/// \brief This routine returns 'true' if a user declared setter method was
+/// This routine returns 'true' if a user declared setter method was
 /// found in the class, its protocols, its super classes or categories.
 /// It also returns 'true' if one of its categories has declared a 'readwrite'
 /// property.  This is because, user must provide a setter method for the
@@ -854,7 +854,7 @@
   setParamsAndSelLocs(C, Params, SelLocs);
 }
 
-/// \brief A definition will return its interface declaration.
+/// A definition will return its interface declaration.
 /// An interface declaration will return its definition.
 /// Otherwise it will return itself.
 ObjCMethodDecl *ObjCMethodDecl::getNextRedeclarationImpl() {
Index: cfe/trunk/lib/AST/DeclOpenMP.cpp
===================================================================
--- cfe/trunk/lib/AST/DeclOpenMP.cpp
+++ cfe/trunk/lib/AST/DeclOpenMP.cpp
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 /// \file
-/// \brief This file implements OMPThreadPrivateDecl, OMPCapturedExprDecl
+/// This file implements OMPThreadPrivateDecl, OMPCapturedExprDecl
 /// classes.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/AST/Expr.cpp
===================================================================
--- cfe/trunk/lib/AST/Expr.cpp
+++ cfe/trunk/lib/AST/Expr.cpp
@@ -230,7 +230,7 @@
 // Primary Expressions.
 //===----------------------------------------------------------------------===//
 
-/// \brief Compute the type-, value-, and instantiation-dependence of a 
+/// Compute the type-, value-, and instantiation-dependence of a 
 /// declaration reference
 /// based on the declaration being referenced.
 static void computeDeclRefDependence(const ASTContext &Ctx, NamedDecl *D,
@@ -2632,7 +2632,7 @@
   return isa<CXXDefaultArgExpr>(E);
 }
 
-/// \brief Skip over any no-op casts and any temporary-binding
+/// Skip over any no-op casts and any temporary-binding
 /// expressions.
 static const Expr *skipTemporaryBindingsNoOpCastsAndParens(const Expr *E) {
   if (const MaterializeTemporaryExpr *M = dyn_cast<MaterializeTemporaryExpr>(E))
@@ -2934,7 +2934,7 @@
 }
 
 namespace {
-  /// \brief Look for any side effects within a Stmt.
+  /// Look for any side effects within a Stmt.
   class SideEffectFinder : public ConstEvaluatedExprVisitor<SideEffectFinder> {
     typedef ConstEvaluatedExprVisitor<SideEffectFinder> Inherited;
     const bool IncludePossibleEffects;
@@ -3230,7 +3230,7 @@
 }
 
 namespace {
-  /// \brief Look for a call to a non-trivial function within an expression.
+  /// Look for a call to a non-trivial function within an expression.
   class NonTrivialCallFinder : public ConstEvaluatedExprVisitor<NonTrivialCallFinder>
   {
     typedef ConstEvaluatedExprVisitor<NonTrivialCallFinder> Inherited;
@@ -3406,7 +3406,7 @@
   return NPCK_ZeroExpression;
 }
 
-/// \brief If this expression is an l-value for an Objective C
+/// If this expression is an l-value for an Objective C
 /// property, find the underlying property reference expression.
 const ObjCPropertyRefExpr *Expr::getObjCProperty() const {
   const Expr *E = this;
@@ -3830,7 +3830,7 @@
   return getSubExpr(D.ArrayOrRange.Index + 2);
 }
 
-/// \brief Replaces the designator at index @p Idx with the series
+/// Replaces the designator at index @p Idx with the series
 /// of designators in [First, Last).
 void DesignatedInitExpr::ExpandDesignator(const ASTContext &C, unsigned Idx,
                                           const Designator *First,
Index: cfe/trunk/lib/AST/ExprConstant.cpp
===================================================================
--- cfe/trunk/lib/AST/ExprConstant.cpp
+++ cfe/trunk/lib/AST/ExprConstant.cpp
@@ -686,11 +686,11 @@
     /// notes attached to it will also be stored, otherwise they will not be.
     bool HasActiveDiagnostic;
 
-    /// \brief Have we emitted a diagnostic explaining why we couldn't constant
+    /// Have we emitted a diagnostic explaining why we couldn't constant
     /// fold (not just why it's not strictly a constant expression)?
     bool HasFoldFailureDiagnostic;
 
-    /// \brief Whether or not we're currently speculatively evaluating.
+    /// Whether or not we're currently speculatively evaluating.
     bool IsSpeculativelyEvaluating;
 
     enum EvaluationMode {
@@ -3271,7 +3271,7 @@
   return CompleteObject(BaseVal, BaseType, LifetimeStartedInEvaluation);
 }
 
-/// \brief Perform an lvalue-to-rvalue conversion on the given glvalue. This
+/// Perform an lvalue-to-rvalue conversion on the given glvalue. This
 /// can also be used for 'lvalue-to-lvalue' conversions for looking up the
 /// glvalue referred to by an entity of reference type.
 ///
@@ -3834,7 +3834,7 @@
 }
 
 namespace {
-/// \brief A location where the result (returned value) of evaluating a
+/// A location where the result (returned value) of evaluating a
 /// statement should be stored.
 struct StmtResult {
   /// The APValue that should be filled in with the returned value.
@@ -5553,7 +5553,7 @@
 // Pointer Evaluation
 //===----------------------------------------------------------------------===//
 
-/// \brief Attempts to compute the number of bytes available at the pointer
+/// Attempts to compute the number of bytes available at the pointer
 /// returned by a function with the alloc_size attribute. Returns true if we
 /// were successful. Places an unsigned number into `Result`.
 ///
@@ -5602,7 +5602,7 @@
   return true;
 }
 
-/// \brief Convenience function. LVal's base must be a call to an alloc_size
+/// Convenience function. LVal's base must be a call to an alloc_size
 /// function.
 static bool getBytesReturnedByAllocSizeCall(const ASTContext &Ctx,
                                             const LValue &LVal,
@@ -5614,7 +5614,7 @@
   return getBytesReturnedByAllocSizeCall(Ctx, CE, Result);
 }
 
-/// \brief Attempts to evaluate the given LValueBase as the result of a call to
+/// Attempts to evaluate the given LValueBase as the result of a call to
 /// a function with the alloc_size attribute. If it was possible to do so, this
 /// function will return true, make Result's Base point to said function call,
 /// and mark Result's Base as invalid.
@@ -7730,7 +7730,7 @@
   return true;
 }
 
-/// \brief Tries to evaluate the __builtin_object_size for @p E. If successful,
+/// Tries to evaluate the __builtin_object_size for @p E. If successful,
 /// returns true and stores the result in @p Size.
 ///
 /// If @p WasError is non-null, this will report whether the failure to evaluate
@@ -8151,7 +8151,7 @@
           A.getLValueVersion() == B.getLValueVersion());
 }
 
-/// \brief Determine whether this is a pointer past the end of the complete
+/// Determine whether this is a pointer past the end of the complete
 /// object referred to by the lvalue.
 static bool isOnePastTheEndOfCompleteObject(const ASTContext &Ctx,
                                             const LValue &LV) {
@@ -8180,7 +8180,7 @@
 
 namespace {
 
-/// \brief Data recursive integer evaluator of certain binary operators.
+/// Data recursive integer evaluator of certain binary operators.
 ///
 /// We use a data recursive algorithm for binary operators so that we are able
 /// to handle extreme cases of chained binary operators without causing stack
@@ -8225,7 +8225,7 @@
   DataRecursiveIntBinOpEvaluator(IntExprEvaluator &IntEval, APValue &Result)
     : IntEval(IntEval), Info(IntEval.getEvalInfo()), FinalResult(Result) { }
 
-  /// \brief True if \param E is a binary operator that we are going to handle
+  /// True if \param E is a binary operator that we are going to handle
   /// data recursively.
   /// We handle binary operators that are comma, logical, or that have operands
   /// with integral or enumeration type.
@@ -8266,7 +8266,7 @@
     return Info.CCEDiag(E, D);
   }
 
-  // \brief Returns true if visiting the RHS is necessary, false otherwise.
+  // Returns true if visiting the RHS is necessary, false otherwise.
   bool VisitBinOpLHSOnly(EvalResult &LHSResult, const BinaryOperator *E,
                          bool &SuppressRHSDiags);
 
Index: cfe/trunk/lib/AST/ItaniumCXXABI.cpp
===================================================================
--- cfe/trunk/lib/AST/ItaniumCXXABI.cpp
+++ cfe/trunk/lib/AST/ItaniumCXXABI.cpp
@@ -101,7 +101,7 @@
 
 namespace {
 
-/// \brief Keeps track of the mangled names of lambda expressions and block
+/// Keeps track of the mangled names of lambda expressions and block
 /// literals within a particular context.
 class ItaniumNumberingContext : public MangleNumberingContext {
   llvm::DenseMap<const Type *, unsigned> ManglingNumbers;
Index: cfe/trunk/lib/AST/MicrosoftCXXABI.cpp
===================================================================
--- cfe/trunk/lib/AST/MicrosoftCXXABI.cpp
+++ cfe/trunk/lib/AST/MicrosoftCXXABI.cpp
@@ -25,7 +25,7 @@
 
 namespace {
 
-/// \brief Numbers things which need to correspond across multiple TUs.
+/// Numbers things which need to correspond across multiple TUs.
 /// Typically these are things like static locals, lambdas, or blocks.
 class MicrosoftNumberingContext : public MangleNumberingContext {
   llvm::DenseMap<const Type *, unsigned> ManglingNumbers;
Index: cfe/trunk/lib/AST/MicrosoftMangle.cpp
===================================================================
--- cfe/trunk/lib/AST/MicrosoftMangle.cpp
+++ cfe/trunk/lib/AST/MicrosoftMangle.cpp
@@ -76,7 +76,7 @@
   return nullptr;
 }
 
-/// \brief Retrieve the declaration context that should be used when mangling
+/// Retrieve the declaration context that should be used when mangling
 /// the given declaration.
 static const DeclContext *getEffectiveDeclContext(const Decl *D) {
   // The ABI assumes that lambda closure types that occur within
Index: cfe/trunk/lib/AST/NSAPI.cpp
===================================================================
--- cfe/trunk/lib/AST/NSAPI.cpp
+++ cfe/trunk/lib/AST/NSAPI.cpp
@@ -471,15 +471,15 @@
   return None;
 }
 
-/// \brief Returns true if \param T is a typedef of "BOOL" in objective-c.
+/// Returns true if \param T is a typedef of "BOOL" in objective-c.
 bool NSAPI::isObjCBOOLType(QualType T) const {
   return isObjCTypedef(T, "BOOL", BOOLId);
 }
-/// \brief Returns true if \param T is a typedef of "NSInteger" in objective-c.
+/// Returns true if \param T is a typedef of "NSInteger" in objective-c.
 bool NSAPI::isObjCNSIntegerType(QualType T) const {
   return isObjCTypedef(T, "NSInteger", NSIntegerId);
 }
-/// \brief Returns true if \param T is a typedef of "NSUInteger" in objective-c.
+/// Returns true if \param T is a typedef of "NSUInteger" in objective-c.
 bool NSAPI::isObjCNSUIntegerType(QualType T) const {
   return isObjCTypedef(T, "NSUInteger", NSUIntegerId);
 }
Index: cfe/trunk/lib/AST/NestedNameSpecifier.cpp
===================================================================
--- cfe/trunk/lib/AST/NestedNameSpecifier.cpp
+++ cfe/trunk/lib/AST/NestedNameSpecifier.cpp
@@ -164,7 +164,7 @@
   llvm_unreachable("Invalid NNS Kind!");
 }
 
-/// \brief Retrieve the namespace stored in this nested name specifier.
+/// Retrieve the namespace stored in this nested name specifier.
 NamespaceDecl *NestedNameSpecifier::getAsNamespace() const {
   if (Prefix.getInt() == StoredDecl)
     return dyn_cast<NamespaceDecl>(static_cast<NamedDecl *>(Specifier));
@@ -172,7 +172,7 @@
   return nullptr;
 }
 
-/// \brief Retrieve the namespace alias stored in this nested name specifier.
+/// Retrieve the namespace alias stored in this nested name specifier.
 NamespaceAliasDecl *NestedNameSpecifier::getAsNamespaceAlias() const {
   if (Prefix.getInt() == StoredDecl)
     return dyn_cast<NamespaceAliasDecl>(static_cast<NamedDecl *>(Specifier));
@@ -180,7 +180,7 @@
   return nullptr;
 }
 
-/// \brief Retrieve the record declaration stored in this nested name specifier.
+/// Retrieve the record declaration stored in this nested name specifier.
 CXXRecordDecl *NestedNameSpecifier::getAsRecordDecl() const {
   switch (Prefix.getInt()) {
   case StoredIdentifier:
@@ -197,7 +197,7 @@
   llvm_unreachable("Invalid NNS Kind!");
 }
 
-/// \brief Whether this nested name specifier refers to a dependent
+/// Whether this nested name specifier refers to a dependent
 /// type or not.
 bool NestedNameSpecifier::isDependent() const {
   switch (getKind()) {
@@ -227,7 +227,7 @@
   llvm_unreachable("Invalid NNS Kind!");
 }
 
-/// \brief Whether this nested name specifier refers to a dependent
+/// Whether this nested name specifier refers to a dependent
 /// type or not.
 bool NestedNameSpecifier::isInstantiationDependent() const {
   switch (getKind()) {
@@ -268,7 +268,7 @@
   llvm_unreachable("Invalid NNS Kind!");
 }
 
-/// \brief Print this nested name specifier to the given output
+/// Print this nested name specifier to the given output
 /// stream.
 void
 NestedNameSpecifier::print(raw_ostream &OS,
@@ -387,7 +387,7 @@
   return Length;
 }
 
-/// \brief Load a (possibly unaligned) source location from a given address
+/// Load a (possibly unaligned) source location from a given address
 /// and offset.
 static SourceLocation LoadSourceLocation(void *Data, unsigned Offset) {
   unsigned Raw;
@@ -395,7 +395,7 @@
   return SourceLocation::getFromRawEncoding(Raw);
 }
   
-/// \brief Load a (possibly unaligned) pointer from a given address and
+/// Load a (possibly unaligned) pointer from a given address and
 /// offset.
 static void *LoadPointer(void *Data, unsigned Offset) {
   void *Result;
@@ -479,7 +479,7 @@
   BufferSize += End-Start;
 }
   
-/// \brief Save a source location to the given buffer.
+/// Save a source location to the given buffer.
 static void SaveSourceLocation(SourceLocation Loc, char *&Buffer,
                                unsigned &BufferSize, unsigned &BufferCapacity) {
   unsigned Raw = Loc.getRawEncoding();
@@ -488,7 +488,7 @@
          Buffer, BufferSize, BufferCapacity);
 }
   
-/// \brief Save a pointer to the given buffer.
+/// Save a pointer to the given buffer.
 static void SavePointer(void *Ptr, char *&Buffer, unsigned &BufferSize,
                         unsigned &BufferCapacity) {
   Append(reinterpret_cast<char *>(&Ptr),
Index: cfe/trunk/lib/AST/QualTypeNames.cpp
===================================================================
--- cfe/trunk/lib/AST/QualTypeNames.cpp
+++ cfe/trunk/lib/AST/QualTypeNames.cpp
@@ -22,7 +22,7 @@
 
 namespace TypeName {
 
-/// \brief Create a NestedNameSpecifier for Namesp and its enclosing
+/// Create a NestedNameSpecifier for Namesp and its enclosing
 /// scopes.
 ///
 /// \param[in] Ctx - the AST Context to be used.
@@ -35,7 +35,7 @@
     const NamespaceDecl *Namesp,
     bool WithGlobalNsPrefix);
 
-/// \brief Create a NestedNameSpecifier for TagDecl and its enclosing
+/// Create a NestedNameSpecifier for TagDecl and its enclosing
 /// scopes.
 ///
 /// \param[in] Ctx - the AST Context to be used.
@@ -210,7 +210,7 @@
   return nullptr;  // no starting '::' if |WithGlobalNsPrefix| is false
 }
 
-/// \brief Return a fully qualified version of this name specifier.
+/// Return a fully qualified version of this name specifier.
 static NestedNameSpecifier *getFullyQualifiedNestedNameSpecifier(
     const ASTContext &Ctx, NestedNameSpecifier *Scope,
     bool WithGlobalNsPrefix) {
@@ -262,7 +262,7 @@
   llvm_unreachable("bad NNS kind");
 }
 
-/// \brief Create a nested name specifier for the declaring context of
+/// Create a nested name specifier for the declaring context of
 /// the type.
 static NestedNameSpecifier *createNestedNameSpecifierForScopeOf(
     const ASTContext &Ctx, const Decl *Decl,
@@ -314,7 +314,7 @@
   return nullptr;
 }
 
-/// \brief Create a nested name specifier for the declaring context of
+/// Create a nested name specifier for the declaring context of
 /// the type.
 static NestedNameSpecifier *createNestedNameSpecifierForScopeOf(
     const ASTContext &Ctx, const Type *TypePtr,
@@ -366,7 +366,7 @@
       TD->getTypeForDecl());
 }
 
-/// \brief Return the fully qualified type, including fully-qualified
+/// Return the fully qualified type, including fully-qualified
 /// versions of any template parameters.
 QualType getFullyQualifiedType(QualType QT, const ASTContext &Ctx,
                                bool WithGlobalNsPrefix) {
Index: cfe/trunk/lib/AST/RawCommentList.cpp
===================================================================
--- cfe/trunk/lib/AST/RawCommentList.cpp
+++ cfe/trunk/lib/AST/RawCommentList.cpp
@@ -80,7 +80,7 @@
 }
 } // unnamed namespace
 
-/// \brief Determines whether there is only whitespace in `Buffer` between `P`
+/// Determines whether there is only whitespace in `Buffer` between `P`
 /// and the previous line.
 /// \param Buffer The buffer to search in.
 /// \param P The offset from the beginning of `Buffer` to start from.
Index: cfe/trunk/lib/AST/RecordLayoutBuilder.cpp
===================================================================
--- cfe/trunk/lib/AST/RecordLayoutBuilder.cpp
+++ cfe/trunk/lib/AST/RecordLayoutBuilder.cpp
@@ -54,25 +54,25 @@
   const BaseSubobjectInfo *Derived;
 };
 
-/// \brief Externally provided layout. Typically used when the AST source, such
+/// Externally provided layout. Typically used when the AST source, such
 /// as DWARF, lacks all the information that was available at compile time, such
 /// as alignment attributes on fields and pragmas in effect.
 struct ExternalLayout {
   ExternalLayout() : Size(0), Align(0) {}
 
-  /// \brief Overall record size in bits.
+  /// Overall record size in bits.
   uint64_t Size;
 
-  /// \brief Overall record alignment in bits.
+  /// Overall record alignment in bits.
   uint64_t Align;
 
-  /// \brief Record field offsets in bits.
+  /// Record field offsets in bits.
   llvm::DenseMap<const FieldDecl *, uint64_t> FieldOffsets;
 
-  /// \brief Direct, non-virtual base offsets.
+  /// Direct, non-virtual base offsets.
   llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsets;
 
-  /// \brief Virtual base offsets.
+  /// Virtual base offsets.
   llvm::DenseMap<const CXXRecordDecl *, CharUnits> VirtualBaseOffsets;
 
   /// Get the offset of the given field. The external source must provide
@@ -579,16 +579,16 @@
   /// Alignment - The current alignment of the record layout.
   CharUnits Alignment;
 
-  /// \brief The alignment if attribute packed is not used.
+  /// The alignment if attribute packed is not used.
   CharUnits UnpackedAlignment;
 
   SmallVector<uint64_t, 16> FieldOffsets;
 
-  /// \brief Whether the external AST source has provided a layout for this
+  /// Whether the external AST source has provided a layout for this
   /// record.
   unsigned UseExternalLayout : 1;
 
-  /// \brief Whether we need to infer alignment, even when we have an 
+  /// Whether we need to infer alignment, even when we have an 
   /// externally-provided layout.
   unsigned InferAlignment : 1;
   
@@ -632,7 +632,7 @@
   /// pointer, as opposed to inheriting one from a primary base class.
   bool HasOwnVFPtr;
 
-  /// \brief the flag of field offset changing due to packed attribute.
+  /// the flag of field offset changing due to packed attribute.
   bool HasPackedField;
 
   typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
@@ -749,7 +749,7 @@
     UpdateAlignment(NewAlignment, NewAlignment);
   }
 
-  /// \brief Retrieve the externally-supplied field offset for the given
+  /// Retrieve the externally-supplied field offset for the given
   /// field.
   ///
   /// \param Field The field whose offset is being queried.
@@ -1962,7 +1962,7 @@
   return ExternalFieldOffset;
 }
 
-/// \brief Get diagnostic %select index for tag kind for
+/// Get diagnostic %select index for tag kind for
 /// field padding diagnostic message.
 /// WARNING: Indexes apply to particular diagnostics only!
 ///
@@ -2253,9 +2253,9 @@
 public:
   void layout(const RecordDecl *RD);
   void cxxLayout(const CXXRecordDecl *RD);
-  /// \brief Initializes size and alignment and honors some flags.
+  /// Initializes size and alignment and honors some flags.
   void initializeLayout(const RecordDecl *RD);
-  /// \brief Initialized C++ layout, compute alignment and virtual alignment and
+  /// Initialized C++ layout, compute alignment and virtual alignment and
   /// existence of vfptrs and vbptrs.  Alignment is needed before the vfptr is
   /// laid out.
   void initializeCXXLayout(const CXXRecordDecl *RD);
@@ -2266,93 +2266,93 @@
                             const ASTRecordLayout *&PreviousBaseLayout);
   void injectVFPtr(const CXXRecordDecl *RD);
   void injectVBPtr(const CXXRecordDecl *RD);
-  /// \brief Lays out the fields of the record.  Also rounds size up to
+  /// Lays out the fields of the record.  Also rounds size up to
   /// alignment.
   void layoutFields(const RecordDecl *RD);
   void layoutField(const FieldDecl *FD);
   void layoutBitField(const FieldDecl *FD);
-  /// \brief Lays out a single zero-width bit-field in the record and handles
+  /// Lays out a single zero-width bit-field in the record and handles
   /// special cases associated with zero-width bit-fields.
   void layoutZeroWidthBitField(const FieldDecl *FD);
   void layoutVirtualBases(const CXXRecordDecl *RD);
   void finalizeLayout(const RecordDecl *RD);
-  /// \brief Gets the size and alignment of a base taking pragma pack and
+  /// Gets the size and alignment of a base taking pragma pack and
   /// __declspec(align) into account.
   ElementInfo getAdjustedElementInfo(const ASTRecordLayout &Layout);
-  /// \brief Gets the size and alignment of a field taking pragma  pack and
+  /// Gets the size and alignment of a field taking pragma  pack and
   /// __declspec(align) into account.  It also updates RequiredAlignment as a
   /// side effect because it is most convenient to do so here.
   ElementInfo getAdjustedElementInfo(const FieldDecl *FD);
-  /// \brief Places a field at an offset in CharUnits.
+  /// Places a field at an offset in CharUnits.
   void placeFieldAtOffset(CharUnits FieldOffset) {
     FieldOffsets.push_back(Context.toBits(FieldOffset));
   }
-  /// \brief Places a bitfield at a bit offset.
+  /// Places a bitfield at a bit offset.
   void placeFieldAtBitOffset(uint64_t FieldOffset) {
     FieldOffsets.push_back(FieldOffset);
   }
-  /// \brief Compute the set of virtual bases for which vtordisps are required.
+  /// Compute the set of virtual bases for which vtordisps are required.
   void computeVtorDispSet(
       llvm::SmallPtrSetImpl<const CXXRecordDecl *> &HasVtorDispSet,
       const CXXRecordDecl *RD) const;
   const ASTContext &Context;
-  /// \brief The size of the record being laid out.
+  /// The size of the record being laid out.
   CharUnits Size;
-  /// \brief The non-virtual size of the record layout.
+  /// The non-virtual size of the record layout.
   CharUnits NonVirtualSize;
-  /// \brief The data size of the record layout.
+  /// The data size of the record layout.
   CharUnits DataSize;
-  /// \brief The current alignment of the record layout.
+  /// The current alignment of the record layout.
   CharUnits Alignment;
-  /// \brief The maximum allowed field alignment. This is set by #pragma pack.
+  /// The maximum allowed field alignment. This is set by #pragma pack.
   CharUnits MaxFieldAlignment;
-  /// \brief The alignment that this record must obey.  This is imposed by
+  /// The alignment that this record must obey.  This is imposed by
   /// __declspec(align()) on the record itself or one of its fields or bases.
   CharUnits RequiredAlignment;
-  /// \brief The size of the allocation of the currently active bitfield.
+  /// The size of the allocation of the currently active bitfield.
   /// This value isn't meaningful unless LastFieldIsNonZeroWidthBitfield
   /// is true.
   CharUnits CurrentBitfieldSize;
-  /// \brief Offset to the virtual base table pointer (if one exists).
+  /// Offset to the virtual base table pointer (if one exists).
   CharUnits VBPtrOffset;
-  /// \brief Minimum record size possible.
+  /// Minimum record size possible.
   CharUnits MinEmptyStructSize;
-  /// \brief The size and alignment info of a pointer.
+  /// The size and alignment info of a pointer.
   ElementInfo PointerInfo;
-  /// \brief The primary base class (if one exists).
+  /// The primary base class (if one exists).
   const CXXRecordDecl *PrimaryBase;
-  /// \brief The class we share our vb-pointer with.
+  /// The class we share our vb-pointer with.
   const CXXRecordDecl *SharedVBPtrBase;
-  /// \brief The collection of field offsets.
+  /// The collection of field offsets.
   SmallVector<uint64_t, 16> FieldOffsets;
-  /// \brief Base classes and their offsets in the record.
+  /// Base classes and their offsets in the record.
   BaseOffsetsMapTy Bases;
-  /// \brief virtual base classes and their offsets in the record.
+  /// virtual base classes and their offsets in the record.
   ASTRecordLayout::VBaseOffsetsMapTy VBases;
-  /// \brief The number of remaining bits in our last bitfield allocation.
+  /// The number of remaining bits in our last bitfield allocation.
   /// This value isn't meaningful unless LastFieldIsNonZeroWidthBitfield is
   /// true.
   unsigned RemainingBitsInField;
   bool IsUnion : 1;
-  /// \brief True if the last field laid out was a bitfield and was not 0
+  /// True if the last field laid out was a bitfield and was not 0
   /// width.
   bool LastFieldIsNonZeroWidthBitfield : 1;
-  /// \brief True if the class has its own vftable pointer.
+  /// True if the class has its own vftable pointer.
   bool HasOwnVFPtr : 1;
-  /// \brief True if the class has a vbtable pointer.
+  /// True if the class has a vbtable pointer.
   bool HasVBPtr : 1;
-  /// \brief True if the last sub-object within the type is zero sized or the
+  /// True if the last sub-object within the type is zero sized or the
   /// object itself is zero sized.  This *does not* count members that are not
   /// records.  Only used for MS-ABI.
   bool EndsWithZeroSizedObject : 1;
-  /// \brief True if this class is zero sized or first base is zero sized or
+  /// True if this class is zero sized or first base is zero sized or
   /// has this property.  Only used for MS-ABI.
   bool LeadsWithZeroSizedBase : 1;
 
-  /// \brief True if the external AST source provided a layout for this record.
+  /// True if the external AST source provided a layout for this record.
   bool UseExternalLayout : 1;
 
-  /// \brief The layout provided by the external AST source. Only active if
+  /// The layout provided by the external AST source. Only active if
   /// UseExternalLayout is true.
   ExternalLayout External;
 };
Index: cfe/trunk/lib/AST/Stmt.cpp
===================================================================
--- cfe/trunk/lib/AST/Stmt.cpp
+++ cfe/trunk/lib/AST/Stmt.cpp
@@ -128,7 +128,7 @@
   return s;
 }
 
-/// \brief Skip no-op (attributed, compound) container stmts and skip captured
+/// Skip no-op (attributed, compound) container stmts and skip captured
 /// stmt at the top, if \a IgnoreCaptured is true.
 Stmt *Stmt::IgnoreContainers(bool IgnoreCaptured) {
   Stmt *S = this;
@@ -148,7 +148,7 @@
   return S;
 }
 
-/// \brief Strip off all label-like statements.
+/// Strip off all label-like statements.
 ///
 /// This will strip off label statements, case statements, attributed
 /// statements and default statements recursively.
@@ -1105,18 +1105,18 @@
   return CapDeclAndKind.getPointer();
 }
 
-/// \brief Set the outlined function declaration.
+/// Set the outlined function declaration.
 void CapturedStmt::setCapturedDecl(CapturedDecl *D) {
   assert(D && "null CapturedDecl");
   CapDeclAndKind.setPointer(D);
 }
 
-/// \brief Retrieve the captured region kind.
+/// Retrieve the captured region kind.
 CapturedRegionKind CapturedStmt::getCapturedRegionKind() const {
   return CapDeclAndKind.getInt();
 }
 
-/// \brief Set the captured region kind.
+/// Set the captured region kind.
 void CapturedStmt::setCapturedRegionKind(CapturedRegionKind Kind) {
   CapDeclAndKind.setInt(Kind);
 }
Index: cfe/trunk/lib/AST/StmtPrinter.cpp
===================================================================
--- cfe/trunk/lib/AST/StmtPrinter.cpp
+++ cfe/trunk/lib/AST/StmtPrinter.cpp
@@ -631,7 +631,7 @@
   raw_ostream &OS;
   const PrintingPolicy &Policy;
 
-  /// \brief Process clauses with list of variables.
+  /// Process clauses with list of variables.
   template <typename T>
   void VisitOMPClauseList(T *Node, char StartSym);
 
Index: cfe/trunk/lib/AST/StmtProfile.cpp
===================================================================
--- cfe/trunk/lib/AST/StmtProfile.cpp
+++ cfe/trunk/lib/AST/StmtProfile.cpp
@@ -43,34 +43,34 @@
 #define STMT(Node, Base) void Visit##Node(const Node *S);
 #include "clang/AST/StmtNodes.inc"
 
-    /// \brief Visit a declaration that is referenced within an expression
+    /// Visit a declaration that is referenced within an expression
     /// or statement.
     virtual void VisitDecl(const Decl *D) = 0;
 
-    /// \brief Visit a type that is referenced within an expression or
+    /// Visit a type that is referenced within an expression or
     /// statement.
     virtual void VisitType(QualType T) = 0;
 
-    /// \brief Visit a name that occurs within an expression or statement.
+    /// Visit a name that occurs within an expression or statement.
     virtual void VisitName(DeclarationName Name, bool TreatAsDecl = false) = 0;
 
-    /// \brief Visit identifiers that are not in Decl's or Type's.
+    /// Visit identifiers that are not in Decl's or Type's.
     virtual void VisitIdentifierInfo(IdentifierInfo *II) = 0;
 
-    /// \brief Visit a nested-name-specifier that occurs within an expression
+    /// Visit a nested-name-specifier that occurs within an expression
     /// or statement.
     virtual void VisitNestedNameSpecifier(NestedNameSpecifier *NNS) = 0;
 
-    /// \brief Visit a template name that occurs within an expression or
+    /// Visit a template name that occurs within an expression or
     /// statement.
     virtual void VisitTemplateName(TemplateName Name) = 0;
 
-    /// \brief Visit template arguments that occur within an expression or
+    /// Visit template arguments that occur within an expression or
     /// statement.
     void VisitTemplateArguments(const TemplateArgumentLoc *Args,
                                 unsigned NumArgs);
 
-    /// \brief Visit a single template argument.
+    /// Visit a single template argument.
     void VisitTemplateArgument(const TemplateArgument &Arg);
   };
 
@@ -405,7 +405,7 @@
 namespace {
 class OMPClauseProfiler : public ConstOMPClauseVisitor<OMPClauseProfiler> {
   StmtProfiler *Profiler;
-  /// \brief Process clauses with list of variables.
+  /// Process clauses with list of variables.
   template <typename T>
   void VisitOMPClauseList(T *Node);
 
Index: cfe/trunk/lib/AST/TemplateBase.cpp
===================================================================
--- cfe/trunk/lib/AST/TemplateBase.cpp
+++ cfe/trunk/lib/AST/TemplateBase.cpp
@@ -43,7 +43,7 @@
 
 using namespace clang;
 
-/// \brief Print a template integral argument value.
+/// Print a template integral argument value.
 ///
 /// \param TemplArg the TemplateArgument instance to print.
 ///
Index: cfe/trunk/lib/AST/Type.cpp
===================================================================
--- cfe/trunk/lib/AST/Type.cpp
+++ cfe/trunk/lib/AST/Type.cpp
@@ -341,7 +341,7 @@
   return T;
 }
 
-/// \brief This will check for a T (which should be a Type which can act as
+/// This will check for a T (which should be a Type which can act as
 /// sugar, such as a TypedefType) by removing any existing sugar until it
 /// reaches a T or a non-sugared type.
 template<typename T> static const T *getAsSugar(const Type *Cur) {
@@ -1700,7 +1700,7 @@
     return isIntegerType();
 }
 
-/// \brief Determine whether this type is an integral type.
+/// Determine whether this type is an integral type.
 ///
 /// This routine determines whether the given type is an integral type per 
 /// C++ [basic.fundamental]p7. Although the C standard does not define the
@@ -1781,7 +1781,7 @@
   return false;
 }
 
-/// \brief Determine whether this type is any of the built-in character
+/// Determine whether this type is any of the built-in character
 /// types.
 bool Type::isAnyCharacterType() const {
   const auto *BT = dyn_cast<BuiltinType>(CanonicalType);
@@ -1957,7 +1957,7 @@
   llvm_unreachable("unknown scalar type");
 }
 
-/// \brief Determines whether the type is a C++ aggregate type or C
+/// Determines whether the type is a C++ aggregate type or C
 /// aggregate or union type.
 ///
 /// An aggregate type is an array or a class type (struct, union, or
@@ -3343,7 +3343,7 @@
 
 namespace {
 
-/// \brief The cached properties of a type.
+/// The cached properties of a type.
 class CachedProperties {
   Linkage L;
   bool local;
@@ -3510,7 +3510,7 @@
   llvm_unreachable("unhandled type class");
 }
 
-/// \brief Determine the linkage of this type.
+/// Determine the linkage of this type.
 Linkage Type::getLinkage() const {
   Cache::ensure(this);
   return TypeBits.getLinkage();
@@ -3870,13 +3870,13 @@
   return type->isObjCRetainableType();
 }
 
-/// \brief Determine whether the given type T is a "bridgable" Objective-C type,
+/// Determine whether the given type T is a "bridgable" Objective-C type,
 /// which is either an Objective-C object pointer type or an 
 bool Type::isObjCARCBridgableType() const {
   return isObjCObjectPointerType() || isBlockPointerType();
 }
 
-/// \brief Determine whether the given type T is a "bridgeable" C type.
+/// Determine whether the given type T is a "bridgeable" C type.
 bool Type::isCARCBridgableType() const {
   const auto *Pointer = getAs<PointerType>();
   if (!Pointer)
Index: cfe/trunk/lib/AST/TypeLoc.cpp
===================================================================
--- cfe/trunk/lib/AST/TypeLoc.cpp
+++ cfe/trunk/lib/AST/TypeLoc.cpp
@@ -68,7 +68,7 @@
 
 } // namespace
 
-/// \brief Returns the alignment of the type source info data block.
+/// Returns the alignment of the type source info data block.
 unsigned TypeLoc::getLocalAlignmentForType(QualType Ty) {
   if (Ty.isNull()) return 1;
   return TypeAligner().Visit(TypeLoc(Ty, nullptr));
@@ -88,7 +88,7 @@
 
 } // namespace
 
-/// \brief Returns the size of the type source info data block.
+/// Returns the size of the type source info data block.
 unsigned TypeLoc::getFullDataSizeForType(QualType Ty) {
   unsigned Total = 0;
   TypeLoc TyLoc(Ty, nullptr);
@@ -118,13 +118,13 @@
 
 } // namespace
 
-/// \brief Get the next TypeLoc pointed by this TypeLoc, e.g for "int*" the
+/// Get the next TypeLoc pointed by this TypeLoc, e.g for "int*" the
 /// TypeLoc is a PointerLoc and next TypeLoc is for "int".
 TypeLoc TypeLoc::getNextTypeLocImpl(TypeLoc TL) {
   return NextLoc().Visit(TL);
 }
 
-/// \brief Initializes a type location, and all of its children
+/// Initializes a type location, and all of its children
 /// recursively, as if the entire tree had been written in the
 /// given location.
 void TypeLoc::initializeImpl(ASTContext &Context, TypeLoc TL, 
@@ -281,7 +281,7 @@
 
 } // namespace
 
-/// \brief Determines if the given type loc corresponds to a
+/// Determines if the given type loc corresponds to a
 /// TypeSpecTypeLoc.  Since there is not actually a TypeSpecType in
 /// the type hierarchy, this is made somewhat complicated.
 ///
Index: cfe/trunk/lib/AST/TypePrinter.cpp
===================================================================
--- cfe/trunk/lib/AST/TypePrinter.cpp
+++ cfe/trunk/lib/AST/TypePrinter.cpp
@@ -47,7 +47,7 @@
 
 namespace {
 
-  /// \brief RAII object that enables printing of the ARC __strong lifetime
+  /// RAII object that enables printing of the ARC __strong lifetime
   /// qualifier.
   class IncludeStrongLifetimeRAII {
     PrintingPolicy &Policy;
@@ -270,7 +270,7 @@
   printBefore(Split.Ty, Quals, OS);
 }
 
-/// \brief Prints the part of the type string before an identifier, e.g. for
+/// Prints the part of the type string before an identifier, e.g. for
 /// "int foo[10]" it prints "int ".
 void TypePrinter::printBefore(const Type *T,Qualifiers Quals, raw_ostream &OS) {
   if (Policy.SuppressSpecifiers && T->isSpecifierType())
@@ -323,7 +323,7 @@
   printAfter(split.Ty, split.Quals, OS);
 }
 
-/// \brief Prints the part of the type string after an identifier, e.g. for
+/// Prints the part of the type string after an identifier, e.g. for
 /// "int foo[10]" it prints "[10]".
 void TypePrinter::printAfter(const Type *T, Qualifiers Quals, raw_ostream &OS) {
   switch (T->getTypeClass()) {
Index: cfe/trunk/lib/AST/VTableBuilder.cpp
===================================================================
--- cfe/trunk/lib/AST/VTableBuilder.cpp
+++ cfe/trunk/lib/AST/VTableBuilder.cpp
@@ -2396,7 +2396,7 @@
 
   MethodVFTableLocationsTy MethodVFTableLocations;
 
-  /// \brief Does this class have an RTTI component?
+  /// Does this class have an RTTI component?
   bool HasRTTIComponent = false;
 
   /// MethodInfo - Contains information about a method in a vtable.
Index: cfe/trunk/lib/ASTMatchers/ASTMatchFinder.cpp
===================================================================
--- cfe/trunk/lib/ASTMatchers/ASTMatchFinder.cpp
+++ cfe/trunk/lib/ASTMatchers/ASTMatchFinder.cpp
@@ -511,7 +511,7 @@
     TimeBucketRegion() : Bucket(nullptr) {}
     ~TimeBucketRegion() { setBucket(nullptr); }
 
-    /// \brief Start timing for \p NewBucket.
+    /// Start timing for \p NewBucket.
     ///
     /// If there was a bucket already set, it will finish the timing for that
     /// other bucket.
@@ -534,7 +534,7 @@
     llvm::TimeRecord *Bucket;
   };
 
-  /// \brief Runs all the \p Matchers on \p Node.
+  /// Runs all the \p Matchers on \p Node.
   ///
   /// Used by \c matchDispatch() below.
   template <typename T, typename MC>
@@ -590,7 +590,7 @@
   }
 
   /// @{
-  /// \brief Overloads to pair the different node types to their matchers.
+  /// Overloads to pair the different node types to their matchers.
   void matchDispatch(const Decl *Node) {
     return matchWithFilter(ast_type_traits::DynTypedNode::create(*Node));
   }
@@ -752,14 +752,14 @@
     return false;
   }
 
-  /// \brief Bucket to record map.
+  /// Bucket to record map.
   ///
   /// Used to get the appropriate bucket for each matcher.
   llvm::StringMap<llvm::TimeRecord> TimeByBucket;
 
   const MatchFinder::MatchersByType *Matchers;
 
-  /// \brief Filtered list of matcher indices for each matcher kind.
+  /// Filtered list of matcher indices for each matcher kind.
   ///
   /// \c Decl and \c Stmt toplevel matchers usually apply to a specific node
   /// kind (and derived kinds) so it is a waste to try every matcher on every
Index: cfe/trunk/lib/ASTMatchers/ASTMatchersInternal.cpp
===================================================================
--- cfe/trunk/lib/ASTMatchers/ASTMatchersInternal.cpp
+++ cfe/trunk/lib/ASTMatchers/ASTMatchersInternal.cpp
@@ -118,7 +118,7 @@
   const IntrusiveRefCntPtr<DynMatcherInterface> InnerMatcher;
 };
 
-/// \brief A matcher that always returns true.
+/// A matcher that always returns true.
 ///
 /// We only ever need one instance of this matcher, so we create a global one
 /// and reuse it to reduce the overhead of the matcher and increase the chance
Index: cfe/trunk/lib/ASTMatchers/Dynamic/Marshallers.h
===================================================================
--- cfe/trunk/lib/ASTMatchers/Dynamic/Marshallers.h
+++ cfe/trunk/lib/ASTMatchers/Dynamic/Marshallers.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Functions templates and classes to wrap matcher construct functions.
+/// Functions templates and classes to wrap matcher construct functions.
 ///
 /// A collection of template function and classes that provide a generic
 /// marshalling layer on top of matcher construct functions.
@@ -47,7 +47,7 @@
 namespace dynamic {
 namespace internal {
 
-/// \brief Helper template class to just from argument type to the right is/get
+/// Helper template class to just from argument type to the right is/get
 ///   functions in VariantValue.
 /// Used to verify and extract the matcher arguments below.
 template <class T> struct ArgTypeTraits;
@@ -166,7 +166,7 @@
   }
 };
 
-/// \brief Matcher descriptor interface.
+/// Matcher descriptor interface.
 ///
 /// Provides a \c create() method that constructs the matcher from the provided
 /// arguments, and various other methods for type introspection.
@@ -222,7 +222,7 @@
   return false;
 }
 
-/// \brief Simple callback implementation. Marshaller and function are provided.
+/// Simple callback implementation. Marshaller and function are provided.
 ///
 /// This class wraps a function of arbitrary signature and a marshaller
 /// function into a MatcherDescriptor.
@@ -279,7 +279,7 @@
   const std::vector<ArgKind> ArgKinds;
 };
 
-/// \brief Helper methods to extract and merge all possible typed matchers
+/// Helper methods to extract and merge all possible typed matchers
 /// out of the polymorphic object.
 template <class PolyMatcher>
 static void mergePolyMatchers(const PolyMatcher &Poly,
@@ -293,7 +293,7 @@
   mergePolyMatchers(Poly, Out, typename TypeList::tail());
 }
 
-/// \brief Convert the return values of the functions into a VariantMatcher.
+/// Convert the return values of the functions into a VariantMatcher.
 ///
 /// There are 2 cases right now: The return value is a Matcher<T> or is a
 /// polymorphic matcher. For the former, we just construct the VariantMatcher.
@@ -347,7 +347,7 @@
   }
 };
 
-/// \brief Variadic marshaller function.
+/// Variadic marshaller function.
 template <typename ResultT, typename ArgT,
           ResultT (*Func)(ArrayRef<const ArgT *>)>
 VariantMatcher
@@ -383,7 +383,7 @@
   return Out;
 }
 
-/// \brief Matcher descriptor for variadic functions.
+/// Matcher descriptor for variadic functions.
 ///
 /// This class simply wraps a VariadicFunction with the right signature to export
 /// it as a MatcherDescriptor.
@@ -436,7 +436,7 @@
   const ArgKind ArgsKind;
 };
 
-/// \brief Return CK_Trivial when appropriate for VariadicDynCastAllOfMatchers.
+/// Return CK_Trivial when appropriate for VariadicDynCastAllOfMatchers.
 class DynCastAllOfMatcherDescriptor : public VariadicFuncMatcherDescriptor {
 public:
   template <typename BaseT, typename DerivedT>
@@ -470,7 +470,7 @@
   const ast_type_traits::ASTNodeKind DerivedKind;
 };
 
-/// \brief Helper macros to check the arguments on all marshaller functions.
+/// Helper macros to check the arguments on all marshaller functions.
 #define CHECK_ARG_COUNT(count)                                                 \
   if (Args.size() != count) {                                                  \
     Error->addError(NameRange, Error->ET_RegistryWrongArgCount)                \
@@ -486,7 +486,7 @@
     return VariantMatcher();                                                   \
   }
 
-/// \brief 0-arg marshaller function.
+/// 0-arg marshaller function.
 template <typename ReturnType>
 static VariantMatcher matcherMarshall0(void (*Func)(), StringRef MatcherName,
                                        SourceRange NameRange,
@@ -497,7 +497,7 @@
   return outvalueToVariantMatcher(reinterpret_cast<FuncType>(Func)());
 }
 
-/// \brief 1-arg marshaller function.
+/// 1-arg marshaller function.
 template <typename ReturnType, typename ArgType1>
 static VariantMatcher matcherMarshall1(void (*Func)(), StringRef MatcherName,
                                        SourceRange NameRange,
@@ -510,7 +510,7 @@
       ArgTypeTraits<ArgType1>::get(Args[0].Value)));
 }
 
-/// \brief 2-arg marshaller function.
+/// 2-arg marshaller function.
 template <typename ReturnType, typename ArgType1, typename ArgType2>
 static VariantMatcher matcherMarshall2(void (*Func)(), StringRef MatcherName,
                                        SourceRange NameRange,
@@ -528,7 +528,7 @@
 #undef CHECK_ARG_COUNT
 #undef CHECK_ARG_TYPE
 
-/// \brief Helper class used to collect all the possible overloads of an
+/// Helper class used to collect all the possible overloads of an
 ///   argument adaptative matcher function.
 template <template <typename ToArg, typename FromArg> class ArgumentAdapterT,
           typename FromTypes, typename ToTypes>
@@ -544,10 +544,10 @@
   using AdaptativeFunc = ast_matchers::internal::ArgumentAdaptingMatcherFunc<
       ArgumentAdapterT, FromTypes, ToTypes>;
 
-  /// \brief End case for the recursion
+  /// End case for the recursion
   static void collect(ast_matchers::internal::EmptyTypeList) {}
 
-  /// \brief Recursive case. Get the overload for the head of the list, and
+  /// Recursive case. Get the overload for the head of the list, and
   ///   recurse to the tail.
   template <typename FromTypeList>
   inline void collect(FromTypeList);
@@ -556,7 +556,7 @@
   std::vector<std::unique_ptr<MatcherDescriptor>> &Out;
 };
 
-/// \brief MatcherDescriptor that wraps multiple "overloads" of the same
+/// MatcherDescriptor that wraps multiple "overloads" of the same
 ///   matcher.
 ///
 /// It will try every overload and generate appropriate errors for when none or
@@ -635,7 +635,7 @@
   std::vector<std::unique_ptr<MatcherDescriptor>> Overloads;
 };
 
-/// \brief Variadic operator marshaller function.
+/// Variadic operator marshaller function.
 class VariadicOperatorMatcherDescriptor : public MatcherDescriptor {
 public:
   using VarOp = DynTypedMatcher::VariadicOperator;
@@ -701,7 +701,7 @@
 /// Helper functions to select the appropriate marshaller functions.
 /// They detect the number of arguments, arguments types and return type.
 
-/// \brief 0-arg overload
+/// 0-arg overload
 template <typename ReturnType>
 std::unique_ptr<MatcherDescriptor>
 makeMatcherAutoMarshall(ReturnType (*Func)(), StringRef MatcherName) {
@@ -712,7 +712,7 @@
       MatcherName, RetTypes, None);
 }
 
-/// \brief 1-arg overload
+/// 1-arg overload
 template <typename ReturnType, typename ArgType1>
 std::unique_ptr<MatcherDescriptor>
 makeMatcherAutoMarshall(ReturnType (*Func)(ArgType1), StringRef MatcherName) {
@@ -724,7 +724,7 @@
       reinterpret_cast<void (*)()>(Func), MatcherName, RetTypes, AK);
 }
 
-/// \brief 2-arg overload
+/// 2-arg overload
 template <typename ReturnType, typename ArgType1, typename ArgType2>
 std::unique_ptr<MatcherDescriptor>
 makeMatcherAutoMarshall(ReturnType (*Func)(ArgType1, ArgType2),
@@ -738,7 +738,7 @@
       reinterpret_cast<void (*)()>(Func), MatcherName, RetTypes, AKs);
 }
 
-/// \brief Variadic overload.
+/// Variadic overload.
 template <typename ResultT, typename ArgT,
           ResultT (*Func)(ArrayRef<const ArgT *>)>
 std::unique_ptr<MatcherDescriptor> makeMatcherAutoMarshall(
@@ -747,7 +747,7 @@
   return llvm::make_unique<VariadicFuncMatcherDescriptor>(VarFunc, MatcherName);
 }
 
-/// \brief Overload for VariadicDynCastAllOfMatchers.
+/// Overload for VariadicDynCastAllOfMatchers.
 ///
 /// Not strictly necessary, but DynCastAllOfMatcherDescriptor gives us better
 /// completion results for that type of matcher.
@@ -759,7 +759,7 @@
   return llvm::make_unique<DynCastAllOfMatcherDescriptor>(VarFunc, MatcherName);
 }
 
-/// \brief Argument adaptative overload.
+/// Argument adaptative overload.
 template <template <typename ToArg, typename FromArg> class ArgumentAdapterT,
           typename FromTypes, typename ToTypes>
 std::unique_ptr<MatcherDescriptor> makeMatcherAutoMarshall(
@@ -782,7 +782,7 @@
   collect(typename FromTypeList::tail());
 }
 
-/// \brief Variadic operator overload.
+/// Variadic operator overload.
 template <unsigned MinCount, unsigned MaxCount>
 std::unique_ptr<MatcherDescriptor> makeMatcherAutoMarshall(
     ast_matchers::internal::VariadicOperatorMatcherFunc<MinCount, MaxCount>
Index: cfe/trunk/lib/ASTMatchers/Dynamic/Parser.cpp
===================================================================
--- cfe/trunk/lib/ASTMatchers/Dynamic/Parser.cpp
+++ cfe/trunk/lib/ASTMatchers/Dynamic/Parser.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Recursive parser implementation for the matcher expression grammar.
+/// Recursive parser implementation for the matcher expression grammar.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -34,9 +34,9 @@
 namespace ast_matchers {
 namespace dynamic {
 
-/// \brief Simple structure to hold information for one token from the parser.
+/// Simple structure to hold information for one token from the parser.
 struct Parser::TokenInfo {
-  /// \brief Different possible tokens.
+  /// Different possible tokens.
   enum TokenKind {
     TK_Eof,
     TK_OpenParen,
@@ -50,7 +50,7 @@
     TK_CodeCompletion
   };
 
-  /// \brief Some known identifiers.
+  /// Some known identifiers.
   static const char* const ID_Bind;
 
   TokenInfo() = default;
@@ -63,7 +63,7 @@
 
 const char* const Parser::TokenInfo::ID_Bind = "bind";
 
-/// \brief Simple tokenizer for the parser.
+/// Simple tokenizer for the parser.
 class Parser::CodeTokenizer {
 public:
   explicit CodeTokenizer(StringRef MatcherCode, Diagnostics *Error)
@@ -78,10 +78,10 @@
     NextToken = getNextToken();
   }
 
-  /// \brief Returns but doesn't consume the next token.
+  /// Returns but doesn't consume the next token.
   const TokenInfo &peekNextToken() const { return NextToken; }
 
-  /// \brief Consumes and returns the next token.
+  /// Consumes and returns the next token.
   TokenInfo consumeNextToken() {
     TokenInfo ThisToken = NextToken;
     NextToken = getNextToken();
@@ -185,7 +185,7 @@
     return Result;
   }
 
-  /// \brief Consume an unsigned and float literal.
+  /// Consume an unsigned and float literal.
   void consumeNumberLiteral(TokenInfo *Result) {
     bool isFloatingLiteral = false;
     unsigned Length = 1;
@@ -238,7 +238,7 @@
     Result->Kind = TokenInfo::TK_Error;
   }
 
-  /// \brief Consume a string literal.
+  /// Consume a string literal.
   ///
   /// \c Code must be positioned at the start of the literal (the opening
   /// quote). Consumed until it finds the same closing quote character.
@@ -272,7 +272,7 @@
     Result->Kind = TokenInfo::TK_Error;
   }
 
-  /// \brief Consume all leading whitespace from \c Code.
+  /// Consume all leading whitespace from \c Code.
   void consumeWhitespace() {
     while (!Code.empty() && isWhitespace(Code[0])) {
       if (Code[0] == '\n') {
@@ -326,7 +326,7 @@
   }
 };
 
-/// \brief Parse expressions that start with an identifier.
+/// Parse expressions that start with an identifier.
 ///
 /// This function can parse named values and matchers.
 /// In case of failure it will try to determine the user's intent to give
@@ -359,7 +359,7 @@
   return parseMatcherExpressionImpl(NameToken, Value);
 }
 
-/// \brief Parse and validate a matcher expression.
+/// Parse and validate a matcher expression.
 /// \return \c true on success, in which case \c Value has the matcher parsed.
 ///   If the input is malformed, or some argument has an error, it
 ///   returns \c false.
@@ -524,7 +524,7 @@
   }
 }
 
-/// \brief Parse an <Expression>
+/// Parse an <Expression>
 bool Parser::parseExpressionImpl(VariantValue *Value) {
   switch (Tokenizer->nextTokenKind()) {
   case TokenInfo::TK_Literal:
Index: cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp
===================================================================
--- cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp
+++ cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 //
 /// \file
-/// \brief Registry map populated at static initialization time.
+/// Registry map populated at static initialization time.
 //
 //===----------------------------------------------------------------------===//
 
@@ -90,7 +90,7 @@
     REGISTER_MATCHER_OVERLOAD(name);                                           \
   } while (false)
 
-/// \brief Generate a registry map with all the known matchers.
+/// Generate a registry map with all the known matchers.
 RegistryMaps::RegistryMaps() {
   // TODO: Here is the list of the missing matchers, grouped by reason.
   //
Index: cfe/trunk/lib/ASTMatchers/Dynamic/VariantValue.cpp
===================================================================
--- cfe/trunk/lib/ASTMatchers/Dynamic/VariantValue.cpp
+++ cfe/trunk/lib/ASTMatchers/Dynamic/VariantValue.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Polymorphic value type.
+/// Polymorphic value type.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Analysis/CFG.cpp
===================================================================
--- cfe/trunk/lib/Analysis/CFG.cpp
+++ cfe/trunk/lib/Analysis/CFG.cpp
@@ -851,7 +851,7 @@
       B->prependScopeEnd(VD, S, cfg->getBumpVectorContext());
   }
 
-  /// \brief Find a relational comparison with an expression evaluating to a
+  /// Find a relational comparison with an expression evaluating to a
   /// boolean and a constant other than 0 and 1.
   /// e.g. if ((x < y) == 10)
   TryResult checkIncorrectRelationalOperator(const BinaryOperator *B) {
@@ -964,7 +964,7 @@
     }
   }
 
-  /// \brief Find a pair of comparison expressions with or without parentheses
+  /// Find a pair of comparison expressions with or without parentheses
   /// with a shared variable and constants and a logical operator between them
   /// that always evaluates to either true or false.
   /// e.g. if (x != 3 || x != 4)
@@ -1120,7 +1120,7 @@
     return evaluateAsBooleanConditionNoCache(S);
   }
 
-  /// \brief Evaluate as boolean \param E without using the cache.
+  /// Evaluate as boolean \param E without using the cache.
   TryResult evaluateAsBooleanConditionNoCache(Expr *E) {
     if (BinaryOperator *Bop = dyn_cast<BinaryOperator>(E)) {
       if (Bop->isLogicalOp()) {
@@ -1491,7 +1491,7 @@
   return Block;
 }
 
-/// \brief Retrieve the type of the temporary object whose lifetime was 
+/// Retrieve the type of the temporary object whose lifetime was 
 /// extended by a local reference with the given initializer.
 static QualType getReferenceInitTemporaryType(ASTContext &Context,
                                               const Expr *Init,
Index: cfe/trunk/lib/Analysis/ThreadSafety.cpp
===================================================================
--- cfe/trunk/lib/Analysis/ThreadSafety.cpp
+++ cfe/trunk/lib/Analysis/ThreadSafety.cpp
@@ -86,11 +86,11 @@
 
 namespace {
 
-/// \brief A set of CapabilityInfo objects, which are compiled from the
+/// A set of CapabilityInfo objects, which are compiled from the
 /// requires attributes on a function.
 class CapExprSet : public SmallVector<CapabilityExpr, 4> {
 public:
-  /// \brief Push M onto list, but discard duplicates.
+  /// Push M onto list, but discard duplicates.
   void push_back_nodup(const CapabilityExpr &CapE) {
     iterator It = std::find_if(begin(), end(),
                                [=](const CapabilityExpr &CapE2) {
@@ -104,7 +104,7 @@
 class FactManager;
 class FactSet;
 
-/// \brief This is a helper class that stores a fact that is known at a
+/// This is a helper class that stores a fact that is known at a
 /// particular point in program execution.  Currently, a fact is a capability,
 /// along with additional information, such as where it was acquired, whether
 /// it is exclusive or shared, etc.
@@ -157,7 +157,7 @@
 
 using FactID = unsigned short;
 
-/// \brief FactManager manages the memory for all facts that are created during
+/// FactManager manages the memory for all facts that are created during
 /// the analysis of a single routine.
 class FactManager {
 private:
@@ -173,7 +173,7 @@
   FactEntry &operator[](FactID F) { return *Facts[F]; }
 };
 
-/// \brief A FactSet is the set of facts that are known to be true at a
+/// A FactSet is the set of facts that are known to be true at a
 /// particular program point.  FactSets must be small, because they are
 /// frequently copied, and are thus implemented as a set of indices into a
 /// table maintained by a FactManager.  A typical FactSet only holds 1 or 2
@@ -948,7 +948,7 @@
   }
 };
 
-/// \brief Class which implements the core thread safety analysis routines.
+/// Class which implements the core thread safety analysis routines.
 class ThreadSafetyAnalyzer {
   friend class BuildLockset;
   friend class threadSafety::BeforeSet;
@@ -1130,7 +1130,7 @@
     Info->Visited = 0;
 }
 
-/// \brief Gets the value decl pointer from DeclRefExprs or MemberExprs.
+/// Gets the value decl pointer from DeclRefExprs or MemberExprs.
 static const ValueDecl *getValueDecl(const Expr *Exp) {
   if (const auto *CE = dyn_cast<ImplicitCastExpr>(Exp))
     return getValueDecl(CE->getSubExpr());
@@ -1223,7 +1223,7 @@
   return false;
 }
 
-/// \brief Add a new lock to the lockset, warning if the lock is already there.
+/// Add a new lock to the lockset, warning if the lock is already there.
 /// \param ReqAttr -- true if this is part of an initial Requires attribute.
 void ThreadSafetyAnalyzer::addLock(FactSet &FSet,
                                    std::unique_ptr<FactEntry> Entry,
@@ -1261,7 +1261,7 @@
   }
 }
 
-/// \brief Remove a lock from the lockset, warning if the lock is not there.
+/// Remove a lock from the lockset, warning if the lock is not there.
 /// \param UnlockLoc The source location of the unlock (only used in error msg)
 void ThreadSafetyAnalyzer::removeLock(FactSet &FSet, const CapabilityExpr &Cp,
                                       SourceLocation UnlockLoc,
@@ -1287,7 +1287,7 @@
                      DiagKind);
 }
 
-/// \brief Extract the list of mutexIDs from the attribute on an expression,
+/// Extract the list of mutexIDs from the attribute on an expression,
 /// and push them onto Mtxs, discarding any duplicates.
 template <typename AttrType>
 void ThreadSafetyAnalyzer::getMutexIDs(CapExprSet &Mtxs, AttrType *Attr,
@@ -1318,7 +1318,7 @@
   }
 }
 
-/// \brief Extract the list of mutexIDs from a trylock attribute.  If the
+/// Extract the list of mutexIDs from a trylock attribute.  If the
 /// trylock applies to the given edge, then push them onto Mtxs, discarding
 /// any duplicates.
 template <class AttrType>
@@ -1418,7 +1418,7 @@
   return nullptr;
 }
 
-/// \brief Find the lockset that holds on the edge between PredBlock
+/// Find the lockset that holds on the edge between PredBlock
 /// and CurrBlock.  The edge set is the exit set of PredBlock (passed
 /// as the ExitSet parameter) plus any trylocks, which are conditionally held.
 void ThreadSafetyAnalyzer::getEdgeLockset(FactSet& Result,
@@ -1491,7 +1491,7 @@
 
 namespace {
 
-/// \brief We use this class to visit different types of expressions in
+/// We use this class to visit different types of expressions in
 /// CFGBlocks, and build up the lockset.
 /// An expression may cause us to add or remove locks from the lockset, or else
 /// output error messages related to missing locks.
@@ -1533,7 +1533,7 @@
 
 } // namespace
 
-/// \brief Warn if the LSet does not contain a lock sufficient to protect access
+/// Warn if the LSet does not contain a lock sufficient to protect access
 /// of at least the passed in AccessKind.
 void BuildLockset::warnIfMutexNotHeld(const NamedDecl *D, const Expr *Exp,
                                       AccessKind AK, Expr *MutexExp,
@@ -1597,7 +1597,7 @@
   }
 }
 
-/// \brief Warn if the LSet contains the given lock.
+/// Warn if the LSet contains the given lock.
 void BuildLockset::warnIfMutexHeld(const NamedDecl *D, const Expr *Exp,
                                    Expr *MutexExp, StringRef DiagKind) {
   CapabilityExpr Cp = Analyzer->SxBuilder.translateAttrExpr(MutexExp, D, Exp);
@@ -1615,7 +1615,7 @@
   }
 }
 
-/// \brief Checks guarded_by and pt_guarded_by attributes.
+/// Checks guarded_by and pt_guarded_by attributes.
 /// Whenever we identify an access (read or write) to a DeclRefExpr that is
 /// marked with guarded_by, we must ensure the appropriate mutexes are held.
 /// Similarly, we check if the access is to an expression that dereferences
@@ -1671,7 +1671,7 @@
                        ClassifyDiagnostic(I), Loc);
 }
 
-/// \brief Checks pt_guarded_by and pt_guarded_var attributes.
+/// Checks pt_guarded_by and pt_guarded_var attributes.
 /// POK is the same  operationKind that was passed to checkAccess.
 void BuildLockset::checkPtAccess(const Expr *Exp, AccessKind AK,
                                  ProtectedOperationKind POK) {
@@ -1710,7 +1710,7 @@
                        ClassifyDiagnostic(I), Exp->getExprLoc());
 }
 
-/// \brief Process a function call, method call, constructor call,
+/// Process a function call, method call, constructor call,
 /// or destructor call.  This involves looking at the attributes on the
 /// corresponding function/method/constructor/destructor, issuing warnings,
 /// and updating the locksets accordingly.
@@ -1876,7 +1876,7 @@
     Analyzer->removeLock(FSet, M, Loc, Dtor, LK_Generic, CapDiagKind);
 }
 
-/// \brief For unary operations which read and write a variable, we need to
+/// For unary operations which read and write a variable, we need to
 /// check whether we hold any required mutexes. Reads are checked in
 /// VisitCastExpr.
 void BuildLockset::VisitUnaryOperator(UnaryOperator *UO) {
@@ -2089,7 +2089,7 @@
   }
 }
 
-/// \brief Compute the intersection of two locksets and issue warnings for any
+/// Compute the intersection of two locksets and issue warnings for any
 /// locks in the symmetric difference.
 ///
 /// This function is used at a merge point in the CFG when comparing the lockset
@@ -2166,7 +2166,7 @@
   return false;
 }
 
-/// \brief Check a function's CFG for thread-safety violations.
+/// Check a function's CFG for thread-safety violations.
 ///
 /// We traverse the blocks in the CFG, compute the set of mutexes that are held
 /// at the end of each block, and issue warnings for thread safety violations.
@@ -2462,7 +2462,7 @@
   Handler.leaveFunction(CurrentFunction);
 }
 
-/// \brief Check a function's CFG for thread-safety violations.
+/// Check a function's CFG for thread-safety violations.
 ///
 /// We traverse the blocks in the CFG, compute the set of mutexes that are held
 /// at the end of each block, and issue warnings for thread safety violations.
@@ -2478,7 +2478,7 @@
 
 void threadSafety::threadSafetyCleanup(BeforeSet *Cache) { delete Cache; }
 
-/// \brief Helper function that returns a LockKind required for the given level
+/// Helper function that returns a LockKind required for the given level
 /// of access.
 LockKind threadSafety::getLockKindFromAccessKind(AccessKind AK) {
   switch (AK) {
Index: cfe/trunk/lib/Analysis/ThreadSafetyCommon.cpp
===================================================================
--- cfe/trunk/lib/Analysis/ThreadSafetyCommon.cpp
+++ cfe/trunk/lib/Analysis/ThreadSafetyCommon.cpp
@@ -86,7 +86,7 @@
   return ME ? ME->isArrow() : false;
 }
 
-/// \brief Translate a clang expression in an attribute to a til::SExpr.
+/// Translate a clang expression in an attribute to a til::SExpr.
 /// Constructs the context from D, DeclExp, and SelfDecl.
 ///
 /// \param AttrExp The expression to translate.
@@ -146,7 +146,7 @@
     return translateAttrExpr(AttrExp, &Ctx);
 }
 
-/// \brief Translate a clang expression in an attribute to a til::SExpr.
+/// Translate a clang expression in an attribute to a til::SExpr.
 // This assumes a CallingContext has already been created.
 CapabilityExpr SExprBuilder::translateAttrExpr(const Expr *AttrExp,
                                                CallingContext *Ctx) {
Index: cfe/trunk/lib/Analysis/UninitializedValues.cpp
===================================================================
--- cfe/trunk/lib/Analysis/UninitializedValues.cpp
+++ cfe/trunk/lib/Analysis/UninitializedValues.cpp
@@ -321,7 +321,7 @@
 
 namespace {
 
-/// \brief Classify each DeclRefExpr as an initialization or a use. Any
+/// Classify each DeclRefExpr as an initialization or a use. Any
 /// DeclRefExpr which isn't explicitly classified will be assumed to have
 /// escaped the analysis and will be treated as an initialization.
 class ClassifyRefs : public StmtVisitor<ClassifyRefs> {
Index: cfe/trunk/lib/Basic/Diagnostic.cpp
===================================================================
--- cfe/trunk/lib/Basic/Diagnostic.cpp
+++ cfe/trunk/lib/Basic/Diagnostic.cpp
@@ -737,7 +737,7 @@
   }
 }
 
-/// \brief Returns the friendly description for a token kind that will appear
+/// Returns the friendly description for a token kind that will appear
 /// without quotes in diagnostic messages. These strings may be translatable in
 /// future.
 static const char *getTokenDescForDiagnostic(tok::TokenKind Kind) {
Index: cfe/trunk/lib/Basic/DiagnosticIDs.cpp
===================================================================
--- cfe/trunk/lib/Basic/DiagnosticIDs.cpp
+++ cfe/trunk/lib/Basic/DiagnosticIDs.cpp
@@ -340,7 +340,7 @@
          getBuiltinDiagClass(DiagID) != CLASS_ERROR;
 }
 
-/// \brief Determine whether the given built-in diagnostic ID is a
+/// Determine whether the given built-in diagnostic ID is a
 /// Note.
 bool DiagnosticIDs::isBuiltinNote(unsigned DiagID) {
   return DiagID < diag::DIAG_UPPER_LIMIT &&
@@ -412,7 +412,7 @@
   return toLevel(getDiagnosticSeverity(DiagID, Loc, Diag));
 }
 
-/// \brief Based on the way the client configured the Diagnostic
+/// Based on the way the client configured the Diagnostic
 /// object, classify the specified diagnostic ID into a Level, consumable by
 /// the DiagnosticClient.
 ///
Index: cfe/trunk/lib/Basic/FileManager.cpp
===================================================================
--- cfe/trunk/lib/Basic/FileManager.cpp
+++ cfe/trunk/lib/Basic/FileManager.cpp
@@ -102,7 +102,7 @@
   StatCache.reset();
 }
 
-/// \brief Retrieve the directory that the given file name resides in.
+/// Retrieve the directory that the given file name resides in.
 /// Filename can point to either a real file or a virtual file.
 static const DirectoryEntry *getDirectoryFromFile(FileManager &FileMgr,
                                                   StringRef Filename,
Index: cfe/trunk/lib/Basic/IdentifierTable.cpp
===================================================================
--- cfe/trunk/lib/Basic/IdentifierTable.cpp
+++ cfe/trunk/lib/Basic/IdentifierTable.cpp
@@ -65,7 +65,7 @@
 
 namespace {
 
-/// \brief A simple identifier lookup iterator that represents an
+/// A simple identifier lookup iterator that represents an
 /// empty sequence of identifiers.
 class EmptyLookupIterator : public IdentifierIterator
 {
@@ -127,7 +127,7 @@
               ~KEYNOOPENCL) // KEYNOMS18 and KEYNOOPENCL are used to exclude.
   };
 
-  /// \brief How a keyword is treated in the selected standard.
+  /// How a keyword is treated in the selected standard.
   enum KeywordStatus {
     KS_Disabled,    // Disabled
     KS_Extension,   // Is an extension
@@ -137,7 +137,7 @@
 
 } // namespace
 
-/// \brief Translates flags as specified in TokenKinds.def into keyword status
+/// Translates flags as specified in TokenKinds.def into keyword status
 /// in the given language standard.
 static KeywordStatus getKeywordStatus(const LangOptions &LangOpts,
                                       unsigned Flags) {
@@ -244,7 +244,7 @@
   get("import").setModulesImport(true);
 }
 
-/// \brief Checks if the specified token kind represents a keyword in the
+/// Checks if the specified token kind represents a keyword in the
 /// specified language.
 /// \returns Status of the keyword in the language.
 static KeywordStatus getTokenKwStatus(const LangOptions &LangOpts,
@@ -257,7 +257,7 @@
   }
 }
 
-/// \brief Returns true if the identifier represents a keyword in the
+/// Returns true if the identifier represents a keyword in the
 /// specified language.
 bool IdentifierInfo::isKeyword(const LangOptions &LangOpts) const {
   switch (getTokenKwStatus(LangOpts, getTokenID())) {
@@ -269,7 +269,7 @@
   }
 }
 
-/// \brief Returns true if the identifier represents a C++ keyword in the
+/// Returns true if the identifier represents a C++ keyword in the
 /// specified language.
 bool IdentifierInfo::isCPlusPlusKeyword(const LangOptions &LangOpts) const {
   if (!LangOpts.CPlusPlus || !isKeyword(LangOpts))
Index: cfe/trunk/lib/Basic/Module.cpp
===================================================================
--- cfe/trunk/lib/Basic/Module.cpp
+++ cfe/trunk/lib/Basic/Module.cpp
@@ -71,7 +71,7 @@
   }
 }
 
-/// \brief Determine whether a translation unit built using the current
+/// Determine whether a translation unit built using the current
 /// language options has the given feature.
 static bool hasFeature(StringRef Feature, const LangOptions &LangOpts,
                        const TargetInfo &Target) {
Index: cfe/trunk/lib/Basic/OpenMPKinds.cpp
===================================================================
--- cfe/trunk/lib/Basic/OpenMPKinds.cpp
+++ cfe/trunk/lib/Basic/OpenMPKinds.cpp
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 /// \file
-/// \brief This file implements the OpenMP enum and support functions.
+/// This file implements the OpenMP enum and support functions.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Basic/OperatorPrecedence.cpp
===================================================================
--- cfe/trunk/lib/Basic/OperatorPrecedence.cpp
+++ cfe/trunk/lib/Basic/OperatorPrecedence.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Defines and computes precedence levels for binary/ternary operators.
+/// Defines and computes precedence levels for binary/ternary operators.
 ///
 //===----------------------------------------------------------------------===//
 #include "clang/Basic/OperatorPrecedence.h"
Index: cfe/trunk/lib/Basic/SourceManager.cpp
===================================================================
--- cfe/trunk/lib/Basic/SourceManager.cpp
+++ cfe/trunk/lib/Basic/SourceManager.cpp
@@ -260,7 +260,7 @@
   return &*--I;
 }
 
-/// \brief Add a new line entry that has already been encoded into
+/// Add a new line entry that has already been encoded into
 /// the internal representation of the line table.
 void LineTableInfo::AddEntry(FileID FID,
                              const std::vector<LineEntry> &Entries) {
@@ -468,7 +468,7 @@
   return std::make_pair(-ID - 1, CurrentLoadedOffset);
 }
 
-/// \brief As part of recovering from missing or changed content, produce a
+/// As part of recovering from missing or changed content, produce a
 /// fake, non-empty buffer.
 llvm::MemoryBuffer *SourceManager::getFakeBufferForRecovery() const {
   if (!FakeBufferForRecovery)
@@ -478,7 +478,7 @@
   return FakeBufferForRecovery.get();
 }
 
-/// \brief As part of recovering from missing or changed content, produce a
+/// As part of recovering from missing or changed content, produce a
 /// fake content cache.
 const SrcMgr::ContentCache *
 SourceManager::getFakeContentCacheForRecovery() const {
@@ -490,7 +490,7 @@
   return FakeContentCacheForRecovery.get();
 }
 
-/// \brief Returns the previous in-order FileID or an invalid FileID if there
+/// Returns the previous in-order FileID or an invalid FileID if there
 /// is no previous one.
 FileID SourceManager::getPreviousFileID(FileID FID) const {
   if (FID.isInvalid())
@@ -510,7 +510,7 @@
   return FileID::get(ID-1);
 }
 
-/// \brief Returns the next in-order FileID or an invalid FileID if there is
+/// Returns the next in-order FileID or an invalid FileID if there is
 /// no next one.
 FileID SourceManager::getNextFileID(FileID FID) const {
   if (FID.isInvalid())
@@ -692,7 +692,7 @@
 // SourceLocation manipulation methods.
 //===----------------------------------------------------------------------===//
 
-/// \brief Return the FileID for a SourceLocation.
+/// Return the FileID for a SourceLocation.
 ///
 /// This is the cache-miss path of getFileID. Not as hot as that function, but
 /// still very important. It is responsible for finding the entry in the
@@ -708,7 +708,7 @@
   return getFileIDLoaded(SLocOffset);
 }
 
-/// \brief Return the FileID for a SourceLocation with a low offset.
+/// Return the FileID for a SourceLocation with a low offset.
 ///
 /// This function knows that the SourceLocation is in a local buffer, not a
 /// loaded one.
@@ -799,7 +799,7 @@
   }
 }
 
-/// \brief Return the FileID for a SourceLocation with a high offset.
+/// Return the FileID for a SourceLocation with a high offset.
 ///
 /// This function knows that the SourceLocation is in a loaded buffer, not a
 /// local one.
@@ -1519,7 +1519,7 @@
   return PresumedLoc(Filename.data(), LineNo, ColNo, IncludeLoc);
 }
 
-/// \brief Returns whether the PresumedLoc for a given SourceLocation is
+/// Returns whether the PresumedLoc for a given SourceLocation is
 /// in the main file.
 ///
 /// This computes the "presumed" location for a SourceLocation, then checks
@@ -1549,7 +1549,7 @@
   return FI.getIncludeLoc().isInvalid();
 }
 
-/// \brief The size of the SLocEntry that \p FID represents.
+/// The size of the SLocEntry that \p FID represents.
 unsigned SourceManager::getFileIDSize(FileID FID) const {
   bool Invalid = false;
   const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid);
@@ -1572,7 +1572,7 @@
 // Other miscellaneous methods.
 //===----------------------------------------------------------------------===//
 
-/// \brief Retrieve the inode for the given file entry, if possible.
+/// Retrieve the inode for the given file entry, if possible.
 ///
 /// This routine involves a system call, and therefore should only be used
 /// in non-performance-critical code.
@@ -1588,7 +1588,7 @@
   return ID;
 }
 
-/// \brief Get the source location for the given file:line:col triplet.
+/// Get the source location for the given file:line:col triplet.
 ///
 /// If the source file is included multiple times, the source location will
 /// be based upon an arbitrary inclusion.
@@ -1602,7 +1602,7 @@
   return translateLineCol(FirstFID, Line, Col);
 }
 
-/// \brief Get the FileID for the given file.
+/// Get the FileID for the given file.
 ///
 /// If the source file is included multiple times, the FileID will be the
 /// first inclusion.
@@ -1719,7 +1719,7 @@
   return FirstFID;
 }
 
-/// \brief Get the source location in \arg FID for the given line:col.
+/// Get the source location in \arg FID for the given line:col.
 /// Returns null location if \arg FID is not a file SLocEntry.
 SourceLocation SourceManager::translateLineCol(FileID FID,
                                                unsigned Line,
@@ -1780,7 +1780,7 @@
   return FileLoc.getLocWithOffset(FilePos + i);
 }
 
-/// \brief Compute a map of macro argument chunks to their expanded source
+/// Compute a map of macro argument chunks to their expanded source
 /// location. Chunks that are not part of a macro argument will map to an
 /// invalid source location. e.g. if a file contains one macro argument at
 /// offset 100 with length 10, this is how the map will be formed:
@@ -1919,7 +1919,7 @@
   MacroArgsCache[EndOffs] = EndOffsMappedLoc;
 }
 
-/// \brief If \arg Loc points inside a function macro argument, the returned
+/// If \arg Loc points inside a function macro argument, the returned
 /// location will be the macro location in which the argument was expanded.
 /// If a macro argument is used multiple times, the expanded location will
 /// be at the first expansion of the argument.
@@ -2028,7 +2028,7 @@
   return IBTUCacheOverflow;
 }
 
-/// \brief Determines the order of 2 source locations in the translation unit.
+/// Determines the order of 2 source locations in the translation unit.
 ///
 /// \returns true if LHS source location comes before RHS, false otherwise.
 bool SourceManager::isBeforeInTranslationUnit(SourceLocation LHS,
Index: cfe/trunk/lib/Basic/Targets/AMDGPU.h
===================================================================
--- cfe/trunk/lib/Basic/Targets/AMDGPU.h
+++ cfe/trunk/lib/Basic/Targets/AMDGPU.h
@@ -38,7 +38,7 @@
   static const LangASMap AMDGPUDefIsGenMap;
   static const LangASMap AMDGPUDefIsPrivMap;
 
-  /// \brief GPU kinds supported by the AMDGPU target.
+  /// GPU kinds supported by the AMDGPU target.
   enum GPUKind : uint32_t {
     // Not specified processor.
     GK_NONE = 0,
Index: cfe/trunk/lib/Basic/Targets/PPC.h
===================================================================
--- cfe/trunk/lib/Basic/Targets/PPC.h
+++ cfe/trunk/lib/Basic/Targets/PPC.h
@@ -57,7 +57,7 @@
     LongDoubleFormat = &llvm::APFloat::PPCDoubleDouble();
   }
 
-  /// \brief Flags for architecture specific defines.
+  /// Flags for architecture specific defines.
   typedef enum {
     ArchDefineNone = 0,
     ArchDefineName = 1 << 0, // <name> is substituted for arch name.
Index: cfe/trunk/lib/Basic/Targets/X86.h
===================================================================
--- cfe/trunk/lib/Basic/Targets/X86.h
+++ cfe/trunk/lib/Basic/Targets/X86.h
@@ -108,7 +108,7 @@
   bool HasMOVDIR64B = false;
 
 protected:
-  /// \brief Enumeration of all of the X86 CPUs supported by Clang.
+  /// Enumeration of all of the X86 CPUs supported by Clang.
   ///
   /// Each enumeration represents a particular CPU supported by Clang. These
   /// loosely correspond to the options passed to '-march' or '-mtune' flags.
Index: cfe/trunk/lib/Basic/VirtualFileSystem.cpp
===================================================================
--- cfe/trunk/lib/Basic/VirtualFileSystem.cpp
+++ cfe/trunk/lib/Basic/VirtualFileSystem.cpp
@@ -165,7 +165,7 @@
 
 namespace {
 
-/// \brief Wrapper around a raw file descriptor.
+/// Wrapper around a raw file descriptor.
 class RealFile : public File {
   friend class RealFileSystem;
 
@@ -227,7 +227,7 @@
 
 namespace {
 
-/// \brief The file system according to your operating system.
+/// The file system according to your operating system.
 class RealFileSystem : public FileSystem {
 public:
   ErrorOr<Status> status(const Twine &Path) override;
@@ -780,7 +780,7 @@
   EK_File
 };
 
-/// \brief A single file or directory in the VFS.
+/// A single file or directory in the VFS.
 class Entry {
   EntryKind Kind;
   std::string Name;
@@ -842,7 +842,7 @@
 
   StringRef getExternalContentsPath() const { return ExternalContentsPath; }
 
-  /// \brief whether to use the external path as the name for this file.
+  /// whether to use the external path as the name for this file.
   bool useExternalName(bool GlobalUseExternalName) const {
     return UseName == NK_NotSet ? GlobalUseExternalName
                                 : (UseName == NK_External);
@@ -869,7 +869,7 @@
   std::error_code increment() override;
 };
 
-/// \brief A virtual file system parsed from a YAML file.
+/// A virtual file system parsed from a YAML file.
 ///
 /// Currently, this class allows creating virtual directories and mapping
 /// virtual file paths to existing external files, available in \c ExternalFS.
@@ -930,7 +930,7 @@
   /// The root(s) of the virtual file system.
   std::vector<std::unique_ptr<Entry>> Roots;
 
-  /// \brief The file system to use for external references.
+  /// The file system to use for external references.
   IntrusiveRefCntPtr<FileSystem> ExternalFS;
 
   /// If IsRelativeOverlay is set, this represents the directory
@@ -941,7 +941,7 @@
   /// @name Configuration
   /// @{
 
-  /// \brief Whether to perform case-sensitive comparisons.
+  /// Whether to perform case-sensitive comparisons.
   ///
   /// Currently, case-insensitive matching only works correctly with ASCII.
   bool CaseSensitive = true;
@@ -950,11 +950,11 @@
   /// be prefixed in every 'external-contents' when reading from YAML files.
   bool IsRelativeOverlay = false;
 
-  /// \brief Whether to use to use the value of 'external-contents' for the
+  /// Whether to use to use the value of 'external-contents' for the
   /// names of files.  This global value is overridable on a per-file basis.
   bool UseExternalNames = true;
 
-  /// \brief Whether an invalid path obtained via 'external-contents' should
+  /// Whether an invalid path obtained via 'external-contents' should
   /// cause iteration on the VFS to stop. If 'true', the VFS should ignore
   /// the entry and continue with the next. Allows YAML files to be shared
   /// across multiple compiler invocations regardless of prior existent
@@ -977,19 +977,19 @@
   RedirectingFileSystem(IntrusiveRefCntPtr<FileSystem> ExternalFS)
       : ExternalFS(std::move(ExternalFS)) {}
 
-  /// \brief Looks up the path <tt>[Start, End)</tt> in \p From, possibly
+  /// Looks up the path <tt>[Start, End)</tt> in \p From, possibly
   /// recursing into the contents of \p From if it is a directory.
   ErrorOr<Entry *> lookupPath(sys::path::const_iterator Start,
                               sys::path::const_iterator End, Entry *From);
 
-  /// \brief Get the status of a given an \c Entry.
+  /// Get the status of a given an \c Entry.
   ErrorOr<Status> status(const Twine &Path, Entry *E);
 
 public:
-  /// \brief Looks up \p Path in \c Roots.
+  /// Looks up \p Path in \c Roots.
   ErrorOr<Entry *> lookupPath(const Twine &Path);
 
-  /// \brief Parses \p Buffer, which is expected to be in YAML format and
+  /// Parses \p Buffer, which is expected to be in YAML format and
   /// returns a virtual file system representing its contents.
   static RedirectingFileSystem *
   create(std::unique_ptr<MemoryBuffer> Buffer,
@@ -1065,7 +1065,7 @@
 #endif
 };
 
-/// \brief A helper class to hold the common YAML parsing state.
+/// A helper class to hold the common YAML parsing state.
 class RedirectingFileSystemParser {
   yaml::Stream &Stream;
 
Index: cfe/trunk/lib/CodeGen/CGAtomic.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGAtomic.cpp
+++ cfe/trunk/lib/CodeGen/CGAtomic.cpp
@@ -187,7 +187,7 @@
     RValue convertAtomicTempToRValue(Address addr, AggValueSlot resultSlot,
                                      SourceLocation loc, bool AsValue) const;
 
-    /// \brief Converts a rvalue to integer value.
+    /// Converts a rvalue to integer value.
     llvm::Value *convertRValueToInt(RValue RVal) const;
 
     RValue ConvertIntToValueOrAtomic(llvm::Value *IntVal,
@@ -208,13 +208,13 @@
                               LVal.getBaseInfo(), LVal.getTBAAInfo());
     }
 
-    /// \brief Emits atomic load.
+    /// Emits atomic load.
     /// \returns Loaded value.
     RValue EmitAtomicLoad(AggValueSlot ResultSlot, SourceLocation Loc,
                           bool AsValue, llvm::AtomicOrdering AO,
                           bool IsVolatile);
 
-    /// \brief Emits atomic compare-and-exchange sequence.
+    /// Emits atomic compare-and-exchange sequence.
     /// \param Expected Expected value.
     /// \param Desired Desired value.
     /// \param Success Atomic ordering for success operation.
@@ -230,13 +230,13 @@
                                   llvm::AtomicOrdering::SequentiallyConsistent,
                               bool IsWeak = false);
 
-    /// \brief Emits atomic update.
+    /// Emits atomic update.
     /// \param AO Atomic ordering.
     /// \param UpdateOp Update operation for the current lvalue.
     void EmitAtomicUpdate(llvm::AtomicOrdering AO,
                           const llvm::function_ref<RValue(RValue)> &UpdateOp,
                           bool IsVolatile);
-    /// \brief Emits atomic update.
+    /// Emits atomic update.
     /// \param AO Atomic ordering.
     void EmitAtomicUpdate(llvm::AtomicOrdering AO, RValue UpdateRVal,
                           bool IsVolatile);
@@ -244,25 +244,25 @@
     /// Materialize an atomic r-value in atomic-layout memory.
     Address materializeRValue(RValue rvalue) const;
 
-    /// \brief Creates temp alloca for intermediate operations on atomic value.
+    /// Creates temp alloca for intermediate operations on atomic value.
     Address CreateTempAlloca() const;
   private:
     bool requiresMemSetZero(llvm::Type *type) const;
 
 
-    /// \brief Emits atomic load as a libcall.
+    /// Emits atomic load as a libcall.
     void EmitAtomicLoadLibcall(llvm::Value *AddForLoaded,
                                llvm::AtomicOrdering AO, bool IsVolatile);
-    /// \brief Emits atomic load as LLVM instruction.
+    /// Emits atomic load as LLVM instruction.
     llvm::Value *EmitAtomicLoadOp(llvm::AtomicOrdering AO, bool IsVolatile);
-    /// \brief Emits atomic compare-and-exchange op as a libcall.
+    /// Emits atomic compare-and-exchange op as a libcall.
     llvm::Value *EmitAtomicCompareExchangeLibcall(
         llvm::Value *ExpectedAddr, llvm::Value *DesiredAddr,
         llvm::AtomicOrdering Success =
             llvm::AtomicOrdering::SequentiallyConsistent,
         llvm::AtomicOrdering Failure =
             llvm::AtomicOrdering::SequentiallyConsistent);
-    /// \brief Emits atomic compare-and-exchange op as LLVM instruction.
+    /// Emits atomic compare-and-exchange op as LLVM instruction.
     std::pair<llvm::Value *, llvm::Value *> EmitAtomicCompareExchangeOp(
         llvm::Value *ExpectedVal, llvm::Value *DesiredVal,
         llvm::AtomicOrdering Success =
@@ -270,19 +270,19 @@
         llvm::AtomicOrdering Failure =
             llvm::AtomicOrdering::SequentiallyConsistent,
         bool IsWeak = false);
-    /// \brief Emit atomic update as libcalls.
+    /// Emit atomic update as libcalls.
     void
     EmitAtomicUpdateLibcall(llvm::AtomicOrdering AO,
                             const llvm::function_ref<RValue(RValue)> &UpdateOp,
                             bool IsVolatile);
-    /// \brief Emit atomic update as LLVM instructions.
+    /// Emit atomic update as LLVM instructions.
     void EmitAtomicUpdateOp(llvm::AtomicOrdering AO,
                             const llvm::function_ref<RValue(RValue)> &UpdateOp,
                             bool IsVolatile);
-    /// \brief Emit atomic update as libcalls.
+    /// Emit atomic update as libcalls.
     void EmitAtomicUpdateLibcall(llvm::AtomicOrdering AO, RValue UpdateRVal,
                                  bool IsVolatile);
-    /// \brief Emit atomic update as LLVM instructions.
+    /// Emit atomic update as LLVM instructions.
     void EmitAtomicUpdateOp(llvm::AtomicOrdering AO, RValue UpdateRal,
                             bool IsVolatile);
   };
Index: cfe/trunk/lib/CodeGen/CGBuilder.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGBuilder.h
+++ cfe/trunk/lib/CodeGen/CGBuilder.h
@@ -20,7 +20,7 @@
 
 class CodeGenFunction;
 
-/// \brief This is an IRBuilder insertion helper that forwards to
+/// This is an IRBuilder insertion helper that forwards to
 /// CodeGenFunction::InsertHelper, which adds necessary metadata to
 /// instructions.
 class CGBuilderInserter : protected llvm::IRBuilderDefaultInserter {
@@ -29,7 +29,7 @@
   explicit CGBuilderInserter(CodeGenFunction *CGF) : CGF(CGF) {}
 
 protected:
-  /// \brief This forwards to CodeGenFunction::InsertHelper.
+  /// This forwards to CodeGenFunction::InsertHelper.
   void InsertHelper(llvm::Instruction *I, const llvm::Twine &Name,
                     llvm::BasicBlock *BB,
                     llvm::BasicBlock::iterator InsertPt) const;
Index: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp
@@ -189,7 +189,7 @@
   return RValue::get(Result);
 }
 
-/// @brief Utility to insert an atomic cmpxchg instruction.
+/// Utility to insert an atomic cmpxchg instruction.
 ///
 /// @param CGF The current codegen function.
 /// @param E   Builtin call expression to convert to cmpxchg.
@@ -320,7 +320,7 @@
   return CGF.EmitCall(E->getCallee()->getType(), callee, E, ReturnValueSlot());
 }
 
-/// \brief Emit a call to llvm.{sadd,uadd,ssub,usub,smul,umul}.with.overflow.*
+/// Emit a call to llvm.{sadd,uadd,ssub,usub,smul,umul}.with.overflow.*
 /// depending on IntrinsicID.
 ///
 /// \arg CGF The current codegen function.
@@ -3667,7 +3667,7 @@
   return ConstantInt::get(Ty, neg ? -SV : SV);
 }
 
-// \brief Right-shift a vector by a constant.
+// Right-shift a vector by a constant.
 Value *CodeGenFunction::EmitNeonRShiftImm(Value *Vec, Value *Shift,
                                           llvm::Type *Ty, bool usgn,
                                           const char *name) {
Index: cfe/trunk/lib/CodeGen/CGCXXABI.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGCXXABI.h
+++ cfe/trunk/lib/CodeGen/CGCXXABI.h
@@ -40,7 +40,7 @@
 class CodeGenModule;
 struct CatchTypeInfo;
 
-/// \brief Implements C++ ABI-specific code generation functions.
+/// Implements C++ ABI-specific code generation functions.
 class CGCXXABI {
 protected:
   CodeGenModule &CGM;
@@ -222,7 +222,7 @@
   /// is required.
   llvm::Constant *getMemberPointerAdjustment(const CastExpr *E);
 
-  /// \brief Computes the non-virtual adjustment needed for a member pointer
+  /// Computes the non-virtual adjustment needed for a member pointer
   /// conversion along an inheritance path stored in an APValue.  Unlike
   /// getMemberPointerAdjustment(), the adjustment can be negative if the path
   /// is from a derived type to a base type.
@@ -237,7 +237,7 @@
   virtual void emitThrow(CodeGenFunction &CGF, const CXXThrowExpr *E) = 0;
   virtual llvm::GlobalVariable *getThrowInfo(QualType T) { return nullptr; }
 
-  /// \brief Determine whether it's possible to emit a vtable for \p RD, even
+  /// Determine whether it's possible to emit a vtable for \p RD, even
   /// though we do not know that the vtable has been marked as used by semantic
   /// analysis.
   virtual bool canSpeculativelyEmitVTable(const CXXRecordDecl *RD) const = 0;
Index: cfe/trunk/lib/CodeGen/CGCall.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGCall.h
+++ cfe/trunk/lib/CodeGen/CGCall.h
@@ -43,9 +43,9 @@
 
 /// Abstract information about a function or function prototype.
 class CGCalleeInfo {
-  /// \brief The function prototype of the callee.
+  /// The function prototype of the callee.
   const FunctionProtoType *CalleeProtoTy;
-  /// \brief The function declaration of the callee.
+  /// The function declaration of the callee.
   const Decl *CalleeDecl;
 
 public:
@@ -334,7 +334,7 @@
     llvm::Instruction *getStackBase() const { return StackBase; }
     void freeArgumentMemory(CodeGenFunction &CGF) const;
 
-    /// \brief Returns if we're using an inalloca struct to pass arguments in
+    /// Returns if we're using an inalloca struct to pass arguments in
     /// memory.
     bool isUsingInAlloca() const { return StackBase; }
 
Index: cfe/trunk/lib/CodeGen/CGClass.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGClass.cpp
+++ cfe/trunk/lib/CodeGen/CGClass.cpp
@@ -1739,7 +1739,7 @@
  };
 } // end anonymous namespace
 
-/// \brief Emit all code that comes at the end of class's
+/// Emit all code that comes at the end of class's
 /// destructor. This is to call destructors on members and base classes
 /// in reverse order of their construction.
 ///
Index: cfe/trunk/lib/CodeGen/CGDebugInfo.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGDebugInfo.h
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.h
@@ -658,7 +658,7 @@
 
   ~ApplyDebugLocation();
 
-  /// \brief Apply TemporaryLocation if it is valid. Otherwise switch
+  /// Apply TemporaryLocation if it is valid. Otherwise switch
   /// to an artificial debug location that has a valid scope, but no
   /// line information.
   ///
@@ -672,7 +672,7 @@
   static ApplyDebugLocation CreateArtificial(CodeGenFunction &CGF) {
     return ApplyDebugLocation(CGF, false, SourceLocation());
   }
-  /// \brief Apply TemporaryLocation if it is valid. Otherwise switch
+  /// Apply TemporaryLocation if it is valid. Otherwise switch
   /// to an artificial debug location that has a valid scope, but no
   /// line information.
   static ApplyDebugLocation
Index: cfe/trunk/lib/CodeGen/CGDecl.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGDecl.cpp
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp
@@ -1283,7 +1283,7 @@
   return false;
 }
 
-/// \brief Determine whether the given initializer is trivial in the sense
+/// Determine whether the given initializer is trivial in the sense
 /// that it requires no code to be generated.
 bool CodeGenFunction::isTrivialInitializer(const Expr *Init) {
   if (!Init)
Index: cfe/trunk/lib/CodeGen/CGExpr.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGExpr.cpp
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp
@@ -1791,7 +1791,7 @@
   return RValue::get(Vec);
 }
 
-/// @brief Generates lvalue for partial ext_vector access.
+/// Generates lvalue for partial ext_vector access.
 Address CodeGenFunction::EmitExtVectorElementLValue(LValue LV) {
   Address VectorAddress = LV.getExtVectorAddress();
   const VectorType *ExprVT = LV.getType()->getAs<VectorType>();
@@ -1813,7 +1813,7 @@
   return VectorBasePtrPlusIx;
 }
 
-/// @brief Load of global gamed gegisters are always calls to intrinsics.
+/// Load of global gamed gegisters are always calls to intrinsics.
 RValue CodeGenFunction::EmitLoadOfGlobalRegLValue(LValue LV) {
   assert((LV.getType()->isIntegerType() || LV.getType()->isPointerType()) &&
          "Bad type for register variable");
@@ -2073,7 +2073,7 @@
                       Dst.isVolatileQualified());
 }
 
-/// @brief Store of global named registers are always calls to intrinsics.
+/// Store of global named registers are always calls to intrinsics.
 void CodeGenFunction::EmitStoreThroughGlobalRegLValue(RValue Src, LValue Dst) {
   assert((Dst.getType()->isIntegerType() || Dst.getType()->isPointerType()) &&
          "Bad type for register variable");
@@ -2710,7 +2710,7 @@
   return Builder.CreatePtrToInt(V, TargetTy);
 }
 
-/// \brief Emit a representation of a SourceLocation for passing to a handler
+/// Emit a representation of a SourceLocation for passing to a handler
 /// in a sanitizer runtime library. The format for this data is:
 /// \code
 ///   struct SourceLocation {
@@ -2769,7 +2769,7 @@
 }
 
 namespace {
-/// \brief Specify under what conditions this check can be recovered
+/// Specify under what conditions this check can be recovered
 enum class CheckRecoverableKind {
   /// Always terminate program execution if this check fails.
   Unrecoverable,
Index: cfe/trunk/lib/CodeGen/CGExprAgg.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGExprAgg.cpp
+++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp
@@ -220,7 +220,7 @@
   EmitFinalDestCopy(E->getType(), LV);
 }
 
-/// \brief True if the given aggregate type requires special GC API calls.
+/// True if the given aggregate type requires special GC API calls.
 bool AggExprEmitter::TypeRequiresGCollection(QualType T) {
   // Only record types have members that might require garbage collection.
   const RecordType *RecordTy = T->getAs<RecordType>();
@@ -369,7 +369,7 @@
                         dest.isVolatile() || src.isVolatile());
 }
 
-/// \brief Emit the initializer for a std::initializer_list initialized with a
+/// Emit the initializer for a std::initializer_list initialized with a
 /// real initializer list.
 void
 AggExprEmitter::VisitCXXStdInitializerListExpr(CXXStdInitializerListExpr *E) {
@@ -434,7 +434,7 @@
   }
 }
 
-/// \brief Determine if E is a trivial array filler, that is, one that is
+/// Determine if E is a trivial array filler, that is, one that is
 /// equivalent to zero-initialization.
 static bool isTrivialFiller(Expr *E) {
   if (!E)
@@ -457,7 +457,7 @@
   return false;
 }
 
-/// \brief Emit initialization of an array from an initializer list.
+/// Emit initialization of an array from an initializer list.
 void AggExprEmitter::EmitArrayInit(Address DestPtr, llvm::ArrayType *AType,
                                    QualType ArrayQTy, InitListExpr *E) {
   uint64_t NumInitElements = E->getNumInits();
Index: cfe/trunk/lib/CodeGen/CGExprComplex.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGExprComplex.cpp
+++ cfe/trunk/lib/CodeGen/CGExprComplex.cpp
@@ -595,7 +595,7 @@
   return ComplexPairTy(ResR, ResI);
 }
 
-/// \brief Emit a libcall for a binary operation on complex types.
+/// Emit a libcall for a binary operation on complex types.
 ComplexPairTy ComplexExprEmitter::EmitComplexBinOpLibCall(StringRef LibCallName,
                                                           const BinOpInfo &Op) {
   CallArgList Args;
@@ -633,7 +633,7 @@
   return Res.getComplexVal();
 }
 
-/// \brief Lookup the libcall name for a given floating point type complex
+/// Lookup the libcall name for a given floating point type complex
 /// multiply.
 static StringRef getComplexMultiplyLibCallName(llvm::Type *Ty) {
   switch (Ty->getTypeID()) {
Index: cfe/trunk/lib/CodeGen/CGExprScalar.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGExprScalar.cpp
+++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp
@@ -1145,7 +1145,7 @@
   return CGF.EmitFromMemory(CGF.CGM.EmitNullConstant(Ty), Ty);
 }
 
-/// \brief Emit a sanitization check for the given "binary" operation (which
+/// Emit a sanitization check for the given "binary" operation (which
 /// might actually be a unary increment which has been lowered to a binary
 /// operation). The check passes if all values in \p Checks (which are \c i1),
 /// are \c true.
Index: cfe/trunk/lib/CodeGen/CGLoopInfo.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGLoopInfo.h
+++ cfe/trunk/lib/CodeGen/CGLoopInfo.h
@@ -32,62 +32,62 @@
 class ASTContext;
 namespace CodeGen {
 
-/// \brief Attributes that may be specified on loops.
+/// Attributes that may be specified on loops.
 struct LoopAttributes {
   explicit LoopAttributes(bool IsParallel = false);
   void clear();
 
-  /// \brief Generate llvm.loop.parallel metadata for loads and stores.
+  /// Generate llvm.loop.parallel metadata for loads and stores.
   bool IsParallel;
 
-  /// \brief State of loop vectorization or unrolling.
+  /// State of loop vectorization or unrolling.
   enum LVEnableState { Unspecified, Enable, Disable, Full };
 
-  /// \brief Value for llvm.loop.vectorize.enable metadata.
+  /// Value for llvm.loop.vectorize.enable metadata.
   LVEnableState VectorizeEnable;
 
-  /// \brief Value for llvm.loop.unroll.* metadata (enable, disable, or full).
+  /// Value for llvm.loop.unroll.* metadata (enable, disable, or full).
   LVEnableState UnrollEnable;
 
-  /// \brief Value for llvm.loop.vectorize.width metadata.
+  /// Value for llvm.loop.vectorize.width metadata.
   unsigned VectorizeWidth;
 
-  /// \brief Value for llvm.loop.interleave.count metadata.
+  /// Value for llvm.loop.interleave.count metadata.
   unsigned InterleaveCount;
 
-  /// \brief llvm.unroll.
+  /// llvm.unroll.
   unsigned UnrollCount;
 
-  /// \brief Value for llvm.loop.distribute.enable metadata.
+  /// Value for llvm.loop.distribute.enable metadata.
   LVEnableState DistributeEnable;
 };
 
-/// \brief Information used when generating a structured loop.
+/// Information used when generating a structured loop.
 class LoopInfo {
 public:
-  /// \brief Construct a new LoopInfo for the loop with entry Header.
+  /// Construct a new LoopInfo for the loop with entry Header.
   LoopInfo(llvm::BasicBlock *Header, const LoopAttributes &Attrs,
            const llvm::DebugLoc &StartLoc, const llvm::DebugLoc &EndLoc);
 
-  /// \brief Get the loop id metadata for this loop.
+  /// Get the loop id metadata for this loop.
   llvm::MDNode *getLoopID() const { return LoopID; }
 
-  /// \brief Get the header block of this loop.
+  /// Get the header block of this loop.
   llvm::BasicBlock *getHeader() const { return Header; }
 
-  /// \brief Get the set of attributes active for this loop.
+  /// Get the set of attributes active for this loop.
   const LoopAttributes &getAttributes() const { return Attrs; }
 
 private:
-  /// \brief Loop ID metadata.
+  /// Loop ID metadata.
   llvm::MDNode *LoopID;
-  /// \brief Header block of this loop.
+  /// Header block of this loop.
   llvm::BasicBlock *Header;
-  /// \brief The attributes for this loop.
+  /// The attributes for this loop.
   LoopAttributes Attrs;
 };
 
-/// \brief A stack of loop information corresponding to loop nesting levels.
+/// A stack of loop information corresponding to loop nesting levels.
 /// This stack can be used to prepare attributes which are applied when a loop
 /// is emitted.
 class LoopInfoStack {
@@ -97,70 +97,70 @@
 public:
   LoopInfoStack() {}
 
-  /// \brief Begin a new structured loop. The set of staged attributes will be
+  /// Begin a new structured loop. The set of staged attributes will be
   /// applied to the loop and then cleared.
   void push(llvm::BasicBlock *Header, const llvm::DebugLoc &StartLoc,
             const llvm::DebugLoc &EndLoc);
 
-  /// \brief Begin a new structured loop. Stage attributes from the Attrs list.
+  /// Begin a new structured loop. Stage attributes from the Attrs list.
   /// The staged attributes are applied to the loop and then cleared.
   void push(llvm::BasicBlock *Header, clang::ASTContext &Ctx,
             llvm::ArrayRef<const Attr *> Attrs, const llvm::DebugLoc &StartLoc,
             const llvm::DebugLoc &EndLoc);
 
-  /// \brief End the current loop.
+  /// End the current loop.
   void pop();
 
-  /// \brief Return the top loop id metadata.
+  /// Return the top loop id metadata.
   llvm::MDNode *getCurLoopID() const { return getInfo().getLoopID(); }
 
-  /// \brief Return true if the top loop is parallel.
+  /// Return true if the top loop is parallel.
   bool getCurLoopParallel() const {
     return hasInfo() ? getInfo().getAttributes().IsParallel : false;
   }
 
-  /// \brief Function called by the CodeGenFunction when an instruction is
+  /// Function called by the CodeGenFunction when an instruction is
   /// created.
   void InsertHelper(llvm::Instruction *I) const;
 
-  /// \brief Set the next pushed loop as parallel.
+  /// Set the next pushed loop as parallel.
   void setParallel(bool Enable = true) { StagedAttrs.IsParallel = Enable; }
 
-  /// \brief Set the next pushed loop 'vectorize.enable'
+  /// Set the next pushed loop 'vectorize.enable'
   void setVectorizeEnable(bool Enable = true) {
     StagedAttrs.VectorizeEnable =
         Enable ? LoopAttributes::Enable : LoopAttributes::Disable;
   }
 
-  /// \brief Set the next pushed loop as a distribution candidate.
+  /// Set the next pushed loop as a distribution candidate.
   void setDistributeState(bool Enable = true) {
     StagedAttrs.DistributeEnable =
         Enable ? LoopAttributes::Enable : LoopAttributes::Disable;
   }
 
-  /// \brief Set the next pushed loop unroll state.
+  /// Set the next pushed loop unroll state.
   void setUnrollState(const LoopAttributes::LVEnableState &State) {
     StagedAttrs.UnrollEnable = State;
   }
 
-  /// \brief Set the vectorize width for the next loop pushed.
+  /// Set the vectorize width for the next loop pushed.
   void setVectorizeWidth(unsigned W) { StagedAttrs.VectorizeWidth = W; }
 
-  /// \brief Set the interleave count for the next loop pushed.
+  /// Set the interleave count for the next loop pushed.
   void setInterleaveCount(unsigned C) { StagedAttrs.InterleaveCount = C; }
 
-  /// \brief Set the unroll count for the next loop pushed.
+  /// Set the unroll count for the next loop pushed.
   void setUnrollCount(unsigned C) { StagedAttrs.UnrollCount = C; }
 
 private:
-  /// \brief Returns true if there is LoopInfo on the stack.
+  /// Returns true if there is LoopInfo on the stack.
   bool hasInfo() const { return !Active.empty(); }
-  /// \brief Return the LoopInfo for the current loop. HasInfo should be called
+  /// Return the LoopInfo for the current loop. HasInfo should be called
   /// first to ensure LoopInfo is present.
   const LoopInfo &getInfo() const { return Active.back(); }
-  /// \brief The set of attributes that will be applied to the next pushed loop.
+  /// The set of attributes that will be applied to the next pushed loop.
   LoopAttributes StagedAttrs;
-  /// \brief Stack of active loops.
+  /// Stack of active loops.
   llvm::SmallVector<LoopInfo, 4> Active;
 };
 
Index: cfe/trunk/lib/CodeGen/CGObjC.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGObjC.cpp
+++ cfe/trunk/lib/CodeGen/CGObjC.cpp
@@ -259,7 +259,7 @@
   return CGM.getObjCRuntime().GenerateProtocolRef(*this, E->getProtocol());
 }
 
-/// \brief Adjust the type of an Objective-C object that doesn't match up due
+/// Adjust the type of an Objective-C object that doesn't match up due
 /// to type erasure at various points, e.g., related result types or the use
 /// of parameterized classes.
 static RValue AdjustObjCObjectType(CodeGenFunction &CGF, QualType ExpT,
@@ -803,7 +803,7 @@
   Kind = Native;
 }
 
-/// \brief Generate an Objective-C property getter function.
+/// Generate an Objective-C property getter function.
 ///
 /// The given Decl must be an ObjCImplementationDecl. \@synthesize
 /// is illegal within a category.
@@ -1336,7 +1336,7 @@
   EmitStmt(&assign);
 }
 
-/// \brief Generate an Objective-C property setter function.
+/// Generate an Objective-C property setter function.
 ///
 /// The given Decl must be an ObjCImplementationDecl. \@synthesize
 /// is illegal within a category.
Index: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGObjCMac.cpp
+++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp
@@ -888,7 +888,7 @@
   /// int * but is actually an Obj-C class pointer.
   llvm::WeakTrackingVH ConstantStringClassRef;
 
-  /// \brief The LLVM type corresponding to NSConstantString.
+  /// The LLVM type corresponding to NSConstantString.
   llvm::StructType *NSConstantStringType = nullptr;
 
   llvm::StringMap<llvm::GlobalVariable *> NSConstantStringMap;
Index: cfe/trunk/lib/CodeGen/CGOpenCLRuntime.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGOpenCLRuntime.h
+++ cfe/trunk/lib/CodeGen/CGOpenCLRuntime.h
@@ -68,11 +68,11 @@
 
   llvm::PointerType *getSamplerType(const Type *T);
 
-  // \brief Returns a value which indicates the size in bytes of the pipe
+  // Returns a value which indicates the size in bytes of the pipe
   // element.
   virtual llvm::Value *getPipeElemSize(const Expr *PipeArg);
 
-  // \brief Returns a value which indicates the alignment in bytes of the pipe
+  // Returns a value which indicates the alignment in bytes of the pipe
   // element.
   virtual llvm::Value *getPipeElemAlign(const Expr *PipeArg);
 
@@ -83,7 +83,7 @@
   EnqueuedBlockInfo emitOpenCLEnqueuedBlock(CodeGenFunction &CGF,
                                             const Expr *E);
 
-  /// \brief Record invoke function and block literal emitted during normal
+  /// Record invoke function and block literal emitted during normal
   /// codegen for a block expression. The information is used by
   /// emitOpenCLEnqueuedBlock to emit wrapper kernel.
   ///
Index: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.h
+++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.h
@@ -219,13 +219,13 @@
   explicit CGOpenMPRuntime(CodeGenModule &CGM, StringRef FirstSeparator,
                            StringRef Separator);
 
-  /// \brief Creates offloading entry for the provided entry ID \a ID,
+  /// Creates offloading entry for the provided entry ID \a ID,
   /// address \a Addr, size \a Size, and flags \a Flags.
   virtual void createOffloadEntry(llvm::Constant *ID, llvm::Constant *Addr,
                                   uint64_t Size, int32_t Flags,
                                   llvm::GlobalValue::LinkageTypes Linkage);
 
-  /// \brief Helper to emit outlined function for 'target' directive.
+  /// Helper to emit outlined function for 'target' directive.
   /// \param D Directive to emit.
   /// \param ParentName Name of the function that encloses the target region.
   /// \param OutlinedFn Outlined function value to be defined by this call.
@@ -241,7 +241,7 @@
                                                 bool IsOffloadEntry,
                                                 const RegionCodeGenTy &CodeGen);
 
-  /// \brief Emits code for OpenMP 'if' clause using specified \a CodeGen
+  /// Emits code for OpenMP 'if' clause using specified \a CodeGen
   /// function. Here is the logic:
   /// if (Cond) {
   ///   ThenGen();
@@ -252,20 +252,20 @@
                        const RegionCodeGenTy &ThenGen,
                        const RegionCodeGenTy &ElseGen);
 
-  /// \brief Emits object of ident_t type with info for source location.
+  /// Emits object of ident_t type with info for source location.
   /// \param Flags Flags for OpenMP location.
   ///
   llvm::Value *emitUpdateLocation(CodeGenFunction &CGF, SourceLocation Loc,
                                   unsigned Flags = 0);
 
-  /// \brief Returns pointer to ident_t type.
+  /// Returns pointer to ident_t type.
   llvm::Type *getIdentTyPointerTy();
 
-  /// \brief Gets thread id value for the current thread.
+  /// Gets thread id value for the current thread.
   ///
   llvm::Value *getThreadID(CodeGenFunction &CGF, SourceLocation Loc);
 
-  /// \brief Get the function name of an outlined region.
+  /// Get the function name of an outlined region.
   //  The name can be customized depending on the target.
   //
   virtual StringRef getOutlinedHelperName() const { return ".omp_outlined."; }
@@ -274,34 +274,34 @@
   void emitCall(CodeGenFunction &CGF, SourceLocation Loc, llvm::Value *Callee,
                 ArrayRef<llvm::Value *> Args = llvm::None) const;
 
-  /// \brief Emits address of the word in a memory where current thread id is
+  /// Emits address of the word in a memory where current thread id is
   /// stored.
   virtual Address emitThreadIDAddress(CodeGenFunction &CGF, SourceLocation Loc);
 
 private:
-  /// \brief Default const ident_t object used for initialization of all other
+  /// Default const ident_t object used for initialization of all other
   /// ident_t objects.
   llvm::Constant *DefaultOpenMPPSource = nullptr;
-  /// \brief Map of flags and corresponding default locations.
+  /// Map of flags and corresponding default locations.
   typedef llvm::DenseMap<unsigned, llvm::Value *> OpenMPDefaultLocMapTy;
   OpenMPDefaultLocMapTy OpenMPDefaultLocMap;
   Address getOrCreateDefaultLocation(unsigned Flags);
 
   QualType IdentQTy;
   llvm::StructType *IdentTy = nullptr;
-  /// \brief Map for SourceLocation and OpenMP runtime library debug locations.
+  /// Map for SourceLocation and OpenMP runtime library debug locations.
   typedef llvm::DenseMap<unsigned, llvm::Value *> OpenMPDebugLocMapTy;
   OpenMPDebugLocMapTy OpenMPDebugLocMap;
-  /// \brief The type for a microtask which gets passed to __kmpc_fork_call().
+  /// The type for a microtask which gets passed to __kmpc_fork_call().
   /// Original representation is:
   /// typedef void (kmpc_micro)(kmp_int32 global_tid, kmp_int32 bound_tid,...);
   llvm::FunctionType *Kmpc_MicroTy = nullptr;
-  /// \brief Stores debug location and ThreadID for the function.
+  /// Stores debug location and ThreadID for the function.
   struct DebugLocThreadIdTy {
     llvm::Value *DebugLoc;
     llvm::Value *ThreadID;
   };
-  /// \brief Map of local debug location, ThreadId and functions.
+  /// Map of local debug location, ThreadId and functions.
   typedef llvm::DenseMap<llvm::Function *, DebugLocThreadIdTy>
       OpenMPLocThreadIDMapTy;
   OpenMPLocThreadIDMapTy OpenMPLocThreadIDMap;
@@ -319,20 +319,20 @@
   IdentifierInfo *Out = nullptr;
   IdentifierInfo *Priv = nullptr;
   IdentifierInfo *Orig = nullptr;
-  /// \brief Type kmp_critical_name, originally defined as typedef kmp_int32
+  /// Type kmp_critical_name, originally defined as typedef kmp_int32
   /// kmp_critical_name[8];
   llvm::ArrayType *KmpCriticalNameTy;
-  /// \brief An ordered map of auto-generated variables to their unique names.
+  /// An ordered map of auto-generated variables to their unique names.
   /// It stores variables with the following names: 1) ".gomp_critical_user_" +
   /// <critical_section_name> + ".var" for "omp critical" directives; 2)
   /// <mangled_name_for_global_var> + ".cache." for cache for threadprivate
   /// variables.
   llvm::StringMap<llvm::AssertingVH<llvm::Constant>, llvm::BumpPtrAllocator>
       InternalVars;
-  /// \brief Type typedef kmp_int32 (* kmp_routine_entry_t)(kmp_int32, void *);
+  /// Type typedef kmp_int32 (* kmp_routine_entry_t)(kmp_int32, void *);
   llvm::Type *KmpRoutineEntryPtrTy = nullptr;
   QualType KmpRoutineEntryPtrQTy;
-  /// \brief Type typedef struct kmp_task {
+  /// Type typedef struct kmp_task {
   ///    void *              shareds; /**< pointer to block of pointers to
   ///    shared vars   */
   ///    kmp_routine_entry_t routine; /**< pointer to routine to call for
@@ -346,7 +346,7 @@
   QualType SavedKmpTaskTQTy;
   /// Saved kmp_task_t for taskloop-based directive.
   QualType SavedKmpTaskloopTQTy;
-  /// \brief Type typedef struct kmp_depend_info {
+  /// Type typedef struct kmp_depend_info {
   ///    kmp_intptr_t               base_addr;
   ///    size_t                     len;
   ///    struct {
@@ -361,7 +361,7 @@
   ///  kmp_int64 st; // stride
   /// };
   QualType KmpDimTy;
-  /// \brief Type struct __tgt_offload_entry{
+  /// Type struct __tgt_offload_entry{
   ///   void      *addr;       // Pointer to the offload entry info.
   ///                          // (function or global)
   ///   char      *name;       // Name of the function or global.
@@ -389,12 +389,12 @@
   ///                                         // entries (non inclusive).
   /// };
   QualType TgtBinaryDescriptorQTy;
-  /// \brief Entity that registers the offloading constants that were emitted so
+  /// Entity that registers the offloading constants that were emitted so
   /// far.
   class OffloadEntriesInfoManagerTy {
     CodeGenModule &CGM;
 
-    /// \brief Number of entries registered so far.
+    /// Number of entries registered so far.
     unsigned OffloadingEntriesNum = 0;
 
   public:
@@ -600,68 +600,68 @@
   bool ShouldMarkAsGlobal = true;
   llvm::SmallDenseSet<const FunctionDecl *> AlreadyEmittedTargetFunctions;
 
-  /// \brief Creates and registers offloading binary descriptor for the current
+  /// Creates and registers offloading binary descriptor for the current
   /// compilation unit. The function that does the registration is returned.
   llvm::Function *createOffloadingBinaryDescriptorRegistration();
 
-  /// \brief Creates all the offload entries in the current compilation unit
+  /// Creates all the offload entries in the current compilation unit
   /// along with the associated metadata.
   void createOffloadEntriesAndInfoMetadata();
 
-  /// \brief Loads all the offload entries information from the host IR
+  /// Loads all the offload entries information from the host IR
   /// metadata.
   void loadOffloadInfoMetadata();
 
-  /// \brief Returns __tgt_offload_entry type.
+  /// Returns __tgt_offload_entry type.
   QualType getTgtOffloadEntryQTy();
 
-  /// \brief Returns __tgt_device_image type.
+  /// Returns __tgt_device_image type.
   QualType getTgtDeviceImageQTy();
 
-  /// \brief Returns __tgt_bin_desc type.
+  /// Returns __tgt_bin_desc type.
   QualType getTgtBinaryDescriptorQTy();
 
-  /// \brief Start scanning from statement \a S and and emit all target regions
+  /// Start scanning from statement \a S and and emit all target regions
   /// found along the way.
   /// \param S Starting statement.
   /// \param ParentName Name of the function declaration that is being scanned.
   void scanForTargetRegionsFunctions(const Stmt *S, StringRef ParentName);
 
-  /// \brief Build type kmp_routine_entry_t (if not built yet).
+  /// Build type kmp_routine_entry_t (if not built yet).
   void emitKmpRoutineEntryT(QualType KmpInt32Ty);
 
-  /// \brief Returns pointer to kmpc_micro type.
+  /// Returns pointer to kmpc_micro type.
   llvm::Type *getKmpc_MicroPointerTy();
 
-  /// \brief Returns specified OpenMP runtime function.
+  /// Returns specified OpenMP runtime function.
   /// \param Function OpenMP runtime function.
   /// \return Specified function.
   llvm::Constant *createRuntimeFunction(unsigned Function);
 
-  /// \brief Returns __kmpc_for_static_init_* runtime function for the specified
+  /// Returns __kmpc_for_static_init_* runtime function for the specified
   /// size \a IVSize and sign \a IVSigned.
   llvm::Constant *createForStaticInitFunction(unsigned IVSize, bool IVSigned);
 
-  /// \brief Returns __kmpc_dispatch_init_* runtime function for the specified
+  /// Returns __kmpc_dispatch_init_* runtime function for the specified
   /// size \a IVSize and sign \a IVSigned.
   llvm::Constant *createDispatchInitFunction(unsigned IVSize, bool IVSigned);
 
-  /// \brief Returns __kmpc_dispatch_next_* runtime function for the specified
+  /// Returns __kmpc_dispatch_next_* runtime function for the specified
   /// size \a IVSize and sign \a IVSigned.
   llvm::Constant *createDispatchNextFunction(unsigned IVSize, bool IVSigned);
 
-  /// \brief Returns __kmpc_dispatch_fini_* runtime function for the specified
+  /// Returns __kmpc_dispatch_fini_* runtime function for the specified
   /// size \a IVSize and sign \a IVSigned.
   llvm::Constant *createDispatchFiniFunction(unsigned IVSize, bool IVSigned);
 
-  /// \brief If the specified mangled name is not in the module, create and
+  /// If the specified mangled name is not in the module, create and
   /// return threadprivate cache object. This object is a pointer's worth of
   /// storage that's reserved for use by the OpenMP runtime.
   /// \param VD Threadprivate variable.
   /// \return Cache variable for the specified threadprivate.
   llvm::Constant *getOrCreateThreadPrivateCache(const VarDecl *VD);
 
-  /// \brief Gets (if variable with the given name already exist) or creates
+  /// Gets (if variable with the given name already exist) or creates
   /// internal global variable with the specified Name. The created variable has
   /// linkage CommonLinkage by default and is initialized by null value.
   /// \param Ty Type of the global variable. If it is exist already the type
@@ -670,13 +670,13 @@
   llvm::Constant *getOrCreateInternalVariable(llvm::Type *Ty,
                                               const llvm::Twine &Name);
 
-  /// \brief Set of threadprivate variables with the generated initializer.
+  /// Set of threadprivate variables with the generated initializer.
   llvm::SmallPtrSet<const VarDecl *, 4> ThreadPrivateWithDefinition;
 
   /// Set of declare target variables with the generated initializer.
   llvm::SmallPtrSet<const VarDecl *, 4> DeclareTargetWithDefinition;
 
-  /// \brief Emits initialization code for the threadprivate variables.
+  /// Emits initialization code for the threadprivate variables.
   /// \param VDAddr Address of the global variable \a VD.
   /// \param Ctor Pointer to a global init function for \a VD.
   /// \param CopyCtor Pointer to a global copy function for \a VD.
@@ -686,7 +686,7 @@
                                 llvm::Value *Ctor, llvm::Value *CopyCtor,
                                 llvm::Value *Dtor, SourceLocation Loc);
 
-  /// \brief Returns corresponding lock object for the specified critical region
+  /// Returns corresponding lock object for the specified critical region
   /// name. If the lock object does not exist it is created, otherwise the
   /// reference to the existing copy is returned.
   /// \param CriticalName Name of the critical region.
@@ -744,7 +744,7 @@
   virtual std::pair<llvm::Function *, llvm::Function *>
   getUserDefinedReduction(const OMPDeclareReductionDecl *D);
 
-  /// \brief Emits outlined function for the specified OpenMP parallel directive
+  /// Emits outlined function for the specified OpenMP parallel directive
   /// \a D. This outlined function has type void(*)(kmp_int32 *ThreadID,
   /// kmp_int32 BoundID, struct context_vars*).
   /// \param D OpenMP directive.
@@ -756,7 +756,7 @@
       const OMPExecutableDirective &D, const VarDecl *ThreadIDVar,
       OpenMPDirectiveKind InnermostKind, const RegionCodeGenTy &CodeGen);
 
-  /// \brief Emits outlined function for the specified OpenMP teams directive
+  /// Emits outlined function for the specified OpenMP teams directive
   /// \a D. This outlined function has type void(*)(kmp_int32 *ThreadID,
   /// kmp_int32 BoundID, struct context_vars*).
   /// \param D OpenMP directive.
@@ -768,7 +768,7 @@
       const OMPExecutableDirective &D, const VarDecl *ThreadIDVar,
       OpenMPDirectiveKind InnermostKind, const RegionCodeGenTy &CodeGen);
 
-  /// \brief Emits outlined function for the OpenMP task directive \a D. This
+  /// Emits outlined function for the OpenMP task directive \a D. This
   /// outlined function has type void(*)(kmp_int32 ThreadID, struct task_t*
   /// TaskT).
   /// \param D OpenMP directive.
@@ -789,11 +789,11 @@
       OpenMPDirectiveKind InnermostKind, const RegionCodeGenTy &CodeGen,
       bool Tied, unsigned &NumberOfParts);
 
-  /// \brief Cleans up references to the objects in finished function.
+  /// Cleans up references to the objects in finished function.
   ///
   virtual void functionFinished(CodeGenFunction &CGF);
 
-  /// \brief Emits code for parallel or serial call of the \a OutlinedFn with
+  /// Emits code for parallel or serial call of the \a OutlinedFn with
   /// variables captured in a record which address is stored in \a
   /// CapturedStruct.
   /// \param OutlinedFn Outlined function to be run in parallel threads. Type of
@@ -808,7 +808,7 @@
                                 ArrayRef<llvm::Value *> CapturedVars,
                                 const Expr *IfCond);
 
-  /// \brief Emits a critical region.
+  /// Emits a critical region.
   /// \param CriticalName Name of the critical region.
   /// \param CriticalOpGen Generator for the statement associated with the given
   /// critical region.
@@ -818,24 +818,24 @@
                                   SourceLocation Loc,
                                   const Expr *Hint = nullptr);
 
-  /// \brief Emits a master region.
+  /// Emits a master region.
   /// \param MasterOpGen Generator for the statement associated with the given
   /// master region.
   virtual void emitMasterRegion(CodeGenFunction &CGF,
                                 const RegionCodeGenTy &MasterOpGen,
                                 SourceLocation Loc);
 
-  /// \brief Emits code for a taskyield directive.
+  /// Emits code for a taskyield directive.
   virtual void emitTaskyieldCall(CodeGenFunction &CGF, SourceLocation Loc);
 
-  /// \brief Emit a taskgroup region.
+  /// Emit a taskgroup region.
   /// \param TaskgroupOpGen Generator for the statement associated with the
   /// given taskgroup region.
   virtual void emitTaskgroupRegion(CodeGenFunction &CGF,
                                    const RegionCodeGenTy &TaskgroupOpGen,
                                    SourceLocation Loc);
 
-  /// \brief Emits a single region.
+  /// Emits a single region.
   /// \param SingleOpGen Generator for the statement associated with the given
   /// single region.
   virtual void emitSingleRegion(CodeGenFunction &CGF,
@@ -846,14 +846,14 @@
                                 ArrayRef<const Expr *> SrcExprs,
                                 ArrayRef<const Expr *> AssignmentOps);
 
-  /// \brief Emit an ordered region.
+  /// Emit an ordered region.
   /// \param OrderedOpGen Generator for the statement associated with the given
   /// ordered region.
   virtual void emitOrderedRegion(CodeGenFunction &CGF,
                                  const RegionCodeGenTy &OrderedOpGen,
                                  SourceLocation Loc, bool IsThreads);
 
-  /// \brief Emit an implicit/explicit barrier for OpenMP threads.
+  /// Emit an implicit/explicit barrier for OpenMP threads.
   /// \param Kind Directive for which this implicit barrier call must be
   /// generated. Must be OMPD_barrier for explicit barrier generation.
   /// \param EmitChecks true if need to emit checks for cancellation barriers.
@@ -866,7 +866,7 @@
                                bool EmitChecks = true,
                                bool ForceSimpleCall = false);
 
-  /// \brief Check if the specified \a ScheduleKind is static non-chunked.
+  /// Check if the specified \a ScheduleKind is static non-chunked.
   /// This kind of worksharing directive is emitted without outer loop.
   /// \param ScheduleKind Schedule kind specified in the 'schedule' clause.
   /// \param Chunked True if chunk is specified in the clause.
@@ -874,7 +874,7 @@
   virtual bool isStaticNonchunked(OpenMPScheduleClauseKind ScheduleKind,
                                   bool Chunked) const;
 
-  /// \brief Check if the specified \a ScheduleKind is static non-chunked.
+  /// Check if the specified \a ScheduleKind is static non-chunked.
   /// This kind of distribute directive is emitted without outer loop.
   /// \param ScheduleKind Schedule kind specified in the 'dist_schedule' clause.
   /// \param Chunked True if chunk is specified in the clause.
@@ -882,7 +882,7 @@
   virtual bool isStaticNonchunked(OpenMPDistScheduleClauseKind ScheduleKind,
                                   bool Chunked) const;
 
-  /// \brief Check if the specified \a ScheduleKind is dynamic.
+  /// Check if the specified \a ScheduleKind is dynamic.
   /// This kind of worksharing directive is emitted without outer loop.
   /// \param ScheduleKind Schedule Kind specified in the 'schedule' clause.
   ///
@@ -955,7 +955,7 @@
         : IVSize(IVSize), IVSigned(IVSigned), Ordered(Ordered), IL(IL), LB(LB),
           UB(UB), ST(ST), Chunk(Chunk) {}
   };
-  /// \brief Call the appropriate runtime routine to initialize it before start
+  /// Call the appropriate runtime routine to initialize it before start
   /// of loop.
   ///
   /// This is used only in case of static schedule, when the user did not
@@ -986,7 +986,7 @@
                                         OpenMPDistScheduleClauseKind SchedKind,
                                         const StaticRTInput &Values);
 
-  /// \brief Call the appropriate runtime routine to notify that we finished
+  /// Call the appropriate runtime routine to notify that we finished
   /// iteration of the ordered loop with the dynamic scheduling.
   ///
   /// \param CGF Reference to current CodeGenFunction.
@@ -998,7 +998,7 @@
                                           SourceLocation Loc, unsigned IVSize,
                                           bool IVSigned);
 
-  /// \brief Call the appropriate runtime routine to notify that we finished
+  /// Call the appropriate runtime routine to notify that we finished
   /// all the work with current loop.
   ///
   /// \param CGF Reference to current CodeGenFunction.
@@ -1027,7 +1027,7 @@
                                    Address IL, Address LB,
                                    Address UB, Address ST);
 
-  /// \brief Emits call to void __kmpc_push_num_threads(ident_t *loc, kmp_int32
+  /// Emits call to void __kmpc_push_num_threads(ident_t *loc, kmp_int32
   /// global_tid, kmp_int32 num_threads) to generate code for 'num_threads'
   /// clause.
   /// \param NumThreads An integer value of threads.
@@ -1035,13 +1035,13 @@
                                     llvm::Value *NumThreads,
                                     SourceLocation Loc);
 
-  /// \brief Emit call to void __kmpc_push_proc_bind(ident_t *loc, kmp_int32
+  /// Emit call to void __kmpc_push_proc_bind(ident_t *loc, kmp_int32
   /// global_tid, int proc_bind) to generate code for 'proc_bind' clause.
   virtual void emitProcBindClause(CodeGenFunction &CGF,
                                   OpenMPProcBindClauseKind ProcBind,
                                   SourceLocation Loc);
 
-  /// \brief Returns address of the threadprivate variable for the current
+  /// Returns address of the threadprivate variable for the current
   /// thread.
   /// \param VD Threadprivate variable.
   /// \param VDAddr Address of the global variable \a VD.
@@ -1056,7 +1056,7 @@
   /// clause.
   virtual Address getAddrOfDeclareTargetLink(const VarDecl *VD);
 
-  /// \brief Emit a code for initialization of threadprivate variable. It emits
+  /// Emit a code for initialization of threadprivate variable. It emits
   /// a call to runtime library which adds initial value to the newly created
   /// threadprivate variable (if it is not constant) and registers destructor
   /// for the variable (if any).
@@ -1069,7 +1069,7 @@
                                  SourceLocation Loc, bool PerformInit,
                                  CodeGenFunction *CGF = nullptr);
 
-  /// \brief Emit a code for initialization of declare target variable.
+  /// Emit a code for initialization of declare target variable.
   /// \param VD Declare target variable.
   /// \param Addr Address of the global variable \a VD.
   /// \param PerformInit true if initialization expression is not constant.
@@ -1085,12 +1085,12 @@
                                                    QualType VarType,
                                                    StringRef Name);
 
-  /// \brief Emit flush of the variables specified in 'omp flush' directive.
+  /// Emit flush of the variables specified in 'omp flush' directive.
   /// \param Vars List of variables to flush.
   virtual void emitFlush(CodeGenFunction &CGF, ArrayRef<const Expr *> Vars,
                          SourceLocation Loc);
 
-  /// \brief Emit task region for the task directive. The task region is
+  /// Emit task region for the task directive. The task region is
   /// emitted in several steps:
   /// 1. Emit a call to kmp_task_t *__kmpc_omp_task_alloc(ident_t *, kmp_int32
   /// gtid, kmp_int32 flags, size_t sizeof_kmp_task_t, size_t sizeof_shareds,
@@ -1157,7 +1157,7 @@
       llvm::Value *TaskFunction, QualType SharedsTy, Address Shareds,
       const Expr *IfCond, const OMPTaskDataTy &Data);
 
-  /// \brief Emit code for the directive that does not require outlining.
+  /// Emit code for the directive that does not require outlining.
   ///
   /// \param InnermostKind Kind of innermost directive (for simple directives it
   /// is a directive itself, for combined - its innermost directive).
@@ -1195,7 +1195,7 @@
     bool SimpleReduction;
     OpenMPDirectiveKind ReductionKind;
   };
-  /// \brief Emit a code for reduction clause. Next code should be emitted for
+  /// Emit a code for reduction clause. Next code should be emitted for
   /// reduction:
   /// \code
   ///
@@ -1289,10 +1289,10 @@
                                        llvm::Value *ReductionsPtr,
                                        LValue SharedLVal);
 
-  /// \brief Emit code for 'taskwait' directive.
+  /// Emit code for 'taskwait' directive.
   virtual void emitTaskwaitCall(CodeGenFunction &CGF, SourceLocation Loc);
 
-  /// \brief Emit code for 'cancellation point' construct.
+  /// Emit code for 'cancellation point' construct.
   /// \param CancelRegion Region kind for which the cancellation point must be
   /// emitted.
   ///
@@ -1300,7 +1300,7 @@
                                          SourceLocation Loc,
                                          OpenMPDirectiveKind CancelRegion);
 
-  /// \brief Emit code for 'cancel' construct.
+  /// Emit code for 'cancel' construct.
   /// \param IfCond Condition in the associated 'if' clause, if it was
   /// specified, nullptr otherwise.
   /// \param CancelRegion Region kind for which the cancel must be emitted.
@@ -1309,7 +1309,7 @@
                               const Expr *IfCond,
                               OpenMPDirectiveKind CancelRegion);
 
-  /// \brief Emit outilined function for 'target' directive.
+  /// Emit outilined function for 'target' directive.
   /// \param D Directive to emit.
   /// \param ParentName Name of the function that encloses the target region.
   /// \param OutlinedFn Outlined function value to be defined by this call.
@@ -1325,7 +1325,7 @@
                                           bool IsOffloadEntry,
                                           const RegionCodeGenTy &CodeGen);
 
-  /// \brief Emit the target offloading code associated with \a D. The emitted
+  /// Emit the target offloading code associated with \a D. The emitted
   /// code attempts offloading the execution to the device, an the event of
   /// a failure it executes the host version outlined in \a OutlinedFn.
   /// \param D Directive to emit.
@@ -1341,13 +1341,13 @@
                               llvm::Value *OutlinedFnID, const Expr *IfCond,
                               const Expr *Device);
 
-  /// \brief Emit the target regions enclosed in \a GD function definition or
+  /// Emit the target regions enclosed in \a GD function definition or
   /// the function itself in case it is a valid device function. Returns true if
   /// \a GD was dealt with successfully.
   /// \param GD Function to scan.
   virtual bool emitTargetFunctions(GlobalDecl GD);
 
-  /// \brief Emit the global variable if it is a valid device global variable.
+  /// Emit the global variable if it is a valid device global variable.
   /// Returns true if \a GD was dealt with successfully.
   /// \param GD Variable declaration to emit.
   virtual bool emitTargetGlobalVariable(GlobalDecl GD);
@@ -1357,17 +1357,17 @@
   virtual void registerTargetGlobalVariable(const VarDecl *VD,
                                             llvm::Constant *Addr);
 
-  /// \brief Emit the global \a GD if it is meaningful for the target. Returns
+  /// Emit the global \a GD if it is meaningful for the target. Returns
   /// if it was emitted successfully.
   /// \param GD Global to scan.
   virtual bool emitTargetGlobal(GlobalDecl GD);
 
-  /// \brief Creates the offloading descriptor in the event any target region
+  /// Creates the offloading descriptor in the event any target region
   /// was emitted in the current module and return the function that registers
   /// it.
   virtual llvm::Function *emitRegistrationFunction();
 
-  /// \brief Emits code for teams call of the \a OutlinedFn with
+  /// Emits code for teams call of the \a OutlinedFn with
   /// variables captured in a record which address is stored in \a
   /// CapturedStruct.
   /// \param OutlinedFn Outlined function to be run by team masters. Type of
@@ -1380,7 +1380,7 @@
                              SourceLocation Loc, llvm::Value *OutlinedFn,
                              ArrayRef<llvm::Value *> CapturedVars);
 
-  /// \brief Emits call to void __kmpc_push_num_teams(ident_t *loc, kmp_int32
+  /// Emits call to void __kmpc_push_num_teams(ident_t *loc, kmp_int32
   /// global_tid, kmp_int32 num_teams, kmp_int32 thread_limit) to generate code
   /// for num_teams clause.
   /// \param NumTeams An integer expression of teams.
@@ -1428,7 +1428,7 @@
     bool requiresDevicePointerInfo() { return RequiresDevicePointerInfo; }
   };
 
-  /// \brief Emit the target data mapping code associated with \a D.
+  /// Emit the target data mapping code associated with \a D.
   /// \param D Directive to emit.
   /// \param IfCond Expression evaluated in if clause associated with the
   /// target directive, or null if no device clause is used.
@@ -1442,7 +1442,7 @@
                                    const RegionCodeGenTy &CodeGen,
                                    TargetDataInfo &Info);
 
-  /// \brief Emit the data mapping/movement code associated with the directive
+  /// Emit the data mapping/movement code associated with the directive
   /// \a D that should be of the form 'target [{enter|exit} data | update]'.
   /// \param D Directive to emit.
   /// \param IfCond Expression evaluated in if clause associated with the target
@@ -1515,7 +1515,7 @@
   explicit CGOpenMPSIMDRuntime(CodeGenModule &CGM) : CGOpenMPRuntime(CGM) {}
   ~CGOpenMPSIMDRuntime() override {}
 
-  /// \brief Emits outlined function for the specified OpenMP parallel directive
+  /// Emits outlined function for the specified OpenMP parallel directive
   /// \a D. This outlined function has type void(*)(kmp_int32 *ThreadID,
   /// kmp_int32 BoundID, struct context_vars*).
   /// \param D OpenMP directive.
@@ -1529,7 +1529,7 @@
                                OpenMPDirectiveKind InnermostKind,
                                const RegionCodeGenTy &CodeGen) override;
 
-  /// \brief Emits outlined function for the specified OpenMP teams directive
+  /// Emits outlined function for the specified OpenMP teams directive
   /// \a D. This outlined function has type void(*)(kmp_int32 *ThreadID,
   /// kmp_int32 BoundID, struct context_vars*).
   /// \param D OpenMP directive.
@@ -1543,7 +1543,7 @@
                             OpenMPDirectiveKind InnermostKind,
                             const RegionCodeGenTy &CodeGen) override;
 
-  /// \brief Emits outlined function for the OpenMP task directive \a D. This
+  /// Emits outlined function for the OpenMP task directive \a D. This
   /// outlined function has type void(*)(kmp_int32 ThreadID, struct task_t*
   /// TaskT).
   /// \param D OpenMP directive.
@@ -1564,7 +1564,7 @@
       OpenMPDirectiveKind InnermostKind, const RegionCodeGenTy &CodeGen,
       bool Tied, unsigned &NumberOfParts) override;
 
-  /// \brief Emits code for parallel or serial call of the \a OutlinedFn with
+  /// Emits code for parallel or serial call of the \a OutlinedFn with
   /// variables captured in a record which address is stored in \a
   /// CapturedStruct.
   /// \param OutlinedFn Outlined function to be run in parallel threads. Type of
@@ -1579,7 +1579,7 @@
                         ArrayRef<llvm::Value *> CapturedVars,
                         const Expr *IfCond) override;
 
-  /// \brief Emits a critical region.
+  /// Emits a critical region.
   /// \param CriticalName Name of the critical region.
   /// \param CriticalOpGen Generator for the statement associated with the given
   /// critical region.
@@ -1589,24 +1589,24 @@
                           SourceLocation Loc,
                           const Expr *Hint = nullptr) override;
 
-  /// \brief Emits a master region.
+  /// Emits a master region.
   /// \param MasterOpGen Generator for the statement associated with the given
   /// master region.
   void emitMasterRegion(CodeGenFunction &CGF,
                         const RegionCodeGenTy &MasterOpGen,
                         SourceLocation Loc) override;
 
-  /// \brief Emits code for a taskyield directive.
+  /// Emits code for a taskyield directive.
   void emitTaskyieldCall(CodeGenFunction &CGF, SourceLocation Loc) override;
 
-  /// \brief Emit a taskgroup region.
+  /// Emit a taskgroup region.
   /// \param TaskgroupOpGen Generator for the statement associated with the
   /// given taskgroup region.
   void emitTaskgroupRegion(CodeGenFunction &CGF,
                            const RegionCodeGenTy &TaskgroupOpGen,
                            SourceLocation Loc) override;
 
-  /// \brief Emits a single region.
+  /// Emits a single region.
   /// \param SingleOpGen Generator for the statement associated with the given
   /// single region.
   void emitSingleRegion(CodeGenFunction &CGF,
@@ -1616,14 +1616,14 @@
                         ArrayRef<const Expr *> SrcExprs,
                         ArrayRef<const Expr *> AssignmentOps) override;
 
-  /// \brief Emit an ordered region.
+  /// Emit an ordered region.
   /// \param OrderedOpGen Generator for the statement associated with the given
   /// ordered region.
   void emitOrderedRegion(CodeGenFunction &CGF,
                          const RegionCodeGenTy &OrderedOpGen,
                          SourceLocation Loc, bool IsThreads) override;
 
-  /// \brief Emit an implicit/explicit barrier for OpenMP threads.
+  /// Emit an implicit/explicit barrier for OpenMP threads.
   /// \param Kind Directive for which this implicit barrier call must be
   /// generated. Must be OMPD_barrier for explicit barrier generation.
   /// \param EmitChecks true if need to emit checks for cancellation barriers.
@@ -1656,7 +1656,7 @@
                            unsigned IVSize, bool IVSigned, bool Ordered,
                            const DispatchRTInput &DispatchValues) override;
 
-  /// \brief Call the appropriate runtime routine to initialize it before start
+  /// Call the appropriate runtime routine to initialize it before start
   /// of loop.
   ///
   /// This is used only in case of static schedule, when the user did not
@@ -1686,7 +1686,7 @@
                                 OpenMPDistScheduleClauseKind SchedKind,
                                 const StaticRTInput &Values) override;
 
-  /// \brief Call the appropriate runtime routine to notify that we finished
+  /// Call the appropriate runtime routine to notify that we finished
   /// iteration of the ordered loop with the dynamic scheduling.
   ///
   /// \param CGF Reference to current CodeGenFunction.
@@ -1697,7 +1697,7 @@
   void emitForOrderedIterationEnd(CodeGenFunction &CGF, SourceLocation Loc,
                                   unsigned IVSize, bool IVSigned) override;
 
-  /// \brief Call the appropriate runtime routine to notify that we finished
+  /// Call the appropriate runtime routine to notify that we finished
   /// all the work with current loop.
   ///
   /// \param CGF Reference to current CodeGenFunction.
@@ -1725,20 +1725,20 @@
                            unsigned IVSize, bool IVSigned, Address IL,
                            Address LB, Address UB, Address ST) override;
 
-  /// \brief Emits call to void __kmpc_push_num_threads(ident_t *loc, kmp_int32
+  /// Emits call to void __kmpc_push_num_threads(ident_t *loc, kmp_int32
   /// global_tid, kmp_int32 num_threads) to generate code for 'num_threads'
   /// clause.
   /// \param NumThreads An integer value of threads.
   void emitNumThreadsClause(CodeGenFunction &CGF, llvm::Value *NumThreads,
                             SourceLocation Loc) override;
 
-  /// \brief Emit call to void __kmpc_push_proc_bind(ident_t *loc, kmp_int32
+  /// Emit call to void __kmpc_push_proc_bind(ident_t *loc, kmp_int32
   /// global_tid, int proc_bind) to generate code for 'proc_bind' clause.
   void emitProcBindClause(CodeGenFunction &CGF,
                           OpenMPProcBindClauseKind ProcBind,
                           SourceLocation Loc) override;
 
-  /// \brief Returns address of the threadprivate variable for the current
+  /// Returns address of the threadprivate variable for the current
   /// thread.
   /// \param VD Threadprivate variable.
   /// \param VDAddr Address of the global variable \a VD.
@@ -1747,7 +1747,7 @@
   Address getAddrOfThreadPrivate(CodeGenFunction &CGF, const VarDecl *VD,
                                  Address VDAddr, SourceLocation Loc) override;
 
-  /// \brief Emit a code for initialization of threadprivate variable. It emits
+  /// Emit a code for initialization of threadprivate variable. It emits
   /// a call to runtime library which adds initial value to the newly created
   /// threadprivate variable (if it is not constant) and registers destructor
   /// for the variable (if any).
@@ -1768,12 +1768,12 @@
                                            QualType VarType,
                                            StringRef Name) override;
 
-  /// \brief Emit flush of the variables specified in 'omp flush' directive.
+  /// Emit flush of the variables specified in 'omp flush' directive.
   /// \param Vars List of variables to flush.
   void emitFlush(CodeGenFunction &CGF, ArrayRef<const Expr *> Vars,
                  SourceLocation Loc) override;
 
-  /// \brief Emit task region for the task directive. The task region is
+  /// Emit task region for the task directive. The task region is
   /// emitted in several steps:
   /// 1. Emit a call to kmp_task_t *__kmpc_omp_task_alloc(ident_t *, kmp_int32
   /// gtid, kmp_int32 flags, size_t sizeof_kmp_task_t, size_t sizeof_shareds,
@@ -1839,7 +1839,7 @@
                         QualType SharedsTy, Address Shareds, const Expr *IfCond,
                         const OMPTaskDataTy &Data) override;
 
-  /// \brief Emit a code for reduction clause. Next code should be emitted for
+  /// Emit a code for reduction clause. Next code should be emitted for
   /// reduction:
   /// \code
   ///
@@ -1932,17 +1932,17 @@
                                llvm::Value *ReductionsPtr,
                                LValue SharedLVal) override;
 
-  /// \brief Emit code for 'taskwait' directive.
+  /// Emit code for 'taskwait' directive.
   void emitTaskwaitCall(CodeGenFunction &CGF, SourceLocation Loc) override;
 
-  /// \brief Emit code for 'cancellation point' construct.
+  /// Emit code for 'cancellation point' construct.
   /// \param CancelRegion Region kind for which the cancellation point must be
   /// emitted.
   ///
   void emitCancellationPointCall(CodeGenFunction &CGF, SourceLocation Loc,
                                  OpenMPDirectiveKind CancelRegion) override;
 
-  /// \brief Emit code for 'cancel' construct.
+  /// Emit code for 'cancel' construct.
   /// \param IfCond Condition in the associated 'if' clause, if it was
   /// specified, nullptr otherwise.
   /// \param CancelRegion Region kind for which the cancel must be emitted.
@@ -1951,7 +1951,7 @@
                       const Expr *IfCond,
                       OpenMPDirectiveKind CancelRegion) override;
 
-  /// \brief Emit outilined function for 'target' directive.
+  /// Emit outilined function for 'target' directive.
   /// \param D Directive to emit.
   /// \param ParentName Name of the function that encloses the target region.
   /// \param OutlinedFn Outlined function value to be defined by this call.
@@ -1967,7 +1967,7 @@
                                   bool IsOffloadEntry,
                                   const RegionCodeGenTy &CodeGen) override;
 
-  /// \brief Emit the target offloading code associated with \a D. The emitted
+  /// Emit the target offloading code associated with \a D. The emitted
   /// code attempts offloading the execution to the device, an the event of
   /// a failure it executes the host version outlined in \a OutlinedFn.
   /// \param D Directive to emit.
@@ -1981,28 +1981,28 @@
                       llvm::Value *OutlinedFn, llvm::Value *OutlinedFnID,
                       const Expr *IfCond, const Expr *Device) override;
 
-  /// \brief Emit the target regions enclosed in \a GD function definition or
+  /// Emit the target regions enclosed in \a GD function definition or
   /// the function itself in case it is a valid device function. Returns true if
   /// \a GD was dealt with successfully.
   /// \param GD Function to scan.
   bool emitTargetFunctions(GlobalDecl GD) override;
 
-  /// \brief Emit the global variable if it is a valid device global variable.
+  /// Emit the global variable if it is a valid device global variable.
   /// Returns true if \a GD was dealt with successfully.
   /// \param GD Variable declaration to emit.
   bool emitTargetGlobalVariable(GlobalDecl GD) override;
 
-  /// \brief Emit the global \a GD if it is meaningful for the target. Returns
+  /// Emit the global \a GD if it is meaningful for the target. Returns
   /// if it was emitted successfully.
   /// \param GD Global to scan.
   bool emitTargetGlobal(GlobalDecl GD) override;
 
-  /// \brief Creates the offloading descriptor in the event any target region
+  /// Creates the offloading descriptor in the event any target region
   /// was emitted in the current module and return the function that registers
   /// it.
   llvm::Function *emitRegistrationFunction() override;
 
-  /// \brief Emits code for teams call of the \a OutlinedFn with
+  /// Emits code for teams call of the \a OutlinedFn with
   /// variables captured in a record which address is stored in \a
   /// CapturedStruct.
   /// \param OutlinedFn Outlined function to be run by team masters. Type of
@@ -2014,7 +2014,7 @@
                      SourceLocation Loc, llvm::Value *OutlinedFn,
                      ArrayRef<llvm::Value *> CapturedVars) override;
 
-  /// \brief Emits call to void __kmpc_push_num_teams(ident_t *loc, kmp_int32
+  /// Emits call to void __kmpc_push_num_teams(ident_t *loc, kmp_int32
   /// global_tid, kmp_int32 num_teams, kmp_int32 thread_limit) to generate code
   /// for num_teams clause.
   /// \param NumTeams An integer expression of teams.
@@ -2022,7 +2022,7 @@
   void emitNumTeamsClause(CodeGenFunction &CGF, const Expr *NumTeams,
                           const Expr *ThreadLimit, SourceLocation Loc) override;
 
-  /// \brief Emit the target data mapping code associated with \a D.
+  /// Emit the target data mapping code associated with \a D.
   /// \param D Directive to emit.
   /// \param IfCond Expression evaluated in if clause associated with the
   /// target directive, or null if no device clause is used.
@@ -2035,7 +2035,7 @@
                            const Expr *Device, const RegionCodeGenTy &CodeGen,
                            TargetDataInfo &Info) override;
 
-  /// \brief Emit the data mapping/movement code associated with the directive
+  /// Emit the data mapping/movement code associated with the directive
   /// \a D that should be of the form 'target [{enter|exit} data | update]'.
   /// \param D Directive to emit.
   /// \param IfCond Expression evaluated in if clause associated with the target
Index: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
+++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -34,20 +34,20 @@
 using namespace CodeGen;
 
 namespace {
-/// \brief Base class for handling code generation inside OpenMP regions.
+/// Base class for handling code generation inside OpenMP regions.
 class CGOpenMPRegionInfo : public CodeGenFunction::CGCapturedStmtInfo {
 public:
-  /// \brief Kinds of OpenMP regions used in codegen.
+  /// Kinds of OpenMP regions used in codegen.
   enum CGOpenMPRegionKind {
-    /// \brief Region with outlined function for standalone 'parallel'
+    /// Region with outlined function for standalone 'parallel'
     /// directive.
     ParallelOutlinedRegion,
-    /// \brief Region with outlined function for standalone 'task' directive.
+    /// Region with outlined function for standalone 'task' directive.
     TaskOutlinedRegion,
-    /// \brief Region for constructs that do not require function outlining,
+    /// Region for constructs that do not require function outlining,
     /// like 'for', 'sections', 'atomic' etc. directives.
     InlinedRegion,
-    /// \brief Region with outlined function for standalone 'target' directive.
+    /// Region with outlined function for standalone 'target' directive.
     TargetRegion,
   };
 
@@ -64,14 +64,14 @@
       : CGCapturedStmtInfo(CR_OpenMP), RegionKind(RegionKind), CodeGen(CodeGen),
         Kind(Kind), HasCancel(HasCancel) {}
 
-  /// \brief Get a variable or parameter for storing global thread id
+  /// Get a variable or parameter for storing global thread id
   /// inside OpenMP construct.
   virtual const VarDecl *getThreadIDVariable() const = 0;
 
-  /// \brief Emit the captured statement body.
+  /// Emit the captured statement body.
   void EmitBody(CodeGenFunction &CGF, const Stmt *S) override;
 
-  /// \brief Get an LValue for the current ThreadID variable.
+  /// Get an LValue for the current ThreadID variable.
   /// \return LValue for thread id variable. This LValue always has type int32*.
   virtual LValue getThreadIDVariableLValue(CodeGenFunction &CGF);
 
@@ -96,7 +96,7 @@
   bool HasCancel;
 };
 
-/// \brief API for captured statement code generation in OpenMP constructs.
+/// API for captured statement code generation in OpenMP constructs.
 class CGOpenMPOutlinedRegionInfo final : public CGOpenMPRegionInfo {
 public:
   CGOpenMPOutlinedRegionInfo(const CapturedStmt &CS, const VarDecl *ThreadIDVar,
@@ -109,11 +109,11 @@
     assert(ThreadIDVar != nullptr && "No ThreadID in OpenMP region.");
   }
 
-  /// \brief Get a variable or parameter for storing global thread id
+  /// Get a variable or parameter for storing global thread id
   /// inside OpenMP construct.
   const VarDecl *getThreadIDVariable() const override { return ThreadIDVar; }
 
-  /// \brief Get the name of the capture helper.
+  /// Get the name of the capture helper.
   StringRef getHelperName() const override { return HelperName; }
 
   static bool classof(const CGCapturedStmtInfo *Info) {
@@ -123,13 +123,13 @@
   }
 
 private:
-  /// \brief A variable or parameter storing global thread id for OpenMP
+  /// A variable or parameter storing global thread id for OpenMP
   /// constructs.
   const VarDecl *ThreadIDVar;
   StringRef HelperName;
 };
 
-/// \brief API for captured statement code generation in OpenMP constructs.
+/// API for captured statement code generation in OpenMP constructs.
 class CGOpenMPTaskOutlinedRegionInfo final : public CGOpenMPRegionInfo {
 public:
   class UntiedTaskActionTy final : public PrePostActionTy {
@@ -190,14 +190,14 @@
     assert(ThreadIDVar != nullptr && "No ThreadID in OpenMP region.");
   }
 
-  /// \brief Get a variable or parameter for storing global thread id
+  /// Get a variable or parameter for storing global thread id
   /// inside OpenMP construct.
   const VarDecl *getThreadIDVariable() const override { return ThreadIDVar; }
 
-  /// \brief Get an LValue for the current ThreadID variable.
+  /// Get an LValue for the current ThreadID variable.
   LValue getThreadIDVariableLValue(CodeGenFunction &CGF) override;
 
-  /// \brief Get the name of the capture helper.
+  /// Get the name of the capture helper.
   StringRef getHelperName() const override { return ".omp_outlined."; }
 
   void emitUntiedSwitch(CodeGenFunction &CGF) override {
@@ -211,14 +211,14 @@
   }
 
 private:
-  /// \brief A variable or parameter storing global thread id for OpenMP
+  /// A variable or parameter storing global thread id for OpenMP
   /// constructs.
   const VarDecl *ThreadIDVar;
   /// Action for emitting code for untied tasks.
   const UntiedTaskActionTy &Action;
 };
 
-/// \brief API for inlined captured statement code generation in OpenMP
+/// API for inlined captured statement code generation in OpenMP
 /// constructs.
 class CGOpenMPInlinedRegionInfo : public CGOpenMPRegionInfo {
 public:
@@ -229,7 +229,7 @@
         OldCSI(OldCSI),
         OuterRegionInfo(dyn_cast_or_null<CGOpenMPRegionInfo>(OldCSI)) {}
 
-  // \brief Retrieve the value of the context parameter.
+  // Retrieve the value of the context parameter.
   llvm::Value *getContextValue() const override {
     if (OuterRegionInfo)
       return OuterRegionInfo->getContextValue();
@@ -244,7 +244,7 @@
     llvm_unreachable("No context value for inlined OpenMP region");
   }
 
-  /// \brief Lookup the captured field decl for a variable.
+  /// Lookup the captured field decl for a variable.
   const FieldDecl *lookup(const VarDecl *VD) const override {
     if (OuterRegionInfo)
       return OuterRegionInfo->lookup(VD);
@@ -259,7 +259,7 @@
     return nullptr;
   }
 
-  /// \brief Get a variable or parameter for storing global thread id
+  /// Get a variable or parameter for storing global thread id
   /// inside OpenMP construct.
   const VarDecl *getThreadIDVariable() const override {
     if (OuterRegionInfo)
@@ -267,14 +267,14 @@
     return nullptr;
   }
 
-  /// \brief Get an LValue for the current ThreadID variable.
+  /// Get an LValue for the current ThreadID variable.
   LValue getThreadIDVariableLValue(CodeGenFunction &CGF) override {
     if (OuterRegionInfo)
       return OuterRegionInfo->getThreadIDVariableLValue(CGF);
     llvm_unreachable("No LValue for inlined OpenMP construct");
   }
 
-  /// \brief Get the name of the capture helper.
+  /// Get the name of the capture helper.
   StringRef getHelperName() const override {
     if (auto *OuterRegionInfo = getOldCSI())
       return OuterRegionInfo->getHelperName();
@@ -296,12 +296,12 @@
   ~CGOpenMPInlinedRegionInfo() override = default;
 
 private:
-  /// \brief CodeGen info about outer OpenMP region.
+  /// CodeGen info about outer OpenMP region.
   CodeGenFunction::CGCapturedStmtInfo *OldCSI;
   CGOpenMPRegionInfo *OuterRegionInfo;
 };
 
-/// \brief API for captured statement code generation in OpenMP target
+/// API for captured statement code generation in OpenMP target
 /// constructs. For this captures, implicit parameters are used instead of the
 /// captured fields. The name of the target region has to be unique in a given
 /// application so it is provided by the client, because only the client has
@@ -314,11 +314,11 @@
                            /*HasCancel=*/false),
         HelperName(HelperName) {}
 
-  /// \brief This is unused for target regions because each starts executing
+  /// This is unused for target regions because each starts executing
   /// with a single thread.
   const VarDecl *getThreadIDVariable() const override { return nullptr; }
 
-  /// \brief Get the name of the capture helper.
+  /// Get the name of the capture helper.
   StringRef getHelperName() const override { return HelperName; }
 
   static bool classof(const CGCapturedStmtInfo *Info) {
@@ -333,7 +333,7 @@
 static void EmptyCodeGen(CodeGenFunction &, PrePostActionTy &) {
   llvm_unreachable("No codegen for expressions");
 }
-/// \brief API for generation of expressions captured in a innermost OpenMP
+/// API for generation of expressions captured in a innermost OpenMP
 /// region.
 class CGOpenMPInnerExprInfo final : public CGOpenMPInlinedRegionInfo {
 public:
@@ -363,25 +363,25 @@
     (void)PrivScope.Privatize();
   }
 
-  /// \brief Lookup the captured field decl for a variable.
+  /// Lookup the captured field decl for a variable.
   const FieldDecl *lookup(const VarDecl *VD) const override {
     if (const FieldDecl *FD = CGOpenMPInlinedRegionInfo::lookup(VD))
       return FD;
     return nullptr;
   }
 
-  /// \brief Emit the captured statement body.
+  /// Emit the captured statement body.
   void EmitBody(CodeGenFunction &CGF, const Stmt *S) override {
     llvm_unreachable("No body for expressions");
   }
 
-  /// \brief Get a variable or parameter for storing global thread id
+  /// Get a variable or parameter for storing global thread id
   /// inside OpenMP construct.
   const VarDecl *getThreadIDVariable() const override {
     llvm_unreachable("No thread id for expressions");
   }
 
-  /// \brief Get the name of the capture helper.
+  /// Get the name of the capture helper.
   StringRef getHelperName() const override {
     llvm_unreachable("No helper name for expressions");
   }
@@ -393,7 +393,7 @@
   CodeGenFunction::OMPPrivateScope PrivScope;
 };
 
-/// \brief RAII for emitting code of OpenMP constructs.
+/// RAII for emitting code of OpenMP constructs.
 class InlinedOpenMPRegionRAII {
   CodeGenFunction &CGF;
   llvm::DenseMap<const VarDecl *, FieldDecl *> LambdaCaptureFields;
@@ -401,7 +401,7 @@
   const CodeGen::CGBlockInfo *BlockInfo = nullptr;
 
 public:
-  /// \brief Constructs region for combined constructs.
+  /// Constructs region for combined constructs.
   /// \param CodeGen Code generation sequence for combined directives. Includes
   /// a list of functions used for code generation of implicitly inlined
   /// regions.
@@ -430,25 +430,25 @@
   }
 };
 
-/// \brief Values for bit flags used in the ident_t to describe the fields.
+/// Values for bit flags used in the ident_t to describe the fields.
 /// All enumeric elements are named and described in accordance with the code
 /// from http://llvm.org/svn/llvm-project/openmp/trunk/runtime/src/kmp.h
 enum OpenMPLocationFlags : unsigned {
-  /// \brief Use trampoline for internal microtask.
+  /// Use trampoline for internal microtask.
   OMP_IDENT_IMD = 0x01,
-  /// \brief Use c-style ident structure.
+  /// Use c-style ident structure.
   OMP_IDENT_KMPC = 0x02,
-  /// \brief Atomic reduction option for kmpc_reduce.
+  /// Atomic reduction option for kmpc_reduce.
   OMP_ATOMIC_REDUCE = 0x10,
-  /// \brief Explicit 'barrier' directive.
+  /// Explicit 'barrier' directive.
   OMP_IDENT_BARRIER_EXPL = 0x20,
-  /// \brief Implicit barrier in code.
+  /// Implicit barrier in code.
   OMP_IDENT_BARRIER_IMPL = 0x40,
-  /// \brief Implicit barrier in 'for' directive.
+  /// Implicit barrier in 'for' directive.
   OMP_IDENT_BARRIER_IMPL_FOR = 0x40,
-  /// \brief Implicit barrier in 'sections' directive.
+  /// Implicit barrier in 'sections' directive.
   OMP_IDENT_BARRIER_IMPL_SECTIONS = 0xC0,
-  /// \brief Implicit barrier in 'single' directive.
+  /// Implicit barrier in 'single' directive.
   OMP_IDENT_BARRIER_IMPL_SINGLE = 0x140,
   /// Call of __kmp_for_static_init for static loop.
   OMP_IDENT_WORK_LOOP = 0x200,
@@ -459,7 +459,7 @@
   LLVM_MARK_AS_BITMASK_ENUM(/*LargestValue=*/OMP_IDENT_WORK_DISTRIBUTE)
 };
 
-/// \brief Describes ident structure that describes a source location.
+/// Describes ident structure that describes a source location.
 /// All descriptions are taken from
 /// http://llvm.org/svn/llvm-project/openmp/trunk/runtime/src/kmp.h
 /// Original structure:
@@ -486,24 +486,24 @@
 ///                             */
 /// } ident_t;
 enum IdentFieldIndex {
-  /// \brief might be used in Fortran
+  /// might be used in Fortran
   IdentField_Reserved_1,
-  /// \brief OMP_IDENT_xxx flags; OMP_IDENT_KMPC identifies this union member.
+  /// OMP_IDENT_xxx flags; OMP_IDENT_KMPC identifies this union member.
   IdentField_Flags,
-  /// \brief Not really used in Fortran any more
+  /// Not really used in Fortran any more
   IdentField_Reserved_2,
-  /// \brief Source[4] in Fortran, do not use for C++
+  /// Source[4] in Fortran, do not use for C++
   IdentField_Reserved_3,
-  /// \brief String describing the source location. The string is composed of
+  /// String describing the source location. The string is composed of
   /// semi-colon separated fields which describe the source file, the function
   /// and a pair of line numbers that delimit the construct.
   IdentField_PSource
 };
 
-/// \brief Schedule types for 'omp for' loops (these enumerators are taken from
+/// Schedule types for 'omp for' loops (these enumerators are taken from
 /// the enum sched_type in kmp.h).
 enum OpenMPSchedType {
-  /// \brief Lower bound for default (unordered) versions.
+  /// Lower bound for default (unordered) versions.
   OMP_sch_lower = 32,
   OMP_sch_static_chunked = 33,
   OMP_sch_static = 34,
@@ -513,7 +513,7 @@
   OMP_sch_auto = 38,
   /// static with chunk adjustment (e.g., simd)
   OMP_sch_static_balanced_chunked = 45,
-  /// \brief Lower bound for 'ordered' versions.
+  /// Lower bound for 'ordered' versions.
   OMP_ord_lower = 64,
   OMP_ord_static_chunked = 65,
   OMP_ord_static = 66,
@@ -522,7 +522,7 @@
   OMP_ord_runtime = 69,
   OMP_ord_auto = 70,
   OMP_sch_default = OMP_sch_static,
-  /// \brief dist_schedule types
+  /// dist_schedule types
   OMP_dist_sch_static_chunked = 91,
   OMP_dist_sch_static = 92,
   /// Support for OpenMP 4.5 monotonic and nonmonotonic schedule modifiers.
@@ -533,13 +533,13 @@
 };
 
 enum OpenMPRTLFunction {
-  /// \brief Call to void __kmpc_fork_call(ident_t *loc, kmp_int32 argc,
+  /// Call to void __kmpc_fork_call(ident_t *loc, kmp_int32 argc,
   /// kmpc_micro microtask, ...);
   OMPRTL__kmpc_fork_call,
-  /// \brief Call to void *__kmpc_threadprivate_cached(ident_t *loc,
+  /// Call to void *__kmpc_threadprivate_cached(ident_t *loc,
   /// kmp_int32 global_tid, void *data, size_t size, void ***cache);
   OMPRTL__kmpc_threadprivate_cached,
-  /// \brief Call to void __kmpc_threadprivate_register( ident_t *,
+  /// Call to void __kmpc_threadprivate_register( ident_t *,
   /// void *data, kmpc_ctor ctor, kmpc_cctor cctor, kmpc_dtor dtor);
   OMPRTL__kmpc_threadprivate_register,
   // Call to __kmpc_int32 kmpc_global_thread_num(ident_t *loc);
@@ -808,7 +808,7 @@
   }
 }
 
-/// \brief Emit initialization of arrays of complex types.
+/// Emit initialization of arrays of complex types.
 /// \param DestAddr Address of the array.
 /// \param Type Type of array.
 /// \param Init Initial expression of array.
@@ -2608,7 +2608,7 @@
   return nullptr;
 }
 
-/// \brief Obtain information that uniquely identifies a target entry. This
+/// Obtain information that uniquely identifies a target entry. This
 /// consists of the file and device IDs as well as line number associated with
 /// the relevant entry source location.
 static void getTargetEntryUniqueInfo(ASTContext &C, SourceLocation Loc,
@@ -3242,7 +3242,7 @@
   CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_barrier), Args);
 }
 
-/// \brief Map the OpenMP loop schedule to the runtime enumeration.
+/// Map the OpenMP loop schedule to the runtime enumeration.
 static OpenMPSchedType getRuntimeSchedule(OpenMPScheduleClauseKind ScheduleKind,
                                           bool Chunked, bool Ordered) {
   switch (ScheduleKind) {
@@ -3264,7 +3264,7 @@
   llvm_unreachable("Unexpected runtime schedule");
 }
 
-/// \brief Map the OpenMP distribute schedule to the runtime enumeration.
+/// Map the OpenMP distribute schedule to the runtime enumeration.
 static OpenMPSchedType
 getRuntimeSchedule(OpenMPDistScheduleClauseKind ScheduleKind, bool Chunked) {
   // only static is allowed for dist_schedule
@@ -3557,13 +3557,13 @@
 }
 
 namespace {
-/// \brief Indexes of fields for type kmp_task_t.
+/// Indexes of fields for type kmp_task_t.
 enum KmpTaskTFields {
-  /// \brief List of shared variables.
+  /// List of shared variables.
   KmpTaskTShareds,
-  /// \brief Task routine.
+  /// Task routine.
   KmpTaskTRoutine,
-  /// \brief Partition id for the untied tasks.
+  /// Partition id for the untied tasks.
   KmpTaskTPartId,
   /// Function with call of destructors for private variables.
   Data1,
@@ -3587,7 +3587,7 @@
          OffloadEntriesDeviceGlobalVar.empty();
 }
 
-/// \brief Initialize target region entry.
+/// Initialize target region entry.
 void CGOpenMPRuntime::OffloadEntriesInfoManagerTy::
     initializeTargetRegionEntryInfo(unsigned DeviceID, unsigned FileID,
                                     StringRef ParentName, unsigned LineNum,
@@ -3994,7 +3994,7 @@
   }
 }
 
-/// \brief Loads all the offload entries information from the host IR
+/// Loads all the offload entries information from the host IR
 /// metadata.
 void CGOpenMPRuntime::loadOffloadInfoMetadata() {
   // If we are in target mode, load the metadata from the host IR. This code has
@@ -4257,7 +4257,7 @@
   return RD;
 }
 
-/// \brief Emit a proxy function which accepts kmp_task_t as the second
+/// Emit a proxy function which accepts kmp_task_t as the second
 /// argument.
 /// \code
 /// kmp_int32 .omp_task_entry.(kmp_int32 gtid, kmp_task_t *tt) {
@@ -4421,7 +4421,7 @@
   return DestructorFn;
 }
 
-/// \brief Emit a privates mapping function for correct handling of private and
+/// Emit a privates mapping function for correct handling of private and
 /// firstprivate variables.
 /// \code
 /// void .omp_task_privates_map.(const .privates. *noalias privs, <ty1>
@@ -5214,7 +5214,7 @@
   CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_taskloop), TaskArgs);
 }
 
-/// \brief Emit reduction operation for each element of array (required for
+/// Emit reduction operation for each element of array (required for
 /// array sections) LHS op = RHS.
 /// \param Type Type of array.
 /// \param LHSVar Variable on the left side of the reduction operation
@@ -6477,39 +6477,39 @@
 }
 
 namespace {
-// \brief Utility to handle information from clauses associated with a given
+// Utility to handle information from clauses associated with a given
 // construct that use mappable expressions (e.g. 'map' clause, 'to' clause).
 // It provides a convenient interface to obtain the information and generate
 // code for that information.
 class MappableExprsHandler {
 public:
-  /// \brief Values for bit flags used to specify the mapping type for
+  /// Values for bit flags used to specify the mapping type for
   /// offloading.
   enum OpenMPOffloadMappingFlags {
-    /// \brief Allocate memory on the device and move data from host to device.
+    /// Allocate memory on the device and move data from host to device.
     OMP_MAP_TO = 0x01,
-    /// \brief Allocate memory on the device and move data from device to host.
+    /// Allocate memory on the device and move data from device to host.
     OMP_MAP_FROM = 0x02,
-    /// \brief Always perform the requested mapping action on the element, even
+    /// Always perform the requested mapping action on the element, even
     /// if it was already mapped before.
     OMP_MAP_ALWAYS = 0x04,
-    /// \brief Delete the element from the device environment, ignoring the
+    /// Delete the element from the device environment, ignoring the
     /// current reference count associated with the element.
     OMP_MAP_DELETE = 0x08,
-    /// \brief The element being mapped is a pointer-pointee pair; both the
+    /// The element being mapped is a pointer-pointee pair; both the
     /// pointer and the pointee should be mapped.
     OMP_MAP_PTR_AND_OBJ = 0x10,
-    /// \brief This flags signals that the base address of an entry should be
+    /// This flags signals that the base address of an entry should be
     /// passed to the target kernel as an argument.
     OMP_MAP_TARGET_PARAM = 0x20,
-    /// \brief Signal that the runtime library has to return the device pointer
+    /// Signal that the runtime library has to return the device pointer
     /// in the current position for the data being mapped. Used when we have the
     /// use_device_ptr clause.
     OMP_MAP_RETURN_PARAM = 0x40,
-    /// \brief This flag signals that the reference being passed is a pointer to
+    /// This flag signals that the reference being passed is a pointer to
     /// private data.
     OMP_MAP_PRIVATE = 0x80,
-    /// \brief Pass the element to the device by value.
+    /// Pass the element to the device by value.
     OMP_MAP_LITERAL = 0x100,
     /// Implicit map
     OMP_MAP_IMPLICIT = 0x200,
@@ -6537,13 +6537,13 @@
   typedef SmallVector<uint64_t, 16> MapFlagsArrayTy;
 
 private:
-  /// \brief Directive from where the map clauses were extracted.
+  /// Directive from where the map clauses were extracted.
   const OMPExecutableDirective &CurDir;
 
-  /// \brief Function the directive is being generated for.
+  /// Function the directive is being generated for.
   CodeGenFunction &CGF;
 
-  /// \brief Set of all first private variables in the current directive.
+  /// Set of all first private variables in the current directive.
   llvm::SmallPtrSet<const VarDecl *, 8> FirstPrivateDecls;
   /// Set of all reduction variables in the current directive.
   llvm::SmallPtrSet<const VarDecl *, 8> ReductionDecls;
@@ -6597,7 +6597,7 @@
     return CGF.getTypeSize(ExprTy);
   }
 
-  /// \brief Return the corresponding bits for a given map clause modifier. Add
+  /// Return the corresponding bits for a given map clause modifier. Add
   /// a flag marking the map as a pointer if requested. Add a flag marking the
   /// map as the first one of a series of maps that relate to the same map
   /// expression.
@@ -6638,7 +6638,7 @@
     return Bits;
   }
 
-  /// \brief Return true if the provided expression is a final array section. A
+  /// Return true if the provided expression is a final array section. A
   /// final array section, is one whose length can't be proved to be one.
   bool isFinalArraySectionExpression(const Expr *E) const {
     const auto *OASE = dyn_cast<OMPArraySectionExpr>(E);
@@ -6676,7 +6676,7 @@
     return ConstLength.getSExtValue() != 1;
   }
 
-  /// \brief Return the adjusted map modifiers if the declaration a capture
+  /// Return the adjusted map modifiers if the declaration a capture
   /// refers to appears in a first-private clause. This is expected to be used
   /// only with directives that start with 'target'.
   unsigned adjustMapModifiersForPrivateClauses(const CapturedStmt::Capture &Cap,
@@ -6720,7 +6720,7 @@
         DevPointersMap[L.first].push_back(L.second);
   }
 
-  /// \brief Generate the base pointers, section pointers, sizes and map type
+  /// Generate the base pointers, section pointers, sizes and map type
   /// bits for the provided map type, map modifier, and expression components.
   /// \a IsFirstComponent should be set to true if the provided set of
   /// components is the first associated with a capture.
@@ -6982,7 +6982,7 @@
     }
   }
 
-  /// \brief Generate all the base pointers, section pointers, sizes and map
+  /// Generate all the base pointers, section pointers, sizes and map
   /// types for the extracted mappable expressions. Also, for each item that
   /// relates with a device pointer, a pair of the relevant declaration and
   /// index where it occurs is appended to the device pointers info array.
@@ -7146,7 +7146,7 @@
     }
   }
 
-  /// \brief Generate the base pointers, section pointers, sizes and map types
+  /// Generate the base pointers, section pointers, sizes and map types
   /// associated to a given capture.
   void generateInfoForCapture(const CapturedStmt::Capture *Cap,
                               llvm::Value *Arg,
@@ -7212,7 +7212,7 @@
     return;
   }
 
-  /// \brief Generate the default map information for a given capture \a CI,
+  /// Generate the default map information for a given capture \a CI,
   /// record field declaration \a RI and captured value \a CV.
   void generateDefaultMapInfo(const CapturedStmt::Capture &CI,
                               const FieldDecl &RI, llvm::Value *CV,
@@ -7264,13 +7264,13 @@
 };
 
 enum OpenMPOffloadingReservedDeviceIDs {
-  /// \brief Device ID if the device was not defined, runtime should get it
+  /// Device ID if the device was not defined, runtime should get it
   /// from environment variables in the spec.
   OMP_DEVICEID_UNDEF = -1,
 };
 } // anonymous namespace
 
-/// \brief Emit the arrays used to pass the captures and map information to the
+/// Emit the arrays used to pass the captures and map information to the
 /// offloading runtime library. If there is no map or capture information,
 /// return nullptr by reference.
 static void
@@ -7384,7 +7384,7 @@
     }
   }
 }
-/// \brief Emit the arguments to be passed to the runtime library based on the
+/// Emit the arguments to be passed to the runtime library based on the
 /// arrays of pointers, sizes and map types.
 static void emitOffloadingArraysArgument(
     CodeGenFunction &CGF, llvm::Value *&BasePointersArrayArg,
Index: cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.h
+++ cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.h
@@ -46,18 +46,18 @@
 
   bool isInSpmdExecutionMode() const;
 
-  /// \brief Emit the worker function for the current target region.
+  /// Emit the worker function for the current target region.
   void emitWorkerFunction(WorkerFunctionState &WST);
 
-  /// \brief Helper for worker function. Emit body of worker loop.
+  /// Helper for worker function. Emit body of worker loop.
   void emitWorkerLoop(CodeGenFunction &CGF, WorkerFunctionState &WST);
 
-  /// \brief Helper for non-SPMD target entry function. Guide the master and
+  /// Helper for non-SPMD target entry function. Guide the master and
   /// worker threads to their respective locations.
   void emitNonSPMDEntryHeader(CodeGenFunction &CGF, EntryFunctionState &EST,
                               WorkerFunctionState &WST);
 
-  /// \brief Signal termination of OMP execution for non-SPMD target entry
+  /// Signal termination of OMP execution for non-SPMD target entry
   /// function.
   void emitNonSPMDEntryFooter(CodeGenFunction &CGF, EntryFunctionState &EST);
 
@@ -67,24 +67,24 @@
   /// Helper for generic variables globalization epilog.
   void emitGenericVarsEpilog(CodeGenFunction &CGF);
 
-  /// \brief Helper for Spmd mode target directive's entry function.
+  /// Helper for Spmd mode target directive's entry function.
   void emitSpmdEntryHeader(CodeGenFunction &CGF, EntryFunctionState &EST,
                            const OMPExecutableDirective &D);
 
-  /// \brief Signal termination of Spmd mode execution.
+  /// Signal termination of Spmd mode execution.
   void emitSpmdEntryFooter(CodeGenFunction &CGF, EntryFunctionState &EST);
 
   //
   // Base class overrides.
   //
 
-  /// \brief Creates offloading entry for the provided entry ID \a ID,
+  /// Creates offloading entry for the provided entry ID \a ID,
   /// address \a Addr, size \a Size, and flags \a Flags.
   void createOffloadEntry(llvm::Constant *ID, llvm::Constant *Addr,
                           uint64_t Size, int32_t Flags,
                           llvm::GlobalValue::LinkageTypes Linkage) override;
 
-  /// \brief Emit outlined function specialized for the Fork-Join
+  /// Emit outlined function specialized for the Fork-Join
   /// programming model for applicable target directives on the NVPTX device.
   /// \param D Directive to emit.
   /// \param ParentName Name of the function that encloses the target region.
@@ -98,7 +98,7 @@
                          llvm::Constant *&OutlinedFnID, bool IsOffloadEntry,
                          const RegionCodeGenTy &CodeGen);
 
-  /// \brief Emit outlined function specialized for the Single Program
+  /// Emit outlined function specialized for the Single Program
   /// Multiple Data programming model for applicable target directives on the
   /// NVPTX device.
   /// \param D Directive to emit.
@@ -114,7 +114,7 @@
                       llvm::Constant *&OutlinedFnID, bool IsOffloadEntry,
                       const RegionCodeGenTy &CodeGen);
 
-  /// \brief Emit outlined function for 'target' directive on the NVPTX
+  /// Emit outlined function for 'target' directive on the NVPTX
   /// device.
   /// \param D Directive to emit.
   /// \param ParentName Name of the function that encloses the target region.
@@ -130,7 +130,7 @@
                                   bool IsOffloadEntry,
                                   const RegionCodeGenTy &CodeGen) override;
 
-  /// \brief Emits code for parallel or serial call of the \a OutlinedFn with
+  /// Emits code for parallel or serial call of the \a OutlinedFn with
   /// variables captured in a record which address is stored in \a
   /// CapturedStruct.
   /// This call is for the Non-SPMD Execution Mode.
@@ -145,7 +145,7 @@
                                ArrayRef<llvm::Value *> CapturedVars,
                                const Expr *IfCond);
 
-  /// \brief Emits code for parallel or serial call of the \a OutlinedFn with
+  /// Emits code for parallel or serial call of the \a OutlinedFn with
   /// variables captured in a record which address is stored in \a
   /// CapturedStruct.
   /// This call is for a parallel directive within an SPMD target directive.
@@ -162,7 +162,7 @@
                             const Expr *IfCond);
 
 protected:
-  /// \brief Get the function name of an outlined region.
+  /// Get the function name of an outlined region.
   //  The name can be customized depending on the target.
   //
   StringRef getOutlinedHelperName() const override {
@@ -172,13 +172,13 @@
 public:
   explicit CGOpenMPRuntimeNVPTX(CodeGenModule &CGM);
 
-  /// \brief Emit call to void __kmpc_push_proc_bind(ident_t *loc, kmp_int32
+  /// Emit call to void __kmpc_push_proc_bind(ident_t *loc, kmp_int32
   /// global_tid, int proc_bind) to generate code for 'proc_bind' clause.
   virtual void emitProcBindClause(CodeGenFunction &CGF,
                                   OpenMPProcBindClauseKind ProcBind,
                                   SourceLocation Loc) override;
 
-  /// \brief Emits call to void __kmpc_push_num_threads(ident_t *loc, kmp_int32
+  /// Emits call to void __kmpc_push_num_threads(ident_t *loc, kmp_int32
   /// global_tid, kmp_int32 num_threads) to generate code for 'num_threads'
   /// clause.
   /// \param NumThreads An integer value of threads.
@@ -186,7 +186,7 @@
                                     llvm::Value *NumThreads,
                                     SourceLocation Loc) override;
 
-  /// \brief This function ought to emit, in the general case, a call to
+  /// This function ought to emit, in the general case, a call to
   // the openmp runtime kmpc_push_num_teams. In NVPTX backend it is not needed
   // as these numbers are obtained through the PTX grid and block configuration.
   /// \param NumTeams An integer expression of teams.
@@ -194,7 +194,7 @@
   void emitNumTeamsClause(CodeGenFunction &CGF, const Expr *NumTeams,
                           const Expr *ThreadLimit, SourceLocation Loc) override;
 
-  /// \brief Emits inlined function for the specified OpenMP parallel
+  /// Emits inlined function for the specified OpenMP parallel
   //  directive.
   /// \a D. This outlined function has type void(*)(kmp_int32 *ThreadID,
   /// kmp_int32 BoundID, struct context_vars*).
@@ -209,7 +209,7 @@
                                OpenMPDirectiveKind InnermostKind,
                                const RegionCodeGenTy &CodeGen) override;
 
-  /// \brief Emits inlined function for the specified OpenMP teams
+  /// Emits inlined function for the specified OpenMP teams
   //  directive.
   /// \a D. This outlined function has type void(*)(kmp_int32 *ThreadID,
   /// kmp_int32 BoundID, struct context_vars*).
@@ -224,7 +224,7 @@
                             OpenMPDirectiveKind InnermostKind,
                             const RegionCodeGenTy &CodeGen) override;
 
-  /// \brief Emits code for teams call of the \a OutlinedFn with
+  /// Emits code for teams call of the \a OutlinedFn with
   /// variables captured in a record which address is stored in \a
   /// CapturedStruct.
   /// \param OutlinedFn Outlined function to be run by team masters. Type of
@@ -236,7 +236,7 @@
                      SourceLocation Loc, llvm::Value *OutlinedFn,
                      ArrayRef<llvm::Value *> CapturedVars) override;
 
-  /// \brief Emits code for parallel or serial call of the \a OutlinedFn with
+  /// Emits code for parallel or serial call of the \a OutlinedFn with
   /// variables captured in a record which address is stored in \a
   /// CapturedStruct.
   /// \param OutlinedFn Outlined function to be run in parallel threads. Type of
Index: cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
+++ cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
@@ -24,24 +24,24 @@
 
 namespace {
 enum OpenMPRTLFunctionNVPTX {
-  /// \brief Call to void __kmpc_kernel_init(kmp_int32 thread_limit,
+  /// Call to void __kmpc_kernel_init(kmp_int32 thread_limit,
   /// int16_t RequiresOMPRuntime);
   OMPRTL_NVPTX__kmpc_kernel_init,
-  /// \brief Call to void __kmpc_kernel_deinit(int16_t IsOMPRuntimeInitialized);
+  /// Call to void __kmpc_kernel_deinit(int16_t IsOMPRuntimeInitialized);
   OMPRTL_NVPTX__kmpc_kernel_deinit,
-  /// \brief Call to void __kmpc_spmd_kernel_init(kmp_int32 thread_limit,
+  /// Call to void __kmpc_spmd_kernel_init(kmp_int32 thread_limit,
   /// int16_t RequiresOMPRuntime, int16_t RequiresDataSharing);
   OMPRTL_NVPTX__kmpc_spmd_kernel_init,
-  /// \brief Call to void __kmpc_spmd_kernel_deinit();
+  /// Call to void __kmpc_spmd_kernel_deinit();
   OMPRTL_NVPTX__kmpc_spmd_kernel_deinit,
-  /// \brief Call to void __kmpc_kernel_prepare_parallel(void
+  /// Call to void __kmpc_kernel_prepare_parallel(void
   /// *outlined_function, int16_t
   /// IsOMPRuntimeInitialized);
   OMPRTL_NVPTX__kmpc_kernel_prepare_parallel,
-  /// \brief Call to bool __kmpc_kernel_parallel(void **outlined_function,
+  /// Call to bool __kmpc_kernel_parallel(void **outlined_function,
   /// int16_t IsOMPRuntimeInitialized);
   OMPRTL_NVPTX__kmpc_kernel_parallel,
-  /// \brief Call to void __kmpc_kernel_end_parallel();
+  /// Call to void __kmpc_kernel_end_parallel();
   OMPRTL_NVPTX__kmpc_kernel_end_parallel,
   /// Call to void __kmpc_serialized_parallel(ident_t *loc, kmp_int32
   /// global_tid);
@@ -49,25 +49,25 @@
   /// Call to void __kmpc_end_serialized_parallel(ident_t *loc, kmp_int32
   /// global_tid);
   OMPRTL_NVPTX__kmpc_end_serialized_parallel,
-  /// \brief Call to int32_t __kmpc_shuffle_int32(int32_t element,
+  /// Call to int32_t __kmpc_shuffle_int32(int32_t element,
   /// int16_t lane_offset, int16_t warp_size);
   OMPRTL_NVPTX__kmpc_shuffle_int32,
-  /// \brief Call to int64_t __kmpc_shuffle_int64(int64_t element,
+  /// Call to int64_t __kmpc_shuffle_int64(int64_t element,
   /// int16_t lane_offset, int16_t warp_size);
   OMPRTL_NVPTX__kmpc_shuffle_int64,
-  /// \brief Call to __kmpc_nvptx_parallel_reduce_nowait(kmp_int32
+  /// Call to __kmpc_nvptx_parallel_reduce_nowait(kmp_int32
   /// global_tid, kmp_int32 num_vars, size_t reduce_size, void* reduce_data,
   /// void (*kmp_ShuffleReductFctPtr)(void *rhsData, int16_t lane_id, int16_t
   /// lane_offset, int16_t shortCircuit),
   /// void (*kmp_InterWarpCopyFctPtr)(void* src, int32_t warp_num));
   OMPRTL_NVPTX__kmpc_parallel_reduce_nowait,
-  /// \brief Call to __kmpc_nvptx_simd_reduce_nowait(kmp_int32
+  /// Call to __kmpc_nvptx_simd_reduce_nowait(kmp_int32
   /// global_tid, kmp_int32 num_vars, size_t reduce_size, void* reduce_data,
   /// void (*kmp_ShuffleReductFctPtr)(void *rhsData, int16_t lane_id, int16_t
   /// lane_offset, int16_t shortCircuit),
   /// void (*kmp_InterWarpCopyFctPtr)(void* src, int32_t warp_num));
   OMPRTL_NVPTX__kmpc_simd_reduce_nowait,
-  /// \brief Call to __kmpc_nvptx_teams_reduce_nowait(int32_t global_tid,
+  /// Call to __kmpc_nvptx_teams_reduce_nowait(int32_t global_tid,
   /// int32_t num_vars, size_t reduce_size, void *reduce_data,
   /// void (*kmp_ShuffleReductFctPtr)(void *rhs, int16_t lane_id, int16_t
   /// lane_offset, int16_t shortCircuit),
@@ -77,21 +77,21 @@
   /// void (*kmp_LoadReduceFctPtr)(void *reduce_data, void * scratchpad, int32_t
   /// index, int32_t width, int32_t reduce))
   OMPRTL_NVPTX__kmpc_teams_reduce_nowait,
-  /// \brief Call to __kmpc_nvptx_end_reduce_nowait(int32_t global_tid);
+  /// Call to __kmpc_nvptx_end_reduce_nowait(int32_t global_tid);
   OMPRTL_NVPTX__kmpc_end_reduce_nowait,
-  /// \brief Call to void __kmpc_data_sharing_init_stack();
+  /// Call to void __kmpc_data_sharing_init_stack();
   OMPRTL_NVPTX__kmpc_data_sharing_init_stack,
-  /// \brief Call to void* __kmpc_data_sharing_push_stack(size_t size,
+  /// Call to void* __kmpc_data_sharing_push_stack(size_t size,
   /// int16_t UseSharedMemory);
   OMPRTL_NVPTX__kmpc_data_sharing_push_stack,
-  /// \brief Call to void __kmpc_data_sharing_pop_stack(void *a);
+  /// Call to void __kmpc_data_sharing_pop_stack(void *a);
   OMPRTL_NVPTX__kmpc_data_sharing_pop_stack,
-  /// \brief Call to void __kmpc_begin_sharing_variables(void ***args,
+  /// Call to void __kmpc_begin_sharing_variables(void ***args,
   /// size_t n_args);
   OMPRTL_NVPTX__kmpc_begin_sharing_variables,
-  /// \brief Call to void __kmpc_end_sharing_variables();
+  /// Call to void __kmpc_end_sharing_variables();
   OMPRTL_NVPTX__kmpc_end_sharing_variables,
-  /// \brief Call to void __kmpc_get_shared_variables(void ***GlobalArgs)
+  /// Call to void __kmpc_get_shared_variables(void ***GlobalArgs)
   OMPRTL_NVPTX__kmpc_get_shared_variables,
   /// Call to uint16_t __kmpc_parallel_level(ident_t *loc, kmp_int32
   /// global_tid);
@@ -1078,7 +1078,7 @@
   CGF.EmitBlock(ExitBB);
 }
 
-/// \brief Returns specified OpenMP runtime function for the current OpenMP
+/// Returns specified OpenMP runtime function for the current OpenMP
 /// implementation.  Specialized for the NVPTX device.
 /// \param Function OpenMP runtime function.
 /// \return Specified function.
Index: cfe/trunk/lib/CodeGen/CGRecordLayout.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGRecordLayout.h
+++ cfe/trunk/lib/CodeGen/CGRecordLayout.h
@@ -23,7 +23,7 @@
 namespace clang {
 namespace CodeGen {
 
-/// \brief Structure with information about how a bitfield should be accessed.
+/// Structure with information about how a bitfield should be accessed.
 ///
 /// Often we layout a sequence of bitfields as a contiguous sequence of bits.
 /// When the AST record layout does this, we represent it in the LLVM IR's type
@@ -92,7 +92,7 @@
   void print(raw_ostream &OS) const;
   void dump() const;
 
-  /// \brief Given a bit-field decl, build an appropriate helper object for
+  /// Given a bit-field decl, build an appropriate helper object for
   /// accessing that field (which is expected to have the given offset and
   /// size).
   static CGBitFieldInfo MakeInfo(class CodeGenTypes &Types,
@@ -156,31 +156,31 @@
       IsZeroInitializable(IsZeroInitializable),
       IsZeroInitializableAsBase(IsZeroInitializableAsBase) {}
 
-  /// \brief Return the "complete object" LLVM type associated with
+  /// Return the "complete object" LLVM type associated with
   /// this record.
   llvm::StructType *getLLVMType() const {
     return CompleteObjectType;
   }
 
-  /// \brief Return the "base subobject" LLVM type associated with
+  /// Return the "base subobject" LLVM type associated with
   /// this record.
   llvm::StructType *getBaseSubobjectLLVMType() const {
     return BaseSubobjectType;
   }
 
-  /// \brief Check whether this struct can be C++ zero-initialized
+  /// Check whether this struct can be C++ zero-initialized
   /// with a zeroinitializer.
   bool isZeroInitializable() const {
     return IsZeroInitializable;
   }
 
-  /// \brief Check whether this struct can be C++ zero-initialized
+  /// Check whether this struct can be C++ zero-initialized
   /// with a zeroinitializer when considered as a base subobject.
   bool isZeroInitializableAsBase() const {
     return IsZeroInitializableAsBase;
   }
 
-  /// \brief Return llvm::StructType element number that corresponds to the
+  /// Return llvm::StructType element number that corresponds to the
   /// field FD.
   unsigned getLLVMFieldNo(const FieldDecl *FD) const {
     FD = FD->getCanonicalDecl();
@@ -193,14 +193,14 @@
     return NonVirtualBases.lookup(RD);
   }
 
-  /// \brief Return the LLVM field index corresponding to the given
+  /// Return the LLVM field index corresponding to the given
   /// virtual base.  Only valid when operating on the complete object.
   unsigned getVirtualBaseIndex(const CXXRecordDecl *base) const {
     assert(CompleteObjectVirtualBases.count(base) && "Invalid virtual base!");
     return CompleteObjectVirtualBases.lookup(base);
   }
 
-  /// \brief Return the BitFieldInfo that corresponds to the field FD.
+  /// Return the BitFieldInfo that corresponds to the field FD.
   const CGBitFieldInfo &getBitFieldInfo(const FieldDecl *FD) const {
     FD = FD->getCanonicalDecl();
     assert(FD->isBitField() && "Invalid call for non-bit-field decl!");
Index: cfe/trunk/lib/CodeGen/CGRecordLayoutBuilder.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGRecordLayoutBuilder.cpp
+++ cfe/trunk/lib/CodeGen/CGRecordLayoutBuilder.cpp
@@ -95,7 +95,7 @@
   // The constructor.
   CGRecordLowering(CodeGenTypes &Types, const RecordDecl *D, bool Packed);
   // Short helper routines.
-  /// \brief Constructs a MemberInfo instance from an offset and llvm::Type *.
+  /// Constructs a MemberInfo instance from an offset and llvm::Type *.
   MemberInfo StorageInfo(CharUnits Offset, llvm::Type *Data) {
     return MemberInfo(Offset, MemberInfo::Field, Data);
   }
@@ -118,19 +118,19 @@
     return !Context.getTargetInfo().getCXXABI().isMicrosoft();
   }
 
-  /// \brief Wraps llvm::Type::getIntNTy with some implicit arguments.
+  /// Wraps llvm::Type::getIntNTy with some implicit arguments.
   llvm::Type *getIntNType(uint64_t NumBits) {
     return llvm::Type::getIntNTy(Types.getLLVMContext(),
                                  (unsigned)llvm::alignTo(NumBits, 8));
   }
-  /// \brief Gets an llvm type of size NumBytes and alignment 1.
+  /// Gets an llvm type of size NumBytes and alignment 1.
   llvm::Type *getByteArrayType(CharUnits NumBytes) {
     assert(!NumBytes.isZero() && "Empty byte arrays aren't allowed.");
     llvm::Type *Type = llvm::Type::getInt8Ty(Types.getLLVMContext());
     return NumBytes == CharUnits::One() ? Type :
         (llvm::Type *)llvm::ArrayType::get(Type, NumBytes.getQuantity());
   }
-  /// \brief Gets the storage type for a field decl and handles storage
+  /// Gets the storage type for a field decl and handles storage
   /// for itanium bitfields that are smaller than their declared type.
   llvm::Type *getStorageType(const FieldDecl *FD) {
     llvm::Type *Type = Types.ConvertTypeForMem(FD->getType());
@@ -139,7 +139,7 @@
     return getIntNType(std::min(FD->getBitWidthValue(Context),
                              (unsigned)Context.toBits(getSize(Type))));
   }
-  /// \brief Gets the llvm Basesubobject type from a CXXRecordDecl.
+  /// Gets the llvm Basesubobject type from a CXXRecordDecl.
   llvm::Type *getStorageType(const CXXRecordDecl *RD) {
     return Types.getCGRecordLayout(RD).getBaseSubobjectLLVMType();
   }
@@ -168,7 +168,7 @@
   // Layout routines.
   void setBitFieldInfo(const FieldDecl *FD, CharUnits StartOffset, 
                        llvm::Type *StorageType);
-  /// \brief Lowers an ASTRecordLayout to a llvm type.
+  /// Lowers an ASTRecordLayout to a llvm type.
   void lower(bool NonVirtualBaseType);
   void lowerUnion();
   void accumulateFields();
@@ -177,18 +177,18 @@
   void accumulateBases();
   void accumulateVPtrs();
   void accumulateVBases();
-  /// \brief Recursively searches all of the bases to find out if a vbase is
+  /// Recursively searches all of the bases to find out if a vbase is
   /// not the primary vbase of some base class.
   bool hasOwnStorage(const CXXRecordDecl *Decl, const CXXRecordDecl *Query);
   void calculateZeroInit();
-  /// \brief Lowers bitfield storage types to I8 arrays for bitfields with tail
+  /// Lowers bitfield storage types to I8 arrays for bitfields with tail
   /// padding that is or can potentially be used.
   void clipTailPadding();
-  /// \brief Determines if we need a packed llvm struct.
+  /// Determines if we need a packed llvm struct.
   void determinePacked(bool NVBaseType);
-  /// \brief Inserts padding everywhere it's needed.
+  /// Inserts padding everywhere it's needed.
   void insertPadding();
-  /// \brief Fills out the structures that are ultimately consumed.
+  /// Fills out the structures that are ultimately consumed.
   void fillOutputFields();
   // Input memoization fields.
   CodeGenTypes &Types;
Index: cfe/trunk/lib/CodeGen/CGValue.h
===================================================================
--- cfe/trunk/lib/CodeGen/CGValue.h
+++ cfe/trunk/lib/CodeGen/CGValue.h
@@ -401,7 +401,7 @@
     return R;
   }
 
-  /// \brief Create a new object to represent a bit-field access.
+  /// Create a new object to represent a bit-field access.
   ///
   /// \param Addr - The base address of the bit-field sequence this
   /// bit-field refers to.
Index: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CodeGenAction.cpp
+++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp
@@ -341,17 +341,17 @@
                                SourceLocation LocCookie);
 
     void DiagnosticHandlerImpl(const llvm::DiagnosticInfo &DI);
-    /// \brief Specialized handler for InlineAsm diagnostic.
+    /// Specialized handler for InlineAsm diagnostic.
     /// \return True if the diagnostic has been successfully reported, false
     /// otherwise.
     bool InlineAsmDiagHandler(const llvm::DiagnosticInfoInlineAsm &D);
-    /// \brief Specialized handler for StackSize diagnostic.
+    /// Specialized handler for StackSize diagnostic.
     /// \return True if the diagnostic has been successfully reported, false
     /// otherwise.
     bool StackSizeDiagHandler(const llvm::DiagnosticInfoStackSize &D);
-    /// \brief Specialized handler for unsupported backend feature diagnostic.
+    /// Specialized handler for unsupported backend feature diagnostic.
     void UnsupportedDiagHandler(const llvm::DiagnosticInfoUnsupported &D);
-    /// \brief Specialized handlers for optimization remarks.
+    /// Specialized handlers for optimization remarks.
     /// Note that these handlers only accept remarks and they always handle
     /// them.
     void EmitOptimizationMessage(const llvm::DiagnosticInfoOptimizationBase &D,
@@ -697,7 +697,7 @@
   EmitOptimizationMessage(D, diag::warn_fe_backend_optimization_failure);
 }
 
-/// \brief This function is invoked when the backend needs
+/// This function is invoked when the backend needs
 /// to report something to the user.
 void BackendConsumer::DiagnosticHandlerImpl(const DiagnosticInfo &DI) {
   unsigned DiagID = diag::err_fe_inline_asm;
Index: cfe/trunk/lib/CodeGen/CodeGenFunction.h
===================================================================
--- cfe/trunk/lib/CodeGen/CodeGenFunction.h
+++ cfe/trunk/lib/CodeGen/CodeGenFunction.h
@@ -201,7 +201,7 @@
       Address UB)>
       CodeGenDispatchBoundsTy;
 
-  /// \brief CGBuilder insert helper. This function is called after an
+  /// CGBuilder insert helper. This function is called after an
   /// instruction is created using Builder.
   void InsertHelper(llvm::Instruction *I, const llvm::Twine &Name,
                     llvm::BasicBlock *BB,
@@ -255,7 +255,7 @@
   /// we prefer to insert allocas.
   llvm::AssertingVH<llvm::Instruction> AllocaInsertPt;
 
-  /// \brief API for captured statement code generation.
+  /// API for captured statement code generation.
   class CGCapturedStmtInfo {
   public:
     explicit CGCapturedStmtInfo(CapturedRegionKind K = CR_Default)
@@ -283,10 +283,10 @@
     CapturedRegionKind getKind() const { return Kind; }
 
     virtual void setContextValue(llvm::Value *V) { ThisValue = V; }
-    // \brief Retrieve the value of the context parameter.
+    // Retrieve the value of the context parameter.
     virtual llvm::Value *getContextValue() const { return ThisValue; }
 
-    /// \brief Lookup the captured field decl for a variable.
+    /// Lookup the captured field decl for a variable.
     virtual const FieldDecl *lookup(const VarDecl *VD) const {
       return CaptureFields.lookup(VD->getCanonicalDecl());
     }
@@ -298,32 +298,32 @@
       return true;
     }
 
-    /// \brief Emit the captured statement body.
+    /// Emit the captured statement body.
     virtual void EmitBody(CodeGenFunction &CGF, const Stmt *S) {
       CGF.incrementProfileCounter(S);
       CGF.EmitStmt(S);
     }
 
-    /// \brief Get the name of the capture helper.
+    /// Get the name of the capture helper.
     virtual StringRef getHelperName() const { return "__captured_stmt"; }
 
   private:
-    /// \brief The kind of captured statement being generated.
+    /// The kind of captured statement being generated.
     CapturedRegionKind Kind;
 
-    /// \brief Keep the map between VarDecl and FieldDecl.
+    /// Keep the map between VarDecl and FieldDecl.
     llvm::SmallDenseMap<const VarDecl *, FieldDecl *> CaptureFields;
 
-    /// \brief The base address of the captured record, passed in as the first
+    /// The base address of the captured record, passed in as the first
     /// argument of the parallel region function.
     llvm::Value *ThisValue;
 
-    /// \brief Captured 'this' type.
+    /// Captured 'this' type.
     FieldDecl *CXXThisFieldDecl;
   };
   CGCapturedStmtInfo *CapturedStmtInfo;
 
-  /// \brief RAII for correct setting/restoring of CapturedStmtInfo.
+  /// RAII for correct setting/restoring of CapturedStmtInfo.
   class CGCapturedStmtRAII {
   private:
     CodeGenFunction &CGF;
@@ -362,13 +362,13 @@
     }
   };
 
-  /// \brief Sanitizers enabled for this function.
+  /// Sanitizers enabled for this function.
   SanitizerSet SanOpts;
 
-  /// \brief True if CodeGen currently emits code implementing sanitizer checks.
+  /// True if CodeGen currently emits code implementing sanitizer checks.
   bool IsSanitizerScope;
 
-  /// \brief RAII object to set/unset CodeGenFunction::IsSanitizerScope.
+  /// RAII object to set/unset CodeGenFunction::IsSanitizerScope.
   class SanitizerScope {
     CodeGenFunction *CGF;
   public:
@@ -399,7 +399,7 @@
   llvm::DenseMap<const VarDecl *, FieldDecl *> LambdaCaptureFields;
   FieldDecl *LambdaThisCaptureField;
 
-  /// \brief A mapping from NRVO variables to the flags used to indicate
+  /// A mapping from NRVO variables to the flags used to indicate
   /// when the NRVO has been applied to this variable.
   llvm::DenseMap<const VarDecl *, llvm::Value *> NRVOFlags;
 
@@ -525,7 +525,7 @@
     initFullExprCleanup();
   }
 
-  /// \brief Queue a cleanup to be pushed after finishing the current
+  /// Queue a cleanup to be pushed after finishing the current
   /// full-expression.
   template <class T, class... As>
   void pushCleanupAfterFullExpr(CleanupKind Kind, As... A) {
@@ -584,7 +584,7 @@
   void ActivateCleanupBlock(EHScopeStack::stable_iterator Cleanup,
                             llvm::Instruction *DominatingIP);
 
-  /// \brief Enters a new scope for capturing cleanups, all of which
+  /// Enters a new scope for capturing cleanups, all of which
   /// will be executed once the scope is exited.
   class RunCleanupsScope {
     EHScopeStack::stable_iterator CleanupStackDepth, OldCleanupScopeDepth;
@@ -601,7 +601,7 @@
     CodeGenFunction& CGF;
 
   public:
-    /// \brief Enter a new cleanup scope.
+    /// Enter a new cleanup scope.
     explicit RunCleanupsScope(CodeGenFunction &CGF)
       : PerformCleanup(true), CGF(CGF)
     {
@@ -614,18 +614,18 @@
       CGF.CurrentCleanupScopeDepth = CleanupStackDepth;
     }
 
-    /// \brief Exit this cleanup scope, emitting any accumulated cleanups.
+    /// Exit this cleanup scope, emitting any accumulated cleanups.
     ~RunCleanupsScope() {
       if (PerformCleanup)
         ForceCleanup();
     }
 
-    /// \brief Determine whether this scope requires any cleanups.
+    /// Determine whether this scope requires any cleanups.
     bool requiresCleanups() const {
       return CGF.EHStack.stable_begin() != CleanupStackDepth;
     }
 
-    /// \brief Force the emission of cleanups now, instead of waiting
+    /// Force the emission of cleanups now, instead of waiting
     /// until this object is destroyed.
     /// \param ValuesToReload - A list of values that need to be available at
     /// the insertion point after cleanup emission. If cleanup emission created
@@ -654,7 +654,7 @@
     void operator=(const LexicalScope &) = delete;
 
   public:
-    /// \brief Enter a new cleanup scope.
+    /// Enter a new cleanup scope.
     explicit LexicalScope(CodeGenFunction &CGF, SourceRange Range)
       : RunCleanupsScope(CGF), Range(Range), ParentScope(CGF.CurLexicalScope) {
       CGF.CurLexicalScope = this;
@@ -667,7 +667,7 @@
       Labels.push_back(label);
     }
 
-    /// \brief Exit this cleanup scope, emitting any accumulated
+    /// Exit this cleanup scope, emitting any accumulated
     /// cleanups.
     ~LexicalScope() {
       if (CGDebugInfo *DI = CGF.getDebugInfo())
@@ -681,7 +681,7 @@
       }
     }
 
-    /// \brief Force the emission of cleanups now, instead of waiting
+    /// Force the emission of cleanups now, instead of waiting
     /// until this object is destroyed.
     void ForceCleanup() {
       CGF.CurLexicalScope = ParentScope;
@@ -828,13 +828,13 @@
     }
   };
 
-  /// \brief Takes the old cleanup stack size and emits the cleanup blocks
+  /// Takes the old cleanup stack size and emits the cleanup blocks
   /// that have been added.
   void
   PopCleanupBlocks(EHScopeStack::stable_iterator OldCleanupStackSize,
                    std::initializer_list<llvm::Value **> ValuesToReload = {});
 
-  /// \brief Takes the old cleanup stack size and emits the cleanup blocks
+  /// Takes the old cleanup stack size and emits the cleanup blocks
   /// that have been added, then adds all lifetime-extended cleanups from
   /// the given position to the stack.
   void
@@ -1667,7 +1667,7 @@
 
   void GenerateCode(GlobalDecl GD, llvm::Function *Fn,
                     const CGFunctionInfo &FnInfo);
-  /// \brief Emit code for the start of a function.
+  /// Emit code for the start of a function.
   /// \param Loc       The location to be associated with the function.
   /// \param StartLoc  The location of the function body.
   void StartFunction(GlobalDecl GD,
@@ -1693,7 +1693,7 @@
   void EmitLambdaStaticInvokeBody(const CXXMethodDecl *MD);
   void EmitAsanPrologueOrEpilogue(bool Prologue);
 
-  /// \brief Emit the unified return block, trying to avoid its emission when
+  /// Emit the unified return block, trying to avoid its emission when
   /// possible.
   /// \return The debug location of the user written return statement if the
   /// return block is is avoided.
@@ -1766,7 +1766,7 @@
     CFITCK_ICall,
   };
 
-  /// \brief Derived is the presumed address of an object of type T after a
+  /// Derived is the presumed address of an object of type T after a
   /// cast. If T is a polymorphic class type, emit a check that the virtual
   /// table for Derived belongs to a class derived from T.
   void EmitVTablePtrCheckForCast(QualType T, llvm::Value *Derived,
@@ -2406,7 +2406,7 @@
   llvm::Value *EmitDynamicCast(Address V, const CXXDynamicCastExpr *DCE);
   Address EmitCXXUuidofExpr(const CXXUuidofExpr *E);
 
-  /// \brief Situations in which we might emit a check for the suitability of a
+  /// Situations in which we might emit a check for the suitability of a
   ///        pointer or glvalue.
   enum TypeCheckKind {
     /// Checking the operand of a load. Must be suitably sized and aligned.
@@ -2450,17 +2450,17 @@
   /// Determine whether the pointer type check \p TCK requires a vptr check.
   static bool isVptrCheckRequired(TypeCheckKind TCK, QualType Ty);
 
-  /// \brief Whether any type-checking sanitizers are enabled. If \c false,
+  /// Whether any type-checking sanitizers are enabled. If \c false,
   /// calls to EmitTypeCheck can be skipped.
   bool sanitizePerformTypeCheck() const;
 
-  /// \brief Emit a check that \p V is the address of storage of the
+  /// Emit a check that \p V is the address of storage of the
   /// appropriate size and alignment for an object of type \p Type.
   void EmitTypeCheck(TypeCheckKind TCK, SourceLocation Loc, llvm::Value *V,
                      QualType Type, CharUnits Alignment = CharUnits::Zero(),
                      SanitizerSet SkippedChecks = SanitizerSet());
 
-  /// \brief Emit a check that \p Base points into an array object, which
+  /// Emit a check that \p Base points into an array object, which
   /// we can access at index \p Index. \p Accessed should be \c false if we
   /// this expression is used as an lvalue, for instance in "&Arr[Idx]".
   void EmitBoundsCheck(const Expr *E, const Expr *Base, llvm::Value *Index,
@@ -2501,7 +2501,7 @@
   typedef void SpecialInitFn(CodeGenFunction &Init, const VarDecl &D,
                              llvm::Value *Address);
 
-  /// \brief Determine whether the given initializer is trivial in the sense
+  /// Determine whether the given initializer is trivial in the sense
   /// that it requires no code to be generated.
   bool isTrivialInitializer(const Expr *Init);
 
@@ -2776,7 +2776,7 @@
                                   SmallVectorImpl<llvm::Value *> &CapturedVars);
   void emitOMPSimpleStore(LValue LVal, RValue RVal, QualType RValTy,
                           SourceLocation Loc);
-  /// \brief Perform element by element copying of arrays with type \a
+  /// Perform element by element copying of arrays with type \a
   /// OriginalType from \a SrcAddr to \a DestAddr using copying procedure
   /// generated by \a CopyGen.
   ///
@@ -2788,7 +2788,7 @@
   void EmitOMPAggregateAssign(
       Address DestAddr, Address SrcAddr, QualType OriginalType,
       const llvm::function_ref<void(Address, Address)> CopyGen);
-  /// \brief Emit proper copying of data from one variable to another.
+  /// Emit proper copying of data from one variable to another.
   ///
   /// \param OriginalType Original type of the copied variables.
   /// \param DestAddr Destination address.
@@ -2803,7 +2803,7 @@
                    Address DestAddr, Address SrcAddr,
                    const VarDecl *DestVD, const VarDecl *SrcVD,
                    const Expr *Copy);
-  /// \brief Emit atomic update code for constructs: \a X = \a X \a BO \a E or
+  /// Emit atomic update code for constructs: \a X = \a X \a BO \a E or
   /// \a X = \a E \a BO \a E.
   ///
   /// \param X Value to be updated.
@@ -2827,7 +2827,7 @@
   void EmitOMPUseDevicePtrClause(
       const OMPClause &C, OMPPrivateScope &PrivateScope,
       const llvm::DenseMap<const ValueDecl *, Address> &CaptureDeviceAddrMap);
-  /// \brief Emit code for copyin clause in \a D directive. The next code is
+  /// Emit code for copyin clause in \a D directive. The next code is
   /// generated at the start of outlined functions for directives:
   /// \code
   /// threadprivate_var1 = master_threadprivate_var1;
@@ -2839,7 +2839,7 @@
   /// \param D OpenMP directive possibly with 'copyin' clause(s).
   /// \returns true if at least one copyin variable is found, false otherwise.
   bool EmitOMPCopyinClause(const OMPExecutableDirective &D);
-  /// \brief Emit initial code for lastprivate variables. If some variable is
+  /// Emit initial code for lastprivate variables. If some variable is
   /// not also firstprivate, then the default initialization is used. Otherwise
   /// initialization of this variable is performed by EmitOMPFirstprivateClause
   /// method.
@@ -2852,7 +2852,7 @@
   /// otherwise.
   bool EmitOMPLastprivateClauseInit(const OMPExecutableDirective &D,
                                     OMPPrivateScope &PrivateScope);
-  /// \brief Emit final copying of lastprivate values to original variables at
+  /// Emit final copying of lastprivate values to original variables at
   /// the end of the worksharing or simd directive.
   ///
   /// \param D Directive that has at least one 'lastprivate' directives.
@@ -2871,7 +2871,7 @@
   void EmitOMPLinearClauseFinal(
       const OMPLoopDirective &D,
       const llvm::function_ref<llvm::Value *(CodeGenFunction &)> CondGen);
-  /// \brief Emit initial code for reduction variables. Creates reduction copies
+  /// Emit initial code for reduction variables. Creates reduction copies
   /// and initializes them with the values according to OpenMP standard.
   ///
   /// \param D Directive (possibly) with the 'reduction' clause.
@@ -2880,14 +2880,14 @@
   ///
   void EmitOMPReductionClauseInit(const OMPExecutableDirective &D,
                                   OMPPrivateScope &PrivateScope);
-  /// \brief Emit final update of reduction values to original variables at
+  /// Emit final update of reduction values to original variables at
   /// the end of the directive.
   ///
   /// \param D Directive that has at least one 'reduction' directives.
   /// \param ReductionKind The kind of reduction to perform.
   void EmitOMPReductionClauseFinal(const OMPExecutableDirective &D,
                                    const OpenMPDirectiveKind ReductionKind);
-  /// \brief Emit initial code for linear variables. Creates private copies
+  /// Emit initial code for linear variables. Creates private copies
   /// and initializes them with the values according to OpenMP standard.
   ///
   /// \param D Directive (possibly) with the 'linear' clause.
@@ -3019,7 +3019,7 @@
   static void EmitOMPTargetTeamsDistributeParallelForDeviceFunction(
       CodeGenModule &CGM, StringRef ParentName,
       const OMPTargetTeamsDistributeParallelForDirective &S);
-  /// \brief Emit inner loop of the worksharing/simd construct.
+  /// Emit inner loop of the worksharing/simd construct.
   ///
   /// \param S Directive, for which the inner loop must be emitted.
   /// \param RequiresCleanup true, if directive has some associated private
@@ -3043,7 +3043,7 @@
   /// Helper for the OpenMP loop directives.
   void EmitOMPLoopBody(const OMPLoopDirective &D, JumpDest LoopExit);
 
-  /// \brief Emit code for the worksharing loop-based directive.
+  /// Emit code for the worksharing loop-based directive.
   /// \return true, if this construct has any lastprivate clause, false -
   /// otherwise.
   bool EmitOMPWorksharingLoop(const OMPLoopDirective &S, Expr *EUB,
@@ -3116,7 +3116,7 @@
                                   OMPPrivateScope &LoopScope,
                                   const OMPLoopArguments &LoopArgs,
                                   const CodeGenLoopTy &CodeGenLoopContent);
-  /// \brief Emit code for sections directive.
+  /// Emit code for sections directive.
   void EmitSections(const OMPExecutableDirective &S);
 
 public:
@@ -3157,7 +3157,7 @@
   ///
   LValue EmitLValue(const Expr *E);
 
-  /// \brief Same as EmitLValue but additionally we generate checking code to
+  /// Same as EmitLValue but additionally we generate checking code to
   /// guard against undefined behavior.  This is only suitable when we know
   /// that the address will be used to access the object.
   LValue EmitCheckedLValue(const Expr *E, TypeCheckKind TCK);
@@ -3634,7 +3634,7 @@
   void EmitObjCAutoreleasePoolCleanup(llvm::Value *Ptr);
   void EmitObjCMRRAutoreleasePoolPop(llvm::Value *Ptr);
 
-  /// \brief Emits a reference binding to the passed in expression.
+  /// Emits a reference binding to the passed in expression.
   RValue EmitReferenceBindingToExpr(const Expr *E);
 
   //===--------------------------------------------------------------------===//
@@ -3851,26 +3851,26 @@
   /// enabled, a runtime check specified by \p Kind is also emitted.
   llvm::Value *EmitCheckedArgForBuiltin(const Expr *E, BuiltinCheckKind Kind);
 
-  /// \brief Emit a description of a type in a format suitable for passing to
+  /// Emit a description of a type in a format suitable for passing to
   /// a runtime sanitizer handler.
   llvm::Constant *EmitCheckTypeDescriptor(QualType T);
 
-  /// \brief Convert a value into a format suitable for passing to a runtime
+  /// Convert a value into a format suitable for passing to a runtime
   /// sanitizer handler.
   llvm::Value *EmitCheckValue(llvm::Value *V);
 
-  /// \brief Emit a description of a source location in a format suitable for
+  /// Emit a description of a source location in a format suitable for
   /// passing to a runtime sanitizer handler.
   llvm::Constant *EmitCheckSourceLocation(SourceLocation Loc);
 
-  /// \brief Create a basic block that will call a handler function in a
+  /// Create a basic block that will call a handler function in a
   /// sanitizer runtime with the provided arguments, and create a conditional
   /// branch to it.
   void EmitCheck(ArrayRef<std::pair<llvm::Value *, SanitizerMask>> Checked,
                  SanitizerHandler Check, ArrayRef<llvm::Constant *> StaticArgs,
                  ArrayRef<llvm::Value *> DynamicArgs);
 
-  /// \brief Emit a slow path cross-DSO CFI check which calls __cfi_slowpath
+  /// Emit a slow path cross-DSO CFI check which calls __cfi_slowpath
   /// if Cond if false.
   void EmitCfiSlowPathCheck(SanitizerMask Kind, llvm::Value *Cond,
                             llvm::ConstantInt *TypeId, llvm::Value *Ptr,
@@ -3880,21 +3880,21 @@
   /// checking is enabled. Otherwise, just emit an unreachable instruction.
   void EmitUnreachable(SourceLocation Loc);
 
-  /// \brief Create a basic block that will call the trap intrinsic, and emit a
+  /// Create a basic block that will call the trap intrinsic, and emit a
   /// conditional branch to it, for the -ftrapv checks.
   void EmitTrapCheck(llvm::Value *Checked);
 
-  /// \brief Emit a call to trap or debugtrap and attach function attribute
+  /// Emit a call to trap or debugtrap and attach function attribute
   /// "trap-func-name" if specified.
   llvm::CallInst *EmitTrapCall(llvm::Intrinsic::ID IntrID);
 
-  /// \brief Emit a stub for the cross-DSO CFI check function.
+  /// Emit a stub for the cross-DSO CFI check function.
   void EmitCfiCheckStub();
 
-  /// \brief Emit a cross-DSO CFI failure handling function.
+  /// Emit a cross-DSO CFI failure handling function.
   void EmitCfiCheckFail();
 
-  /// \brief Create a check for a function parameter that may potentially be
+  /// Create a check for a function parameter that may potentially be
   /// declared as non-null.
   void EmitNonNullArgCheck(RValue RV, QualType ArgType, SourceLocation ArgLoc,
                            AbstractCallee AC, unsigned ParmNum);
@@ -3949,7 +3949,7 @@
                                   std::string &ConstraintStr,
                                   SourceLocation Loc);
 
-  /// \brief Attempts to statically evaluate the object size of E. If that
+  /// Attempts to statically evaluate the object size of E. If that
   /// fails, emits code to figure the size of E out for us. This is
   /// pass_object_size aware.
   ///
@@ -3958,7 +3958,7 @@
                                                llvm::IntegerType *ResType,
                                                llvm::Value *EmittedE);
 
-  /// \brief Emits the size of E, as required by __builtin_object_size. This
+  /// Emits the size of E, as required by __builtin_object_size. This
   /// function is aware of pass_object_size parameters, and will act accordingly
   /// if E is a parameter with the pass_object_size attribute.
   llvm::Value *emitBuiltinObjectSize(const Expr *E, unsigned Type,
Index: cfe/trunk/lib/CodeGen/CodeGenModule.h
===================================================================
--- cfe/trunk/lib/CodeGen/CodeGenModule.h
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h
@@ -391,10 +391,10 @@
                           llvm::GlobalValue *> StaticExternCMap;
   StaticExternCMap StaticExternCValues;
 
-  /// \brief thread_local variables defined or used in this TU.
+  /// thread_local variables defined or used in this TU.
   std::vector<const VarDecl *> CXXThreadLocals;
 
-  /// \brief thread_local variables with initializers that need to run
+  /// thread_local variables with initializers that need to run
   /// before any thread_local variable in this TU is odr-used.
   std::vector<llvm::Function *> CXXThreadLocalInits;
   std::vector<const VarDecl *> CXXThreadLocalInitVars;
@@ -425,14 +425,14 @@
   /// Global destructor functions and arguments that need to run on termination.
   std::vector<std::pair<llvm::WeakTrackingVH, llvm::Constant *>> CXXGlobalDtors;
 
-  /// \brief The complete set of modules that has been imported.
+  /// The complete set of modules that has been imported.
   llvm::SetVector<clang::Module *> ImportedModules;
 
-  /// \brief The set of modules for which the module initializers
+  /// The set of modules for which the module initializers
   /// have been emitted.
   llvm::SmallPtrSet<clang::Module *, 16> EmittedModuleInitializers;
 
-  /// \brief A vector of metadata strings.
+  /// A vector of metadata strings.
   SmallVector<llvm::MDNode *, 16> LinkerOptionsMetadata;
 
   /// @name Cache for Objective-C runtime types
@@ -442,7 +442,7 @@
   /// int * but is actually an Obj-C class pointer.
   llvm::WeakTrackingVH CFConstantStringClassRef;
 
-  /// \brief The type used to describe the state of a fast enumeration in
+  /// The type used to describe the state of a fast enumeration in
   /// Objective-C's for..in loop.
   QualType ObjCFastEnumerationStateType;
   
@@ -900,12 +900,12 @@
   void setAddrOfConstantCompoundLiteral(const CompoundLiteralExpr *CLE,
                                         llvm::GlobalVariable *GV);
 
-  /// \brief Returns a pointer to a global variable representing a temporary
+  /// Returns a pointer to a global variable representing a temporary
   /// with static or thread storage duration.
   ConstantAddress GetAddrOfGlobalTemporary(const MaterializeTemporaryExpr *E,
                                            const Expr *Inner);
 
-  /// \brief Retrieve the record type that describes the state of an
+  /// Retrieve the record type that describes the state of an
   /// Objective-C fast enumeration loop (for..in).
   QualType getObjCFastEnumerationStateType();
 
@@ -933,22 +933,22 @@
   /// Emit code for a single top level declaration.
   void EmitTopLevelDecl(Decl *D);
 
-  /// \brief Stored a deferred empty coverage mapping for an unused
+  /// Stored a deferred empty coverage mapping for an unused
   /// and thus uninstrumented top level declaration.
   void AddDeferredUnusedCoverageMapping(Decl *D);
 
-  /// \brief Remove the deferred empty coverage mapping as this
+  /// Remove the deferred empty coverage mapping as this
   /// declaration is actually instrumented.
   void ClearUnusedCoverageMapping(const Decl *D);
 
-  /// \brief Emit all the deferred coverage mappings
+  /// Emit all the deferred coverage mappings
   /// for the uninstrumented functions.
   void EmitDeferredUnusedCoverageMappings();
 
   /// Tell the consumer that this variable has been instantiated.
   void HandleCXXStaticMemberVarInstantiation(VarDecl *VD);
 
-  /// \brief If the declaration has internal linkage but is inside an
+  /// If the declaration has internal linkage but is inside an
   /// extern "C" linkage specification, prepare to emit an alias for it
   /// to the expected name.
   template<typename SomeDecl>
@@ -997,7 +997,7 @@
 
   llvm::Constant *getMemberPointerConstant(const UnaryOperator *e);
 
-  /// \brief Emit type info if type of an expression is a variably modified
+  /// Emit type info if type of an expression is a variably modified
   /// type. Also emit proper debug info for cast types.
   void EmitExplicitCastExprType(const ExplicitCastExpr *E,
                                 CodeGenFunction *CGF = nullptr);
@@ -1096,13 +1096,13 @@
 
   void RefreshTypeCacheForClass(const CXXRecordDecl *Class);
 
-  /// \brief Appends Opts to the "llvm.linker.options" metadata value.
+  /// Appends Opts to the "llvm.linker.options" metadata value.
   void AppendLinkerOptions(StringRef Opts);
 
-  /// \brief Appends a detect mismatch command to the linker options.
+  /// Appends a detect mismatch command to the linker options.
   void AddDetectMismatch(StringRef Name, StringRef Value);
 
-  /// \brief Appends a dependent lib to the "llvm.linker.options" metadata
+  /// Appends a dependent lib to the "llvm.linker.options" metadata
   /// value.
   void AddDependentLib(StringRef Lib);
 
@@ -1197,11 +1197,11 @@
 
   void addGlobalValReplacement(llvm::GlobalValue *GV, llvm::Constant *C);
 
-  /// \brief Emit a code for threadprivate directive.
+  /// Emit a code for threadprivate directive.
   /// \param D Threadprivate declaration.
   void EmitOMPThreadPrivateDecl(const OMPThreadPrivateDecl *D);
 
-  /// \brief Emit a code for declare reduction construct.
+  /// Emit a code for declare reduction construct.
   void EmitOMPDeclareReduction(const OMPDeclareReductionDecl *D,
                                CodeGenFunction *CGF = nullptr);
 
@@ -1237,7 +1237,7 @@
   void AddVTableTypeMetadata(llvm::GlobalVariable *VTable, CharUnits Offset,
                              const CXXRecordDecl *RD);
 
-  /// \brief Get the declaration of std::terminate for the platform.
+  /// Get the declaration of std::terminate for the platform.
   llvm::Constant *getTerminateFn();
 
   llvm::SanitizerStatReport &getSanStats();
@@ -1291,7 +1291,7 @@
   void EmitDeclContext(const DeclContext *DC);
   void EmitLinkageSpec(const LinkageSpecDecl *D);
 
-  /// \brief Emit the function that initializes C++ thread_local variables.
+  /// Emit the function that initializes C++ thread_local variables.
   void EmitCXXThreadLocalInitFunc();
 
   /// Emit the function that initializes C++ globals.
@@ -1354,16 +1354,16 @@
   /// Emit the llvm.used and llvm.compiler.used metadata.
   void emitLLVMUsed();
 
-  /// \brief Emit the link options introduced by imported modules.
+  /// Emit the link options introduced by imported modules.
   void EmitModuleLinkOptions();
 
-  /// \brief Emit aliases for internal-linkage declarations inside "C" language
+  /// Emit aliases for internal-linkage declarations inside "C" language
   /// linkage specifications, giving them the "expected" name where possible.
   void EmitStaticExternCAliases();
 
   void EmitDeclMetadata();
 
-  /// \brief Emit the Clang version as llvm.ident metadata.
+  /// Emit the Clang version as llvm.ident metadata.
   void EmitVersionIdentMetadata();
 
   /// Emits target specific Metadata for global declarations.
Index: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp
@@ -1548,7 +1548,7 @@
   LinkerOptionsMetadata.push_back(llvm::MDNode::get(getLLVMContext(), MDOpts));
 }
 
-/// \brief Add link options implied by the given module, including modules
+/// Add link options implied by the given module, including modules
 /// it depends on, using a postorder walk.
 static void addLinkOptionsPostorder(CodeGenModule &CGM, Module *Mod,
                                     SmallVectorImpl<llvm::MDNode *> &Metadata,
Index: cfe/trunk/lib/CodeGen/CodeGenPGO.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CodeGenPGO.cpp
+++ cfe/trunk/lib/CodeGen/CodeGenPGO.cpp
@@ -58,7 +58,7 @@
 };
 
 namespace {
-/// \brief Stable hasher for PGO region counters.
+/// Stable hasher for PGO region counters.
 ///
 /// PGOHash produces a stable hash of a given function's control flow.
 ///
@@ -79,7 +79,7 @@
   static const unsigned TooBig = 1u << NumBitsPerType;
 
 public:
-  /// \brief Hash values for AST nodes.
+  /// Hash values for AST nodes.
   ///
   /// Distinct values for AST nodes that have region counters attached.
   ///
@@ -978,7 +978,7 @@
   RegionCounts = ProfRecord->Counts;
 }
 
-/// \brief Calculate what to divide by to scale weights.
+/// Calculate what to divide by to scale weights.
 ///
 /// Given the maximum weight, calculate a divisor that will scale all the
 /// weights to strictly less than UINT32_MAX.
@@ -986,7 +986,7 @@
   return MaxWeight < UINT32_MAX ? 1 : MaxWeight / UINT32_MAX + 1;
 }
 
-/// \brief Scale an individual branch weight (and add 1).
+/// Scale an individual branch weight (and add 1).
 ///
 /// Scale a 64-bit weight down to 32-bits using \c Scale.
 ///
Index: cfe/trunk/lib/CodeGen/CodeGenTypes.h
===================================================================
--- cfe/trunk/lib/CodeGen/CodeGenTypes.h
+++ cfe/trunk/lib/CodeGen/CodeGenTypes.h
@@ -184,7 +184,7 @@
   /// ConvertType - Convert type T into a llvm::Type.
   llvm::Type *ConvertType(QualType T);
 
-  /// \brief Converts the GlobalDecl into an llvm::Type. This should be used
+  /// Converts the GlobalDecl into an llvm::Type. This should be used
   /// when we know the target of the function we want to convert.  This is
   /// because some functions (explicitly, those with pass_object_size
   /// parameters) may not have the same signature as their type portrays, and
@@ -225,7 +225,7 @@
   /// replace the 'opaque' type we previously made for it if applicable.
   void UpdateCompletedType(const TagDecl *TD);
 
-  /// \brief Remove stale types from the type cache when an inheritance model
+  /// Remove stale types from the type cache when an inheritance model
   /// gets assigned to a class.
   void RefreshTypeCacheForClass(const CXXRecordDecl *RD);
 
@@ -335,7 +335,7 @@
                     ArrayRef<FunctionProtoType::ExtParameterInfo> paramInfos,
                                                 RequiredArgs args);
 
-  /// \brief Compute a new LLVM record layout object for the given record.
+  /// Compute a new LLVM record layout object for the given record.
   CGRecordLayout *ComputeRecordLayout(const RecordDecl *D,
                                       llvm::StructType *Ty);
 
Index: cfe/trunk/lib/CodeGen/CoverageMappingGen.h
===================================================================
--- cfe/trunk/lib/CodeGen/CoverageMappingGen.h
+++ cfe/trunk/lib/CodeGen/CoverageMappingGen.h
@@ -31,7 +31,7 @@
 class Decl;
 class Stmt;
 
-/// \brief Stores additional source code information like skipped ranges which
+/// Stores additional source code information like skipped ranges which
 /// is required by the coverage mapping generator and is obtained from
 /// the preprocessor.
 class CoverageSourceInfo : public PPCallbacks {
@@ -46,7 +46,7 @@
 
 class CodeGenModule;
 
-/// \brief Organizes the cross-function state that is used while generating
+/// Organizes the cross-function state that is used while generating
 /// code coverage mapping data.
 class CoverageMappingModuleGen {
   CodeGenModule &CGM;
@@ -65,7 +65,7 @@
     return SourceInfo;
   }
 
-  /// \brief Add a function's coverage mapping record to the collection of the
+  /// Add a function's coverage mapping record to the collection of the
   /// function mapping records.
   void addFunctionMappingRecord(llvm::GlobalVariable *FunctionName,
                                 StringRef FunctionNameValue,
@@ -73,15 +73,15 @@
                                 const std::string &CoverageMapping,
                                 bool IsUsed = true);
 
-  /// \brief Emit the coverage mapping data for a translation unit.
+  /// Emit the coverage mapping data for a translation unit.
   void emit();
 
-  /// \brief Return the coverage mapping translation unit file id
+  /// Return the coverage mapping translation unit file id
   /// for the given file.
   unsigned getFileID(const FileEntry *File);
 };
 
-/// \brief Organizes the per-function state that is used while generating
+/// Organizes the per-function state that is used while generating
 /// code coverage mapping data.
 class CoverageMappingGen {
   CoverageMappingModuleGen &CVM;
@@ -99,12 +99,12 @@
                      llvm::DenseMap<const Stmt *, unsigned> *CounterMap)
       : CVM(CVM), SM(SM), LangOpts(LangOpts), CounterMap(CounterMap) {}
 
-  /// \brief Emit the coverage mapping data which maps the regions of
+  /// Emit the coverage mapping data which maps the regions of
   /// code to counters that will be used to find the execution
   /// counts for those regions.
   void emitCounterMapping(const Decl *D, llvm::raw_ostream &OS);
 
-  /// \brief Emit the coverage mapping data for an unused function.
+  /// Emit the coverage mapping data for an unused function.
   /// It creates mapping regions with the counter of zero.
   void emitEmptyMapping(const Decl *D, llvm::raw_ostream &OS);
 };
Index: cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
+++ cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
@@ -35,14 +35,14 @@
 
 namespace {
 
-/// \brief A region of source code that can be mapped to a counter.
+/// A region of source code that can be mapped to a counter.
 class SourceMappingRegion {
   Counter Count;
 
-  /// \brief The region's starting location.
+  /// The region's starting location.
   Optional<SourceLocation> LocStart;
 
-  /// \brief The region's ending location.
+  /// The region's ending location.
   Optional<SourceLocation> LocEnd;
 
   /// Whether this region should be emitted after its parent is emitted.
@@ -126,7 +126,7 @@
   }
 };
 
-/// \brief Provides the common functionality for the different
+/// Provides the common functionality for the different
 /// coverage mapping region builders.
 class CoverageMappingBuilder {
 public:
@@ -135,17 +135,17 @@
   const LangOptions &LangOpts;
 
 private:
-  /// \brief Map of clang's FileIDs to IDs used for coverage mapping.
+  /// Map of clang's FileIDs to IDs used for coverage mapping.
   llvm::SmallDenseMap<FileID, std::pair<unsigned, SourceLocation>, 8>
       FileIDMapping;
 
 public:
-  /// \brief The coverage mapping regions for this function
+  /// The coverage mapping regions for this function
   llvm::SmallVector<CounterMappingRegion, 32> MappingRegions;
-  /// \brief The source mapping regions for this function.
+  /// The source mapping regions for this function.
   std::vector<SourceMappingRegion> SourceRegions;
 
-  /// \brief A set of regions which can be used as a filter.
+  /// A set of regions which can be used as a filter.
   ///
   /// It is produced by emitExpansionRegions() and is used in
   /// emitSourceRegions() to suppress producing code regions if
@@ -157,7 +157,7 @@
                          const LangOptions &LangOpts)
       : CVM(CVM), SM(SM), LangOpts(LangOpts) {}
 
-  /// \brief Return the precise end location for the given token.
+  /// Return the precise end location for the given token.
   SourceLocation getPreciseTokenLocEnd(SourceLocation Loc) {
     // We avoid getLocForEndOfToken here, because it doesn't do what we want for
     // macro locations, which we just treat as expanded files.
@@ -166,14 +166,14 @@
     return Loc.getLocWithOffset(TokLen);
   }
 
-  /// \brief Return the start location of an included file or expanded macro.
+  /// Return the start location of an included file or expanded macro.
   SourceLocation getStartOfFileOrMacro(SourceLocation Loc) {
     if (Loc.isMacroID())
       return Loc.getLocWithOffset(-SM.getFileOffset(Loc));
     return SM.getLocForStartOfFile(SM.getFileID(Loc));
   }
 
-  /// \brief Return the end location of an included file or expanded macro.
+  /// Return the end location of an included file or expanded macro.
   SourceLocation getEndOfFileOrMacro(SourceLocation Loc) {
     if (Loc.isMacroID())
       return Loc.getLocWithOffset(SM.getFileIDSize(SM.getFileID(Loc)) -
@@ -181,18 +181,18 @@
     return SM.getLocForEndOfFile(SM.getFileID(Loc));
   }
 
-  /// \brief Find out where the current file is included or macro is expanded.
+  /// Find out where the current file is included or macro is expanded.
   SourceLocation getIncludeOrExpansionLoc(SourceLocation Loc) {
     return Loc.isMacroID() ? SM.getImmediateExpansionRange(Loc).getBegin()
                            : SM.getIncludeLoc(SM.getFileID(Loc));
   }
 
-  /// \brief Return true if \c Loc is a location in a built-in macro.
+  /// Return true if \c Loc is a location in a built-in macro.
   bool isInBuiltin(SourceLocation Loc) {
     return SM.getBufferName(SM.getSpellingLoc(Loc)) == "<built-in>";
   }
 
-  /// \brief Check whether \c Loc is included or expanded from \c Parent.
+  /// Check whether \c Loc is included or expanded from \c Parent.
   bool isNestedIn(SourceLocation Loc, FileID Parent) {
     do {
       Loc = getIncludeOrExpansionLoc(Loc);
@@ -202,7 +202,7 @@
     return true;
   }
 
-  /// \brief Get the start of \c S ignoring macro arguments and builtin macros.
+  /// Get the start of \c S ignoring macro arguments and builtin macros.
   SourceLocation getStart(const Stmt *S) {
     SourceLocation Loc = S->getLocStart();
     while (SM.isMacroArgExpansion(Loc) || isInBuiltin(Loc))
@@ -210,7 +210,7 @@
     return Loc;
   }
 
-  /// \brief Get the end of \c S ignoring macro arguments and builtin macros.
+  /// Get the end of \c S ignoring macro arguments and builtin macros.
   SourceLocation getEnd(const Stmt *S) {
     SourceLocation Loc = S->getLocEnd();
     while (SM.isMacroArgExpansion(Loc) || isInBuiltin(Loc))
@@ -218,7 +218,7 @@
     return getPreciseTokenLocEnd(Loc);
   }
 
-  /// \brief Find the set of files we have regions for and assign IDs
+  /// Find the set of files we have regions for and assign IDs
   ///
   /// Fills \c Mapping with the virtual file mapping needed to write out
   /// coverage and collects the necessary file information to emit source and
@@ -258,7 +258,7 @@
     }
   }
 
-  /// \brief Get the coverage mapping file ID for \c Loc.
+  /// Get the coverage mapping file ID for \c Loc.
   ///
   /// If such file id doesn't exist, return None.
   Optional<unsigned> getCoverageFileID(SourceLocation Loc) {
@@ -268,7 +268,7 @@
     return None;
   }
 
-  /// \brief Gather all the regions that were skipped by the preprocessor
+  /// Gather all the regions that were skipped by the preprocessor
   /// using the constructs like #if.
   void gatherSkippedRegions() {
     /// An array of the minimum lineStarts and the maximum lineEnds
@@ -305,7 +305,7 @@
     }
   }
 
-  /// \brief Generate the coverage counter mapping regions from collected
+  /// Generate the coverage counter mapping regions from collected
   /// source regions.
   void emitSourceRegions(const SourceRegionFilter &Filter) {
     for (const auto &Region : SourceRegions) {
@@ -350,7 +350,7 @@
     }
   }
 
-  /// \brief Generate expansion regions for each virtual file we've seen.
+  /// Generate expansion regions for each virtual file we've seen.
   SourceRegionFilter emitExpansionRegions() {
     SourceRegionFilter Filter;
     for (const auto &FM : FileIDMapping) {
@@ -380,7 +380,7 @@
   }
 };
 
-/// \brief Creates unreachable coverage regions for the functions that
+/// Creates unreachable coverage regions for the functions that
 /// are not emitted.
 struct EmptyCoverageMappingBuilder : public CoverageMappingBuilder {
   EmptyCoverageMappingBuilder(CoverageMappingModuleGen &CVM, SourceManager &SM,
@@ -414,7 +414,7 @@
     SourceRegions.emplace_back(Counter(), Start, End);
   }
 
-  /// \brief Write the mapping data to the output stream
+  /// Write the mapping data to the output stream
   void write(llvm::raw_ostream &OS) {
     SmallVector<unsigned, 16> FileIDMapping;
     gatherFileIDs(FileIDMapping);
@@ -428,15 +428,15 @@
   }
 };
 
-/// \brief A StmtVisitor that creates coverage mapping regions which map
+/// A StmtVisitor that creates coverage mapping regions which map
 /// from the source code locations to the PGO counters.
 struct CounterCoverageMappingBuilder
     : public CoverageMappingBuilder,
       public ConstStmtVisitor<CounterCoverageMappingBuilder> {
-  /// \brief The map of statements to count values.
+  /// The map of statements to count values.
   llvm::DenseMap<const Stmt *, unsigned> &CounterMap;
 
-  /// \brief A stack of currently live regions.
+  /// A stack of currently live regions.
   std::vector<SourceMappingRegion> RegionStack;
 
   /// The currently deferred region: its end location and count can be set once
@@ -445,7 +445,7 @@
 
   CounterExpressionBuilder Builder;
 
-  /// \brief A location in the most recently visited file or macro.
+  /// A location in the most recently visited file or macro.
   ///
   /// This is used to adjust the active source regions appropriately when
   /// expressions cross file or macro boundaries.
@@ -454,12 +454,12 @@
   /// Location of the last terminated region.
   Optional<std::pair<SourceLocation, size_t>> LastTerminatedRegion;
 
-  /// \brief Return a counter for the subtraction of \c RHS from \c LHS
+  /// Return a counter for the subtraction of \c RHS from \c LHS
   Counter subtractCounters(Counter LHS, Counter RHS) {
     return Builder.subtract(LHS, RHS);
   }
 
-  /// \brief Return a counter for the sum of \c LHS and \c RHS.
+  /// Return a counter for the sum of \c LHS and \c RHS.
   Counter addCounters(Counter LHS, Counter RHS) {
     return Builder.add(LHS, RHS);
   }
@@ -468,14 +468,14 @@
     return addCounters(addCounters(C1, C2), C3);
   }
 
-  /// \brief Return the region counter for the given statement.
+  /// Return the region counter for the given statement.
   ///
   /// This should only be called on statements that have a dedicated counter.
   Counter getRegionCounter(const Stmt *S) {
     return Counter::getCounter(CounterMap[S]);
   }
 
-  /// \brief Push a region onto the stack.
+  /// Push a region onto the stack.
   ///
   /// Returns the index on the stack where the region was pushed. This can be
   /// used with popRegions to exit a "scope", ending the region that was pushed.
@@ -552,7 +552,7 @@
     completeDeferred(Count, DeferredEndLoc);
   }
 
-  /// \brief Pop regions from the stack into the function's list of regions.
+  /// Pop regions from the stack into the function's list of regions.
   ///
   /// Adds all regions from \c ParentIndex to the top of the stack to the
   /// function's \c SourceRegions.
@@ -619,13 +619,13 @@
     assert(!ParentOfDeferredRegion && "Deferred region with no parent");
   }
 
-  /// \brief Return the currently active region.
+  /// Return the currently active region.
   SourceMappingRegion &getRegion() {
     assert(!RegionStack.empty() && "statement has no region");
     return RegionStack.back();
   }
 
-  /// \brief Propagate counts through the children of \c S.
+  /// Propagate counts through the children of \c S.
   Counter propagateCounts(Counter TopCount, const Stmt *S) {
     SourceLocation StartLoc = getStart(S);
     SourceLocation EndLoc = getEnd(S);
@@ -642,7 +642,7 @@
     return ExitCount;
   }
 
-  /// \brief Check whether a region with bounds \c StartLoc and \c EndLoc
+  /// Check whether a region with bounds \c StartLoc and \c EndLoc
   /// is already added to \c SourceRegions.
   bool isRegionAlreadyAdded(SourceLocation StartLoc, SourceLocation EndLoc) {
     return SourceRegions.rend() !=
@@ -653,7 +653,7 @@
                         });
   }
 
-  /// \brief Adjust the most recently visited location to \c EndLoc.
+  /// Adjust the most recently visited location to \c EndLoc.
   ///
   /// This should be used after visiting any statements in non-source order.
   void adjustForOutOfOrderTraversal(SourceLocation EndLoc) {
@@ -670,7 +670,7 @@
       MostRecentLocation = getIncludeOrExpansionLoc(MostRecentLocation);
   }
 
-  /// \brief Adjust regions and state when \c NewLoc exits a file.
+  /// Adjust regions and state when \c NewLoc exits a file.
   ///
   /// If moving from our most recently tracked location to \c NewLoc exits any
   /// files, this adjusts our current region stack and creates the file regions
@@ -737,7 +737,7 @@
     MostRecentLocation = NewLoc;
   }
 
-  /// \brief Ensure that \c S is included in the current region.
+  /// Ensure that \c S is included in the current region.
   void extendRegion(const Stmt *S) {
     SourceMappingRegion &Region = getRegion();
     SourceLocation StartLoc = getStart(S);
@@ -749,7 +749,7 @@
     completeDeferred(Region.getCounter(), StartLoc);
   }
 
-  /// \brief Mark \c S as a terminator, starting a zero region.
+  /// Mark \c S as a terminator, starting a zero region.
   void terminateRegion(const Stmt *S) {
     extendRegion(S);
     SourceMappingRegion &Region = getRegion();
@@ -794,7 +794,7 @@
     popRegions(Index);
   }
 
-  /// \brief Keep counts of breaks and continues inside loops.
+  /// Keep counts of breaks and continues inside loops.
   struct BreakContinue {
     Counter BreakCount;
     Counter ContinueCount;
@@ -808,7 +808,7 @@
       : CoverageMappingBuilder(CVM, SM, LangOpts), CounterMap(CounterMap),
         DeferredRegion(None) {}
 
-  /// \brief Write the mapping data to the output stream
+  /// Write the mapping data to the output stream
   void write(llvm::raw_ostream &OS) {
     llvm::SmallVector<unsigned, 8> VirtualFileMapping;
     gatherFileIDs(VirtualFileMapping);
Index: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
@@ -1171,7 +1171,7 @@
   return CGF.CGM.CreateRuntimeFunction(FTy, "__cxa_bad_cast");
 }
 
-/// \brief Compute the src2dst_offset hint as described in the
+/// Compute the src2dst_offset hint as described in the
 /// Itanium C++ ABI [2.9.7]
 static CharUnits computeOffsetHint(ASTContext &Context,
                                    const CXXRecordDecl *Src,
@@ -3006,7 +3006,7 @@
   Fields.push_back(VTable);
 }
 
-/// \brief Return the linkage that the type info and type info name constants
+/// Return the linkage that the type info and type info name constants
 /// should have for the given type.
 static llvm::GlobalVariable::LinkageTypes getTypeInfoLinkage(CodeGenModule &CGM,
                                                              QualType Ty) {
Index: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
+++ cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
@@ -567,7 +567,7 @@
   GetNullMemberPointerFields(const MemberPointerType *MPT,
                              llvm::SmallVectorImpl<llvm::Constant *> &fields);
 
-  /// \brief Shared code for virtual base adjustment.  Returns the offset from
+  /// Shared code for virtual base adjustment.  Returns the offset from
   /// the vbptr to the virtual base.  Optionally returns the address of the
   /// vbptr itself.
   llvm::Value *GetVBaseOffsetFromVBPtr(CodeGenFunction &CGF,
@@ -591,14 +591,14 @@
   performBaseAdjustment(CodeGenFunction &CGF, Address Value,
                         QualType SrcRecordTy);
 
-  /// \brief Performs a full virtual base adjustment.  Used to dereference
+  /// Performs a full virtual base adjustment.  Used to dereference
   /// pointers to members of virtual bases.
   llvm::Value *AdjustVirtualBase(CodeGenFunction &CGF, const Expr *E,
                                  const CXXRecordDecl *RD, Address Base,
                                  llvm::Value *VirtualBaseAdjustmentOffset,
                                  llvm::Value *VBPtrOffset /* optional */);
 
-  /// \brief Emits a full member pointer with the fields common to data and
+  /// Emits a full member pointer with the fields common to data and
   /// function member pointers.
   llvm::Constant *EmitFullMemberPointer(llvm::Constant *FirstField,
                                         bool IsMemberFunction,
@@ -609,13 +609,13 @@
   bool MemberPointerConstantIsNull(const MemberPointerType *MPT,
                                    llvm::Constant *MP);
 
-  /// \brief - Initialize all vbptrs of 'this' with RD as the complete type.
+  /// - Initialize all vbptrs of 'this' with RD as the complete type.
   void EmitVBPtrStores(CodeGenFunction &CGF, const CXXRecordDecl *RD);
 
-  /// \brief Caching wrapper around VBTableBuilder::enumerateVBTables().
+  /// Caching wrapper around VBTableBuilder::enumerateVBTables().
   const VBTableGlobals &enumerateVBTables(const CXXRecordDecl *RD);
 
-  /// \brief Generate a thunk for calling a virtual member function MD.
+  /// Generate a thunk for calling a virtual member function MD.
   llvm::Function *EmitVirtualMemPtrThunk(const CXXMethodDecl *MD,
                                          const MethodVFTableLocation &ML);
 
@@ -761,15 +761,15 @@
   typedef std::pair<const CXXRecordDecl *, CharUnits> VFTableIdTy;
   typedef llvm::DenseMap<VFTableIdTy, llvm::GlobalVariable *> VTablesMapTy;
   typedef llvm::DenseMap<VFTableIdTy, llvm::GlobalValue *> VFTablesMapTy;
-  /// \brief All the vftables that have been referenced.
+  /// All the vftables that have been referenced.
   VFTablesMapTy VFTablesMap;
   VTablesMapTy VTablesMap;
 
-  /// \brief This set holds the record decls we've deferred vtable emission for.
+  /// This set holds the record decls we've deferred vtable emission for.
   llvm::SmallPtrSet<const CXXRecordDecl *, 4> DeferredVFTables;
 
 
-  /// \brief All the vbtables which have been referenced.
+  /// All the vbtables which have been referenced.
   llvm::DenseMap<const CXXRecordDecl *, VBTableGlobals> VBTablesMap;
 
   /// Info on the global variable used to guard initialization of static locals.
@@ -3387,7 +3387,7 @@
 
 namespace {
 
-/// \brief A Helper struct that stores information about a class in a class
+/// A Helper struct that stores information about a class in a class
 /// hierarchy.  The information stored in these structs struct is used during
 /// the generation of ClassHierarchyDescriptors and BaseClassDescriptors.
 // During RTTI creation, MSRTTIClasses are stored in a contiguous array with
@@ -3414,7 +3414,7 @@
   uint32_t Flags, NumBases, OffsetInVBase;
 };
 
-/// \brief Recursively initialize the base class array.
+/// Recursively initialize the base class array.
 uint32_t MSRTTIClass::initialize(const MSRTTIClass *Parent,
                                  const CXXBaseSpecifier *Specifier) {
   Flags = HasHierarchyDescriptor;
@@ -3461,7 +3461,7 @@
   llvm_unreachable("Invalid linkage!");
 }
 
-/// \brief An ephemeral helper class for building MS RTTI types.  It caches some
+/// An ephemeral helper class for building MS RTTI types.  It caches some
 /// calls to the module and information about the most derived class in a
 /// hierarchy.
 struct MSRTTIBuilder {
@@ -3494,7 +3494,7 @@
 
 } // namespace
 
-/// \brief Recursively serializes a class hierarchy in pre-order depth first
+/// Recursively serializes a class hierarchy in pre-order depth first
 /// order.
 static void serializeClassHierarchy(SmallVectorImpl<MSRTTIClass> &Classes,
                                     const CXXRecordDecl *RD) {
@@ -3503,7 +3503,7 @@
     serializeClassHierarchy(Classes, Base.getType()->getAsCXXRecordDecl());
 }
 
-/// \brief Find ambiguity among base classes.
+/// Find ambiguity among base classes.
 static void
 detectAmbiguousBases(SmallVectorImpl<MSRTTIClass> &Classes) {
   llvm::SmallPtrSet<const CXXRecordDecl *, 8> VirtualBases;
@@ -3769,7 +3769,7 @@
                        Flags};
 }
 
-/// \brief Gets a TypeDescriptor.  Returns a llvm::Constant * rather than a
+/// Gets a TypeDescriptor.  Returns a llvm::Constant * rather than a
 /// llvm::GlobalVariable * because different type descriptors have different
 /// types, and need to be abstracted.  They are abstracting by casting the
 /// address to an Int8PtrTy.
@@ -3811,7 +3811,7 @@
   return llvm::ConstantExpr::getBitCast(Var, CGM.Int8PtrTy);
 }
 
-/// \brief Gets or a creates a Microsoft CompleteObjectLocator.
+/// Gets or a creates a Microsoft CompleteObjectLocator.
 llvm::GlobalVariable *
 MicrosoftCXXABI::getMSCompleteObjectLocator(const CXXRecordDecl *RD,
                                             const VPtrInfo &Info) {
Index: cfe/trunk/lib/CodeGen/TargetInfo.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/TargetInfo.cpp
+++ cfe/trunk/lib/CodeGen/TargetInfo.cpp
@@ -749,7 +749,7 @@
       : TargetCodeGenInfo(new WebAssemblyABIInfo(CGT)) {}
 };
 
-/// \brief Classify argument of given type \p Ty.
+/// Classify argument of given type \p Ty.
 ABIArgInfo WebAssemblyABIInfo::classifyArgumentType(QualType Ty) const {
   Ty = useFirstFieldIfTransparentUnion(Ty);
 
@@ -844,7 +844,7 @@
   return EmitVAArgInstr(CGF, VAListAddr, Ty, ABIArgInfo::getDirect());
 }
 
-/// \brief Classify argument of given type \p Ty.
+/// Classify argument of given type \p Ty.
 ABIArgInfo PNaClABIInfo::classifyArgumentType(QualType Ty) const {
   if (isAggregateTypeForABI(Ty)) {
     if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI()))
@@ -945,7 +945,7 @@
 // X86-32 ABI Implementation
 //===----------------------------------------------------------------------===//
 
-/// \brief Similar to llvm::CCState, but for Clang.
+/// Similar to llvm::CCState, but for Clang.
 struct CCState {
   CCState(unsigned CC) : CC(CC), FreeRegs(0), FreeSSERegs(0) {}
 
@@ -998,14 +998,14 @@
 
   ABIArgInfo getIndirectReturnResult(QualType Ty, CCState &State) const;
 
-  /// \brief Return the alignment to use for the given type on the stack.
+  /// Return the alignment to use for the given type on the stack.
   unsigned getTypeStackAlignInBytes(QualType Ty, unsigned Align) const;
 
   Class classify(QualType Ty) const;
   ABIArgInfo classifyReturnType(QualType RetTy, CCState &State) const;
   ABIArgInfo classifyArgumentType(QualType RetTy, CCState &State) const;
 
-  /// \brief Updates the number of available free registers, returns 
+  /// Updates the number of available free registers, returns 
   /// true if any registers were allocated.
   bool updateFreeRegs(QualType Ty, CCState &State) const;
 
@@ -1015,7 +1015,7 @@
 
   bool canExpandIndirectArgument(QualType Ty) const;
 
-  /// \brief Rewrite the function info so that all memory arguments use
+  /// Rewrite the function info so that all memory arguments use
   /// inalloca.
   void rewriteWithInAlloca(CGFunctionInfo &FI) const;
 
Index: cfe/trunk/lib/Driver/Driver.cpp
===================================================================
--- cfe/trunk/lib/Driver/Driver.cpp
+++ cfe/trunk/lib/Driver/Driver.cpp
@@ -383,7 +383,7 @@
   return DAL;
 }
 
-/// \brief Compute target triple from args.
+/// Compute target triple from args.
 ///
 /// This routine provides the logic to compute a target triple from various
 /// args passed to the driver and the default triple string.
@@ -482,7 +482,7 @@
   return Target;
 }
 
-// \brief Parse the LTO options and record the type of LTO compilation
+// Parse the LTO options and record the type of LTO compilation
 // based on which -f(no-)?lto(=.*)? option occurs last.
 void Driver::setLTOMode(const llvm::opt::ArgList &Args) {
   LTOMode = LTOK_None;
@@ -1733,7 +1733,7 @@
     PrintActions1(C, A, Ids);
 }
 
-/// \brief Check whether the given input tree contains any compilation or
+/// Check whether the given input tree contains any compilation or
 /// assembly actions.
 static bool ContainsCompileOrAssembleAction(const Action *A) {
   if (isa<CompileJobAction>(A) || isa<BackendJobAction>(A) ||
@@ -1834,7 +1834,7 @@
   }
 }
 
-/// \brief Check that the file referenced by Value exists. If it doesn't,
+/// Check that the file referenced by Value exists. If it doesn't,
 /// issue a diagnostic and return false.
 static bool DiagnoseInputExistence(const Driver &D, const DerivedArgList &Args,
                                    StringRef Value, types::ID Ty) {
@@ -2129,7 +2129,7 @@
     }
   };
 
-  /// \brief CUDA action builder. It injects device code in the host backend
+  /// CUDA action builder. It injects device code in the host backend
   /// action.
   class CudaActionBuilder final : public DeviceActionBuilder {
     /// Flags to signal if the user requested host-only or device-only
@@ -3811,7 +3811,7 @@
   return Target.isOSWindows() ? "a.exe" : "a.out";
 }
 
-/// \brief Create output filename based on ArgValue, which could either be a
+/// Create output filename based on ArgValue, which could either be a
 /// full filename, filename without extension, or a directory. If ArgValue
 /// does not provide a filename, then use BaseName, and use the extension
 /// suitable for FileType.
Index: cfe/trunk/lib/Driver/Job.cpp
===================================================================
--- cfe/trunk/lib/Driver/Job.cpp
+++ cfe/trunk/lib/Driver/Job.cpp
@@ -44,7 +44,7 @@
       InputFilenames.push_back(II.getFilename());
 }
 
-/// @brief Check if the compiler flag in question should be skipped when
+/// Check if the compiler flag in question should be skipped when
 /// emitting a reproducer. Also track how many arguments it has and if the
 /// option is some kind of include path.
 static bool skipArgs(const char *Flag, bool HaveCrashVFS, int &SkipNum,
@@ -171,7 +171,7 @@
   }
 }
 
-/// @brief Rewrite relative include-like flag paths to absolute ones.
+/// Rewrite relative include-like flag paths to absolute ones.
 static void
 rewriteIncludes(const llvm::ArrayRef<const char *> &Args, size_t Idx,
                 size_t NumArgs,
Index: cfe/trunk/lib/Driver/ToolChain.cpp
===================================================================
--- cfe/trunk/lib/Driver/ToolChain.cpp
+++ cfe/trunk/lib/Driver/ToolChain.cpp
@@ -685,7 +685,7 @@
   return GetDefaultCXXStdlibType();
 }
 
-/// \brief Utility function to add a system include directory to CC1 arguments.
+/// Utility function to add a system include directory to CC1 arguments.
 /*static*/ void ToolChain::addSystemInclude(const ArgList &DriverArgs,
                                             ArgStringList &CC1Args,
                                             const Twine &Path) {
@@ -693,7 +693,7 @@
   CC1Args.push_back(DriverArgs.MakeArgString(Path));
 }
 
-/// \brief Utility function to add a system include directory with extern "C"
+/// Utility function to add a system include directory with extern "C"
 /// semantics to CC1 arguments.
 ///
 /// Note that this should be used rarely, and only for directories that
@@ -715,7 +715,7 @@
     addExternCSystemInclude(DriverArgs, CC1Args, Path);
 }
 
-/// \brief Utility function to add a list of system include directories to CC1.
+/// Utility function to add a list of system include directories to CC1.
 /*static*/ void ToolChain::addSystemIncludes(const ArgList &DriverArgs,
                                              ArgStringList &CC1Args,
                                              ArrayRef<StringRef> Paths) {
Index: cfe/trunk/lib/Driver/ToolChains/Clang.h
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/Clang.h
+++ cfe/trunk/lib/Driver/ToolChains/Clang.h
@@ -25,7 +25,7 @@
 
 namespace tools {
 
-/// \brief Clang compiler tool.
+/// Clang compiler tool.
 class LLVM_LIBRARY_VISIBILITY Clang : public Tool {
 public:
   static const char *getBaseInputName(const llvm::opt::ArgList &Args,
@@ -111,7 +111,7 @@
                     const char *LinkingOutput) const override;
 };
 
-/// \brief Clang integrated assembler tool.
+/// Clang integrated assembler tool.
 class LLVM_LIBRARY_VISIBILITY ClangAs : public Tool {
 public:
   ClangAs(const ToolChain &TC)
Index: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp
@@ -616,7 +616,7 @@
   }
 }
 
-/// \brief Vectorize at all optimization levels greater than 1 except for -Oz.
+/// Vectorize at all optimization levels greater than 1 except for -Oz.
 /// For -Oz the loop vectorizer is disable, while the slp vectorizer is enabled.
 static bool shouldEnableVectorizerAtOLevel(const ArgList &Args, bool isSlpVec) {
   if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
@@ -838,7 +838,7 @@
   }
 }
 
-/// \brief Check whether the given input tree contains any compilation actions.
+/// Check whether the given input tree contains any compilation actions.
 static bool ContainsCompileAction(const Action *A) {
   if (isa<CompileJobAction>(A) || isa<BackendJobAction>(A))
     return true;
@@ -850,7 +850,7 @@
   return false;
 }
 
-/// \brief Check if -relax-all should be passed to the internal assembler.
+/// Check if -relax-all should be passed to the internal assembler.
 /// This is done by default when compiling non-assembler source with -O0.
 static bool UseRelaxAll(Compilation &C, const ArgList &Args) {
   bool RelaxDefault = true;
Index: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
+++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
@@ -1093,7 +1093,7 @@
     CmdArgs.push_back("-KPIC");
 }
 
-/// \brief Determine whether Objective-C automated reference counting is
+/// Determine whether Objective-C automated reference counting is
 /// enabled.
 bool tools::isObjCAutoRefCount(const ArgList &Args) {
   return Args.hasFlag(options::OPT_fobjc_arc, options::OPT_fno_objc_arc, false);
Index: cfe/trunk/lib/Driver/ToolChains/Cuda.h
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/Cuda.h
+++ cfe/trunk/lib/Driver/ToolChains/Cuda.h
@@ -49,30 +49,30 @@
   void AddCudaIncludeArgs(const llvm::opt::ArgList &DriverArgs,
                           llvm::opt::ArgStringList &CC1Args) const;
 
-  /// \brief Emit an error if Version does not support the given Arch.
+  /// Emit an error if Version does not support the given Arch.
   ///
   /// If either Version or Arch is unknown, does not emit an error.  Emits at
   /// most one error per Arch.
   void CheckCudaVersionSupportsArch(CudaArch Arch) const;
 
-  /// \brief Check whether we detected a valid Cuda install.
+  /// Check whether we detected a valid Cuda install.
   bool isValid() const { return IsValid; }
-  /// \brief Print information about the detected CUDA installation.
+  /// Print information about the detected CUDA installation.
   void print(raw_ostream &OS) const;
 
-  /// \brief Get the detected Cuda install's version.
+  /// Get the detected Cuda install's version.
   CudaVersion version() const { return Version; }
-  /// \brief Get the detected Cuda installation path.
+  /// Get the detected Cuda installation path.
   StringRef getInstallPath() const { return InstallPath; }
-  /// \brief Get the detected path to Cuda's bin directory.
+  /// Get the detected path to Cuda's bin directory.
   StringRef getBinPath() const { return BinPath; }
-  /// \brief Get the detected Cuda Include path.
+  /// Get the detected Cuda Include path.
   StringRef getIncludePath() const { return IncludePath; }
-  /// \brief Get the detected Cuda library path.
+  /// Get the detected Cuda library path.
   StringRef getLibPath() const { return LibPath; }
-  /// \brief Get the detected Cuda device library path.
+  /// Get the detected Cuda device library path.
   StringRef getLibDevicePath() const { return LibDevicePath; }
-  /// \brief Get libdevice file for given architecture
+  /// Get libdevice file for given architecture
   std::string getLibDeviceFile(StringRef Gpu) const {
     return LibDeviceMap.lookup(Gpu);
   }
Index: cfe/trunk/lib/Driver/ToolChains/Darwin.cpp
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/Darwin.cpp
+++ cfe/trunk/lib/Driver/ToolChains/Darwin.cpp
@@ -175,7 +175,7 @@
   return false;
 }
 
-/// \brief Pass -no_deduplicate to ld64 under certain conditions:
+/// Pass -no_deduplicate to ld64 under certain conditions:
 ///
 /// - Either -O0 or -O1 is explicitly specified
 /// - No -O option is specified *and* this is a compile+link (implicit -O0)
@@ -409,7 +409,7 @@
   Args.AddLastArg(CmdArgs, options::OPT_Mach);
 }
 
-/// \brief Determine whether we are linking the ObjC runtime.
+/// Determine whether we are linking the ObjC runtime.
 static bool isObjCRuntimeLinked(const ArgList &Args) {
   if (isObjCAutoRefCount(Args)) {
     Args.ClaimAllArgs(options::OPT_fobjc_link_runtime);
Index: cfe/trunk/lib/Driver/ToolChains/Gnu.h
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/Gnu.h
+++ cfe/trunk/lib/Driver/ToolChains/Gnu.h
@@ -36,7 +36,7 @@
 
 namespace tools {
 
-/// \brief Base class for all GNU tools that provide the same behavior when
+/// Base class for all GNU tools that provide the same behavior when
 /// it comes to response files support
 class LLVM_LIBRARY_VISIBILITY GnuTool : public Tool {
   virtual void anchor();
@@ -139,7 +139,7 @@
 /// command line options.
 class LLVM_LIBRARY_VISIBILITY Generic_GCC : public ToolChain {
 public:
-  /// \brief Struct to store and manipulate GCC versions.
+  /// Struct to store and manipulate GCC versions.
   ///
   /// We rely on assumptions about the form and structure of GCC version
   /// numbers: they consist of at most three '.'-separated components, and each
@@ -155,16 +155,16 @@
   /// in the way that (for example) Debian's version format does. If that ever
   /// becomes necessary, it can be added.
   struct GCCVersion {
-    /// \brief The unparsed text of the version.
+    /// The unparsed text of the version.
     std::string Text;
 
-    /// \brief The parsed major, minor, and patch numbers.
+    /// The parsed major, minor, and patch numbers.
     int Major, Minor, Patch;
 
-    /// \brief The text of the parsed major, and major+minor versions.
+    /// The text of the parsed major, and major+minor versions.
     std::string MajorStr, MinorStr;
 
-    /// \brief Any textual suffix on the patch number.
+    /// Any textual suffix on the patch number.
     std::string PatchSuffix;
 
     static GCCVersion Parse(StringRef VersionText);
@@ -178,7 +178,7 @@
     bool operator>=(const GCCVersion &RHS) const { return !(*this < RHS); }
   };
 
-  /// \brief This is a class to find a viable GCC installation for Clang to
+  /// This is a class to find a viable GCC installation for Clang to
   /// use.
   ///
   /// This class tries to find a GCC installation on the system, and report
@@ -213,32 +213,32 @@
     void init(const llvm::Triple &TargetTriple, const llvm::opt::ArgList &Args,
               ArrayRef<std::string> ExtraTripleAliases = None);
 
-    /// \brief Check whether we detected a valid GCC install.
+    /// Check whether we detected a valid GCC install.
     bool isValid() const { return IsValid; }
 
-    /// \brief Get the GCC triple for the detected install.
+    /// Get the GCC triple for the detected install.
     const llvm::Triple &getTriple() const { return GCCTriple; }
 
-    /// \brief Get the detected GCC installation path.
+    /// Get the detected GCC installation path.
     StringRef getInstallPath() const { return GCCInstallPath; }
 
-    /// \brief Get the detected GCC parent lib path.
+    /// Get the detected GCC parent lib path.
     StringRef getParentLibPath() const { return GCCParentLibPath; }
 
-    /// \brief Get the detected Multilib
+    /// Get the detected Multilib
     const Multilib &getMultilib() const { return SelectedMultilib; }
 
-    /// \brief Get the whole MultilibSet
+    /// Get the whole MultilibSet
     const MultilibSet &getMultilibs() const { return Multilibs; }
 
     /// Get the biarch sibling multilib (if it exists).
     /// \return true iff such a sibling exists
     bool getBiarchSibling(Multilib &M) const;
 
-    /// \brief Get the detected GCC version string.
+    /// Get the detected GCC version string.
     const GCCVersion &getVersion() const { return Version; }
 
-    /// \brief Print information about the detected GCC installation.
+    /// Print information about the detected GCC installation.
     void print(raw_ostream &OS) const;
 
   private:
@@ -304,10 +304,10 @@
   /// \name ToolChain Implementation Helper Functions
   /// @{
 
-  /// \brief Check whether the target triple's architecture is 64-bits.
+  /// Check whether the target triple's architecture is 64-bits.
   bool isTarget64Bit() const { return getTriple().isArch64Bit(); }
 
-  /// \brief Check whether the target triple's architecture is 32-bits.
+  /// Check whether the target triple's architecture is 32-bits.
   bool isTarget32Bit() const { return getTriple().isArch32Bit(); }
 
   // FIXME: This should be final, but the CrossWindows toolchain does weird
Index: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
+++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
@@ -1545,7 +1545,7 @@
 /// all subcommands; this relies on gcc translating the majority of
 /// command line options.
 
-/// \brief Less-than for GCCVersion, implementing a Strict Weak Ordering.
+/// Less-than for GCCVersion, implementing a Strict Weak Ordering.
 bool Generic_GCC::GCCVersion::isOlderThan(int RHSMajor, int RHSMinor,
                                           int RHSPatch,
                                           StringRef RHSPatchSuffix) const {
@@ -1579,7 +1579,7 @@
   return false;
 }
 
-/// \brief Parse a GCCVersion object out of a string of text.
+/// Parse a GCCVersion object out of a string of text.
 ///
 /// This is the primary means of forming GCCVersion objects.
 /*static*/
@@ -1637,7 +1637,7 @@
   return GCC_INSTALL_PREFIX;
 }
 
-/// \brief Initialize a GCCInstallationDetector from the driver.
+/// Initialize a GCCInstallationDetector from the driver.
 ///
 /// This performs all of the autodetection and sets up the various paths.
 /// Once constructed, a GCCInstallationDetector is essentially immutable.
@@ -2461,7 +2461,7 @@
   // FIXME: If we have a valid GCCInstallation, use it.
 }
 
-/// \brief Helper to add the variant paths of a libstdc++ installation.
+/// Helper to add the variant paths of a libstdc++ installation.
 bool Generic_GCC::addLibStdCXXIncludePaths(
     Twine Base, Twine Suffix, StringRef GCCTriple, StringRef GCCMultiarchTriple,
     StringRef TargetMultiarchTriple, Twine IncludeSuffix,
Index: cfe/trunk/lib/Driver/ToolChains/Linux.cpp
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/Linux.cpp
+++ cfe/trunk/lib/Driver/ToolChains/Linux.cpp
@@ -32,7 +32,7 @@
 
 using tools::addPathIfExists;
 
-/// \brief Get our best guess at the multiarch triple for a target.
+/// Get our best guess at the multiarch triple for a target.
 ///
 /// Debian-based systems are starting to use a multiarch setup where they use
 /// a target-triple directory in the library and header search paths.
Index: cfe/trunk/lib/Driver/ToolChains/MSVC.h
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/MSVC.h
+++ cfe/trunk/lib/Driver/ToolChains/MSVC.h
@@ -110,7 +110,7 @@
                           llvm::opt::ArgStringList &CC1Args) const override;
 
   bool getWindowsSDKLibraryPath(std::string &path) const;
-  /// \brief Check if Universal CRT should be used if available
+  /// Check if Universal CRT should be used if available
   bool getUniversalCRTLibraryPath(std::string &path) const;
   bool useUniversalCRT() const;
   VersionTuple
Index: cfe/trunk/lib/Driver/ToolChains/MSVC.cpp
===================================================================
--- cfe/trunk/lib/Driver/ToolChains/MSVC.cpp
+++ cfe/trunk/lib/Driver/ToolChains/MSVC.cpp
@@ -868,7 +868,7 @@
 }
 #endif
 
-/// \brief Read registry string.
+/// Read registry string.
 /// This also supports a means to look for high-versioned keys by use
 /// of a $VERSION placeholder in the key path.
 /// $VERSION in the key path is a placeholder for the version number,
@@ -991,7 +991,7 @@
   return !SDKVersion.empty();
 }
 
-/// \brief Get Windows SDK installation directory.
+/// Get Windows SDK installation directory.
 static bool getWindowsSDKDir(std::string &Path, int &Major,
                              std::string &WindowsSDKIncludeVersion,
                              std::string &WindowsSDKLibVersion) {
Index: cfe/trunk/lib/Edit/EditedSource.cpp
===================================================================
--- cfe/trunk/lib/Edit/EditedSource.cpp
+++ cfe/trunk/lib/Edit/EditedSource.cpp
@@ -311,7 +311,7 @@
   return true;
 }
 
-// \brief Returns true if it is ok to make the two given characters adjacent.
+// Returns true if it is ok to make the two given characters adjacent.
 static bool canBeJoined(char left, char right, const LangOptions &LangOpts) {
   // FIXME: Should use TokenConcatenation to make sure we don't allow stuff like
   // making two '<' adjacent.
@@ -319,7 +319,7 @@
            Lexer::isIdentifierBodyChar(right, LangOpts));
 }
 
-/// \brief Returns true if it is ok to eliminate the trailing whitespace between
+/// Returns true if it is ok to eliminate the trailing whitespace between
 /// the given characters.
 static bool canRemoveWhitespace(char left, char beforeWSpace, char right,
                                 const LangOptions &LangOpts) {
@@ -332,7 +332,7 @@
   return true;
 }
 
-/// \brief Check the range that we are going to remove and:
+/// Check the range that we are going to remove and:
 /// -Remove any trailing whitespace if possible.
 /// -Insert a space if removing the range is going to mess up the source tokens.
 static void adjustRemoval(const SourceManager &SM, const LangOptions &LangOpts,
Index: cfe/trunk/lib/Edit/RewriteObjCFoundationAPI.cpp
===================================================================
--- cfe/trunk/lib/Edit/RewriteObjCFoundationAPI.cpp
+++ cfe/trunk/lib/Edit/RewriteObjCFoundationAPI.cpp
@@ -95,7 +95,7 @@
 // rewriteToObjCSubscriptSyntax.
 //===----------------------------------------------------------------------===//
 
-/// \brief Check for classes that accept 'objectForKey:' (or the other selectors
+/// Check for classes that accept 'objectForKey:' (or the other selectors
 /// that the migrator handles) but return their instances as 'id', resulting
 /// in the compiler resolving 'objectForKey:' as the method from NSDictionary.
 ///
@@ -355,7 +355,7 @@
   return false;
 }
 
-/// \brief Returns true if the immediate message arguments of \c Msg should not
+/// Returns true if the immediate message arguments of \c Msg should not
 /// be rewritten because it will interfere with the rewrite of the parent
 /// message expression. e.g.
 /// \code
@@ -372,7 +372,7 @@
 // rewriteToArrayLiteral.
 //===----------------------------------------------------------------------===//
 
-/// \brief Adds an explicit cast to 'id' if the type is not objc object.
+/// Adds an explicit cast to 'id' if the type is not objc object.
 static void objectifyExpr(const Expr *E, Commit &commit);
 
 static bool rewriteToArrayLiteral(const ObjCMessageExpr *Msg,
@@ -434,7 +434,7 @@
 // rewriteToDictionaryLiteral.
 //===----------------------------------------------------------------------===//
 
-/// \brief If \c Msg is an NSArray creation message or literal, this gets the
+/// If \c Msg is an NSArray creation message or literal, this gets the
 /// objects that were used to create it.
 /// \returns true if it is an NSArray and we got objects, or false otherwise.
 static bool getNSArrayObjects(const Expr *E, const NSAPI &NS,
Index: cfe/trunk/lib/Format/AffectedRangeManager.h
===================================================================
--- cfe/trunk/lib/Format/AffectedRangeManager.h
+++ cfe/trunk/lib/Format/AffectedRangeManager.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief AffectedRangeManager class manages affected ranges in the code.
+/// AffectedRangeManager class manages affected ranges in the code.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Format/AffectedRangeManager.cpp
===================================================================
--- cfe/trunk/lib/Format/AffectedRangeManager.cpp
+++ cfe/trunk/lib/Format/AffectedRangeManager.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements AffectRangeManager class.
+/// This file implements AffectRangeManager class.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Format/BreakableToken.h
===================================================================
--- cfe/trunk/lib/Format/BreakableToken.h
+++ cfe/trunk/lib/Format/BreakableToken.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Declares BreakableToken, BreakableStringLiteral, BreakableComment,
+/// Declares BreakableToken, BreakableStringLiteral, BreakableComment,
 /// BreakableBlockComment and BreakableLineCommentSection classes, that contain
 /// token type-specific logic to break long lines in tokens and reflow content
 /// between tokens.
@@ -27,13 +27,13 @@
 namespace clang {
 namespace format {
 
-/// \brief Checks if \p Token switches formatting, like /* clang-format off */.
+/// Checks if \p Token switches formatting, like /* clang-format off */.
 /// \p Token must be a comment.
 bool switchesFormatting(const FormatToken &Token);
 
 struct FormatStyle;
 
-/// \brief Base class for tokens / ranges of tokens that can allow breaking
+/// Base class for tokens / ranges of tokens that can allow breaking
 /// within the tokens - for example, to avoid whitespace beyond the column
 /// limit, or to reflow text.
 ///
@@ -88,15 +88,15 @@
 ///
 class BreakableToken {
 public:
-  /// \brief Contains starting character index and length of split.
+  /// Contains starting character index and length of split.
   typedef std::pair<StringRef::size_type, unsigned> Split;
 
   virtual ~BreakableToken() {}
 
-  /// \brief Returns the number of lines in this token in the original code.
+  /// Returns the number of lines in this token in the original code.
   virtual unsigned getLineCount() const = 0;
 
-  /// \brief Returns the number of columns required to format the text in the
+  /// Returns the number of columns required to format the text in the
   /// byte range [\p Offset, \p Offset \c + \p Length).
   ///
   /// \p Offset is the byte offset from the start of the content of the line
@@ -108,7 +108,7 @@
                                   StringRef::size_type Length,
                                   unsigned StartColumn) const = 0;
 
-  /// \brief Returns the number of columns required to format the text following
+  /// Returns the number of columns required to format the text following
   /// the byte \p Offset in the line \p LineIndex, including potentially
   /// unbreakable sequences of tokens following after the end of the token.
   ///
@@ -125,7 +125,7 @@
     return getRangeLength(LineIndex, Offset, StringRef::npos, StartColumn);
   }
 
-  /// \brief Returns the column at which content in line \p LineIndex starts,
+  /// Returns the column at which content in line \p LineIndex starts,
   /// assuming no reflow.
   ///
   /// If \p Break is true, returns the column at which the line should start
@@ -135,7 +135,7 @@
   virtual unsigned getContentStartColumn(unsigned LineIndex,
                                          bool Break) const = 0;
 
-  /// \brief Returns a range (offset, length) at which to break the line at
+  /// Returns a range (offset, length) at which to break the line at
   /// \p LineIndex, if previously broken at \p TailOffset. If possible, do not
   /// violate \p ColumnLimit, assuming the text starting at \p TailOffset in
   /// the token is formatted starting at ContentStartColumn in the reformatted
@@ -144,27 +144,27 @@
                          unsigned ColumnLimit, unsigned ContentStartColumn,
                          llvm::Regex &CommentPragmasRegex) const = 0;
 
-  /// \brief Emits the previously retrieved \p Split via \p Whitespaces.
+  /// Emits the previously retrieved \p Split via \p Whitespaces.
   virtual void insertBreak(unsigned LineIndex, unsigned TailOffset, Split Split,
                            WhitespaceManager &Whitespaces) const = 0;
 
-  /// \brief Returns the number of columns needed to format
+  /// Returns the number of columns needed to format
   /// \p RemainingTokenColumns, assuming that Split is within the range measured
   /// by \p RemainingTokenColumns, and that the whitespace in Split is reduced
   /// to a single space.
   unsigned getLengthAfterCompression(unsigned RemainingTokenColumns,
                                      Split Split) const;
 
-  /// \brief Replaces the whitespace range described by \p Split with a single
+  /// Replaces the whitespace range described by \p Split with a single
   /// space.
   virtual void compressWhitespace(unsigned LineIndex, unsigned TailOffset,
                                   Split Split,
                                   WhitespaceManager &Whitespaces) const = 0;
 
-  /// \brief Returns whether the token supports reflowing text.
+  /// Returns whether the token supports reflowing text.
   virtual bool supportsReflow() const { return false; }
 
-  /// \brief Returns a whitespace range (offset, length) of the content at \p
+  /// Returns a whitespace range (offset, length) of the content at \p
   /// LineIndex such that the content of that line is reflown to the end of the
   /// previous one.
   ///
@@ -180,21 +180,21 @@
     return Split(StringRef::npos, 0);
   }
 
-  /// \brief Reflows the current line into the end of the previous one.
+  /// Reflows the current line into the end of the previous one.
   virtual void reflow(unsigned LineIndex,
                       WhitespaceManager &Whitespaces) const {}
 
-  /// \brief Returns whether there will be a line break at the start of the
+  /// Returns whether there will be a line break at the start of the
   /// token.
   virtual bool introducesBreakBeforeToken() const {
     return false;
   }
 
-  /// \brief Replaces the whitespace between \p LineIndex-1 and \p LineIndex.
+  /// Replaces the whitespace between \p LineIndex-1 and \p LineIndex.
   virtual void adaptStartOfLine(unsigned LineIndex,
                                 WhitespaceManager &Whitespaces) const {}
 
-  /// \brief Returns a whitespace range (offset, length) of the content at
+  /// Returns a whitespace range (offset, length) of the content at
   /// the last line that needs to be reformatted after the last line has been
   /// reformatted.
   ///
@@ -204,7 +204,7 @@
     return Split(StringRef::npos, 0);
   }
 
-  /// \brief Replaces the whitespace from \p SplitAfterLastLine on the last line
+  /// Replaces the whitespace from \p SplitAfterLastLine on the last line
   /// after the last line has been formatted by performing a reformatting.
   void replaceWhitespaceAfterLastLine(unsigned TailOffset,
                                       Split SplitAfterLastLine,
@@ -213,7 +213,7 @@
                 Whitespaces);
   }
 
-  /// \brief Updates the next token of \p State to the next token after this
+  /// Updates the next token of \p State to the next token after this
   /// one. This can be used when this token manages a set of underlying tokens
   /// as a unit and is responsible for the formatting of the them.
   virtual void updateNextToken(LineState &State) const {}
@@ -232,7 +232,7 @@
 
 class BreakableStringLiteral : public BreakableToken {
 public:
-  /// \brief Creates a breakable token for a single line string literal.
+  /// Creates a breakable token for a single line string literal.
   ///
   /// \p StartColumn specifies the column in which the token will start
   /// after formatting.
@@ -272,7 +272,7 @@
 
 class BreakableComment : public BreakableToken {
 protected:
-  /// \brief Creates a breakable token for a comment.
+  /// Creates a breakable token for a comment.
   ///
   /// \p StartColumn specifies the column in which the comment will start after
   /// formatting.
@@ -453,7 +453,7 @@
 
   SmallVector<unsigned, 16> OriginalContentColumn;
 
-  /// \brief The token to which the last line of this breakable token belongs
+  /// The token to which the last line of this breakable token belongs
   /// to; nullptr if that token is the initial token.
   ///
   /// The distinction is because if the token of the last line of this breakable
Index: cfe/trunk/lib/Format/BreakableToken.cpp
===================================================================
--- cfe/trunk/lib/Format/BreakableToken.cpp
+++ cfe/trunk/lib/Format/BreakableToken.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Contains implementation of BreakableToken class and classes derived
+/// Contains implementation of BreakableToken class and classes derived
 /// from it.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/ContinuationIndenter.h
===================================================================
--- cfe/trunk/lib/Format/ContinuationIndenter.h
+++ cfe/trunk/lib/Format/ContinuationIndenter.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements an indenter that manages the indentation of
+/// This file implements an indenter that manages the indentation of
 /// continuations.
 ///
 //===----------------------------------------------------------------------===//
@@ -50,7 +50,7 @@
 
 class ContinuationIndenter {
 public:
-  /// \brief Constructs a \c ContinuationIndenter to format \p Line starting in
+  /// Constructs a \c ContinuationIndenter to format \p Line starting in
   /// column \p FirstIndent.
   ContinuationIndenter(const FormatStyle &Style,
                        const AdditionalKeywords &Keywords,
@@ -59,7 +59,7 @@
                        encoding::Encoding Encoding,
                        bool BinPackInconclusiveFunctions);
 
-  /// \brief Get the initial state, i.e. the state after placing \p Line's
+  /// Get the initial state, i.e. the state after placing \p Line's
   /// first token at \p FirstIndent. When reformatting a fragment of code, as in
   /// the case of formatting inside raw string literals, \p FirstStartColumn is
   /// the column at which the state of the parent formatter is.
@@ -68,13 +68,13 @@
 
   // FIXME: canBreak and mustBreak aren't strictly indentation-related. Find a
   // better home.
-  /// \brief Returns \c true, if a line break after \p State is allowed.
+  /// Returns \c true, if a line break after \p State is allowed.
   bool canBreak(const LineState &State);
 
-  /// \brief Returns \c true, if a line break after \p State is mandatory.
+  /// Returns \c true, if a line break after \p State is mandatory.
   bool mustBreak(const LineState &State);
 
-  /// \brief Appends the next token to \p State and updates information
+  /// Appends the next token to \p State and updates information
   /// necessary for indentation.
   ///
   /// Puts the token on the current line if \p Newline is \c false and adds a
@@ -85,28 +85,28 @@
   unsigned addTokenToState(LineState &State, bool Newline, bool DryRun,
                            unsigned ExtraSpaces = 0);
 
-  /// \brief Get the column limit for this line. This is the style's column
+  /// Get the column limit for this line. This is the style's column
   /// limit, potentially reduced for preprocessor definitions.
   unsigned getColumnLimit(const LineState &State) const;
 
 private:
-  /// \brief Mark the next token as consumed in \p State and modify its stacks
+  /// Mark the next token as consumed in \p State and modify its stacks
   /// accordingly.
   unsigned moveStateToNextToken(LineState &State, bool DryRun, bool Newline);
 
-  /// \brief Update 'State' according to the next token's fake left parentheses.
+  /// Update 'State' according to the next token's fake left parentheses.
   void moveStatePastFakeLParens(LineState &State, bool Newline);
-  /// \brief Update 'State' according to the next token's fake r_parens.
+  /// Update 'State' according to the next token's fake r_parens.
   void moveStatePastFakeRParens(LineState &State);
 
-  /// \brief Update 'State' according to the next token being one of "(<{[".
+  /// Update 'State' according to the next token being one of "(<{[".
   void moveStatePastScopeOpener(LineState &State, bool Newline);
-  /// \brief Update 'State' according to the next token being one of ")>}]".
+  /// Update 'State' according to the next token being one of ")>}]".
   void moveStatePastScopeCloser(LineState &State);
-  /// \brief Update 'State' with the next token opening a nested block.
+  /// Update 'State' with the next token opening a nested block.
   void moveStateToNewBlock(LineState &State);
 
-  /// \brief Reformats a raw string literal.
+  /// Reformats a raw string literal.
   /// 
   /// \returns An extra penalty induced by reformatting the token.
   unsigned reformatRawStringLiteral(const FormatToken &Current,
@@ -114,17 +114,17 @@
                                     const FormatStyle &RawStringStyle,
                                     bool DryRun);
 
-  /// \brief If the current token is at the end of the current line, handle
+  /// If the current token is at the end of the current line, handle
   /// the transition to the next line.
   unsigned handleEndOfLine(const FormatToken &Current, LineState &State,
                            bool DryRun, bool AllowBreak);
 
-  /// \brief If \p Current is a raw string that is configured to be reformatted,
+  /// If \p Current is a raw string that is configured to be reformatted,
   /// return the style to be used.
   llvm::Optional<FormatStyle> getRawStringStyle(const FormatToken &Current,
                                                 const LineState &State);
 
-  /// \brief If the current token sticks out over the end of the line, break
+  /// If the current token sticks out over the end of the line, break
   /// it if possible.
   ///
   /// \returns A pair (penalty, exceeded), where penalty is the extra penalty
@@ -147,13 +147,13 @@
                                                  bool AllowBreak, bool DryRun,
                                                  bool Strict);
 
-  /// \brief Returns the \c BreakableToken starting at \p Current, or nullptr
+  /// Returns the \c BreakableToken starting at \p Current, or nullptr
   /// if the current token cannot be broken.
   std::unique_ptr<BreakableToken>
   createBreakableToken(const FormatToken &Current, LineState &State,
                        bool AllowBreak);
 
-  /// \brief Appends the next token to \p State and updates information
+  /// Appends the next token to \p State and updates information
   /// necessary for indentation.
   ///
   /// Puts the token on the current line.
@@ -163,7 +163,7 @@
   void addTokenOnCurrentLine(LineState &State, bool DryRun,
                              unsigned ExtraSpaces);
 
-  /// \brief Appends the next token to \p State and updates information
+  /// Appends the next token to \p State and updates information
   /// necessary for indentation.
   ///
   /// Adds a line break and necessary indentation.
@@ -172,17 +172,17 @@
   /// \c Replacement.
   unsigned addTokenOnNewLine(LineState &State, bool DryRun);
 
-  /// \brief Calculate the new column for a line wrap before the next token.
+  /// Calculate the new column for a line wrap before the next token.
   unsigned getNewLineColumn(const LineState &State);
 
-  /// \brief Adds a multiline token to the \p State.
+  /// Adds a multiline token to the \p State.
   ///
   /// \returns Extra penalty for the first line of the literal: last line is
   /// handled in \c addNextStateToQueue, and the penalty for other lines doesn't
   /// matter, as we don't change them.
   unsigned addMultilineToken(const FormatToken &Current, LineState &State);
 
-  /// \brief Returns \c true if the next token starts a multiline string
+  /// Returns \c true if the next token starts a multiline string
   /// literal.
   ///
   /// This includes implicitly concatenated strings, strings that will be broken
@@ -211,115 +211,115 @@
         HasMultipleNestedBlocks(false), NestedBlockInlined(false),
         IsInsideObjCArrayLiteral(false) {}
 
-  /// \brief The position to which a specific parenthesis level needs to be
+  /// The position to which a specific parenthesis level needs to be
   /// indented.
   unsigned Indent;
 
-  /// \brief The position of the last space on each level.
+  /// The position of the last space on each level.
   ///
   /// Used e.g. to break like:
   /// functionCall(Parameter, otherCall(
   ///                             OtherParameter));
   unsigned LastSpace;
 
-  /// \brief If a block relative to this parenthesis level gets wrapped, indent
+  /// If a block relative to this parenthesis level gets wrapped, indent
   /// it this much.
   unsigned NestedBlockIndent;
 
-  /// \brief The position the first "<<" operator encountered on each level.
+  /// The position the first "<<" operator encountered on each level.
   ///
   /// Used to align "<<" operators. 0 if no such operator has been encountered
   /// on a level.
   unsigned FirstLessLess = 0;
 
-  /// \brief The column of a \c ? in a conditional expression;
+  /// The column of a \c ? in a conditional expression;
   unsigned QuestionColumn = 0;
 
-  /// \brief The position of the colon in an ObjC method declaration/call.
+  /// The position of the colon in an ObjC method declaration/call.
   unsigned ColonPos = 0;
 
-  /// \brief The start of the most recent function in a builder-type call.
+  /// The start of the most recent function in a builder-type call.
   unsigned StartOfFunctionCall = 0;
 
-  /// \brief Contains the start of array subscript expressions, so that they
+  /// Contains the start of array subscript expressions, so that they
   /// can be aligned.
   unsigned StartOfArraySubscripts = 0;
 
-  /// \brief If a nested name specifier was broken over multiple lines, this
+  /// If a nested name specifier was broken over multiple lines, this
   /// contains the start column of the second line. Otherwise 0.
   unsigned NestedNameSpecifierContinuation = 0;
 
-  /// \brief If a call expression was broken over multiple lines, this
+  /// If a call expression was broken over multiple lines, this
   /// contains the start column of the second line. Otherwise 0.
   unsigned CallContinuation = 0;
 
-  /// \brief The column of the first variable name in a variable declaration.
+  /// The column of the first variable name in a variable declaration.
   ///
   /// Used to align further variables if necessary.
   unsigned VariablePos = 0;
 
-  /// \brief Whether a newline needs to be inserted before the block's closing
+  /// Whether a newline needs to be inserted before the block's closing
   /// brace.
   ///
   /// We only want to insert a newline before the closing brace if there also
   /// was a newline after the beginning left brace.
   bool BreakBeforeClosingBrace : 1;
 
-  /// \brief Avoid bin packing, i.e. multiple parameters/elements on multiple
+  /// Avoid bin packing, i.e. multiple parameters/elements on multiple
   /// lines, in this context.
   bool AvoidBinPacking : 1;
 
-  /// \brief Break after the next comma (or all the commas in this context if
+  /// Break after the next comma (or all the commas in this context if
   /// \c AvoidBinPacking is \c true).
   bool BreakBeforeParameter : 1;
 
-  /// \brief Line breaking in this context would break a formatting rule.
+  /// Line breaking in this context would break a formatting rule.
   bool NoLineBreak : 1;
 
-  /// \brief Same as \c NoLineBreak, but is restricted until the end of the
+  /// Same as \c NoLineBreak, but is restricted until the end of the
   /// operand (including the next ",").
   bool NoLineBreakInOperand : 1;
 
-  /// \brief True if the last binary operator on this level was wrapped to the
+  /// True if the last binary operator on this level was wrapped to the
   /// next line.
   bool LastOperatorWrapped : 1;
 
-  /// \brief \c true if this \c ParenState already contains a line-break.
+  /// \c true if this \c ParenState already contains a line-break.
   ///
   /// The first line break in a certain \c ParenState causes extra penalty so
   /// that clang-format prefers similar breaks, i.e. breaks in the same
   /// parenthesis.
   bool ContainsLineBreak : 1;
 
-  /// \brief \c true if this \c ParenState contains multiple segments of a
+  /// \c true if this \c ParenState contains multiple segments of a
   /// builder-type call on one line.
   bool ContainsUnwrappedBuilder : 1;
 
-  /// \brief \c true if the colons of the curren ObjC method expression should
+  /// \c true if the colons of the curren ObjC method expression should
   /// be aligned.
   ///
   /// Not considered for memoization as it will always have the same value at
   /// the same token.
   bool AlignColons : 1;
 
-  /// \brief \c true if at least one selector name was found in the current
+  /// \c true if at least one selector name was found in the current
   /// ObjC method expression.
   ///
   /// Not considered for memoization as it will always have the same value at
   /// the same token.
   bool ObjCSelectorNameFound : 1;
 
-  /// \brief \c true if there are multiple nested blocks inside these parens.
+  /// \c true if there are multiple nested blocks inside these parens.
   ///
   /// Not considered for memoization as it will always have the same value at
   /// the same token.
   bool HasMultipleNestedBlocks : 1;
 
-  /// \brief The start of a nested block (e.g. lambda introducer in C++ or
+  /// The start of a nested block (e.g. lambda introducer in C++ or
   /// "function" in JavaScript) is not wrapped to a new line.
   bool NestedBlockInlined : 1;
 
-  /// \brief \c true if the current \c ParenState represents an Objective-C
+  /// \c true if the current \c ParenState represents an Objective-C
   /// array literal.
   bool IsInsideObjCArrayLiteral : 1;
 
@@ -364,37 +364,37 @@
   }
 };
 
-/// \brief The current state when indenting a unwrapped line.
+/// The current state when indenting a unwrapped line.
 ///
 /// As the indenting tries different combinations this is copied by value.
 struct LineState {
-  /// \brief The number of used columns in the current line.
+  /// The number of used columns in the current line.
   unsigned Column;
 
-  /// \brief The token that needs to be next formatted.
+  /// The token that needs to be next formatted.
   FormatToken *NextToken;
 
-  /// \brief \c true if this line contains a continued for-loop section.
+  /// \c true if this line contains a continued for-loop section.
   bool LineContainsContinuedForLoopSection;
 
-  /// \brief \c true if \p NextToken should not continue this line.
+  /// \c true if \p NextToken should not continue this line.
   bool NoContinuation;
 
-  /// \brief The \c NestingLevel at the start of this line.
+  /// The \c NestingLevel at the start of this line.
   unsigned StartOfLineLevel;
 
-  /// \brief The lowest \c NestingLevel on the current line.
+  /// The lowest \c NestingLevel on the current line.
   unsigned LowestLevelOnLine;
 
-  /// \brief The start column of the string literal, if we're in a string
+  /// The start column of the string literal, if we're in a string
   /// literal sequence, 0 otherwise.
   unsigned StartOfStringLiteral;
 
-  /// \brief A stack keeping track of properties applying to parenthesis
+  /// A stack keeping track of properties applying to parenthesis
   /// levels.
   std::vector<ParenState> Stack;
 
-  /// \brief Ignore the stack of \c ParenStates for state comparison.
+  /// Ignore the stack of \c ParenStates for state comparison.
   ///
   /// In long and deeply nested unwrapped lines, the current algorithm can
   /// be insufficient for finding the best formatting with a reasonable amount
@@ -409,15 +409,15 @@
   /// FIXME: Come up with a better algorithm instead.
   bool IgnoreStackForComparison;
 
-  /// \brief The indent of the first token.
+  /// The indent of the first token.
   unsigned FirstIndent;
 
-  /// \brief The line that is being formatted.
+  /// The line that is being formatted.
   ///
   /// Does not need to be considered for memoization because it doesn't change.
   const AnnotatedLine *Line;
 
-  /// \brief Comparison operator to be able to used \c LineState in \c map.
+  /// Comparison operator to be able to used \c LineState in \c map.
   bool operator<(const LineState &Other) const {
     if (NextToken != Other.NextToken)
       return NextToken < Other.NextToken;
Index: cfe/trunk/lib/Format/ContinuationIndenter.cpp
===================================================================
--- cfe/trunk/lib/Format/ContinuationIndenter.cpp
+++ cfe/trunk/lib/Format/ContinuationIndenter.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements the continuation indenter.
+/// This file implements the continuation indenter.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Format/Encoding.h
===================================================================
--- cfe/trunk/lib/Format/Encoding.h
+++ cfe/trunk/lib/Format/Encoding.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Contains functions for text encoding manipulation. Supports UTF-8,
+/// Contains functions for text encoding manipulation. Supports UTF-8,
 /// 8-bit encodings and escape sequences in C++ string literals.
 ///
 //===----------------------------------------------------------------------===//
@@ -30,7 +30,7 @@
   Encoding_Unknown // We treat all other encodings as 8-bit encodings.
 };
 
-/// \brief Detects encoding of the Text. If the Text can be decoded using UTF-8,
+/// Detects encoding of the Text. If the Text can be decoded using UTF-8,
 /// it is considered UTF8, otherwise we treat it as some 8-bit encoding.
 inline Encoding detectEncoding(StringRef Text) {
   const llvm::UTF8 *Ptr = reinterpret_cast<const llvm::UTF8 *>(Text.begin());
@@ -40,7 +40,7 @@
   return Encoding_Unknown;
 }
 
-/// \brief Returns the number of columns required to display the \p Text on a
+/// Returns the number of columns required to display the \p Text on a
 /// generic Unicode-capable terminal. Text is assumed to use the specified
 /// \p Encoding.
 inline unsigned columnWidth(StringRef Text, Encoding Encoding) {
@@ -56,7 +56,7 @@
   return Text.size();
 }
 
-/// \brief Returns the number of columns required to display the \p Text,
+/// Returns the number of columns required to display the \p Text,
 /// starting from the \p StartColumn on a terminal with the \p TabWidth. The
 /// text is assumed to use the specified \p Encoding.
 inline unsigned columnWidthWithTabs(StringRef Text, unsigned StartColumn,
@@ -73,7 +73,7 @@
   }
 }
 
-/// \brief Gets the number of bytes in a sequence representing a single
+/// Gets the number of bytes in a sequence representing a single
 /// codepoint and starting with FirstChar in the specified Encoding.
 inline unsigned getCodePointNumBytes(char FirstChar, Encoding Encoding) {
   switch (Encoding) {
@@ -91,7 +91,7 @@
          ('A' <= c && c <= 'F');
 }
 
-/// \brief Gets the length of an escape sequence inside a C++ string literal.
+/// Gets the length of an escape sequence inside a C++ string literal.
 /// Text should span from the beginning of the escape sequence (starting with a
 /// backslash) to the end of the string literal.
 inline unsigned getEscapeSequenceLength(StringRef Text) {
Index: cfe/trunk/lib/Format/Format.cpp
===================================================================
--- cfe/trunk/lib/Format/Format.cpp
+++ cfe/trunk/lib/Format/Format.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements functions declared in Format.h. This will be
+/// This file implements functions declared in Format.h. This will be
 /// split into separate files as we go.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/FormatInternal.h
===================================================================
--- cfe/trunk/lib/Format/FormatInternal.h
+++ cfe/trunk/lib/Format/FormatInternal.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file declares Format APIs to be used internally by the
+/// This file declares Format APIs to be used internally by the
 /// formatting library implementation.
 ///
 //===----------------------------------------------------------------------===//
@@ -24,7 +24,7 @@
 namespace format {
 namespace internal {
 
-/// \brief Reformats the given \p Ranges in the code fragment \p Code.
+/// Reformats the given \p Ranges in the code fragment \p Code.
 ///
 /// A fragment of code could conceptually be surrounded by other code that might
 /// constrain how that fragment is laid out.
Index: cfe/trunk/lib/Format/FormatToken.h
===================================================================
--- cfe/trunk/lib/Format/FormatToken.h
+++ cfe/trunk/lib/Format/FormatToken.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file contains the declaration of the FormatToken, a wrapper
+/// This file contains the declaration of the FormatToken, a wrapper
 /// around Token with additional information related to formatting.
 ///
 //===----------------------------------------------------------------------===//
@@ -104,7 +104,7 @@
       NUM_TOKEN_TYPES
 };
 
-/// \brief Determines the name of a token type.
+/// Determines the name of a token type.
 const char *getTokenTypeName(TokenType Type);
 
 // Represents what type of block a set of braces open.
@@ -118,185 +118,185 @@
 class TokenRole;
 class AnnotatedLine;
 
-/// \brief A wrapper around a \c Token storing information about the
+/// A wrapper around a \c Token storing information about the
 /// whitespace characters preceding it.
 struct FormatToken {
   FormatToken() {}
 
-  /// \brief The \c Token.
+  /// The \c Token.
   Token Tok;
 
-  /// \brief The number of newlines immediately before the \c Token.
+  /// The number of newlines immediately before the \c Token.
   ///
   /// This can be used to determine what the user wrote in the original code
   /// and thereby e.g. leave an empty line between two function definitions.
   unsigned NewlinesBefore = 0;
 
-  /// \brief Whether there is at least one unescaped newline before the \c
+  /// Whether there is at least one unescaped newline before the \c
   /// Token.
   bool HasUnescapedNewline = false;
 
-  /// \brief The range of the whitespace immediately preceding the \c Token.
+  /// The range of the whitespace immediately preceding the \c Token.
   SourceRange WhitespaceRange;
 
-  /// \brief The offset just past the last '\n' in this token's leading
+  /// The offset just past the last '\n' in this token's leading
   /// whitespace (relative to \c WhiteSpaceStart). 0 if there is no '\n'.
   unsigned LastNewlineOffset = 0;
 
-  /// \brief The width of the non-whitespace parts of the token (or its first
+  /// The width of the non-whitespace parts of the token (or its first
   /// line for multi-line tokens) in columns.
   /// We need this to correctly measure number of columns a token spans.
   unsigned ColumnWidth = 0;
 
-  /// \brief Contains the width in columns of the last line of a multi-line
+  /// Contains the width in columns of the last line of a multi-line
   /// token.
   unsigned LastLineColumnWidth = 0;
 
-  /// \brief Whether the token text contains newlines (escaped or not).
+  /// Whether the token text contains newlines (escaped or not).
   bool IsMultiline = false;
 
-  /// \brief Indicates that this is the first token of the file.
+  /// Indicates that this is the first token of the file.
   bool IsFirst = false;
 
-  /// \brief Whether there must be a line break before this token.
+  /// Whether there must be a line break before this token.
   ///
   /// This happens for example when a preprocessor directive ended directly
   /// before the token.
   bool MustBreakBefore = false;
 
-  /// \brief The raw text of the token.
+  /// The raw text of the token.
   ///
   /// Contains the raw token text without leading whitespace and without leading
   /// escaped newlines.
   StringRef TokenText;
 
-  /// \brief Set to \c true if this token is an unterminated literal.
+  /// Set to \c true if this token is an unterminated literal.
   bool IsUnterminatedLiteral = 0;
 
-  /// \brief Contains the kind of block if this token is a brace.
+  /// Contains the kind of block if this token is a brace.
   BraceBlockKind BlockKind = BK_Unknown;
 
   TokenType Type = TT_Unknown;
 
-  /// \brief The number of spaces that should be inserted before this token.
+  /// The number of spaces that should be inserted before this token.
   unsigned SpacesRequiredBefore = 0;
 
-  /// \brief \c true if it is allowed to break before this token.
+  /// \c true if it is allowed to break before this token.
   bool CanBreakBefore = false;
 
-  /// \brief \c true if this is the ">" of "template<..>".
+  /// \c true if this is the ">" of "template<..>".
   bool ClosesTemplateDeclaration = false;
 
-  /// \brief Number of parameters, if this is "(", "[" or "<".
+  /// Number of parameters, if this is "(", "[" or "<".
   ///
   /// This is initialized to 1 as we don't need to distinguish functions with
   /// 0 parameters from functions with 1 parameter. Thus, we can simply count
   /// the number of commas.
   unsigned ParameterCount = 0;
 
-  /// \brief Number of parameters that are nested blocks,
+  /// Number of parameters that are nested blocks,
   /// if this is "(", "[" or "<".
   unsigned BlockParameterCount = 0;
 
-  /// \brief If this is a bracket ("<", "(", "[" or "{"), contains the kind of
+  /// If this is a bracket ("<", "(", "[" or "{"), contains the kind of
   /// the surrounding bracket.
   tok::TokenKind ParentBracket = tok::unknown;
 
-  /// \brief A token can have a special role that can carry extra information
+  /// A token can have a special role that can carry extra information
   /// about the token's formatting.
   std::unique_ptr<TokenRole> Role;
 
-  /// \brief If this is an opening parenthesis, how are the parameters packed?
+  /// If this is an opening parenthesis, how are the parameters packed?
   ParameterPackingKind PackingKind = PPK_Inconclusive;
 
-  /// \brief The total length of the unwrapped line up to and including this
+  /// The total length of the unwrapped line up to and including this
   /// token.
   unsigned TotalLength = 0;
 
-  /// \brief The original 0-based column of this token, including expanded tabs.
+  /// The original 0-based column of this token, including expanded tabs.
   /// The configured TabWidth is used as tab width.
   unsigned OriginalColumn = 0;
 
-  /// \brief The length of following tokens until the next natural split point,
+  /// The length of following tokens until the next natural split point,
   /// or the next token that can be broken.
   unsigned UnbreakableTailLength = 0;
 
   // FIXME: Come up with a 'cleaner' concept.
-  /// \brief The binding strength of a token. This is a combined value of
+  /// The binding strength of a token. This is a combined value of
   /// operator precedence, parenthesis nesting, etc.
   unsigned BindingStrength = 0;
 
-  /// \brief The nesting level of this token, i.e. the number of surrounding (),
+  /// The nesting level of this token, i.e. the number of surrounding (),
   /// [], {} or <>.
   unsigned NestingLevel = 0;
 
-  /// \brief The indent level of this token. Copied from the surrounding line.
+  /// The indent level of this token. Copied from the surrounding line.
   unsigned IndentLevel = 0;
 
-  /// \brief Penalty for inserting a line break before this token.
+  /// Penalty for inserting a line break before this token.
   unsigned SplitPenalty = 0;
 
-  /// \brief If this is the first ObjC selector name in an ObjC method
+  /// If this is the first ObjC selector name in an ObjC method
   /// definition or call, this contains the length of the longest name.
   ///
   /// This being set to 0 means that the selectors should not be colon-aligned,
   /// e.g. because several of them are block-type.
   unsigned LongestObjCSelectorName = 0;
 
-  /// \brief How many parts ObjC selector have (i.e. how many parameters method
+  /// How many parts ObjC selector have (i.e. how many parameters method
   /// has).
   unsigned ObjCSelectorNameParts = 0;
 
-  /// \brief Stores the number of required fake parentheses and the
+  /// Stores the number of required fake parentheses and the
   /// corresponding operator precedence.
   ///
   /// If multiple fake parentheses start at a token, this vector stores them in
   /// reverse order, i.e. inner fake parenthesis first.
   SmallVector<prec::Level, 4> FakeLParens;
-  /// \brief Insert this many fake ) after this token for correct indentation.
+  /// Insert this many fake ) after this token for correct indentation.
   unsigned FakeRParens = 0;
 
-  /// \brief \c true if this token starts a binary expression, i.e. has at least
+  /// \c true if this token starts a binary expression, i.e. has at least
   /// one fake l_paren with a precedence greater than prec::Unknown.
   bool StartsBinaryExpression = false;
-  /// \brief \c true if this token ends a binary expression.
+  /// \c true if this token ends a binary expression.
   bool EndsBinaryExpression = false;
 
-  /// \brief Is this is an operator (or "."/"->") in a sequence of operators
+  /// Is this is an operator (or "."/"->") in a sequence of operators
   /// with the same precedence, contains the 0-based operator index.
   unsigned OperatorIndex = 0;
 
-  /// \brief If this is an operator (or "."/"->") in a sequence of operators
+  /// If this is an operator (or "."/"->") in a sequence of operators
   /// with the same precedence, points to the next operator.
   FormatToken *NextOperator = nullptr;
 
-  /// \brief Is this token part of a \c DeclStmt defining multiple variables?
+  /// Is this token part of a \c DeclStmt defining multiple variables?
   ///
   /// Only set if \c Type == \c TT_StartOfName.
   bool PartOfMultiVariableDeclStmt = false;
 
-  /// \brief Does this line comment continue a line comment section?
+  /// Does this line comment continue a line comment section?
   ///
   /// Only set to true if \c Type == \c TT_LineComment.
   bool ContinuesLineCommentSection = false;
 
-  /// \brief If this is a bracket, this points to the matching one.
+  /// If this is a bracket, this points to the matching one.
   FormatToken *MatchingParen = nullptr;
 
-  /// \brief The previous token in the unwrapped line.
+  /// The previous token in the unwrapped line.
   FormatToken *Previous = nullptr;
 
-  /// \brief The next token in the unwrapped line.
+  /// The next token in the unwrapped line.
   FormatToken *Next = nullptr;
 
-  /// \brief If this token starts a block, this contains all the unwrapped lines
+  /// If this token starts a block, this contains all the unwrapped lines
   /// in it.
   SmallVector<AnnotatedLine *, 1> Children;
 
-  /// \brief Stores the formatting decision for the token once it was made.
+  /// Stores the formatting decision for the token once it was made.
   FormatDecision Decision = FD_Unformatted;
 
-  /// \brief If \c true, this token has been fully formatted (indented and
+  /// If \c true, this token has been fully formatted (indented and
   /// potentially re-formatted inside), and we do not allow further formatting
   /// changes.
   bool Finalized = false;
@@ -344,7 +344,7 @@
            (!ColonRequired || (Next && Next->is(tok::colon)));
   }
 
-  /// \brief Determine whether the token is a simple-type-specifier.
+  /// Determine whether the token is a simple-type-specifier.
   bool isSimpleTypeSpecifier() const;
 
   bool isObjCAccessSpecifier() const {
@@ -355,7 +355,7 @@
             Next->isObjCAtKeyword(tok::objc_private));
   }
 
-  /// \brief Returns whether \p Tok is ([{ or an opening < of a template or in
+  /// Returns whether \p Tok is ([{ or an opening < of a template or in
   /// protos.
   bool opensScope() const {
     if (is(TT_TemplateString) && TokenText.endswith("${"))
@@ -365,7 +365,7 @@
     return isOneOf(tok::l_paren, tok::l_brace, tok::l_square,
                    TT_TemplateOpener);
   }
-  /// \brief Returns whether \p Tok is )]} or a closing > of a template or in
+  /// Returns whether \p Tok is )]} or a closing > of a template or in
   /// protos.
   bool closesScope() const {
     if (is(TT_TemplateString) && TokenText.startswith("}"))
@@ -376,7 +376,7 @@
                    TT_TemplateCloser);
   }
 
-  /// \brief Returns \c true if this is a "." or "->" accessing a member.
+  /// Returns \c true if this is a "." or "->" accessing a member.
   bool isMemberAccess() const {
     return isOneOf(tok::arrow, tok::period, tok::arrowstar) &&
            !isOneOf(TT_DesignatedInitializerPeriod, TT_TrailingReturnArrow,
@@ -409,7 +409,7 @@
            (is(TT_LineComment) || !Next || Next->NewlinesBefore > 0);
   }
 
-  /// \brief Returns \c true if this is a keyword that can be used
+  /// Returns \c true if this is a keyword that can be used
   /// like a function call (e.g. sizeof, typeid, ...).
   bool isFunctionLikeKeyword() const {
     switch (Tok.getKind()) {
@@ -429,7 +429,7 @@
     }
   }
 
-  /// \brief Returns \c true if this is a string literal that's like a label,
+  /// Returns \c true if this is a string literal that's like a label,
   /// e.g. ends with "=" or ":".
   bool isLabelString() const {
     if (!is(tok::string_literal))
@@ -444,7 +444,7 @@
            (Content.back() == ':' || Content.back() == '=');
   }
 
-  /// \brief Returns actual token start location without leading escaped
+  /// Returns actual token start location without leading escaped
   /// newlines and whitespace.
   ///
   /// This can be different to Tok.getLocation(), which includes leading escaped
@@ -458,7 +458,7 @@
                               /*CPlusPlus11=*/true);
   }
 
-  /// \brief Returns the previous token ignoring comments.
+  /// Returns the previous token ignoring comments.
   FormatToken *getPreviousNonComment() const {
     FormatToken *Tok = Previous;
     while (Tok && Tok->is(tok::comment))
@@ -466,7 +466,7 @@
     return Tok;
   }
 
-  /// \brief Returns the next token ignoring comments.
+  /// Returns the next token ignoring comments.
   const FormatToken *getNextNonComment() const {
     const FormatToken *Tok = Next;
     while (Tok && Tok->is(tok::comment))
@@ -474,7 +474,7 @@
     return Tok;
   }
 
-  /// \brief Returns \c true if this tokens starts a block-type list, i.e. a
+  /// Returns \c true if this tokens starts a block-type list, i.e. a
   /// list that should be indented with a block indent.
   bool opensBlockOrBlockTypeList(const FormatStyle &Style) const {
     if (is(TT_TemplateString) && opensScope())
@@ -488,7 +488,7 @@
                               Style.Language == FormatStyle::LK_TextProto));
   }
 
-  /// \brief Returns whether the token is the left square bracket of a C++
+  /// Returns whether the token is the left square bracket of a C++
   /// structured binding declaration.
   bool isCppStructuredBinding(const FormatStyle &Style) const {
     if (!Style.isCpp() || isNot(tok::l_square))
@@ -501,14 +501,14 @@
     return T && T->is(tok::kw_auto);
   }
 
-  /// \brief Same as opensBlockOrBlockTypeList, but for the closing token.
+  /// Same as opensBlockOrBlockTypeList, but for the closing token.
   bool closesBlockOrBlockTypeList(const FormatStyle &Style) const {
     if (is(TT_TemplateString) && closesScope())
       return true;
     return MatchingParen && MatchingParen->opensBlockOrBlockTypeList(Style);
   }
 
-  /// \brief Return the actual namespace token, if this token starts a namespace
+  /// Return the actual namespace token, if this token starts a namespace
   /// block.
   const FormatToken *getNamespaceToken() const {
     const FormatToken *NamespaceTok = this;
@@ -561,11 +561,11 @@
   TokenRole(const FormatStyle &Style) : Style(Style) {}
   virtual ~TokenRole();
 
-  /// \brief After the \c TokenAnnotator has finished annotating all the tokens,
+  /// After the \c TokenAnnotator has finished annotating all the tokens,
   /// this function precomputes required information for formatting.
   virtual void precomputeFormattingInfos(const FormatToken *Token);
 
-  /// \brief Apply the special formatting that the given role demands.
+  /// Apply the special formatting that the given role demands.
   ///
   /// Assumes that the token having this role is already formatted.
   ///
@@ -577,7 +577,7 @@
     return 0;
   }
 
-  /// \brief Same as \c formatFromToken, but assumes that the first token has
+  /// Same as \c formatFromToken, but assumes that the first token has
   /// already been set thereby deciding on the first line break.
   virtual unsigned formatAfterToken(LineState &State,
                                     ContinuationIndenter *Indenter,
@@ -585,7 +585,7 @@
     return 0;
   }
 
-  /// \brief Notifies the \c Role that a comma was found.
+  /// Notifies the \c Role that a comma was found.
   virtual void CommaFound(const FormatToken *Token) {}
 
 protected:
@@ -605,46 +605,46 @@
   unsigned formatFromToken(LineState &State, ContinuationIndenter *Indenter,
                            bool DryRun) override;
 
-  /// \brief Adds \p Token as the next comma to the \c CommaSeparated list.
+  /// Adds \p Token as the next comma to the \c CommaSeparated list.
   void CommaFound(const FormatToken *Token) override {
     Commas.push_back(Token);
   }
 
 private:
-  /// \brief A struct that holds information on how to format a given list with
+  /// A struct that holds information on how to format a given list with
   /// a specific number of columns.
   struct ColumnFormat {
-    /// \brief The number of columns to use.
+    /// The number of columns to use.
     unsigned Columns;
 
-    /// \brief The total width in characters.
+    /// The total width in characters.
     unsigned TotalWidth;
 
-    /// \brief The number of lines required for this format.
+    /// The number of lines required for this format.
     unsigned LineCount;
 
-    /// \brief The size of each column in characters.
+    /// The size of each column in characters.
     SmallVector<unsigned, 8> ColumnSizes;
   };
 
-  /// \brief Calculate which \c ColumnFormat fits best into
+  /// Calculate which \c ColumnFormat fits best into
   /// \p RemainingCharacters.
   const ColumnFormat *getColumnFormat(unsigned RemainingCharacters) const;
 
-  /// \brief The ordered \c FormatTokens making up the commas of this list.
+  /// The ordered \c FormatTokens making up the commas of this list.
   SmallVector<const FormatToken *, 8> Commas;
 
-  /// \brief The length of each of the list's items in characters including the
+  /// The length of each of the list's items in characters including the
   /// trailing comma.
   SmallVector<unsigned, 8> ItemLengths;
 
-  /// \brief Precomputed formats that can be used for this list.
+  /// Precomputed formats that can be used for this list.
   SmallVector<ColumnFormat, 4> Formats;
 
   bool HasNestedBracedList;
 };
 
-/// \brief Encapsulates keywords that are context sensitive or for languages not
+/// Encapsulates keywords that are context sensitive or for languages not
 /// properly supported by Clang's lexer.
 struct AdditionalKeywords {
   AdditionalKeywords(IdentifierTable &IdentTable) {
@@ -776,7 +776,7 @@
   IdentifierInfo *kw_slots;
   IdentifierInfo *kw_qslots;
 
-  /// \brief Returns \c true if \p Tok is a true JavaScript identifier, returns
+  /// Returns \c true if \p Tok is a true JavaScript identifier, returns
   /// \c false if it is a keyword or a pseudo keyword.
   bool IsJavaScriptIdentifier(const FormatToken &Tok) const {
     return Tok.is(tok::identifier) &&
@@ -785,7 +785,7 @@
   }
 
 private:
-  /// \brief The JavaScript keywords beyond the C++ keyword set.
+  /// The JavaScript keywords beyond the C++ keyword set.
   std::unordered_set<IdentifierInfo *> JsExtraKeywords;
 };
 
Index: cfe/trunk/lib/Format/FormatToken.cpp
===================================================================
--- cfe/trunk/lib/Format/FormatToken.cpp
+++ cfe/trunk/lib/Format/FormatToken.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements specific functions of \c FormatTokens and their
+/// This file implements specific functions of \c FormatTokens and their
 /// roles.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/FormatTokenLexer.h
===================================================================
--- cfe/trunk/lib/Format/FormatTokenLexer.h
+++ cfe/trunk/lib/Format/FormatTokenLexer.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file contains FormatTokenLexer, which tokenizes a source file
+/// This file contains FormatTokenLexer, which tokenizes a source file
 /// into a token stream suitable for ClangFormat.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/FormatTokenLexer.cpp
===================================================================
--- cfe/trunk/lib/Format/FormatTokenLexer.cpp
+++ cfe/trunk/lib/Format/FormatTokenLexer.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements FormatTokenLexer, which tokenizes a source file
+/// This file implements FormatTokenLexer, which tokenizes a source file
 /// into a FormatToken stream suitable for ClangFormat.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/NamespaceEndCommentsFixer.h
===================================================================
--- cfe/trunk/lib/Format/NamespaceEndCommentsFixer.h
+++ cfe/trunk/lib/Format/NamespaceEndCommentsFixer.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file declares NamespaceEndCommentsFixer, a TokenAnalyzer that
+/// This file declares NamespaceEndCommentsFixer, a TokenAnalyzer that
 /// fixes namespace end comments.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/NamespaceEndCommentsFixer.cpp
===================================================================
--- cfe/trunk/lib/Format/NamespaceEndCommentsFixer.cpp
+++ cfe/trunk/lib/Format/NamespaceEndCommentsFixer.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements NamespaceEndCommentsFixer, a TokenAnalyzer that
+/// This file implements NamespaceEndCommentsFixer, a TokenAnalyzer that
 /// fixes namespace end comments.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/SortJavaScriptImports.h
===================================================================
--- cfe/trunk/lib/Format/SortJavaScriptImports.h
+++ cfe/trunk/lib/Format/SortJavaScriptImports.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a sorter for JavaScript ES6 imports.
+/// This file implements a sorter for JavaScript ES6 imports.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Format/SortJavaScriptImports.cpp
===================================================================
--- cfe/trunk/lib/Format/SortJavaScriptImports.cpp
+++ cfe/trunk/lib/Format/SortJavaScriptImports.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a sort operation for JavaScript ES6 imports.
+/// This file implements a sort operation for JavaScript ES6 imports.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Format/TokenAnalyzer.h
===================================================================
--- cfe/trunk/lib/Format/TokenAnalyzer.h
+++ cfe/trunk/lib/Format/TokenAnalyzer.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file declares an abstract TokenAnalyzer, and associated helper
+/// This file declares an abstract TokenAnalyzer, and associated helper
 /// classes. TokenAnalyzer can be extended to generate replacements based on
 /// an annotated and pre-processed token stream.
 ///
Index: cfe/trunk/lib/Format/TokenAnalyzer.cpp
===================================================================
--- cfe/trunk/lib/Format/TokenAnalyzer.cpp
+++ cfe/trunk/lib/Format/TokenAnalyzer.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements an abstract TokenAnalyzer and associated helper
+/// This file implements an abstract TokenAnalyzer and associated helper
 /// classes. TokenAnalyzer can be extended to generate replacements based on
 /// an annotated and pre-processed token stream.
 ///
Index: cfe/trunk/lib/Format/TokenAnnotator.h
===================================================================
--- cfe/trunk/lib/Format/TokenAnnotator.h
+++ cfe/trunk/lib/Format/TokenAnnotator.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a token annotator, i.e. creates
+/// This file implements a token annotator, i.e. creates
 /// \c AnnotatedTokens out of \c FormatTokens with required extra information.
 ///
 //===----------------------------------------------------------------------===//
@@ -138,14 +138,14 @@
   void operator=(const AnnotatedLine &) = delete;
 };
 
-/// \brief Determines extra information about the tokens comprising an
+/// Determines extra information about the tokens comprising an
 /// \c UnwrappedLine.
 class TokenAnnotator {
 public:
   TokenAnnotator(const FormatStyle &Style, const AdditionalKeywords &Keywords)
       : Style(Style), Keywords(Keywords) {}
 
-  /// \brief Adapts the indent levels of comment lines to the indent of the
+  /// Adapts the indent levels of comment lines to the indent of the
   /// subsequent line.
   // FIXME: Can/should this be done in the UnwrappedLineParser?
   void setCommentLineLevels(SmallVectorImpl<AnnotatedLine *> &Lines);
@@ -154,7 +154,7 @@
   void calculateFormattingInformation(AnnotatedLine &Line);
 
 private:
-  /// \brief Calculate the penalty for splitting before \c Tok.
+  /// Calculate the penalty for splitting before \c Tok.
   unsigned splitPenalty(const AnnotatedLine &Line, const FormatToken &Tok,
                         bool InFunctionDecl);
 
Index: cfe/trunk/lib/Format/TokenAnnotator.cpp
===================================================================
--- cfe/trunk/lib/Format/TokenAnnotator.cpp
+++ cfe/trunk/lib/Format/TokenAnnotator.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a token annotator, i.e. creates
+/// This file implements a token annotator, i.e. creates
 /// \c AnnotatedTokens out of \c FormatTokens with required extra information.
 ///
 //===----------------------------------------------------------------------===//
@@ -25,7 +25,7 @@
 
 namespace {
 
-/// \brief Returns \c true if the token can be used as an identifier in
+/// Returns \c true if the token can be used as an identifier in
 /// an Objective-C \c @selector, \c false otherwise.
 ///
 /// Because getFormattingLangOpts() always lexes source code as
@@ -40,7 +40,7 @@
   return Tok.Tok.getIdentifierInfo() != nullptr;
 }
 
-/// \brief A parser that gathers additional information about tokens.
+/// A parser that gathers additional information about tokens.
 ///
 /// The \c TokenAnnotator tries to match parenthesis and square brakets and
 /// store a parenthesis levels. It also tries to resolve matching "<" and ">"
@@ -1132,7 +1132,7 @@
     resetTokenMetadata(CurrentToken);
   }
 
-  /// \brief A struct to hold information valid in a specific context, e.g.
+  /// A struct to hold information valid in a specific context, e.g.
   /// a pair of parenthesis.
   struct Context {
     Context(tok::TokenKind ContextKind, unsigned BindingStrength,
@@ -1158,7 +1158,7 @@
     bool InCpp11AttributeSpecifier = false;
   };
 
-  /// \brief Puts a new \c Context onto the stack \c Contexts for the lifetime
+  /// Puts a new \c Context onto the stack \c Contexts for the lifetime
   /// of each instance.
   struct ScopedContextCreator {
     AnnotatingParser &P;
@@ -1399,7 +1399,7 @@
     }
   }
 
-  /// \brief Take a guess at whether \p Tok starts a name of a function or
+  /// Take a guess at whether \p Tok starts a name of a function or
   /// variable declaration.
   ///
   /// This is a heuristic based on whether \p Tok is an identifier following
@@ -1444,7 +1444,7 @@
            PreviousNotConst->isSimpleTypeSpecifier();
   }
 
-  /// \brief Determine whether ')' is ending a cast.
+  /// Determine whether ')' is ending a cast.
   bool rParenEndsCast(const FormatToken &Tok) {
     // C-style casts are only used in C++ and Java.
     if (!Style.isCpp() && Style.Language != FormatStyle::LK_Java)
@@ -1541,7 +1541,7 @@
     return true;
   }
 
-  /// \brief Return the type of the given token assuming it is * or &.
+  /// Return the type of the given token assuming it is * or &.
   TokenType determineStarAmpUsage(const FormatToken &Tok, bool IsExpression,
                                   bool InTemplateArgument) {
     if (Style.Language == FormatStyle::LK_JavaScript)
@@ -1636,7 +1636,7 @@
     return TT_BinaryOperator;
   }
 
-  /// \brief Determine whether ++/-- are pre- or post-increments/-decrements.
+  /// Determine whether ++/-- are pre- or post-increments/-decrements.
   TokenType determineIncrementUsage(const FormatToken &Tok) {
     const FormatToken *PrevToken = Tok.getPreviousNonComment();
     if (!PrevToken || PrevToken->is(TT_CastRParen))
@@ -1665,7 +1665,7 @@
 static const int PrecedenceUnaryOperator = prec::PointerToMember + 1;
 static const int PrecedenceArrowAndPeriod = prec::PointerToMember + 2;
 
-/// \brief Parses binary expressions by inserting fake parenthesis based on
+/// Parses binary expressions by inserting fake parenthesis based on
 /// operator precedence.
 class ExpressionParser {
 public:
@@ -1673,7 +1673,7 @@
                    AnnotatedLine &Line)
       : Style(Style), Keywords(Keywords), Current(Line.First) {}
 
-  /// \brief Parse expressions with the given operator precedence.
+  /// Parse expressions with the given operator precedence.
   void parse(int Precedence = 0) {
     // Skip 'return' and ObjC selector colons as they are not part of a binary
     // expression.
@@ -1760,7 +1760,7 @@
   }
 
 private:
-  /// \brief Gets the precedence (+1) of the given token for binary operators
+  /// Gets the precedence (+1) of the given token for binary operators
   /// and other tokens that we treat like binary operators.
   int getCurrentPrecedence() {
     if (Current) {
@@ -1819,7 +1819,7 @@
     }
   }
 
-  /// \brief Parse unary operator expressions and surround them with fake
+  /// Parse unary operator expressions and surround them with fake
   /// parentheses if appropriate.
   void parseUnaryOperator() {
     llvm::SmallVector<FormatToken *, 2> Tokens;
Index: cfe/trunk/lib/Format/UnwrappedLineFormatter.h
===================================================================
--- cfe/trunk/lib/Format/UnwrappedLineFormatter.h
+++ cfe/trunk/lib/Format/UnwrappedLineFormatter.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Implements a combinartorial exploration of all the different
+/// Implements a combinartorial exploration of all the different
 /// linebreaks unwrapped lines can be formatted in.
 ///
 //===----------------------------------------------------------------------===//
@@ -37,7 +37,7 @@
       : Indenter(Indenter), Whitespaces(Whitespaces), Style(Style),
         Keywords(Keywords), SourceMgr(SourceMgr), Status(Status) {}
 
-  /// \brief Format the current block and return the penalty.
+  /// Format the current block and return the penalty.
   unsigned format(const SmallVectorImpl<AnnotatedLine *> &Lines,
                   bool DryRun = false, int AdditionalIndent = 0,
                   bool FixBadIndentation = false,
@@ -46,14 +46,14 @@
                   unsigned LastStartColumn = 0);
 
 private:
-  /// \brief Add a new line and the required indent before the first Token
+  /// Add a new line and the required indent before the first Token
   /// of the \c UnwrappedLine if there was no structural parsing error.
   void formatFirstToken(const AnnotatedLine &Line,
                         const AnnotatedLine *PreviousLine,
                         const SmallVectorImpl<AnnotatedLine *> &Lines,
                         unsigned Indent, unsigned NewlineIndent);
 
-  /// \brief Returns the column limit for a line, taking into account whether we
+  /// Returns the column limit for a line, taking into account whether we
   /// need an escaped newline due to a continued preprocessor directive.
   unsigned getColumnLimit(bool InPPDirective,
                           const AnnotatedLine *NextLine) const;
Index: cfe/trunk/lib/Format/UnwrappedLineFormatter.cpp
===================================================================
--- cfe/trunk/lib/Format/UnwrappedLineFormatter.cpp
+++ cfe/trunk/lib/Format/UnwrappedLineFormatter.cpp
@@ -27,7 +27,7 @@
          NextNext && NextNext->is(tok::l_brace);
 }
 
-/// \brief Tracks the indent level of \c AnnotatedLines across levels.
+/// Tracks the indent level of \c AnnotatedLines across levels.
 ///
 /// \c nextLine must be called for each \c AnnotatedLine, after which \c
 /// getIndent() will return the indent for the last line \c nextLine was called
@@ -46,10 +46,10 @@
       IndentForLevel.push_back(Style.IndentWidth * i + AdditionalIndent);
   }
 
-  /// \brief Returns the indent for the current line.
+  /// Returns the indent for the current line.
   unsigned getIndent() const { return Indent; }
 
-  /// \brief Update the indent state given that \p Line is going to be formatted
+  /// Update the indent state given that \p Line is going to be formatted
   /// next.
   void nextLine(const AnnotatedLine &Line) {
     Offset = getIndentOffset(*Line.First);
@@ -67,14 +67,14 @@
       Indent += Offset;
   }
 
-  /// \brief Update the indent state given that \p Line indent should be
+  /// Update the indent state given that \p Line indent should be
   /// skipped.
   void skipLine(const AnnotatedLine &Line) {
     while (IndentForLevel.size() <= Line.Level)
       IndentForLevel.push_back(Indent);
   }
 
-  /// \brief Update the level indent to adapt to the given \p Line.
+  /// Update the level indent to adapt to the given \p Line.
   ///
   /// When a line is not formatted, we move the subsequent lines on the same
   /// level to the same indent.
@@ -89,7 +89,7 @@
   }
 
 private:
-  /// \brief Get the offset of the line relatively to the level.
+  /// Get the offset of the line relatively to the level.
   ///
   /// For example, 'public:' labels in classes are offset by 1 or 2
   /// characters to the left from their level.
@@ -105,7 +105,7 @@
     return 0;
   }
 
-  /// \brief Get the indent of \p Level from \p IndentForLevel.
+  /// Get the indent of \p Level from \p IndentForLevel.
   ///
   /// \p IndentForLevel must contain the indent for the level \c l
   /// at \p IndentForLevel[l], or a value < 0 if the indent for
@@ -122,16 +122,16 @@
   const AdditionalKeywords &Keywords;
   const unsigned AdditionalIndent;
 
-  /// \brief The indent in characters for each level.
+  /// The indent in characters for each level.
   std::vector<int> IndentForLevel;
 
-  /// \brief Offset of the current line relative to the indent level.
+  /// Offset of the current line relative to the indent level.
   ///
   /// For example, the 'public' keywords is often indented with a negative
   /// offset.
   int Offset = 0;
 
-  /// \brief The current line's indent.
+  /// The current line's indent.
   unsigned Indent = 0;
 };
 
@@ -158,7 +158,7 @@
       : Style(Style), Keywords(Keywords), End(Lines.end()), Next(Lines.begin()),
         AnnotatedLines(Lines) {}
 
-  /// \brief Returns the next line, merging multiple lines into one if possible.
+  /// Returns the next line, merging multiple lines into one if possible.
   const AnnotatedLine *getNextMergedLine(bool DryRun,
                                          LevelIndentTracker &IndentTracker) {
     if (Next == End)
@@ -180,7 +180,7 @@
   }
 
 private:
-  /// \brief Calculates how many lines can be merged into 1 starting at \p I.
+  /// Calculates how many lines can be merged into 1 starting at \p I.
   unsigned
   tryFitMultipleLinesInOne(LevelIndentTracker &IndentTracker,
                            SmallVectorImpl<AnnotatedLine *>::const_iterator I,
@@ -666,7 +666,7 @@
 }
 #endif
 
-/// \brief Base class for classes that format one \c AnnotatedLine.
+/// Base class for classes that format one \c AnnotatedLine.
 class LineFormatter {
 public:
   LineFormatter(ContinuationIndenter *Indenter, WhitespaceManager *Whitespaces,
@@ -676,7 +676,7 @@
         BlockFormatter(BlockFormatter) {}
   virtual ~LineFormatter() {}
 
-  /// \brief Formats an \c AnnotatedLine and returns the penalty.
+  /// Formats an \c AnnotatedLine and returns the penalty.
   ///
   /// If \p DryRun is \c false, directly applies the changes.
   virtual unsigned formatLine(const AnnotatedLine &Line,
@@ -685,7 +685,7 @@
                               bool DryRun) = 0;
 
 protected:
-  /// \brief If the \p State's next token is an r_brace closing a nested block,
+  /// If the \p State's next token is an r_brace closing a nested block,
   /// format the nested block before it.
   ///
   /// Returns \c true if all children could be placed successfully and adapts
@@ -767,7 +767,7 @@
   UnwrappedLineFormatter *BlockFormatter;
 };
 
-/// \brief Formatter that keeps the existing line breaks.
+/// Formatter that keeps the existing line breaks.
 class NoColumnLimitLineFormatter : public LineFormatter {
 public:
   NoColumnLimitLineFormatter(ContinuationIndenter *Indenter,
@@ -776,7 +776,7 @@
                              UnwrappedLineFormatter *BlockFormatter)
       : LineFormatter(Indenter, Whitespaces, Style, BlockFormatter) {}
 
-  /// \brief Formats the line, simply keeping all of the input's line breaking
+  /// Formats the line, simply keeping all of the input's line breaking
   /// decisions.
   unsigned formatLine(const AnnotatedLine &Line, unsigned FirstIndent,
                       unsigned FirstStartColumn, bool DryRun) override {
@@ -795,7 +795,7 @@
   }
 };
 
-/// \brief Formatter that puts all tokens into a single line without breaks.
+/// Formatter that puts all tokens into a single line without breaks.
 class NoLineBreakFormatter : public LineFormatter {
 public:
   NoLineBreakFormatter(ContinuationIndenter *Indenter,
@@ -803,7 +803,7 @@
                        UnwrappedLineFormatter *BlockFormatter)
       : LineFormatter(Indenter, Whitespaces, Style, BlockFormatter) {}
 
-  /// \brief Puts all tokens into a single line.
+  /// Puts all tokens into a single line.
   unsigned formatLine(const AnnotatedLine &Line, unsigned FirstIndent,
                       unsigned FirstStartColumn, bool DryRun) override {
     unsigned Penalty = 0;
@@ -818,7 +818,7 @@
   }
 };
 
-/// \brief Finds the best way to break lines.
+/// Finds the best way to break lines.
 class OptimizingLineFormatter : public LineFormatter {
 public:
   OptimizingLineFormatter(ContinuationIndenter *Indenter,
@@ -827,7 +827,7 @@
                           UnwrappedLineFormatter *BlockFormatter)
       : LineFormatter(Indenter, Whitespaces, Style, BlockFormatter) {}
 
-  /// \brief Formats the line by finding the best line breaks with line lengths
+  /// Formats the line by finding the best line breaks with line lengths
   /// below the column limit.
   unsigned formatLine(const AnnotatedLine &Line, unsigned FirstIndent,
                       unsigned FirstStartColumn, bool DryRun) override {
@@ -850,14 +850,14 @@
     }
   };
 
-  /// \brief A pair of <penalty, count> that is used to prioritize the BFS on.
+  /// A pair of <penalty, count> that is used to prioritize the BFS on.
   ///
   /// In case of equal penalties, we want to prefer states that were inserted
   /// first. During state generation we make sure that we insert states first
   /// that break the line as late as possible.
   typedef std::pair<unsigned, unsigned> OrderedPenalty;
 
-  /// \brief An edge in the solution space from \c Previous->State to \c State,
+  /// An edge in the solution space from \c Previous->State to \c State,
   /// inserting a newline dependent on the \c NewLine.
   struct StateNode {
     StateNode(const LineState &State, bool NewLine, StateNode *Previous)
@@ -867,16 +867,16 @@
     StateNode *Previous;
   };
 
-  /// \brief An item in the prioritized BFS search queue. The \c StateNode's
+  /// An item in the prioritized BFS search queue. The \c StateNode's
   /// \c State has the given \c OrderedPenalty.
   typedef std::pair<OrderedPenalty, StateNode *> QueueItem;
 
-  /// \brief The BFS queue type.
+  /// The BFS queue type.
   typedef std::priority_queue<QueueItem, std::vector<QueueItem>,
                               std::greater<QueueItem>>
       QueueType;
 
-  /// \brief Analyze the entire solution space starting from \p InitialState.
+  /// Analyze the entire solution space starting from \p InitialState.
   ///
   /// This implements a variant of Dijkstra's algorithm on the graph that spans
   /// the solution space (\c LineStates are the nodes). The algorithm tries to
@@ -943,7 +943,7 @@
     return Penalty;
   }
 
-  /// \brief Add the following state to the analysis queue \c Queue.
+  /// Add the following state to the analysis queue \c Queue.
   ///
   /// Assume the current state is \p PreviousNode and has been reached with a
   /// penalty of \p Penalty. Insert a line break if \p NewLine is \c true.
@@ -965,7 +965,7 @@
     ++(*Count);
   }
 
-  /// \brief Applies the best formatting by reconstructing the path in the
+  /// Applies the best formatting by reconstructing the path in the
   /// solution space that leads to \c Best.
   void reconstructPath(LineState &State, StateNode *Best) {
     std::deque<StateNode *> Path;
Index: cfe/trunk/lib/Format/UnwrappedLineParser.h
===================================================================
--- cfe/trunk/lib/Format/UnwrappedLineParser.h
+++ cfe/trunk/lib/Format/UnwrappedLineParser.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file contains the declaration of the UnwrappedLineParser,
+/// This file contains the declaration of the UnwrappedLineParser,
 /// which turns a stream of tokens into UnwrappedLines.
 ///
 //===----------------------------------------------------------------------===//
@@ -28,7 +28,7 @@
 
 struct UnwrappedLineNode;
 
-/// \brief An unwrapped line is a sequence of \c Token, that we would like to
+/// An unwrapped line is a sequence of \c Token, that we would like to
 /// put on a single line if there was no column limit.
 ///
 /// This is used as a main interface between the \c UnwrappedLineParser and the
@@ -38,24 +38,24 @@
   UnwrappedLine();
 
   // FIXME: Don't use std::list here.
-  /// \brief The \c Tokens comprising this \c UnwrappedLine.
+  /// The \c Tokens comprising this \c UnwrappedLine.
   std::list<UnwrappedLineNode> Tokens;
 
-  /// \brief The indent level of the \c UnwrappedLine.
+  /// The indent level of the \c UnwrappedLine.
   unsigned Level;
 
-  /// \brief Whether this \c UnwrappedLine is part of a preprocessor directive.
+  /// Whether this \c UnwrappedLine is part of a preprocessor directive.
   bool InPPDirective;
 
   bool MustBeDeclaration;
 
-  /// \brief If this \c UnwrappedLine closes a block in a sequence of lines,
+  /// If this \c UnwrappedLine closes a block in a sequence of lines,
   /// \c MatchingOpeningBlockLineIndex stores the index of the corresponding
   /// opening line. Otherwise, \c MatchingOpeningBlockLineIndex must be
   /// \c kInvalidIndex.
   size_t MatchingOpeningBlockLineIndex = kInvalidIndex;
 
-  /// \brief If this \c UnwrappedLine opens a block, stores the index of the
+  /// If this \c UnwrappedLine opens a block, stores the index of the
   /// line with the corresponding closing brace.
   size_t MatchingClosingBlockLineIndex = kInvalidIndex;
 
Index: cfe/trunk/lib/Format/UnwrappedLineParser.cpp
===================================================================
--- cfe/trunk/lib/Format/UnwrappedLineParser.cpp
+++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file contains the implementation of the UnwrappedLineParser,
+/// This file contains the implementation of the UnwrappedLineParser,
 /// which turns a stream of tokens into UnwrappedLines.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/UsingDeclarationsSorter.h
===================================================================
--- cfe/trunk/lib/Format/UsingDeclarationsSorter.h
+++ cfe/trunk/lib/Format/UsingDeclarationsSorter.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file declares UsingDeclarationsSorter, a TokenAnalyzer that
+/// This file declares UsingDeclarationsSorter, a TokenAnalyzer that
 /// sorts consecutive using declarations.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/UsingDeclarationsSorter.cpp
===================================================================
--- cfe/trunk/lib/Format/UsingDeclarationsSorter.cpp
+++ cfe/trunk/lib/Format/UsingDeclarationsSorter.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements UsingDeclarationsSorter, a TokenAnalyzer that
+/// This file implements UsingDeclarationsSorter, a TokenAnalyzer that
 /// sorts consecutive using declarations.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Format/WhitespaceManager.h
===================================================================
--- cfe/trunk/lib/Format/WhitespaceManager.h
+++ cfe/trunk/lib/Format/WhitespaceManager.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief WhitespaceManager class manages whitespace around tokens and their
+/// WhitespaceManager class manages whitespace around tokens and their
 /// replacements.
 ///
 //===----------------------------------------------------------------------===//
@@ -24,7 +24,7 @@
 namespace clang {
 namespace format {
 
-/// \brief Manages the whitespaces around tokens and their replacements.
+/// Manages the whitespaces around tokens and their replacements.
 ///
 /// This includes special handling for certain constructs, e.g. the alignment of
 /// trailing line comments.
@@ -41,7 +41,7 @@
                     bool UseCRLF)
       : SourceMgr(SourceMgr), Style(Style), UseCRLF(UseCRLF) {}
 
-  /// \brief Replaces the whitespace in front of \p Tok. Only call once for
+  /// Replaces the whitespace in front of \p Tok. Only call once for
   /// each \c AnnotatedToken.
   ///
   /// \p StartOfTokenColumn is the column at which the token will start after
@@ -51,7 +51,7 @@
                          unsigned StartOfTokenColumn,
                          bool InPPDirective = false);
 
-  /// \brief Adds information about an unchangeable token's whitespace.
+  /// Adds information about an unchangeable token's whitespace.
   ///
   /// Needs to be called for every token for which \c replaceWhitespace
   /// was not called.
@@ -59,7 +59,7 @@
 
   llvm::Error addReplacement(const tooling::Replacement &Replacement);
 
-  /// \brief Inserts or replaces whitespace in the middle of a token.
+  /// Inserts or replaces whitespace in the middle of a token.
   ///
   /// Inserts \p PreviousPostfix, \p Newlines, \p Spaces and \p CurrentPrefix
   /// (in this order) at \p Offset inside \p Tok, replacing \p ReplaceChars
@@ -79,13 +79,13 @@
                                 StringRef CurrentPrefix, bool InPPDirective,
                                 unsigned Newlines, int Spaces);
 
-  /// \brief Returns all the \c Replacements created during formatting.
+  /// Returns all the \c Replacements created during formatting.
   const tooling::Replacements &generateReplacements();
 
-  /// \brief Represents a change before a token, a break inside a token,
+  /// Represents a change before a token, a break inside a token,
   /// or the layout of an unchanged token (or whitespace within).
   struct Change {
-    /// \brief Functor to sort changes in original source order.
+    /// Functor to sort changes in original source order.
     class IsBeforeInFile {
     public:
       IsBeforeInFile(const SourceManager &SourceMgr) : SourceMgr(SourceMgr) {}
@@ -95,7 +95,7 @@
       const SourceManager &SourceMgr;
     };
 
-    /// \brief Creates a \c Change.
+    /// Creates a \c Change.
     ///
     /// The generated \c Change will replace the characters at
     /// \p OriginalWhitespaceRange with a concatenation of
@@ -165,35 +165,35 @@
   };
 
 private:
-  /// \brief Calculate \c IsTrailingComment, \c TokenLength for the last tokens
+  /// Calculate \c IsTrailingComment, \c TokenLength for the last tokens
   /// or token parts in a line and \c PreviousEndOfTokenColumn and
   /// \c EscapedNewlineColumn for the first tokens or token parts in a line.
   void calculateLineBreakInformation();
 
-  /// \brief Align consecutive assignments over all \c Changes.
+  /// Align consecutive assignments over all \c Changes.
   void alignConsecutiveAssignments();
 
-  /// \brief Align consecutive declarations over all \c Changes.
+  /// Align consecutive declarations over all \c Changes.
   void alignConsecutiveDeclarations();
 
-  /// \brief Align trailing comments over all \c Changes.
+  /// Align trailing comments over all \c Changes.
   void alignTrailingComments();
 
-  /// \brief Align trailing comments from change \p Start to change \p End at
+  /// Align trailing comments from change \p Start to change \p End at
   /// the specified \p Column.
   void alignTrailingComments(unsigned Start, unsigned End, unsigned Column);
 
-  /// \brief Align escaped newlines over all \c Changes.
+  /// Align escaped newlines over all \c Changes.
   void alignEscapedNewlines();
 
-  /// \brief Align escaped newlines from change \p Start to change \p End at
+  /// Align escaped newlines from change \p Start to change \p End at
   /// the specified \p Column.
   void alignEscapedNewlines(unsigned Start, unsigned End, unsigned Column);
 
-  /// \brief Fill \c Replaces with the replacements for all effective changes.
+  /// Fill \c Replaces with the replacements for all effective changes.
   void generateChanges();
 
-  /// \brief Stores \p Text as the replacement for the whitespace in \p Range.
+  /// Stores \p Text as the replacement for the whitespace in \p Range.
   void storeReplacement(SourceRange Range, StringRef Text);
   void appendNewlineText(std::string &Text, unsigned Newlines);
   void appendEscapedNewlineText(std::string &Text, unsigned Newlines,
Index: cfe/trunk/lib/Format/WhitespaceManager.cpp
===================================================================
--- cfe/trunk/lib/Format/WhitespaceManager.cpp
+++ cfe/trunk/lib/Format/WhitespaceManager.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements WhitespaceManager class.
+/// This file implements WhitespaceManager class.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Frontend/ASTUnit.cpp
===================================================================
--- cfe/trunk/lib/Frontend/ASTUnit.cpp
+++ cfe/trunk/lib/Frontend/ASTUnit.cpp
@@ -151,7 +151,7 @@
   return true;
 }
 
-/// \brief Get a source buffer for \p MainFilePath, handling all file-to-file
+/// Get a source buffer for \p MainFilePath, handling all file-to-file
 /// and file-to-buffer remappings inside \p Invocation.
 static std::unique_ptr<llvm::MemoryBuffer>
 getBufferForFileHandlingRemapping(const CompilerInvocation &Invocation,
@@ -226,13 +226,13 @@
   llvm::DeleteContainerSeconds(FileDecls);
 }
 
-/// \brief After failing to build a precompiled preamble (due to
+/// After failing to build a precompiled preamble (due to
 /// errors in the source that occurs in the preamble), the number of
 /// reparses during which we'll skip even trying to precompile the
 /// preamble.
 const unsigned DefaultPreambleRebuildInterval = 5;
 
-/// \brief Tracks the number of ASTUnit objects that are currently active.
+/// Tracks the number of ASTUnit objects that are currently active.
 ///
 /// Used for debugging purposes only.
 static std::atomic<unsigned> ActiveASTUnitObjects;
@@ -274,7 +274,7 @@
   this->PP = std::move(PP);
 }
 
-/// \brief Determine the set of code-completion contexts in which this
+/// Determine the set of code-completion contexts in which this
 /// declaration should be shown.
 static unsigned getDeclShowContexts(const NamedDecl *ND,
                                     const LangOptions &LangOpts,
@@ -504,7 +504,7 @@
 
 namespace {
 
-/// \brief Gathers information from ASTReader that will be used to initialize
+/// Gathers information from ASTReader that will be used to initialize
 /// a Preprocessor.
 class ASTInfoCollector : public ASTReaderListener {
   Preprocessor &PP;
@@ -601,7 +601,7 @@
   }
 };
 
-/// \brief Diagnostic consumer that saves each diagnostic it is given.
+/// Diagnostic consumer that saves each diagnostic it is given.
 class StoredDiagnosticConsumer : public DiagnosticConsumer {
   SmallVectorImpl<StoredDiagnostic> *StoredDiags;
   SmallVectorImpl<ASTUnit::StandaloneDiagnostic> *StandaloneDiags;
@@ -628,7 +628,7 @@
                         const Diagnostic &Info) override;
 };
 
-/// \brief RAII object that optionally captures diagnostics, if
+/// RAII object that optionally captures diagnostics, if
 /// there is no diagnostic client to capture them already.
 class CaptureDroppedDiagnostics {
   DiagnosticsEngine &Diags;
@@ -715,7 +715,7 @@
   return nullptr;
 }
 
-/// \brief Configure the diagnostics object for use with ASTUnit.
+/// Configure the diagnostics object for use with ASTUnit.
 void ASTUnit::ConfigureDiags(IntrusiveRefCntPtr<DiagnosticsEngine> Diags,
                              ASTUnit &AST, bool CaptureDiagnostics) {
   assert(Diags.get() && "no DiagnosticsEngine was provided");
@@ -837,14 +837,14 @@
   return AST;
 }
 
-/// \brief Add the given macro to the hash of all top-level entities.
+/// Add the given macro to the hash of all top-level entities.
 static void AddDefinedMacroToHash(const Token &MacroNameTok, unsigned &Hash) {
   Hash = llvm::djbHash(MacroNameTok.getIdentifierInfo()->getName(), Hash);
 }
 
 namespace {
 
-/// \brief Preprocessor callback class that updates a hash value with the names
+/// Preprocessor callback class that updates a hash value with the names
 /// of all macros that have been defined by the translation unit.
 class MacroDefinitionTrackerPPCallbacks : public PPCallbacks {
   unsigned &Hash;
@@ -860,7 +860,7 @@
 
 } // namespace
 
-/// \brief Add the given declaration to the hash of all top-level entities.
+/// Add the given declaration to the hash of all top-level entities.
 static void AddTopLevelDeclarationToHash(Decl *D, unsigned &Hash) {
   if (!D)
     return;
@@ -1248,7 +1248,7 @@
   return OutDiag;
 }
 
-/// \brief Attempt to build or re-use a precompiled preamble when (re-)parsing
+/// Attempt to build or re-use a precompiled preamble when (re-)parsing
 /// the source file.
 ///
 /// This routine will compute the preamble of the main source file. If a
@@ -1852,7 +1852,7 @@
 
 namespace {
 
-  /// \brief Code completion consumer that combines the cached code-completion
+  /// Code completion consumer that combines the cached code-completion
   /// results from an ASTUnit with the code-completion results provided to it,
   /// then passes the result on to
   class AugmentedCodeCompleteConsumer : public CodeCompleteConsumer {
@@ -1909,7 +1909,7 @@
 
 } // namespace
 
-/// \brief Helper function that computes which global names are hidden by the
+/// Helper function that computes which global names are hidden by the
 /// local code-completion results.
 static void CalculateHiddenNames(const CodeCompletionContext &Context,
                                  CodeCompletionResult *Results,
@@ -2459,7 +2459,7 @@
   return SM.getMacroArgExpandedLocation(FileLoc.getLocWithOffset(Offset));
 }
 
-/// \brief If \arg Loc is a loaded location from the preamble, returns
+/// If \arg Loc is a loaded location from the preamble, returns
 /// the corresponding local location of the main file, otherwise it returns
 /// \arg Loc.
 SourceLocation ASTUnit::mapLocationFromPreamble(SourceLocation Loc) const {
@@ -2480,7 +2480,7 @@
   return Loc;
 }
 
-/// \brief If \arg Loc is a local location of the main file but inside the
+/// If \arg Loc is a local location of the main file but inside the
 /// preamble chunk, returns the corresponding loaded location from the
 /// preamble, otherwise it returns \arg Loc.
 SourceLocation ASTUnit::mapLocationToPreamble(SourceLocation Loc) const {
Index: cfe/trunk/lib/Frontend/CompilerInstance.cpp
===================================================================
--- cfe/trunk/lib/Frontend/CompilerInstance.cpp
+++ cfe/trunk/lib/Frontend/CompilerInstance.cpp
@@ -1042,7 +1042,7 @@
   return !getDiagnostics().getClient()->getNumErrors();
 }
 
-/// \brief Determine the appropriate source input kind based on language
+/// Determine the appropriate source input kind based on language
 /// options.
 static InputKind::Language getLanguageFromOptions(const LangOptions &LangOpts) {
   if (LangOpts.OpenCL)
@@ -1054,7 +1054,7 @@
   return LangOpts.CPlusPlus ? InputKind::CXX : InputKind::C;
 }
 
-/// \brief Compile a module file for the given module, using the options 
+/// Compile a module file for the given module, using the options 
 /// provided by the importing compiler instance. Returns true if the module
 /// was built without errors.
 static bool
@@ -1201,7 +1201,7 @@
   return FileMgr.getFile(PublicFilename);
 }
 
-/// \brief Compile a module file for the given module, using the options 
+/// Compile a module file for the given module, using the options 
 /// provided by the importing compiler instance. Returns true if the module
 /// was built without errors.
 static bool compileModuleImpl(CompilerInstance &ImportingInstance,
@@ -1350,7 +1350,7 @@
   }
 }
 
-/// \brief Diagnose differences between the current definition of the given
+/// Diagnose differences between the current definition of the given
 /// configuration macro and the definition provided on the command line.
 static void checkConfigMacro(Preprocessor &PP, StringRef ConfigMacro,
                              Module *Mod, SourceLocation ImportLoc) {
@@ -1408,13 +1408,13 @@
   }
 }
 
-/// \brief Write a new timestamp file with the given path.
+/// Write a new timestamp file with the given path.
 static void writeTimestampFile(StringRef TimestampFile) {
   std::error_code EC;
   llvm::raw_fd_ostream Out(TimestampFile.str(), EC, llvm::sys::fs::F_None);
 }
 
-/// \brief Prune the module cache of modules that haven't been accessed in
+/// Prune the module cache of modules that haven't been accessed in
 /// a long time.
 static void pruneModuleCache(const HeaderSearchOptions &HSOpts) {
   struct stat StatBuf;
Index: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp
@@ -395,7 +395,7 @@
   return llvm::Reloc::PIC_;
 }
 
-/// \brief Create a new Regex instance out of the string value in \p RpassArg.
+/// Create a new Regex instance out of the string value in \p RpassArg.
 /// It returns a pointer to the newly generated Regex instance.
 static std::shared_ptr<llvm::Regex>
 GenerateOptimizationRemarkRegex(DiagnosticsEngine &Diags, ArgList &Args,
Index: cfe/trunk/lib/Frontend/DiagnosticRenderer.cpp
===================================================================
--- cfe/trunk/lib/Frontend/DiagnosticRenderer.cpp
+++ cfe/trunk/lib/Frontend/DiagnosticRenderer.cpp
@@ -152,7 +152,7 @@
                         Message, None, DiagOrStoredDiag());
 }
 
-/// \brief Prints an include stack when appropriate for a particular
+/// Prints an include stack when appropriate for a particular
 /// diagnostic level and location.
 ///
 /// This routine handles all the logic of suppressing particular include
@@ -186,7 +186,7 @@
   }
 }
 
-/// \brief Helper to recursively walk up the include stack and print each layer
+/// Helper to recursively walk up the include stack and print each layer
 /// on the way back down.
 void DiagnosticRenderer::emitIncludeStackRecursively(FullSourceLoc Loc) {
   if (Loc.isInvalid()) {
@@ -216,7 +216,7 @@
   emitIncludeLocation(Loc, PLoc);
 }
 
-/// \brief Emit the module import stack associated with the current location.
+/// Emit the module import stack associated with the current location.
 void DiagnosticRenderer::emitImportStack(FullSourceLoc Loc) {
   if (Loc.isInvalid()) {
     emitModuleBuildStack(Loc.getManager());
@@ -227,7 +227,7 @@
   emitImportStackRecursively(NextImportLoc.first, NextImportLoc.second);
 }
 
-/// \brief Helper to recursively walk up the import stack and print each layer
+/// Helper to recursively walk up the import stack and print each layer
 /// on the way back down.
 void DiagnosticRenderer::emitImportStackRecursively(FullSourceLoc Loc,
                                                     StringRef ModuleName) {
@@ -245,7 +245,7 @@
   emitImportLocation(Loc, PLoc, ModuleName);
 }
 
-/// \brief Emit the module build stack, for cases where a module is (re-)built
+/// Emit the module build stack, for cases where a module is (re-)built
 /// on demand.
 void DiagnosticRenderer::emitModuleBuildStack(const SourceManager &SM) {
   ModuleBuildStack Stack = SM.getModuleBuildStack();
@@ -424,7 +424,7 @@
   emitCodeContext(Loc, Level, SpellingRanges, Hints);
 }
 
-/// \brief A helper function for emitMacroExpansion to print the
+/// A helper function for emitMacroExpansion to print the
 /// macro expansion message
 void DiagnosticRenderer::emitSingleMacroExpansion(
     FullSourceLoc Loc, DiagnosticsEngine::Level Level,
@@ -512,7 +512,7 @@
   return true;
 }
 
-/// \brief Recursively emit notes for each macro expansion and caret
+/// Recursively emit notes for each macro expansion and caret
 /// diagnostics where appropriate.
 ///
 /// Walks up the macro expansion stack printing expansion notes, the code
Index: cfe/trunk/lib/Frontend/FrontendAction.cpp
===================================================================
--- cfe/trunk/lib/Frontend/FrontendAction.cpp
+++ cfe/trunk/lib/Frontend/FrontendAction.cpp
@@ -79,7 +79,7 @@
   }
 };
 
-/// \brief Dumps deserialized declarations.
+/// Dumps deserialized declarations.
 class DeserializedDeclsDumper : public DelegatingDeserializationListener {
 public:
   explicit DeserializedDeclsDumper(ASTDeserializationListener *Previous,
@@ -96,7 +96,7 @@
   }
 };
 
-/// \brief Checks deserialized declarations and emits error if a name
+/// Checks deserialized declarations and emits error if a name
 /// matches one given in command-line using -error-on-deserialized-decl.
 class DeserializedDeclsChecker : public DelegatingDeserializationListener {
   ASTContext &Ctx;
@@ -282,7 +282,7 @@
     Includes += "}\n";
 }
 
-/// \brief Collect the set of header includes needed to construct the given 
+/// Collect the set of header includes needed to construct the given 
 /// module and update the TopHeaders file set of the module.
 ///
 /// \param Module The module we're collecting includes from.
Index: cfe/trunk/lib/Frontend/FrontendActions.cpp
===================================================================
--- cfe/trunk/lib/Frontend/FrontendActions.cpp
+++ cfe/trunk/lib/Frontend/FrontendActions.cpp
@@ -416,7 +416,7 @@
 }
 
 namespace {
-  /// \brief AST reader listener that dumps module information for a module
+  /// AST reader listener that dumps module information for a module
   /// file.
   class DumpModuleInfoListener : public ASTReaderListener {
     llvm::raw_ostream &Out;
Index: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
===================================================================
--- cfe/trunk/lib/Frontend/InitPreprocessor.cpp
+++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp
@@ -93,7 +93,7 @@
   AddImplicitInclude(Builder, OriginalFile);
 }
 
-/// \brief Add an implicit \#include using the original file used to generate
+/// Add an implicit \#include using the original file used to generate
 /// a PCH file.
 static void AddImplicitIncludePCH(MacroBuilder &Builder, Preprocessor &PP,
                                   const PCHContainerReader &PCHContainerRdr,
@@ -301,7 +301,7 @@
   return "1"; // "sometimes lock free"
 }
 
-/// \brief Add definitions required for a smooth interaction between
+/// Add definitions required for a smooth interaction between
 /// Objective-C++ automated reference counting and libstdc++ (4.2).
 static void AddObjCXXARCLibstdcxxDefines(const LangOptions &LangOpts,
                                          MacroBuilder &Builder) {
Index: cfe/trunk/lib/Frontend/LayoutOverrideSource.cpp
===================================================================
--- cfe/trunk/lib/Frontend/LayoutOverrideSource.cpp
+++ cfe/trunk/lib/Frontend/LayoutOverrideSource.cpp
@@ -15,7 +15,7 @@
 
 using namespace clang;
 
-/// \brief Parse a simple identifier.
+/// Parse a simple identifier.
 static std::string parseName(StringRef S) {
   if (S.empty() || !isIdentifierHead(S[0]))
     return "";
Index: cfe/trunk/lib/Frontend/PCHContainerOperations.cpp
===================================================================
--- cfe/trunk/lib/Frontend/PCHContainerOperations.cpp
+++ cfe/trunk/lib/Frontend/PCHContainerOperations.cpp
@@ -25,7 +25,7 @@
 
 namespace {
 
-/// \brief A PCHContainerGenerator that writes out the PCH to a flat file.
+/// A PCHContainerGenerator that writes out the PCH to a flat file.
 class RawPCHContainerGenerator : public ASTConsumer {
   std::shared_ptr<PCHBuffer> Buffer;
   std::unique_ptr<raw_pwrite_stream> OS;
Index: cfe/trunk/lib/Frontend/Rewrite/FixItRewriter.cpp
===================================================================
--- cfe/trunk/lib/Frontend/Rewrite/FixItRewriter.cpp
+++ cfe/trunk/lib/Frontend/Rewrite/FixItRewriter.cpp
@@ -194,7 +194,7 @@
   Diag(Info.getLocation(), diag::note_fixit_applied);
 }
 
-/// \brief Emit a diagnostic via the adapted diagnostic client.
+/// Emit a diagnostic via the adapted diagnostic client.
 void FixItRewriter::Diag(SourceLocation Loc, unsigned DiagID) {
   // When producing this diagnostic, we temporarily bypass ourselves,
   // clear out any current diagnostic, and let the downstream client
Index: cfe/trunk/lib/Frontend/SerializedDiagnosticPrinter.cpp
===================================================================
--- cfe/trunk/lib/Frontend/SerializedDiagnosticPrinter.cpp
+++ cfe/trunk/lib/Frontend/SerializedDiagnosticPrinter.cpp
@@ -162,131 +162,131 @@
   void finish() override;
 
 private:
-  /// \brief Build a DiagnosticsEngine to emit diagnostics about the diagnostics
+  /// Build a DiagnosticsEngine to emit diagnostics about the diagnostics
   DiagnosticsEngine *getMetaDiags();
 
-  /// \brief Remove old copies of the serialized diagnostics. This is necessary
+  /// Remove old copies of the serialized diagnostics. This is necessary
   /// so that we can detect when subprocesses write diagnostics that we should
   /// merge into our own.
   void RemoveOldDiagnostics();
 
-  /// \brief Emit the preamble for the serialized diagnostics.
+  /// Emit the preamble for the serialized diagnostics.
   void EmitPreamble();
   
-  /// \brief Emit the BLOCKINFO block.
+  /// Emit the BLOCKINFO block.
   void EmitBlockInfoBlock();
 
-  /// \brief Emit the META data block.
+  /// Emit the META data block.
   void EmitMetaBlock();
 
-  /// \brief Start a DIAG block.
+  /// Start a DIAG block.
   void EnterDiagBlock();
 
-  /// \brief End a DIAG block.
+  /// End a DIAG block.
   void ExitDiagBlock();
 
-  /// \brief Emit a DIAG record.
+  /// Emit a DIAG record.
   void EmitDiagnosticMessage(FullSourceLoc Loc, PresumedLoc PLoc,
                              DiagnosticsEngine::Level Level, StringRef Message,
                              DiagOrStoredDiag D);
 
-  /// \brief Emit FIXIT and SOURCE_RANGE records for a diagnostic.
+  /// Emit FIXIT and SOURCE_RANGE records for a diagnostic.
   void EmitCodeContext(SmallVectorImpl<CharSourceRange> &Ranges,
                        ArrayRef<FixItHint> Hints,
                        const SourceManager &SM);
 
-  /// \brief Emit a record for a CharSourceRange.
+  /// Emit a record for a CharSourceRange.
   void EmitCharSourceRange(CharSourceRange R, const SourceManager &SM);
   
-  /// \brief Emit the string information for the category.
+  /// Emit the string information for the category.
   unsigned getEmitCategory(unsigned category = 0);
   
-  /// \brief Emit the string information for diagnostic flags.
+  /// Emit the string information for diagnostic flags.
   unsigned getEmitDiagnosticFlag(DiagnosticsEngine::Level DiagLevel,
                                  unsigned DiagID = 0);
 
   unsigned getEmitDiagnosticFlag(StringRef DiagName);
 
-  /// \brief Emit (lazily) the file string and retrieved the file identifier.
+  /// Emit (lazily) the file string and retrieved the file identifier.
   unsigned getEmitFile(const char *Filename);
 
-  /// \brief Add SourceLocation information the specified record.
+  /// Add SourceLocation information the specified record.
   void AddLocToRecord(FullSourceLoc Loc, PresumedLoc PLoc,
                       RecordDataImpl &Record, unsigned TokSize = 0);
 
-  /// \brief Add SourceLocation information the specified record.
+  /// Add SourceLocation information the specified record.
   void AddLocToRecord(FullSourceLoc Loc, RecordDataImpl &Record,
                       unsigned TokSize = 0) {
     AddLocToRecord(Loc, Loc.hasManager() ? Loc.getPresumedLoc() : PresumedLoc(),
                    Record, TokSize);
   }
 
-  /// \brief Add CharSourceRange information the specified record.
+  /// Add CharSourceRange information the specified record.
   void AddCharSourceRangeToRecord(CharSourceRange R, RecordDataImpl &Record,
                                   const SourceManager &SM);
 
-  /// \brief Language options, which can differ from one clone of this client
+  /// Language options, which can differ from one clone of this client
   /// to another.
   const LangOptions *LangOpts;
 
-  /// \brief Whether this is the original instance (rather than one of its
+  /// Whether this is the original instance (rather than one of its
   /// clones), responsible for writing the file at the end.
   bool OriginalInstance;
 
-  /// \brief Whether this instance should aggregate diagnostics that are
+  /// Whether this instance should aggregate diagnostics that are
   /// generated from child processes.
   bool MergeChildRecords;
 
-  /// \brief State that is shared among the various clones of this diagnostic
+  /// State that is shared among the various clones of this diagnostic
   /// consumer.
   struct SharedState {
     SharedState(StringRef File, DiagnosticOptions *Diags)
         : DiagOpts(Diags), Stream(Buffer), OutputFile(File.str()),
           EmittedAnyDiagBlocks(false) {}
 
-    /// \brief Diagnostic options.
+    /// Diagnostic options.
     IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
 
-    /// \brief The byte buffer for the serialized content.
+    /// The byte buffer for the serialized content.
     SmallString<1024> Buffer;
 
-    /// \brief The BitStreamWriter for the serialized diagnostics.
+    /// The BitStreamWriter for the serialized diagnostics.
     llvm::BitstreamWriter Stream;
 
-    /// \brief The name of the diagnostics file.
+    /// The name of the diagnostics file.
     std::string OutputFile;
 
-    /// \brief The set of constructed record abbreviations.
+    /// The set of constructed record abbreviations.
     AbbreviationMap Abbrevs;
 
-    /// \brief A utility buffer for constructing record content.
+    /// A utility buffer for constructing record content.
     RecordData Record;
 
-    /// \brief A text buffer for rendering diagnostic text.
+    /// A text buffer for rendering diagnostic text.
     SmallString<256> diagBuf;
 
-    /// \brief The collection of diagnostic categories used.
+    /// The collection of diagnostic categories used.
     llvm::DenseSet<unsigned> Categories;
 
-    /// \brief The collection of files used.
+    /// The collection of files used.
     llvm::DenseMap<const char *, unsigned> Files;
 
     typedef llvm::DenseMap<const void *, std::pair<unsigned, StringRef> >
     DiagFlagsTy;
 
-    /// \brief Map for uniquing strings.
+    /// Map for uniquing strings.
     DiagFlagsTy DiagFlags;
 
-    /// \brief Whether we have already started emission of any DIAG blocks. Once
+    /// Whether we have already started emission of any DIAG blocks. Once
     /// this becomes \c true, we never close a DIAG block until we know that we're
     /// starting another one or we're done.
     bool EmittedAnyDiagBlocks;
 
-    /// \brief Engine for emitting diagnostics about the diagnostics.
+    /// Engine for emitting diagnostics about the diagnostics.
     std::unique_ptr<DiagnosticsEngine> MetaDiagnostics;
   };
 
-  /// \brief State shared among the various clones of this diagnostic consumer.
+  /// State shared among the various clones of this diagnostic consumer.
   std::shared_ptr<SharedState> State;
 };
 } // end anonymous namespace
@@ -305,7 +305,7 @@
 // Serialization methods.
 //===----------------------------------------------------------------------===//
 
-/// \brief Emits a block ID in the BLOCKINFO block.
+/// Emits a block ID in the BLOCKINFO block.
 static void EmitBlockID(unsigned ID, const char *Name,
                         llvm::BitstreamWriter &Stream,
                         RecordDataImpl &Record) {
@@ -325,7 +325,7 @@
   Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_BLOCKNAME, Record);
 }
 
-/// \brief Emits a record ID in the BLOCKINFO block.
+/// Emits a record ID in the BLOCKINFO block.
 static void EmitRecordID(unsigned ID, const char *Name,
                          llvm::BitstreamWriter &Stream,
                          RecordDataImpl &Record){
@@ -395,7 +395,7 @@
                                      State->Record);
 }
 
-/// \brief Emits the preamble of the diagnostics file.
+/// Emits the preamble of the diagnostics file.
 void SDiagsWriter::EmitPreamble() {
   // Emit the file header.
   State->Stream.Emit((unsigned)'D', 8);
Index: cfe/trunk/lib/Frontend/TextDiagnostic.cpp
===================================================================
--- cfe/trunk/lib/Frontend/TextDiagnostic.cpp
+++ cfe/trunk/lib/Frontend/TextDiagnostic.cpp
@@ -42,7 +42,7 @@
 static const enum raw_ostream::Colors savedColor =
   raw_ostream::SAVEDCOLOR;
 
-/// \brief Add highlights to differences in template strings.
+/// Add highlights to differences in template strings.
 static void applyTemplateHighlighting(raw_ostream &OS, StringRef Str,
                                       bool &Normal, bool Bold) {
   while (1) {
@@ -63,7 +63,7 @@
   }
 }
 
-/// \brief Number of spaces to indent when word-wrapping.
+/// Number of spaces to indent when word-wrapping.
 const unsigned WordWrapIndentation = 6;
 
 static int bytesSincePreviousTabOrLineBegin(StringRef SourceLine, size_t i) {
@@ -76,7 +76,7 @@
   return bytes;
 }
 
-/// \brief returns a printable representation of first item from input range
+/// returns a printable representation of first item from input range
 ///
 /// This function returns a printable representation of the next item in a line
 ///  of source. If the next byte begins a valid and printable character, that
@@ -269,14 +269,14 @@
   int columns() const { return m_byteToColumn.back(); }
   int bytes() const { return m_columnToByte.back(); }
 
-  /// \brief Map a byte to the column which it is at the start of, or return -1
+  /// Map a byte to the column which it is at the start of, or return -1
   /// if it is not at the start of a column (for a UTF-8 trailing byte).
   int byteToColumn(int n) const {
     assert(0<=n && n<static_cast<int>(m_byteToColumn.size()));
     return m_byteToColumn[n];
   }
 
-  /// \brief Map a byte to the first column which contains it.
+  /// Map a byte to the first column which contains it.
   int byteToContainingColumn(int N) const {
     assert(0 <= N && N < static_cast<int>(m_byteToColumn.size()));
     while (m_byteToColumn[N] == -1)
@@ -284,7 +284,7 @@
     return m_byteToColumn[N];
   }
 
-  /// \brief Map a column to the byte which starts the column, or return -1 if
+  /// Map a column to the byte which starts the column, or return -1 if
   /// the column the second or subsequent column of an expanded tab or similar
   /// multi-column entity.
   int columnToByte(int n) const {
@@ -292,14 +292,14 @@
     return m_columnToByte[n];
   }
 
-  /// \brief Map from a byte index to the next byte which starts a column.
+  /// Map from a byte index to the next byte which starts a column.
   int startOfNextColumn(int N) const {
     assert(0 <= N && N < static_cast<int>(m_byteToColumn.size() - 1));
     while (byteToColumn(++N) == -1) {}
     return N;
   }
 
-  /// \brief Map from a byte index to the previous byte which starts a column.
+  /// Map from a byte index to the previous byte which starts a column.
   int startOfPreviousColumn(int N) const {
     assert(0 < N && N < static_cast<int>(m_byteToColumn.size()));
     while (byteToColumn(--N) == -1) {}
@@ -317,7 +317,7 @@
 };
 } // end anonymous namespace
 
-/// \brief When the source code line we want to print is too long for
+/// When the source code line we want to print is too long for
 /// the terminal, select the "interesting" region.
 static void selectInterestingSourceRegion(std::string &SourceLine,
                                           std::string &CaretLine,
@@ -507,7 +507,7 @@
   }
 }
 
-/// \brief Skip over whitespace in the string, starting at the given
+/// Skip over whitespace in the string, starting at the given
 /// index.
 ///
 /// \returns The index of the first non-whitespace character that is
@@ -519,7 +519,7 @@
   return Idx;
 }
 
-/// \brief If the given character is the start of some kind of
+/// If the given character is the start of some kind of
 /// balanced punctuation (e.g., quotes or parentheses), return the
 /// character that will terminate the punctuation.
 ///
@@ -539,7 +539,7 @@
   return 0;
 }
 
-/// \brief Find the end of the word starting at the given offset
+/// Find the end of the word starting at the given offset
 /// within a string.
 ///
 /// \returns the index pointing one character past the end of the
@@ -596,7 +596,7 @@
   return findEndOfWord(Start + 1, Str, Length, Column + 1, Columns);
 }
 
-/// \brief Print the given string to a stream, word-wrapping it to
+/// Print the given string to a stream, word-wrapping it to
 /// some number of columns in the process.
 ///
 /// \param OS the stream to which the word-wrapping string will be
@@ -777,7 +777,7 @@
   OS << Filename;
 }
 
-/// \brief Print out the file/line/column information and include trace.
+/// Print out the file/line/column information and include trace.
 ///
 /// This method handlen the emission of the diagnostic location information.
 /// This includes extracting as much location information as is present for
@@ -913,7 +913,7 @@
     OS << "While building module '" << ModuleName << "':\n";
 }
 
-/// \brief Find the suitable set of lines to show to include a set of ranges.
+/// Find the suitable set of lines to show to include a set of ranges.
 static llvm::Optional<std::pair<unsigned, unsigned>>
 findLinesForRange(const CharSourceRange &R, FileID FID,
                   const SourceManager &SM) {
@@ -963,7 +963,7 @@
   return A;
 }
 
-/// \brief Highlight a SourceRange (with ~'s) for any characters on LineNo.
+/// Highlight a SourceRange (with ~'s) for any characters on LineNo.
 static void highlightRange(const CharSourceRange &R,
                            unsigned LineNo, FileID FID,
                            const SourceColumnMap &map,
@@ -1110,7 +1110,7 @@
   return FixItInsertionLine;
 }
 
-/// \brief Emit a code snippet and caret line.
+/// Emit a code snippet and caret line.
 ///
 /// This routine emits a single line's code snippet and caret line..
 ///
Index: cfe/trunk/lib/Frontend/TextDiagnosticPrinter.cpp
===================================================================
--- cfe/trunk/lib/Frontend/TextDiagnosticPrinter.cpp
+++ cfe/trunk/lib/Frontend/TextDiagnosticPrinter.cpp
@@ -44,7 +44,7 @@
   TextDiag.reset();
 }
 
-/// \brief Print any diagnostic option information to a raw_ostream.
+/// Print any diagnostic option information to a raw_ostream.
 ///
 /// This implements all of the logic for adding diagnostic options to a message
 /// (via OS). Each relevant option is comma separated and all are enclosed in
Index: cfe/trunk/lib/Frontend/VerifyDiagnosticConsumer.cpp
===================================================================
--- cfe/trunk/lib/Frontend/VerifyDiagnosticConsumer.cpp
+++ cfe/trunk/lib/Frontend/VerifyDiagnosticConsumer.cpp
@@ -80,7 +80,7 @@
   VerifyFileTracker(VerifyDiagnosticConsumer &Verify, SourceManager &SM)
       : Verify(Verify), SM(SM) {}
 
-  /// \brief Hook into the preprocessor and update the list of parsed
+  /// Hook into the preprocessor and update the list of parsed
   /// files when the preprocessor indicates a new file is entered.
   void FileChanged(SourceLocation Loc, FileChangeReason Reason,
                    SrcMgr::CharacteristicKind FileType,
@@ -656,7 +656,7 @@
 }
 
 #ifndef NDEBUG
-/// \brief Lex the specified source file to determine whether it contains
+/// Lex the specified source file to determine whether it contains
 /// any expected-* directives.  As a Lexer is used rather than a full-blown
 /// Preprocessor, directives inside skipped #if blocks will still be found.
 ///
@@ -694,7 +694,7 @@
 }
 #endif // !NDEBUG
 
-/// \brief Takes a list of diagnostics that have been generated but not matched
+/// Takes a list of diagnostics that have been generated but not matched
 /// by an expected-* directive and produces a diagnostic to the user from this.
 static unsigned PrintUnexpected(DiagnosticsEngine &Diags, SourceManager *SourceMgr,
                                 const_diag_iterator diag_begin,
@@ -722,7 +722,7 @@
   return std::distance(diag_begin, diag_end);
 }
 
-/// \brief Takes a list of diagnostics that were expected to have been generated
+/// Takes a list of diagnostics that were expected to have been generated
 /// but were not and produces a diagnostic to the user from this.
 static unsigned PrintExpected(DiagnosticsEngine &Diags,
                               SourceManager &SourceMgr,
@@ -753,7 +753,7 @@
   return DL.size();
 }
 
-/// \brief Determine whether two source locations come from the same file.
+/// Determine whether two source locations come from the same file.
 static bool IsFromSameFile(SourceManager &SM, SourceLocation DirectiveLoc,
                            SourceLocation DiagnosticLoc) {
   while (DiagnosticLoc.isMacroID())
Index: cfe/trunk/lib/Headers/__wmmintrin_aes.h
===================================================================
--- cfe/trunk/lib/Headers/__wmmintrin_aes.h
+++ cfe/trunk/lib/Headers/__wmmintrin_aes.h
@@ -28,7 +28,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("aes")))
 
-/// \brief Performs a single round of AES encryption using the Equivalent
+/// Performs a single round of AES encryption using the Equivalent
 ///    Inverse Cipher, transforming the state value from the first source
 ///    operand using a 128-bit round key value contained in the second source
 ///    operand, and writes the result to the destination.
@@ -48,7 +48,7 @@
   return (__m128i)__builtin_ia32_aesenc128((__v2di)__V, (__v2di)__R);
 }
 
-/// \brief Performs the final round of AES encryption using the Equivalent
+/// Performs the final round of AES encryption using the Equivalent
 ///    Inverse Cipher, transforming the state value from the first source
 ///    operand using a 128-bit round key value contained in the second source
 ///    operand, and writes the result to the destination.
@@ -68,7 +68,7 @@
   return (__m128i)__builtin_ia32_aesenclast128((__v2di)__V, (__v2di)__R);
 }
 
-/// \brief Performs a single round of AES decryption using the Equivalent
+/// Performs a single round of AES decryption using the Equivalent
 ///    Inverse Cipher, transforming the state value from the first source
 ///    operand using a 128-bit round key value contained in the second source
 ///    operand, and writes the result to the destination.
@@ -88,7 +88,7 @@
   return (__m128i)__builtin_ia32_aesdec128((__v2di)__V, (__v2di)__R);
 }
 
-/// \brief Performs the final round of AES decryption using the Equivalent
+/// Performs the final round of AES decryption using the Equivalent
 ///    Inverse Cipher, transforming the state value from the first source
 ///    operand using a 128-bit round key value contained in the second source
 ///    operand, and writes the result to the destination.
@@ -108,7 +108,7 @@
   return (__m128i)__builtin_ia32_aesdeclast128((__v2di)__V, (__v2di)__R);
 }
 
-/// \brief Applies the AES InvMixColumns() transformation to an expanded key
+/// Applies the AES InvMixColumns() transformation to an expanded key
 ///    contained in the source operand, and writes the result to the
 ///    destination.
 ///
@@ -125,7 +125,7 @@
   return (__m128i)__builtin_ia32_aesimc128((__v2di)__V);
 }
 
-/// \brief Generates a round key for AES encryption, operating on 128-bit data
+/// Generates a round key for AES encryption, operating on 128-bit data
 ///    specified in the first source operand and using an 8-bit round constant
 ///    specified by the second source operand, and writes the result to the
 ///    destination.
Index: cfe/trunk/lib/Headers/__wmmintrin_pclmul.h
===================================================================
--- cfe/trunk/lib/Headers/__wmmintrin_pclmul.h
+++ cfe/trunk/lib/Headers/__wmmintrin_pclmul.h
@@ -23,7 +23,7 @@
 #ifndef __WMMINTRIN_PCLMUL_H
 #define __WMMINTRIN_PCLMUL_H
 
-/// \brief Multiplies two 64-bit integer values, which are selected from source
+/// Multiplies two 64-bit integer values, which are selected from source
 ///    operands using the immediate-value operand. The multiplication is a
 ///    carry-less multiplication, and the 128-bit integer product is stored in
 ///    the destination.
Index: cfe/trunk/lib/Headers/ammintrin.h
===================================================================
--- cfe/trunk/lib/Headers/ammintrin.h
+++ cfe/trunk/lib/Headers/ammintrin.h
@@ -29,7 +29,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse4a")))
 
-/// \brief Extracts the specified bits from the lower 64 bits of the 128-bit
+/// Extracts the specified bits from the lower 64 bits of the 128-bit
 ///    integer vector operand at the index \a idx and of the length \a len.
 ///
 /// \headerfile <x86intrin.h>
@@ -57,7 +57,7 @@
   ((__m128i)__builtin_ia32_extrqi((__v2di)(__m128i)(x), \
                                   (char)(len), (char)(idx)))
 
-/// \brief Extracts the specified bits from the lower 64 bits of the 128-bit
+/// Extracts the specified bits from the lower 64 bits of the 128-bit
 ///    integer vector operand at the index and of the length specified by
 ///    \a __y.
 ///
@@ -82,7 +82,7 @@
   return (__m128i)__builtin_ia32_extrq((__v2di)__x, (__v16qi)__y);
 }
 
-/// \brief Inserts bits of a specified length from the source integer vector
+/// Inserts bits of a specified length from the source integer vector
 ///    \a y into the lower 64 bits of the destination integer vector \a x at
 ///    the index \a idx and of the length \a len.
 ///
@@ -120,7 +120,7 @@
                                     (__v2di)(__m128i)(y), \
                                     (char)(len), (char)(idx)))
 
-/// \brief Inserts bits of a specified length from the source integer vector
+/// Inserts bits of a specified length from the source integer vector
 ///    \a __y into the lower 64 bits of the destination integer vector \a __x
 ///    at the index and of the length specified by \a __y.
 ///
@@ -152,7 +152,7 @@
   return (__m128i)__builtin_ia32_insertq((__v2di)__x, (__v2di)__y);
 }
 
-/// \brief Stores a 64-bit double-precision value in a 64-bit memory location.
+/// Stores a 64-bit double-precision value in a 64-bit memory location.
 ///    To minimize caching, the data is flagged as non-temporal (unlikely to be
 ///    used again soon).
 ///
@@ -170,7 +170,7 @@
   __builtin_ia32_movntsd(__p, (__v2df)__a);
 }
 
-/// \brief Stores a 32-bit single-precision floating-point value in a 32-bit
+/// Stores a 32-bit single-precision floating-point value in a 32-bit
 ///    memory location. To minimize caching, the data is flagged as
 ///    non-temporal (unlikely to be used again soon).
 ///
Index: cfe/trunk/lib/Headers/avx512fintrin.h
===================================================================
--- cfe/trunk/lib/Headers/avx512fintrin.h
+++ cfe/trunk/lib/Headers/avx512fintrin.h
@@ -520,7 +520,7 @@
   return (int)__a;
 }
 
-/// \brief Constructs a 512-bit floating-point vector of [8 x double] from a
+/// Constructs a 512-bit floating-point vector of [8 x double] from a
 ///    128-bit floating-point vector of [2 x double]. The lower 128 bits
 ///    contain the value of the source vector. The upper 384 bits are set
 ///    to zero.
@@ -539,7 +539,7 @@
   return __builtin_shufflevector((__v2df)__a, (__v2df)_mm_setzero_pd(), 0, 1, 2, 3, 2, 3, 2, 3);
 }
 
-/// \brief Constructs a 512-bit floating-point vector of [8 x double] from a
+/// Constructs a 512-bit floating-point vector of [8 x double] from a
 ///    256-bit floating-point vector of [4 x double]. The lower 256 bits
 ///    contain the value of the source vector. The upper 256 bits are set
 ///    to zero.
@@ -558,7 +558,7 @@
   return __builtin_shufflevector((__v4df)__a, (__v4df)_mm256_setzero_pd(), 0, 1, 2, 3, 4, 5, 6, 7);
 }
 
-/// \brief Constructs a 512-bit floating-point vector of [16 x float] from a
+/// Constructs a 512-bit floating-point vector of [16 x float] from a
 ///    128-bit floating-point vector of [4 x float]. The lower 128 bits contain
 ///    the value of the source vector. The upper 384 bits are set to zero.
 ///
@@ -576,7 +576,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)_mm_setzero_ps(), 0, 1, 2, 3, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7);
 }
 
-/// \brief Constructs a 512-bit floating-point vector of [16 x float] from a
+/// Constructs a 512-bit floating-point vector of [16 x float] from a
 ///    256-bit floating-point vector of [8 x float]. The lower 256 bits contain
 ///    the value of the source vector. The upper 256 bits are set to zero.
 ///
@@ -594,7 +594,7 @@
   return __builtin_shufflevector((__v8sf)__a, (__v8sf)_mm256_setzero_ps(), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
 }
 
-/// \brief Constructs a 512-bit integer vector from a 128-bit integer vector.
+/// Constructs a 512-bit integer vector from a 128-bit integer vector.
 ///    The lower 128 bits contain the value of the source vector. The upper
 ///    384 bits are set to zero.
 ///
@@ -612,7 +612,7 @@
   return __builtin_shufflevector((__v2di)__a, (__v2di)_mm_setzero_si128(), 0, 1, 2, 3, 2, 3, 2, 3);
 }
 
-/// \brief Constructs a 512-bit integer vector from a 256-bit integer vector.
+/// Constructs a 512-bit integer vector from a 256-bit integer vector.
 ///    The lower 256 bits contain the value of the source vector. The upper
 ///    256 bits are set to zero.
 ///
Index: cfe/trunk/lib/Headers/avxintrin.h
===================================================================
--- cfe/trunk/lib/Headers/avxintrin.h
+++ cfe/trunk/lib/Headers/avxintrin.h
@@ -53,7 +53,7 @@
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx")))
 
 /* Arithmetic */
-/// \brief Adds two 256-bit vectors of [4 x double].
+/// Adds two 256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -71,7 +71,7 @@
   return (__m256d)((__v4df)__a+(__v4df)__b);
 }
 
-/// \brief Adds two 256-bit vectors of [8 x float].
+/// Adds two 256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -89,7 +89,7 @@
   return (__m256)((__v8sf)__a+(__v8sf)__b);
 }
 
-/// \brief Subtracts two 256-bit vectors of [4 x double].
+/// Subtracts two 256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -107,7 +107,7 @@
   return (__m256d)((__v4df)__a-(__v4df)__b);
 }
 
-/// \brief Subtracts two 256-bit vectors of [8 x float].
+/// Subtracts two 256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -125,7 +125,7 @@
   return (__m256)((__v8sf)__a-(__v8sf)__b);
 }
 
-/// \brief Adds the even-indexed values and subtracts the odd-indexed values of
+/// Adds the even-indexed values and subtracts the odd-indexed values of
 ///    two 256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -144,7 +144,7 @@
   return (__m256d)__builtin_ia32_addsubpd256((__v4df)__a, (__v4df)__b);
 }
 
-/// \brief Adds the even-indexed values and subtracts the odd-indexed values of
+/// Adds the even-indexed values and subtracts the odd-indexed values of
 ///    two 256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -163,7 +163,7 @@
   return (__m256)__builtin_ia32_addsubps256((__v8sf)__a, (__v8sf)__b);
 }
 
-/// \brief Divides two 256-bit vectors of [4 x double].
+/// Divides two 256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -181,7 +181,7 @@
   return (__m256d)((__v4df)__a/(__v4df)__b);
 }
 
-/// \brief Divides two 256-bit vectors of [8 x float].
+/// Divides two 256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -199,7 +199,7 @@
   return (__m256)((__v8sf)__a/(__v8sf)__b);
 }
 
-/// \brief Compares two 256-bit vectors of [4 x double] and returns the greater
+/// Compares two 256-bit vectors of [4 x double] and returns the greater
 ///    of each pair of values.
 ///
 /// \headerfile <x86intrin.h>
@@ -218,7 +218,7 @@
   return (__m256d)__builtin_ia32_maxpd256((__v4df)__a, (__v4df)__b);
 }
 
-/// \brief Compares two 256-bit vectors of [8 x float] and returns the greater
+/// Compares two 256-bit vectors of [8 x float] and returns the greater
 ///    of each pair of values.
 ///
 /// \headerfile <x86intrin.h>
@@ -237,7 +237,7 @@
   return (__m256)__builtin_ia32_maxps256((__v8sf)__a, (__v8sf)__b);
 }
 
-/// \brief Compares two 256-bit vectors of [4 x double] and returns the lesser
+/// Compares two 256-bit vectors of [4 x double] and returns the lesser
 ///    of each pair of values.
 ///
 /// \headerfile <x86intrin.h>
@@ -256,7 +256,7 @@
   return (__m256d)__builtin_ia32_minpd256((__v4df)__a, (__v4df)__b);
 }
 
-/// \brief Compares two 256-bit vectors of [8 x float] and returns the lesser
+/// Compares two 256-bit vectors of [8 x float] and returns the lesser
 ///    of each pair of values.
 ///
 /// \headerfile <x86intrin.h>
@@ -275,7 +275,7 @@
   return (__m256)__builtin_ia32_minps256((__v8sf)__a, (__v8sf)__b);
 }
 
-/// \brief Multiplies two 256-bit vectors of [4 x double].
+/// Multiplies two 256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -293,7 +293,7 @@
   return (__m256d)((__v4df)__a * (__v4df)__b);
 }
 
-/// \brief Multiplies two 256-bit vectors of [8 x float].
+/// Multiplies two 256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -311,7 +311,7 @@
   return (__m256)((__v8sf)__a * (__v8sf)__b);
 }
 
-/// \brief Calculates the square roots of the values in a 256-bit vector of
+/// Calculates the square roots of the values in a 256-bit vector of
 ///    [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -328,7 +328,7 @@
   return (__m256d)__builtin_ia32_sqrtpd256((__v4df)__a);
 }
 
-/// \brief Calculates the square roots of the values in a 256-bit vector of
+/// Calculates the square roots of the values in a 256-bit vector of
 ///    [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -345,7 +345,7 @@
   return (__m256)__builtin_ia32_sqrtps256((__v8sf)__a);
 }
 
-/// \brief Calculates the reciprocal square roots of the values in a 256-bit
+/// Calculates the reciprocal square roots of the values in a 256-bit
 ///    vector of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -362,7 +362,7 @@
   return (__m256)__builtin_ia32_rsqrtps256((__v8sf)__a);
 }
 
-/// \brief Calculates the reciprocals of the values in a 256-bit vector of
+/// Calculates the reciprocals of the values in a 256-bit vector of
 ///    [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -379,7 +379,7 @@
   return (__m256)__builtin_ia32_rcpps256((__v8sf)__a);
 }
 
-/// \brief Rounds the values in a 256-bit vector of [4 x double] as specified
+/// Rounds the values in a 256-bit vector of [4 x double] as specified
 ///    by the byte operand. The source values are rounded to integer values and
 ///    returned as 64-bit double-precision floating-point values.
 ///
@@ -411,7 +411,7 @@
 #define _mm256_round_pd(V, M) __extension__ ({ \
     (__m256d)__builtin_ia32_roundpd256((__v4df)(__m256d)(V), (M)); })
 
-/// \brief Rounds the values stored in a 256-bit vector of [8 x float] as
+/// Rounds the values stored in a 256-bit vector of [8 x float] as
 ///    specified by the byte operand. The source values are rounded to integer
 ///    values and returned as floating-point values.
 ///
@@ -443,7 +443,7 @@
 #define _mm256_round_ps(V, M) __extension__ ({ \
   (__m256)__builtin_ia32_roundps256((__v8sf)(__m256)(V), (M)); })
 
-/// \brief Rounds up the values stored in a 256-bit vector of [4 x double]. The
+/// Rounds up the values stored in a 256-bit vector of [4 x double]. The
 ///    source values are rounded up to integer values and returned as 64-bit
 ///    double-precision floating-point values.
 ///
@@ -460,7 +460,7 @@
 /// \returns A 256-bit vector of [4 x double] containing the rounded up values.
 #define _mm256_ceil_pd(V)  _mm256_round_pd((V), _MM_FROUND_CEIL)
 
-/// \brief Rounds down the values stored in a 256-bit vector of [4 x double].
+/// Rounds down the values stored in a 256-bit vector of [4 x double].
 ///    The source values are rounded down to integer values and returned as
 ///    64-bit double-precision floating-point values.
 ///
@@ -478,7 +478,7 @@
 ///    values.
 #define _mm256_floor_pd(V) _mm256_round_pd((V), _MM_FROUND_FLOOR)
 
-/// \brief Rounds up the values stored in a 256-bit vector of [8 x float]. The
+/// Rounds up the values stored in a 256-bit vector of [8 x float]. The
 ///    source values are rounded up to integer values and returned as
 ///    floating-point values.
 ///
@@ -495,7 +495,7 @@
 /// \returns A 256-bit vector of [8 x float] containing the rounded up values.
 #define _mm256_ceil_ps(V)  _mm256_round_ps((V), _MM_FROUND_CEIL)
 
-/// \brief Rounds down the values stored in a 256-bit vector of [8 x float]. The
+/// Rounds down the values stored in a 256-bit vector of [8 x float]. The
 ///    source values are rounded down to integer values and returned as
 ///    floating-point values.
 ///
@@ -513,7 +513,7 @@
 #define _mm256_floor_ps(V) _mm256_round_ps((V), _MM_FROUND_FLOOR)
 
 /* Logical */
-/// \brief Performs a bitwise AND of two 256-bit vectors of [4 x double].
+/// Performs a bitwise AND of two 256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -531,7 +531,7 @@
   return (__m256d)((__v4du)__a & (__v4du)__b);
 }
 
-/// \brief Performs a bitwise AND of two 256-bit vectors of [8 x float].
+/// Performs a bitwise AND of two 256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -549,7 +549,7 @@
   return (__m256)((__v8su)__a & (__v8su)__b);
 }
 
-/// \brief Performs a bitwise AND of two 256-bit vectors of [4 x double], using
+/// Performs a bitwise AND of two 256-bit vectors of [4 x double], using
 ///    the one's complement of the values contained in the first source operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -570,7 +570,7 @@
   return (__m256d)(~(__v4du)__a & (__v4du)__b);
 }
 
-/// \brief Performs a bitwise AND of two 256-bit vectors of [8 x float], using
+/// Performs a bitwise AND of two 256-bit vectors of [8 x float], using
 ///    the one's complement of the values contained in the first source operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -591,7 +591,7 @@
   return (__m256)(~(__v8su)__a & (__v8su)__b);
 }
 
-/// \brief Performs a bitwise OR of two 256-bit vectors of [4 x double].
+/// Performs a bitwise OR of two 256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -609,7 +609,7 @@
   return (__m256d)((__v4du)__a | (__v4du)__b);
 }
 
-/// \brief Performs a bitwise OR of two 256-bit vectors of [8 x float].
+/// Performs a bitwise OR of two 256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -627,7 +627,7 @@
   return (__m256)((__v8su)__a | (__v8su)__b);
 }
 
-/// \brief Performs a bitwise XOR of two 256-bit vectors of [4 x double].
+/// Performs a bitwise XOR of two 256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -645,7 +645,7 @@
   return (__m256d)((__v4du)__a ^ (__v4du)__b);
 }
 
-/// \brief Performs a bitwise XOR of two 256-bit vectors of [8 x float].
+/// Performs a bitwise XOR of two 256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -664,7 +664,7 @@
 }
 
 /* Horizontal arithmetic */
-/// \brief Horizontally adds the adjacent pairs of values contained in two
+/// Horizontally adds the adjacent pairs of values contained in two
 ///    256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -687,7 +687,7 @@
   return (__m256d)__builtin_ia32_haddpd256((__v4df)__a, (__v4df)__b);
 }
 
-/// \brief Horizontally adds the adjacent pairs of values contained in two
+/// Horizontally adds the adjacent pairs of values contained in two
 ///    256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -710,7 +710,7 @@
   return (__m256)__builtin_ia32_haddps256((__v8sf)__a, (__v8sf)__b);
 }
 
-/// \brief Horizontally subtracts the adjacent pairs of values contained in two
+/// Horizontally subtracts the adjacent pairs of values contained in two
 ///    256-bit vectors of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -733,7 +733,7 @@
   return (__m256d)__builtin_ia32_hsubpd256((__v4df)__a, (__v4df)__b);
 }
 
-/// \brief Horizontally subtracts the adjacent pairs of values contained in two
+/// Horizontally subtracts the adjacent pairs of values contained in two
 ///    256-bit vectors of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -757,7 +757,7 @@
 }
 
 /* Vector permutations */
-/// \brief Copies the values in a 128-bit vector of [2 x double] as specified
+/// Copies the values in a 128-bit vector of [2 x double] as specified
 ///    by the 128-bit integer vector operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -786,7 +786,7 @@
   return (__m128d)__builtin_ia32_vpermilvarpd((__v2df)__a, (__v2di)__c);
 }
 
-/// \brief Copies the values in a 256-bit vector of [4 x double] as specified
+/// Copies the values in a 256-bit vector of [4 x double] as specified
 ///    by the 256-bit integer vector operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -825,7 +825,7 @@
   return (__m256d)__builtin_ia32_vpermilvarpd256((__v4df)__a, (__v4di)__c);
 }
 
-/// \brief Copies the values stored in a 128-bit vector of [4 x float] as
+/// Copies the values stored in a 128-bit vector of [4 x float] as
 ///    specified by the 128-bit integer vector operand.
 /// \headerfile <x86intrin.h>
 ///
@@ -879,7 +879,7 @@
   return (__m128)__builtin_ia32_vpermilvarps((__v4sf)__a, (__v4si)__c);
 }
 
-/// \brief Copies the values stored in a 256-bit vector of [8 x float] as
+/// Copies the values stored in a 256-bit vector of [8 x float] as
 ///    specified by the 256-bit integer vector operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -970,7 +970,7 @@
   return (__m256)__builtin_ia32_vpermilvarps256((__v8sf)__a, (__v8si)__c);
 }
 
-/// \brief Copies the values in a 128-bit vector of [2 x double] as specified
+/// Copies the values in a 128-bit vector of [2 x double] as specified
 ///    by the immediate integer operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -1002,7 +1002,7 @@
                                    (__v2df)_mm_undefined_pd(), \
                                    ((C) >> 0) & 0x1, ((C) >> 1) & 0x1); })
 
-/// \brief Copies the values in a 256-bit vector of [4 x double] as specified by
+/// Copies the values in a 256-bit vector of [4 x double] as specified by
 ///    the immediate integer operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -1047,7 +1047,7 @@
                                    2 + (((C) >> 2) & 0x1), \
                                    2 + (((C) >> 3) & 0x1)); })
 
-/// \brief Copies the values in a 128-bit vector of [4 x float] as specified by
+/// Copies the values in a 128-bit vector of [4 x float] as specified by
 ///    the immediate integer operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -1106,7 +1106,7 @@
                                   ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
                                   ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
 
-/// \brief Copies the values in a 256-bit vector of [8 x float] as specified by
+/// Copies the values in a 256-bit vector of [8 x float] as specified by
 ///    the immediate integer operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -1207,7 +1207,7 @@
                                   4 + (((C) >> 4) & 0x3), \
                                   4 + (((C) >> 6) & 0x3)); })
 
-/// \brief Permutes 128-bit data values stored in two 256-bit vectors of
+/// Permutes 128-bit data values stored in two 256-bit vectors of
 ///    [4 x double], as specified by the immediate integer operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -1248,7 +1248,7 @@
   (__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)(__m256d)(V1), \
                                            (__v4df)(__m256d)(V2), (M)); })
 
-/// \brief Permutes 128-bit data values stored in two 256-bit vectors of
+/// Permutes 128-bit data values stored in two 256-bit vectors of
 ///    [8 x float], as specified by the immediate integer operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -1289,7 +1289,7 @@
   (__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)(__m256)(V1), \
                                           (__v8sf)(__m256)(V2), (M)); })
 
-/// \brief Permutes 128-bit data values stored in two 256-bit integer vectors,
+/// Permutes 128-bit data values stored in two 256-bit integer vectors,
 ///    as specified by the immediate integer operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -1330,7 +1330,7 @@
                                            (__v8si)(__m256i)(V2), (M)); })
 
 /* Vector Blend */
-/// \brief Merges 64-bit double-precision data values stored in either of the
+/// Merges 64-bit double-precision data values stored in either of the
 ///    two 256-bit vectors of [4 x double], as specified by the immediate
 ///    integer operand.
 ///
@@ -1362,7 +1362,7 @@
                                    (((M) & 0x04) ? 6 : 2), \
                                    (((M) & 0x08) ? 7 : 3)); })
 
-/// \brief Merges 32-bit single-precision data values stored in either of the
+/// Merges 32-bit single-precision data values stored in either of the
 ///    two 256-bit vectors of [8 x float], as specified by the immediate
 ///    integer operand.
 ///
@@ -1398,7 +1398,7 @@
                                   (((M) & 0x40) ? 14 : 6), \
                                   (((M) & 0x80) ? 15 : 7)); })
 
-/// \brief Merges 64-bit double-precision data values stored in either of the
+/// Merges 64-bit double-precision data values stored in either of the
 ///    two 256-bit vectors of [4 x double], as specified by the 256-bit vector
 ///    operand.
 ///
@@ -1426,7 +1426,7 @@
     (__v4df)__a, (__v4df)__b, (__v4df)__c);
 }
 
-/// \brief Merges 32-bit single-precision data values stored in either of the
+/// Merges 32-bit single-precision data values stored in either of the
 ///    two 256-bit vectors of [8 x float], as specified by the 256-bit vector
 ///    operand.
 ///
@@ -1455,7 +1455,7 @@
 }
 
 /* Vector Dot Product */
-/// \brief Computes two dot products in parallel, using the lower and upper
+/// Computes two dot products in parallel, using the lower and upper
 ///    halves of two [8 x float] vectors as input to the two computations, and
 ///    returning the two dot products in the lower and upper halves of the
 ///    [8 x float] result.
@@ -1497,7 +1497,7 @@
                                  (__v8sf)(__m256)(V2), (M)); })
 
 /* Vector shuffle */
-/// \brief Selects 8 float values from the 256-bit operands of [8 x float], as
+/// Selects 8 float values from the 256-bit operands of [8 x float], as
 ///    specified by the immediate value operand.
 ///
 ///    The four selected elements in each operand are copied to the destination
@@ -1558,7 +1558,7 @@
                                   12 + (((mask) >> 4) & 0x3), \
                                   12 + (((mask) >> 6) & 0x3)); })
 
-/// \brief Selects four double-precision values from the 256-bit operands of
+/// Selects four double-precision values from the 256-bit operands of
 ///    [4 x double], as specified by the immediate value operand.
 ///
 ///    The selected elements from the first 256-bit operand are copied to bits
@@ -1642,7 +1642,7 @@
 #define _CMP_GT_OQ    0x1e /* Greater-than (ordered, non-signaling)  */
 #define _CMP_TRUE_US  0x1f /* True (unordered, signaling)  */
 
-/// \brief Compares each of the corresponding double-precision values of two
+/// Compares each of the corresponding double-precision values of two
 ///    128-bit vectors of [2 x double], using the operation specified by the
 ///    immediate integer operand.
 ///
@@ -1702,7 +1702,7 @@
   (__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), \
                                 (__v2df)(__m128d)(b), (c)); })
 
-/// \brief Compares each of the corresponding values of two 128-bit vectors of
+/// Compares each of the corresponding values of two 128-bit vectors of
 ///    [4 x float], using the operation specified by the immediate integer
 ///    operand.
 ///
@@ -1762,7 +1762,7 @@
   (__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), \
                                (__v4sf)(__m128)(b), (c)); })
 
-/// \brief Compares each of the corresponding double-precision values of two
+/// Compares each of the corresponding double-precision values of two
 ///    256-bit vectors of [4 x double], using the operation specified by the
 ///    immediate integer operand.
 ///
@@ -1822,7 +1822,7 @@
   (__m256d)__builtin_ia32_cmppd256((__v4df)(__m256d)(a), \
                                    (__v4df)(__m256d)(b), (c)); })
 
-/// \brief Compares each of the corresponding values of two 256-bit vectors of
+/// Compares each of the corresponding values of two 256-bit vectors of
 ///    [8 x float], using the operation specified by the immediate integer
 ///    operand.
 ///
@@ -1882,7 +1882,7 @@
   (__m256)__builtin_ia32_cmpps256((__v8sf)(__m256)(a), \
                                   (__v8sf)(__m256)(b), (c)); })
 
-/// \brief Compares each of the corresponding scalar double-precision values of
+/// Compares each of the corresponding scalar double-precision values of
 ///    two 128-bit vectors of [2 x double], using the operation specified by the
 ///    immediate integer operand.
 ///
@@ -1941,7 +1941,7 @@
   (__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), \
                                 (__v2df)(__m128d)(b), (c)); })
 
-/// \brief Compares each of the corresponding scalar values of two 128-bit
+/// Compares each of the corresponding scalar values of two 128-bit
 ///    vectors of [4 x float], using the operation specified by the immediate
 ///    integer operand.
 ///
@@ -2000,7 +2000,7 @@
   (__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), \
                                (__v4sf)(__m128)(b), (c)); })
 
-/// \brief Takes a [8 x i32] vector and returns the vector element value
+/// Takes a [8 x i32] vector and returns the vector element value
 ///    indexed by the immediate constant operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2022,7 +2022,7 @@
   return __b[__imm & 7];
 }
 
-/// \brief Takes a [16 x i16] vector and returns the vector element value
+/// Takes a [16 x i16] vector and returns the vector element value
 ///    indexed by the immediate constant operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2044,7 +2044,7 @@
   return (unsigned short)__b[__imm & 15];
 }
 
-/// \brief Takes a [32 x i8] vector and returns the vector element value
+/// Takes a [32 x i8] vector and returns the vector element value
 ///    indexed by the immediate constant operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2067,7 +2067,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Takes a [4 x i64] vector and returns the vector element value
+/// Takes a [4 x i64] vector and returns the vector element value
 ///    indexed by the immediate constant operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2090,7 +2090,7 @@
 }
 #endif
 
-/// \brief Takes a [8 x i32] vector and replaces the vector element value
+/// Takes a [8 x i32] vector and replaces the vector element value
 ///    indexed by the immediate constant operand by a new value. Returns the
 ///    modified vector.
 ///
@@ -2117,7 +2117,7 @@
 }
 
 
-/// \brief Takes a [16 x i16] vector and replaces the vector element value
+/// Takes a [16 x i16] vector and replaces the vector element value
 ///    indexed by the immediate constant operand with a new value. Returns the
 ///    modified vector.
 ///
@@ -2143,7 +2143,7 @@
   return (__m256i)__c;
 }
 
-/// \brief Takes a [32 x i8] vector and replaces the vector element value
+/// Takes a [32 x i8] vector and replaces the vector element value
 ///    indexed by the immediate constant operand with a new value. Returns the
 ///    modified vector.
 ///
@@ -2170,7 +2170,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Takes a [4 x i64] vector and replaces the vector element value
+/// Takes a [4 x i64] vector and replaces the vector element value
 ///    indexed by the immediate constant operand with a new value. Returns the
 ///    modified vector.
 ///
@@ -2198,7 +2198,7 @@
 #endif
 
 /* Conversion */
-/// \brief Converts a vector of [4 x i32] into a vector of [4 x double].
+/// Converts a vector of [4 x i32] into a vector of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2213,7 +2213,7 @@
   return (__m256d)__builtin_convertvector((__v4si)__a, __v4df);
 }
 
-/// \brief Converts a vector of [8 x i32] into a vector of [8 x float].
+/// Converts a vector of [8 x i32] into a vector of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2228,7 +2228,7 @@
   return (__m256)__builtin_ia32_cvtdq2ps256((__v8si) __a);
 }
 
-/// \brief Converts a 256-bit vector of [4 x double] into a 128-bit vector of
+/// Converts a 256-bit vector of [4 x double] into a 128-bit vector of
 ///    [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2244,7 +2244,7 @@
   return (__m128)__builtin_ia32_cvtpd2ps256((__v4df) __a);
 }
 
-/// \brief Converts a vector of [8 x float] into a vector of [8 x i32].
+/// Converts a vector of [8 x float] into a vector of [8 x i32].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2259,7 +2259,7 @@
   return (__m256i)__builtin_ia32_cvtps2dq256((__v8sf) __a);
 }
 
-/// \brief Converts a 128-bit vector of [4 x float] into a 256-bit vector of [4
+/// Converts a 128-bit vector of [4 x float] into a 256-bit vector of [4
 ///    x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -2275,7 +2275,7 @@
   return (__m256d)__builtin_convertvector((__v4sf)__a, __v4df);
 }
 
-/// \brief Converts a 256-bit vector of [4 x double] into a 128-bit vector of [4
+/// Converts a 256-bit vector of [4 x double] into a 128-bit vector of [4
 ///    x i32], truncating the result by rounding towards zero when it is
 ///    inexact.
 ///
@@ -2292,7 +2292,7 @@
   return (__m128i)__builtin_ia32_cvttpd2dq256((__v4df) __a);
 }
 
-/// \brief Converts a 256-bit vector of [4 x double] into a 128-bit vector of [4
+/// Converts a 256-bit vector of [4 x double] into a 128-bit vector of [4
 ///    x i32]. When a conversion is inexact, the value returned is rounded
 ///    according to the rounding control bits in the MXCSR register.
 ///
@@ -2309,7 +2309,7 @@
   return (__m128i)__builtin_ia32_cvtpd2dq256((__v4df) __a);
 }
 
-/// \brief Converts a vector of [8 x float] into a vector of [8 x i32],
+/// Converts a vector of [8 x float] into a vector of [8 x i32],
 ///    truncating the result by rounding towards zero when it is inexact.
 ///
 /// \headerfile <x86intrin.h>
@@ -2325,7 +2325,7 @@
   return (__m256i)__builtin_ia32_cvttps2dq256((__v8sf) __a);
 }
 
-/// \brief Returns the first element of the input vector of [4 x double].
+/// Returns the first element of the input vector of [4 x double].
 ///
 /// \headerfile <avxintrin.h>
 ///
@@ -2341,7 +2341,7 @@
  return __a[0];
 }
 
-/// \brief Returns the first element of the input vector of [8 x i32].
+/// Returns the first element of the input vector of [8 x i32].
 ///
 /// \headerfile <avxintrin.h>
 ///
@@ -2358,7 +2358,7 @@
  return __b[0];
 }
 
-/// \brief Returns the first element of the input vector of [8 x float].
+/// Returns the first element of the input vector of [8 x float].
 ///
 /// \headerfile <avxintrin.h>
 ///
@@ -2375,7 +2375,7 @@
 }
 
 /* Vector replicate */
-/// \brief Moves and duplicates odd-indexed values from a 256-bit vector of
+/// Moves and duplicates odd-indexed values from a 256-bit vector of
 ///    [8 x float] to float values in a 256-bit vector of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2400,7 +2400,7 @@
   return __builtin_shufflevector((__v8sf)__a, (__v8sf)__a, 1, 1, 3, 3, 5, 5, 7, 7);
 }
 
-/// \brief Moves and duplicates even-indexed values from a 256-bit vector of
+/// Moves and duplicates even-indexed values from a 256-bit vector of
 ///    [8 x float] to float values in a 256-bit vector of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2425,7 +2425,7 @@
   return __builtin_shufflevector((__v8sf)__a, (__v8sf)__a, 0, 0, 2, 2, 4, 4, 6, 6);
 }
 
-/// \brief Moves and duplicates double-precision floating point values from a
+/// Moves and duplicates double-precision floating point values from a
 ///    256-bit vector of [4 x double] to double-precision values in a 256-bit
 ///    vector of [4 x double].
 ///
@@ -2448,7 +2448,7 @@
 }
 
 /* Unpack and Interleave */
-/// \brief Unpacks the odd-indexed vector elements from two 256-bit vectors of
+/// Unpacks the odd-indexed vector elements from two 256-bit vectors of
 ///    [4 x double] and interleaves them into a 256-bit vector of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -2470,7 +2470,7 @@
   return __builtin_shufflevector((__v4df)__a, (__v4df)__b, 1, 5, 1+2, 5+2);
 }
 
-/// \brief Unpacks the even-indexed vector elements from two 256-bit vectors of
+/// Unpacks the even-indexed vector elements from two 256-bit vectors of
 ///    [4 x double] and interleaves them into a 256-bit vector of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -2492,7 +2492,7 @@
   return __builtin_shufflevector((__v4df)__a, (__v4df)__b, 0, 4, 0+2, 4+2);
 }
 
-/// \brief Unpacks the 32-bit vector elements 2, 3, 6 and 7 from each of the
+/// Unpacks the 32-bit vector elements 2, 3, 6 and 7 from each of the
 ///    two 256-bit vectors of [8 x float] and interleaves them into a 256-bit
 ///    vector of [8 x float].
 ///
@@ -2519,7 +2519,7 @@
   return __builtin_shufflevector((__v8sf)__a, (__v8sf)__b, 2, 10, 2+1, 10+1, 6, 14, 6+1, 14+1);
 }
 
-/// \brief Unpacks the 32-bit vector elements 0, 1, 4 and 5 from each of the
+/// Unpacks the 32-bit vector elements 0, 1, 4 and 5 from each of the
 ///    two 256-bit vectors of [8 x float] and interleaves them into a 256-bit
 ///    vector of [8 x float].
 ///
@@ -2547,7 +2547,7 @@
 }
 
 /* Bit Test */
-/// \brief Given two 128-bit floating-point vectors of [2 x double], perform an
+/// Given two 128-bit floating-point vectors of [2 x double], perform an
 ///    element-by-element comparison of the double-precision element in the
 ///    first source vector and the corresponding element in the second source
 ///    vector.
@@ -2576,7 +2576,7 @@
   return __builtin_ia32_vtestzpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Given two 128-bit floating-point vectors of [2 x double], perform an
+/// Given two 128-bit floating-point vectors of [2 x double], perform an
 ///    element-by-element comparison of the double-precision element in the
 ///    first source vector and the corresponding element in the second source
 ///    vector.
@@ -2605,7 +2605,7 @@
   return __builtin_ia32_vtestcpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Given two 128-bit floating-point vectors of [2 x double], perform an
+/// Given two 128-bit floating-point vectors of [2 x double], perform an
 ///    element-by-element comparison of the double-precision element in the
 ///    first source vector and the corresponding element in the second source
 ///    vector.
@@ -2635,7 +2635,7 @@
   return __builtin_ia32_vtestnzcpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Given two 128-bit floating-point vectors of [4 x float], perform an
+/// Given two 128-bit floating-point vectors of [4 x float], perform an
 ///    element-by-element comparison of the single-precision element in the
 ///    first source vector and the corresponding element in the second source
 ///    vector.
@@ -2664,7 +2664,7 @@
   return __builtin_ia32_vtestzps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Given two 128-bit floating-point vectors of [4 x float], perform an
+/// Given two 128-bit floating-point vectors of [4 x float], perform an
 ///    element-by-element comparison of the single-precision element in the
 ///    first source vector and the corresponding element in the second source
 ///    vector.
@@ -2693,7 +2693,7 @@
   return __builtin_ia32_vtestcps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Given two 128-bit floating-point vectors of [4 x float], perform an
+/// Given two 128-bit floating-point vectors of [4 x float], perform an
 ///    element-by-element comparison of the single-precision element in the
 ///    first source vector and the corresponding element in the second source
 ///    vector.
@@ -2723,7 +2723,7 @@
   return __builtin_ia32_vtestnzcps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Given two 256-bit floating-point vectors of [4 x double], perform an
+/// Given two 256-bit floating-point vectors of [4 x double], perform an
 ///    element-by-element comparison of the double-precision elements in the
 ///    first source vector and the corresponding elements in the second source
 ///    vector.
@@ -2752,7 +2752,7 @@
   return __builtin_ia32_vtestzpd256((__v4df)__a, (__v4df)__b);
 }
 
-/// \brief Given two 256-bit floating-point vectors of [4 x double], perform an
+/// Given two 256-bit floating-point vectors of [4 x double], perform an
 ///    element-by-element comparison of the double-precision elements in the
 ///    first source vector and the corresponding elements in the second source
 ///    vector.
@@ -2781,7 +2781,7 @@
   return __builtin_ia32_vtestcpd256((__v4df)__a, (__v4df)__b);
 }
 
-/// \brief Given two 256-bit floating-point vectors of [4 x double], perform an
+/// Given two 256-bit floating-point vectors of [4 x double], perform an
 ///    element-by-element comparison of the double-precision elements in the
 ///    first source vector and the corresponding elements in the second source
 ///    vector.
@@ -2811,7 +2811,7 @@
   return __builtin_ia32_vtestnzcpd256((__v4df)__a, (__v4df)__b);
 }
 
-/// \brief Given two 256-bit floating-point vectors of [8 x float], perform an
+/// Given two 256-bit floating-point vectors of [8 x float], perform an
 ///    element-by-element comparison of the single-precision element in the
 ///    first source vector and the corresponding element in the second source
 ///    vector.
@@ -2840,7 +2840,7 @@
   return __builtin_ia32_vtestzps256((__v8sf)__a, (__v8sf)__b);
 }
 
-/// \brief Given two 256-bit floating-point vectors of [8 x float], perform an
+/// Given two 256-bit floating-point vectors of [8 x float], perform an
 ///    element-by-element comparison of the single-precision element in the
 ///    first source vector and the corresponding element in the second source
 ///    vector.
@@ -2869,7 +2869,7 @@
   return __builtin_ia32_vtestcps256((__v8sf)__a, (__v8sf)__b);
 }
 
-/// \brief Given two 256-bit floating-point vectors of [8 x float], perform an
+/// Given two 256-bit floating-point vectors of [8 x float], perform an
 ///    element-by-element comparison of the single-precision elements in the
 ///    first source vector and the corresponding elements in the second source
 ///    vector.
@@ -2899,7 +2899,7 @@
   return __builtin_ia32_vtestnzcps256((__v8sf)__a, (__v8sf)__b);
 }
 
-/// \brief Given two 256-bit integer vectors, perform a bit-by-bit comparison
+/// Given two 256-bit integer vectors, perform a bit-by-bit comparison
 ///    of the two source vectors.
 ///
 ///    The EFLAGS register is updated as follows: \n
@@ -2925,7 +2925,7 @@
   return __builtin_ia32_ptestz256((__v4di)__a, (__v4di)__b);
 }
 
-/// \brief Given two 256-bit integer vectors, perform a bit-by-bit comparison
+/// Given two 256-bit integer vectors, perform a bit-by-bit comparison
 ///    of the two source vectors.
 ///
 ///    The EFLAGS register is updated as follows: \n
@@ -2951,7 +2951,7 @@
   return __builtin_ia32_ptestc256((__v4di)__a, (__v4di)__b);
 }
 
-/// \brief Given two 256-bit integer vectors, perform a bit-by-bit comparison
+/// Given two 256-bit integer vectors, perform a bit-by-bit comparison
 ///    of the two source vectors.
 ///
 ///    The EFLAGS register is updated as follows: \n
@@ -2979,7 +2979,7 @@
 }
 
 /* Vector extract sign mask */
-/// \brief Extracts the sign bits of double-precision floating point elements
+/// Extracts the sign bits of double-precision floating point elements
 ///    in a 256-bit vector of [4 x double] and writes them to the lower order
 ///    bits of the return value.
 ///
@@ -2997,7 +2997,7 @@
   return __builtin_ia32_movmskpd256((__v4df)__a);
 }
 
-/// \brief Extracts the sign bits of single-precision floating point elements
+/// Extracts the sign bits of single-precision floating point elements
 ///    in a 256-bit vector of [8 x float] and writes them to the lower order
 ///    bits of the return value.
 ///
@@ -3016,7 +3016,7 @@
 }
 
 /* Vector __zero */
-/// \brief Zeroes the contents of all XMM or YMM registers.
+/// Zeroes the contents of all XMM or YMM registers.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -3027,7 +3027,7 @@
   __builtin_ia32_vzeroall();
 }
 
-/// \brief Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
+/// Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -3039,7 +3039,7 @@
 }
 
 /* Vector load with broadcast */
-/// \brief Loads a scalar single-precision floating point value from the
+/// Loads a scalar single-precision floating point value from the
 ///    specified address pointed to by \a __a and broadcasts it to the elements
 ///    of a [4 x float] vector.
 ///
@@ -3058,7 +3058,7 @@
   return (__m128)(__v4sf){ __f, __f, __f, __f };
 }
 
-/// \brief Loads a scalar double-precision floating point value from the
+/// Loads a scalar double-precision floating point value from the
 ///    specified address pointed to by \a __a and broadcasts it to the elements
 ///    of a [4 x double] vector.
 ///
@@ -3077,7 +3077,7 @@
   return (__m256d)(__v4df){ __d, __d, __d, __d };
 }
 
-/// \brief Loads a scalar single-precision floating point value from the
+/// Loads a scalar single-precision floating point value from the
 ///    specified address pointed to by \a __a and broadcasts it to the elements
 ///    of a [8 x float] vector.
 ///
@@ -3096,7 +3096,7 @@
   return (__m256)(__v8sf){ __f, __f, __f, __f, __f, __f, __f, __f };
 }
 
-/// \brief Loads the data from a 128-bit vector of [2 x double] from the
+/// Loads the data from a 128-bit vector of [2 x double] from the
 ///    specified address pointed to by \a __a and broadcasts it to 128-bit
 ///    elements in a 256-bit vector of [4 x double].
 ///
@@ -3114,7 +3114,7 @@
   return (__m256d)__builtin_ia32_vbroadcastf128_pd256((__v2df const *)__a);
 }
 
-/// \brief Loads the data from a 128-bit vector of [4 x float] from the
+/// Loads the data from a 128-bit vector of [4 x float] from the
 ///    specified address pointed to by \a __a and broadcasts it to 128-bit
 ///    elements in a 256-bit vector of [8 x float].
 ///
@@ -3133,7 +3133,7 @@
 }
 
 /* SIMD load ops */
-/// \brief Loads 4 double-precision floating point values from a 32-byte aligned
+/// Loads 4 double-precision floating point values from a 32-byte aligned
 ///    memory location pointed to by \a __p into a vector of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -3150,7 +3150,7 @@
   return *(__m256d *)__p;
 }
 
-/// \brief Loads 8 single-precision floating point values from a 32-byte aligned
+/// Loads 8 single-precision floating point values from a 32-byte aligned
 ///    memory location pointed to by \a __p into a vector of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -3166,7 +3166,7 @@
   return *(__m256 *)__p;
 }
 
-/// \brief Loads 4 double-precision floating point values from an unaligned
+/// Loads 4 double-precision floating point values from an unaligned
 ///    memory location pointed to by \a __p into a vector of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -3186,7 +3186,7 @@
   return ((struct __loadu_pd*)__p)->__v;
 }
 
-/// \brief Loads 8 single-precision floating point values from an unaligned
+/// Loads 8 single-precision floating point values from an unaligned
 ///    memory location pointed to by \a __p into a vector of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -3206,7 +3206,7 @@
   return ((struct __loadu_ps*)__p)->__v;
 }
 
-/// \brief Loads 256 bits of integer data from a 32-byte aligned memory
+/// Loads 256 bits of integer data from a 32-byte aligned memory
 ///    location pointed to by \a __p into elements of a 256-bit integer vector.
 ///
 /// \headerfile <x86intrin.h>
@@ -3223,7 +3223,7 @@
   return *__p;
 }
 
-/// \brief Loads 256 bits of integer data from an unaligned memory location
+/// Loads 256 bits of integer data from an unaligned memory location
 ///    pointed to by \a __p into a 256-bit integer vector.
 ///
 /// \headerfile <x86intrin.h>
@@ -3242,7 +3242,7 @@
   return ((struct __loadu_si256*)__p)->__v;
 }
 
-/// \brief Loads 256 bits of integer data from an unaligned memory location
+/// Loads 256 bits of integer data from an unaligned memory location
 ///    pointed to by \a __p into a 256-bit integer vector. This intrinsic may
 ///    perform better than \c _mm256_loadu_si256 when the data crosses a cache
 ///    line boundary.
@@ -3261,7 +3261,7 @@
 }
 
 /* SIMD store ops */
-/// \brief Stores double-precision floating point values from a 256-bit vector
+/// Stores double-precision floating point values from a 256-bit vector
 ///    of [4 x double] to a 32-byte aligned memory location pointed to by
 ///    \a __p.
 ///
@@ -3280,7 +3280,7 @@
   *(__m256d *)__p = __a;
 }
 
-/// \brief Stores single-precision floating point values from a 256-bit vector
+/// Stores single-precision floating point values from a 256-bit vector
 ///    of [8 x float] to a 32-byte aligned memory location pointed to by \a __p.
 ///
 /// \headerfile <x86intrin.h>
@@ -3298,7 +3298,7 @@
   *(__m256 *)__p = __a;
 }
 
-/// \brief Stores double-precision floating point values from a 256-bit vector
+/// Stores double-precision floating point values from a 256-bit vector
 ///    of [4 x double] to an unaligned memory location pointed to by \a __p.
 ///
 /// \headerfile <x86intrin.h>
@@ -3319,7 +3319,7 @@
   ((struct __storeu_pd*)__p)->__v = __a;
 }
 
-/// \brief Stores single-precision floating point values from a 256-bit vector
+/// Stores single-precision floating point values from a 256-bit vector
 ///    of [8 x float] to an unaligned memory location pointed to by \a __p.
 ///
 /// \headerfile <x86intrin.h>
@@ -3339,7 +3339,7 @@
   ((struct __storeu_ps*)__p)->__v = __a;
 }
 
-/// \brief Stores integer values from a 256-bit integer vector to a 32-byte
+/// Stores integer values from a 256-bit integer vector to a 32-byte
 ///    aligned memory location pointed to by \a __p.
 ///
 /// \headerfile <x86intrin.h>
@@ -3357,7 +3357,7 @@
   *__p = __a;
 }
 
-/// \brief Stores integer values from a 256-bit integer vector to an unaligned
+/// Stores integer values from a 256-bit integer vector to an unaligned
 ///    memory location pointed to by \a __p.
 ///
 /// \headerfile <x86intrin.h>
@@ -3378,7 +3378,7 @@
 }
 
 /* Conditional load ops */
-/// \brief Conditionally loads double-precision floating point elements from a
+/// Conditionally loads double-precision floating point elements from a
 ///    memory location pointed to by \a __p into a 128-bit vector of
 ///    [2 x double], depending on the mask bits associated with each data
 ///    element.
@@ -3402,7 +3402,7 @@
   return (__m128d)__builtin_ia32_maskloadpd((const __v2df *)__p, (__v2di)__m);
 }
 
-/// \brief Conditionally loads double-precision floating point elements from a
+/// Conditionally loads double-precision floating point elements from a
 ///    memory location pointed to by \a __p into a 256-bit vector of
 ///    [4 x double], depending on the mask bits associated with each data
 ///    element.
@@ -3427,7 +3427,7 @@
                                                (__v4di)__m);
 }
 
-/// \brief Conditionally loads single-precision floating point elements from a
+/// Conditionally loads single-precision floating point elements from a
 ///    memory location pointed to by \a __p into a 128-bit vector of
 ///    [4 x float], depending on the mask bits associated with each data
 ///    element.
@@ -3451,7 +3451,7 @@
   return (__m128)__builtin_ia32_maskloadps((const __v4sf *)__p, (__v4si)__m);
 }
 
-/// \brief Conditionally loads single-precision floating point elements from a
+/// Conditionally loads single-precision floating point elements from a
 ///    memory location pointed to by \a __p into a 256-bit vector of
 ///    [8 x float], depending on the mask bits associated with each data
 ///    element.
@@ -3476,7 +3476,7 @@
 }
 
 /* Conditional store ops */
-/// \brief Moves single-precision floating point values from a 256-bit vector
+/// Moves single-precision floating point values from a 256-bit vector
 ///    of [8 x float] to a memory location pointed to by \a __p, according to
 ///    the specified mask.
 ///
@@ -3500,7 +3500,7 @@
   __builtin_ia32_maskstoreps256((__v8sf *)__p, (__v8si)__m, (__v8sf)__a);
 }
 
-/// \brief Moves double-precision values from a 128-bit vector of [2 x double]
+/// Moves double-precision values from a 128-bit vector of [2 x double]
 ///    to a memory location pointed to by \a __p, according to the specified
 ///    mask.
 ///
@@ -3524,7 +3524,7 @@
   __builtin_ia32_maskstorepd((__v2df *)__p, (__v2di)__m, (__v2df)__a);
 }
 
-/// \brief Moves double-precision values from a 256-bit vector of [4 x double]
+/// Moves double-precision values from a 256-bit vector of [4 x double]
 ///    to a memory location pointed to by \a __p, according to the specified
 ///    mask.
 ///
@@ -3548,7 +3548,7 @@
   __builtin_ia32_maskstorepd256((__v4df *)__p, (__v4di)__m, (__v4df)__a);
 }
 
-/// \brief Moves single-precision floating point values from a 128-bit vector
+/// Moves single-precision floating point values from a 128-bit vector
 ///    of [4 x float] to a memory location pointed to by \a __p, according to
 ///    the specified mask.
 ///
@@ -3573,7 +3573,7 @@
 }
 
 /* Cacheability support ops */
-/// \brief Moves integer data from a 256-bit integer vector to a 32-byte
+/// Moves integer data from a 256-bit integer vector to a 32-byte
 ///    aligned memory location. To minimize caching, the data is flagged as
 ///    non-temporal (unlikely to be used again soon).
 ///
@@ -3593,7 +3593,7 @@
   __builtin_nontemporal_store((__v4di_aligned)__b, (__v4di_aligned*)__a);
 }
 
-/// \brief Moves double-precision values from a 256-bit vector of [4 x double]
+/// Moves double-precision values from a 256-bit vector of [4 x double]
 ///    to a 32-byte aligned memory location. To minimize caching, the data is
 ///    flagged as non-temporal (unlikely to be used again soon).
 ///
@@ -3613,7 +3613,7 @@
   __builtin_nontemporal_store((__v4df_aligned)__b, (__v4df_aligned*)__a);
 }
 
-/// \brief Moves single-precision floating point values from a 256-bit vector
+/// Moves single-precision floating point values from a 256-bit vector
 ///    of [8 x float] to a 32-byte aligned memory location. To minimize
 ///    caching, the data is flagged as non-temporal (unlikely to be used again
 ///    soon).
@@ -3635,7 +3635,7 @@
 }
 
 /* Create vectors */
-/// \brief Create a 256-bit vector of [4 x double] with undefined values.
+/// Create a 256-bit vector of [4 x double] with undefined values.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -3648,7 +3648,7 @@
   return (__m256d)__builtin_ia32_undef256();
 }
 
-/// \brief Create a 256-bit vector of [8 x float] with undefined values.
+/// Create a 256-bit vector of [8 x float] with undefined values.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -3661,7 +3661,7 @@
   return (__m256)__builtin_ia32_undef256();
 }
 
-/// \brief Create a 256-bit integer vector with undefined values.
+/// Create a 256-bit integer vector with undefined values.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -3674,7 +3674,7 @@
   return (__m256i)__builtin_ia32_undef256();
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [4 x double]
+/// Constructs a 256-bit floating-point vector of [4 x double]
 ///    initialized with the specified double-precision floating-point values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3701,7 +3701,7 @@
   return (__m256d){ __d, __c, __b, __a };
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [8 x float] initialized
+/// Constructs a 256-bit floating-point vector of [8 x float] initialized
 ///    with the specified single-precision floating-point values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3741,7 +3741,7 @@
   return (__m256){ __h, __g, __f, __e, __d, __c, __b, __a };
 }
 
-/// \brief Constructs a 256-bit integer vector initialized with the specified
+/// Constructs a 256-bit integer vector initialized with the specified
 ///    32-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3773,7 +3773,7 @@
   return (__m256i)(__v8si){ __i7, __i6, __i5, __i4, __i3, __i2, __i1, __i0 };
 }
 
-/// \brief Constructs a 256-bit integer vector initialized with the specified
+/// Constructs a 256-bit integer vector initialized with the specified
 ///    16-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3824,7 +3824,7 @@
     __w07, __w08, __w09, __w10, __w11, __w12, __w13, __w14, __w15 };
 }
 
-/// \brief Constructs a 256-bit integer vector initialized with the specified
+/// Constructs a 256-bit integer vector initialized with the specified
 ///    8-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3915,7 +3915,7 @@
   };
 }
 
-/// \brief Constructs a 256-bit integer vector initialized with the specified
+/// Constructs a 256-bit integer vector initialized with the specified
 ///    64-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3939,7 +3939,7 @@
 }
 
 /* Create vectors with elements in reverse order */
-/// \brief Constructs a 256-bit floating-point vector of [4 x double],
+/// Constructs a 256-bit floating-point vector of [4 x double],
 ///    initialized in reverse order with the specified double-precision
 ///    floating-point values.
 ///
@@ -3967,7 +3967,7 @@
   return (__m256d){ __a, __b, __c, __d };
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [8 x float],
+/// Constructs a 256-bit floating-point vector of [8 x float],
 ///    initialized in reverse order with the specified single-precision
 ///    float-point values.
 ///
@@ -4008,7 +4008,7 @@
   return (__m256){ __a, __b, __c, __d, __e, __f, __g, __h };
 }
 
-/// \brief Constructs a 256-bit integer vector, initialized in reverse order
+/// Constructs a 256-bit integer vector, initialized in reverse order
 ///    with the specified 32-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -4040,7 +4040,7 @@
   return (__m256i)(__v8si){ __i0, __i1, __i2, __i3, __i4, __i5, __i6, __i7 };
 }
 
-/// \brief Constructs a 256-bit integer vector, initialized in reverse order
+/// Constructs a 256-bit integer vector, initialized in reverse order
 ///    with the specified 16-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -4091,7 +4091,7 @@
     __w08, __w07, __w06, __w05, __w04, __w03, __w02, __w01, __w00 };
 }
 
-/// \brief Constructs a 256-bit integer vector, initialized in reverse order
+/// Constructs a 256-bit integer vector, initialized in reverse order
 ///    with the specified 8-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -4181,7 +4181,7 @@
     __b07, __b06, __b05, __b04, __b03, __b02, __b01, __b00 };
 }
 
-/// \brief Constructs a 256-bit integer vector, initialized in reverse order
+/// Constructs a 256-bit integer vector, initialized in reverse order
 ///    with the specified 64-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -4205,7 +4205,7 @@
 }
 
 /* Create vectors with repeated elements */
-/// \brief Constructs a 256-bit floating-point vector of [4 x double], with each
+/// Constructs a 256-bit floating-point vector of [4 x double], with each
 ///    of the four double-precision floating-point vector elements set to the
 ///    specified double-precision floating-point value.
 ///
@@ -4223,7 +4223,7 @@
   return (__m256d){ __w, __w, __w, __w };
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [8 x float], with each
+/// Constructs a 256-bit floating-point vector of [8 x float], with each
 ///    of the eight single-precision floating-point vector elements set to the
 ///    specified single-precision floating-point value.
 ///
@@ -4242,7 +4242,7 @@
   return (__m256){ __w, __w, __w, __w, __w, __w, __w, __w };
 }
 
-/// \brief Constructs a 256-bit integer vector of [8 x i32], with each of the
+/// Constructs a 256-bit integer vector of [8 x i32], with each of the
 ///    32-bit integral vector elements set to the specified 32-bit integral
 ///    value.
 ///
@@ -4261,7 +4261,7 @@
   return (__m256i)(__v8si){ __i, __i, __i, __i, __i, __i, __i, __i };
 }
 
-/// \brief Constructs a 256-bit integer vector of [16 x i16], with each of the
+/// Constructs a 256-bit integer vector of [16 x i16], with each of the
 ///    16-bit integral vector elements set to the specified 16-bit integral
 ///    value.
 ///
@@ -4280,7 +4280,7 @@
     __w, __w, __w, __w, __w, __w };
 }
 
-/// \brief Constructs a 256-bit integer vector of [32 x i8], with each of the
+/// Constructs a 256-bit integer vector of [32 x i8], with each of the
 ///    8-bit integral vector elements set to the specified 8-bit integral value.
 ///
 /// \headerfile <x86intrin.h>
@@ -4299,7 +4299,7 @@
     __b, __b, __b, __b, __b, __b, __b };
 }
 
-/// \brief Constructs a 256-bit integer vector of [4 x i64], with each of the
+/// Constructs a 256-bit integer vector of [4 x i64], with each of the
 ///    64-bit integral vector elements set to the specified 64-bit integral
 ///    value.
 ///
@@ -4318,7 +4318,7 @@
 }
 
 /* Create __zeroed vectors */
-/// \brief Constructs a 256-bit floating-point vector of [4 x double] with all
+/// Constructs a 256-bit floating-point vector of [4 x double] with all
 ///    vector elements initialized to zero.
 ///
 /// \headerfile <x86intrin.h>
@@ -4332,7 +4332,7 @@
   return (__m256d){ 0, 0, 0, 0 };
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [8 x float] with all
+/// Constructs a 256-bit floating-point vector of [8 x float] with all
 ///    vector elements initialized to zero.
 ///
 /// \headerfile <x86intrin.h>
@@ -4346,7 +4346,7 @@
   return (__m256){ 0, 0, 0, 0, 0, 0, 0, 0 };
 }
 
-/// \brief Constructs a 256-bit integer vector initialized to zero.
+/// Constructs a 256-bit integer vector initialized to zero.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -4360,7 +4360,7 @@
 }
 
 /* Cast between vector types */
-/// \brief Casts a 256-bit floating-point vector of [4 x double] into a 256-bit
+/// Casts a 256-bit floating-point vector of [4 x double] into a 256-bit
 ///    floating-point vector of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -4377,7 +4377,7 @@
   return (__m256)__a;
 }
 
-/// \brief Casts a 256-bit floating-point vector of [4 x double] into a 256-bit
+/// Casts a 256-bit floating-point vector of [4 x double] into a 256-bit
 ///    integer vector.
 ///
 /// \headerfile <x86intrin.h>
@@ -4394,7 +4394,7 @@
   return (__m256i)__a;
 }
 
-/// \brief Casts a 256-bit floating-point vector of [8 x float] into a 256-bit
+/// Casts a 256-bit floating-point vector of [8 x float] into a 256-bit
 ///    floating-point vector of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -4411,7 +4411,7 @@
   return (__m256d)__a;
 }
 
-/// \brief Casts a 256-bit floating-point vector of [8 x float] into a 256-bit
+/// Casts a 256-bit floating-point vector of [8 x float] into a 256-bit
 ///    integer vector.
 ///
 /// \headerfile <x86intrin.h>
@@ -4428,7 +4428,7 @@
   return (__m256i)__a;
 }
 
-/// \brief Casts a 256-bit integer vector into a 256-bit floating-point vector
+/// Casts a 256-bit integer vector into a 256-bit floating-point vector
 ///    of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -4445,7 +4445,7 @@
   return (__m256)__a;
 }
 
-/// \brief Casts a 256-bit integer vector into a 256-bit floating-point vector
+/// Casts a 256-bit integer vector into a 256-bit floating-point vector
 ///    of [4 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -4462,7 +4462,7 @@
   return (__m256d)__a;
 }
 
-/// \brief Returns the lower 128 bits of a 256-bit floating-point vector of
+/// Returns the lower 128 bits of a 256-bit floating-point vector of
 ///    [4 x double] as a 128-bit floating-point vector of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -4479,7 +4479,7 @@
   return __builtin_shufflevector((__v4df)__a, (__v4df)__a, 0, 1);
 }
 
-/// \brief Returns the lower 128 bits of a 256-bit floating-point vector of
+/// Returns the lower 128 bits of a 256-bit floating-point vector of
 ///    [8 x float] as a 128-bit floating-point vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -4496,7 +4496,7 @@
   return __builtin_shufflevector((__v8sf)__a, (__v8sf)__a, 0, 1, 2, 3);
 }
 
-/// \brief Truncates a 256-bit integer vector into a 128-bit integer vector.
+/// Truncates a 256-bit integer vector into a 128-bit integer vector.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -4512,7 +4512,7 @@
   return __builtin_shufflevector((__v4di)__a, (__v4di)__a, 0, 1);
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [4 x double] from a
+/// Constructs a 256-bit floating-point vector of [4 x double] from a
 ///    128-bit floating-point vector of [2 x double].
 ///
 ///    The lower 128 bits contain the value of the source vector. The contents
@@ -4533,7 +4533,7 @@
   return __builtin_shufflevector((__v2df)__a, (__v2df)__a, 0, 1, -1, -1);
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [8 x float] from a
+/// Constructs a 256-bit floating-point vector of [8 x float] from a
 ///    128-bit floating-point vector of [4 x float].
 ///
 ///    The lower 128 bits contain the value of the source vector. The contents
@@ -4554,7 +4554,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 1, 2, 3, -1, -1, -1, -1);
 }
 
-/// \brief Constructs a 256-bit integer vector from a 128-bit integer vector.
+/// Constructs a 256-bit integer vector from a 128-bit integer vector.
 ///
 ///    The lower 128 bits contain the value of the source vector. The contents
 ///    of the upper 128 bits are undefined.
@@ -4573,7 +4573,7 @@
   return __builtin_shufflevector((__v2di)__a, (__v2di)__a, 0, 1, -1, -1);
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [4 x double] from a
+/// Constructs a 256-bit floating-point vector of [4 x double] from a
 ///    128-bit floating-point vector of [2 x double]. The lower 128 bits
 ///    contain the value of the source vector. The upper 128 bits are set
 ///    to zero.
@@ -4592,7 +4592,7 @@
   return __builtin_shufflevector((__v2df)__a, (__v2df)_mm_setzero_pd(), 0, 1, 2, 3);
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [8 x float] from a
+/// Constructs a 256-bit floating-point vector of [8 x float] from a
 ///    128-bit floating-point vector of [4 x float]. The lower 128 bits contain
 ///    the value of the source vector. The upper 128 bits are set to zero.
 ///
@@ -4610,7 +4610,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)_mm_setzero_ps(), 0, 1, 2, 3, 4, 5, 6, 7);
 }
 
-/// \brief Constructs a 256-bit integer vector from a 128-bit integer vector.
+/// Constructs a 256-bit integer vector from a 128-bit integer vector.
 ///    The lower 128 bits contain the value of the source vector. The upper
 ///    128 bits are set to zero.
 ///
@@ -4633,7 +4633,7 @@
    We use macros rather than inlines because we only want to accept
    invocations where the immediate M is a constant expression.
 */
-/// \brief Constructs a new 256-bit vector of [8 x float] by first duplicating
+/// Constructs a new 256-bit vector of [8 x float] by first duplicating
 ///    a 256-bit vector of [8 x float] given in the first parameter, and then
 ///    replacing either the upper or the lower 128 bits with the contents of a
 ///    128-bit vector of [4 x float] in the second parameter.
@@ -4680,7 +4680,7 @@
     (((M) & 1) ? 10 :  6), \
     (((M) & 1) ? 11 :  7) );})
 
-/// \brief Constructs a new 256-bit vector of [4 x double] by first duplicating
+/// Constructs a new 256-bit vector of [4 x double] by first duplicating
 ///    a 256-bit vector of [4 x double] given in the first parameter, and then
 ///    replacing either the upper or the lower 128 bits with the contents of a
 ///    128-bit vector of [2 x double] in the second parameter.
@@ -4723,7 +4723,7 @@
     (((M) & 1) ? 4 : 2), \
     (((M) & 1) ? 5 : 3) );})
 
-/// \brief Constructs a new 256-bit integer vector by first duplicating a
+/// Constructs a new 256-bit integer vector by first duplicating a
 ///    256-bit integer vector given in the first parameter, and then replacing
 ///    either the upper or the lower 128 bits with the contents of a 128-bit
 ///    integer vector in the second parameter.
@@ -4771,7 +4771,7 @@
    We use macros rather than inlines because we only want to accept
    invocations where the immediate M is a constant expression.
 */
-/// \brief Extracts either the upper or the lower 128 bits from a 256-bit vector
+/// Extracts either the upper or the lower 128 bits from a 256-bit vector
 ///    of [8 x float], as determined by the immediate integer parameter, and
 ///    returns the extracted bits as a 128-bit vector of [4 x float].
 ///
@@ -4801,7 +4801,7 @@
     (((M) & 1) ? 6 : 2), \
     (((M) & 1) ? 7 : 3) );})
 
-/// \brief Extracts either the upper or the lower 128 bits from a 256-bit vector
+/// Extracts either the upper or the lower 128 bits from a 256-bit vector
 ///    of [4 x double], as determined by the immediate integer parameter, and
 ///    returns the extracted bits as a 128-bit vector of [2 x double].
 ///
@@ -4829,7 +4829,7 @@
     (((M) & 1) ? 2 : 0), \
     (((M) & 1) ? 3 : 1) );})
 
-/// \brief Extracts either the upper or the lower 128 bits from a 256-bit
+/// Extracts either the upper or the lower 128 bits from a 256-bit
 ///    integer vector, as determined by the immediate integer parameter, and
 ///    returns the extracted bits as a 128-bit integer vector.
 ///
@@ -4858,7 +4858,7 @@
     (((M) & 1) ? 3 : 1) );})
 
 /* SIMD load ops (unaligned) */
-/// \brief Loads two 128-bit floating-point vectors of [4 x float] from
+/// Loads two 128-bit floating-point vectors of [4 x float] from
 ///    unaligned memory locations and constructs a 256-bit floating-point vector
 ///    of [8 x float] by concatenating the two 128-bit vectors.
 ///
@@ -4886,7 +4886,7 @@
   return _mm256_insertf128_ps(__v256, _mm_loadu_ps(__addr_hi), 1);
 }
 
-/// \brief Loads two 128-bit floating-point vectors of [2 x double] from
+/// Loads two 128-bit floating-point vectors of [2 x double] from
 ///    unaligned memory locations and constructs a 256-bit floating-point vector
 ///    of [4 x double] by concatenating the two 128-bit vectors.
 ///
@@ -4914,7 +4914,7 @@
   return _mm256_insertf128_pd(__v256, _mm_loadu_pd(__addr_hi), 1);
 }
 
-/// \brief Loads two 128-bit integer vectors from unaligned memory locations and
+/// Loads two 128-bit integer vectors from unaligned memory locations and
 ///    constructs a 256-bit integer vector by concatenating the two 128-bit
 ///    vectors.
 ///
@@ -4940,7 +4940,7 @@
 }
 
 /* SIMD store ops (unaligned) */
-/// \brief Stores the upper and lower 128 bits of a 256-bit floating-point
+/// Stores the upper and lower 128 bits of a 256-bit floating-point
 ///    vector of [8 x float] into two different unaligned memory locations.
 ///
 /// \headerfile <x86intrin.h>
@@ -4969,7 +4969,7 @@
   _mm_storeu_ps(__addr_hi, __v128);
 }
 
-/// \brief Stores the upper and lower 128 bits of a 256-bit floating-point
+/// Stores the upper and lower 128 bits of a 256-bit floating-point
 ///    vector of [4 x double] into two different unaligned memory locations.
 ///
 /// \headerfile <x86intrin.h>
@@ -4998,7 +4998,7 @@
   _mm_storeu_pd(__addr_hi, __v128);
 }
 
-/// \brief Stores the upper and lower 128 bits of a 256-bit integer vector into
+/// Stores the upper and lower 128 bits of a 256-bit integer vector into
 ///    two different unaligned memory locations.
 ///
 /// \headerfile <x86intrin.h>
@@ -5027,7 +5027,7 @@
   _mm_storeu_si128(__addr_hi, __v128);
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [8 x float] by
+/// Constructs a 256-bit floating-point vector of [8 x float] by
 ///    concatenating two 128-bit floating-point vectors of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -5048,7 +5048,7 @@
   return (__m256) __builtin_shufflevector((__v4sf)__lo, (__v4sf)__hi, 0, 1, 2, 3, 4, 5, 6, 7);
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [4 x double] by
+/// Constructs a 256-bit floating-point vector of [4 x double] by
 ///    concatenating two 128-bit floating-point vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -5069,7 +5069,7 @@
   return (__m256d)_mm256_set_m128((__m128)__hi, (__m128)__lo);
 }
 
-/// \brief Constructs a 256-bit integer vector by concatenating two 128-bit
+/// Constructs a 256-bit integer vector by concatenating two 128-bit
 ///    integer vectors.
 ///
 /// \headerfile <x86intrin.h>
@@ -5089,7 +5089,7 @@
   return (__m256i)_mm256_set_m128((__m128)__hi, (__m128)__lo);
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [8 x float] by
+/// Constructs a 256-bit floating-point vector of [8 x float] by
 ///    concatenating two 128-bit floating-point vectors of [4 x float]. This is
 ///    similar to _mm256_set_m128, but the order of the input parameters is
 ///    swapped.
@@ -5112,7 +5112,7 @@
   return _mm256_set_m128(__hi, __lo);
 }
 
-/// \brief Constructs a 256-bit floating-point vector of [4 x double] by
+/// Constructs a 256-bit floating-point vector of [4 x double] by
 ///    concatenating two 128-bit floating-point vectors of [2 x double]. This is
 ///    similar to _mm256_set_m128d, but the order of the input parameters is
 ///    swapped.
@@ -5135,7 +5135,7 @@
   return (__m256d)_mm256_set_m128((__m128)__hi, (__m128)__lo);
 }
 
-/// \brief Constructs a 256-bit integer vector by concatenating two 128-bit
+/// Constructs a 256-bit integer vector by concatenating two 128-bit
 ///    integer vectors. This is similar to _mm256_set_m128i, but the order of
 ///    the input parameters is swapped.
 ///
Index: cfe/trunk/lib/Headers/bmiintrin.h
===================================================================
--- cfe/trunk/lib/Headers/bmiintrin.h
+++ cfe/trunk/lib/Headers/bmiintrin.h
@@ -49,7 +49,7 @@
    to use it as a potentially faster version of BSF. */
 #define __RELAXED_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
 
-/// \brief Counts the number of trailing zero bits in the operand.
+/// Counts the number of trailing zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -65,7 +65,7 @@
   return __X ? __builtin_ctzs(__X) : 16;
 }
 
-/// \brief Performs a bitwise AND of the second operand with the one's
+/// Performs a bitwise AND of the second operand with the one's
 ///    complement of the first operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -85,7 +85,7 @@
 }
 
 /* AMD-specified, double-leading-underscore version of BEXTR */
-/// \brief Extracts the specified bits from the first operand and returns them
+/// Extracts the specified bits from the first operand and returns them
 ///    in the least significant bits of the result.
 ///
 /// \headerfile <x86intrin.h>
@@ -107,7 +107,7 @@
 }
 
 /* Intel-specified, single-leading-underscore version of BEXTR */
-/// \brief Extracts the specified bits from the first operand and returns them
+/// Extracts the specified bits from the first operand and returns them
 ///    in the least significant bits of the result.
 ///
 /// \headerfile <x86intrin.h>
@@ -130,7 +130,7 @@
   return __builtin_ia32_bextr_u32 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
 }
 
-/// \brief Clears all bits in the source except for the least significant bit
+/// Clears all bits in the source except for the least significant bit
 ///    containing a value of 1 and returns the result.
 ///
 /// \headerfile <x86intrin.h>
@@ -147,7 +147,7 @@
   return __X & -__X;
 }
 
-/// \brief Creates a mask whose bits are set to 1, using bit 0 up to and
+/// Creates a mask whose bits are set to 1, using bit 0 up to and
 ///    including the least significant bit that is set to 1 in the source
 ///    operand and returns the result.
 ///
@@ -164,7 +164,7 @@
   return __X ^ (__X - 1);
 }
 
-/// \brief Clears the least significant bit that is set to 1 in the source
+/// Clears the least significant bit that is set to 1 in the source
 ///    operand and returns the result.
 ///
 /// \headerfile <x86intrin.h>
@@ -181,7 +181,7 @@
   return __X & (__X - 1);
 }
 
-/// \brief Counts the number of trailing zero bits in the operand.
+/// Counts the number of trailing zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -197,7 +197,7 @@
   return __X ? __builtin_ctz(__X) : 32;
 }
 
-/// \brief Counts the number of trailing zero bits in the operand.
+/// Counts the number of trailing zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -226,7 +226,7 @@
 
 #define _tzcnt_u64(a)     (__tzcnt_u64((a)))
 
-/// \brief Performs a bitwise AND of the second operand with the one's
+/// Performs a bitwise AND of the second operand with the one's
 ///    complement of the first operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -246,7 +246,7 @@
 }
 
 /* AMD-specified, double-leading-underscore version of BEXTR */
-/// \brief Extracts the specified bits from the first operand and returns them
+/// Extracts the specified bits from the first operand and returns them
 ///    in the least significant bits of the result.
 ///
 /// \headerfile <x86intrin.h>
@@ -268,7 +268,7 @@
 }
 
 /* Intel-specified, single-leading-underscore version of BEXTR */
-/// \brief Extracts the specified bits from the first operand and returns them
+/// Extracts the specified bits from the first operand and returns them
 ///     in the least significant bits of the result.
 ///
 /// \headerfile <x86intrin.h>
@@ -291,7 +291,7 @@
   return __builtin_ia32_bextr_u64 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
 }
 
-/// \brief Clears all bits in the source except for the least significant bit
+/// Clears all bits in the source except for the least significant bit
 ///    containing a value of 1 and returns the result.
 ///
 /// \headerfile <x86intrin.h>
@@ -308,7 +308,7 @@
   return __X & -__X;
 }
 
-/// \brief Creates a mask whose bits are set to 1, using bit 0 up to and
+/// Creates a mask whose bits are set to 1, using bit 0 up to and
 ///    including the least significant bit that is set to 1 in the source
 ///    operand and returns the result.
 ///
@@ -325,7 +325,7 @@
   return __X ^ (__X - 1);
 }
 
-/// \brief Clears the least significant bit that is set to 1 in the source
+/// Clears the least significant bit that is set to 1 in the source
 ///    operand and returns the result.
 ///
 /// \headerfile <x86intrin.h>
@@ -342,7 +342,7 @@
   return __X & (__X - 1);
 }
 
-/// \brief Counts the number of trailing zero bits in the operand.
+/// Counts the number of trailing zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -358,7 +358,7 @@
   return __X ? __builtin_ctzll(__X) : 64;
 }
 
-/// \brief Counts the number of trailing zero bits in the operand.
+/// Counts the number of trailing zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
Index: cfe/trunk/lib/Headers/clwbintrin.h
===================================================================
--- cfe/trunk/lib/Headers/clwbintrin.h
+++ cfe/trunk/lib/Headers/clwbintrin.h
@@ -31,7 +31,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,  __target__("clwb")))
 
-/// \brief Writes back to memory the cache line (if modified) that contains the
+/// Writes back to memory the cache line (if modified) that contains the
 /// linear address specified in \a __p from any level of the cache hierarchy in
 /// the cache coherence domain
 ///
Index: cfe/trunk/lib/Headers/clzerointrin.h
===================================================================
--- cfe/trunk/lib/Headers/clzerointrin.h
+++ cfe/trunk/lib/Headers/clzerointrin.h
@@ -31,7 +31,7 @@
 #define __DEFAULT_FN_ATTRS \
   __attribute__((__always_inline__, __nodebug__,  __target__("clzero")))
 
-/// \brief Loads the cache line address and zero's out the cacheline
+/// Loads the cache line address and zero's out the cacheline
 ///
 /// \headerfile <clzerointrin.h>
 ///
Index: cfe/trunk/lib/Headers/emmintrin.h
===================================================================
--- cfe/trunk/lib/Headers/emmintrin.h
+++ cfe/trunk/lib/Headers/emmintrin.h
@@ -49,7 +49,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse2")))
 
-/// \brief Adds lower double-precision values in both operands and returns the
+/// Adds lower double-precision values in both operands and returns the
 ///    sum in the lower 64 bits of the result. The upper 64 bits of the result
 ///    are copied from the upper double-precision value of the first operand.
 ///
@@ -71,7 +71,7 @@
   return __a;
 }
 
-/// \brief Adds two 128-bit vectors of [2 x double].
+/// Adds two 128-bit vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -89,7 +89,7 @@
   return (__m128d)((__v2df)__a + (__v2df)__b);
 }
 
-/// \brief Subtracts the lower double-precision value of the second operand
+/// Subtracts the lower double-precision value of the second operand
 ///    from the lower double-precision value of the first operand and returns
 ///    the difference in the lower 64 bits of the result. The upper 64 bits of
 ///    the result are copied from the upper double-precision value of the first
@@ -113,7 +113,7 @@
   return __a;
 }
 
-/// \brief Subtracts two 128-bit vectors of [2 x double].
+/// Subtracts two 128-bit vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -131,7 +131,7 @@
   return (__m128d)((__v2df)__a - (__v2df)__b);
 }
 
-/// \brief Multiplies lower double-precision values in both operands and returns
+/// Multiplies lower double-precision values in both operands and returns
 ///    the product in the lower 64 bits of the result. The upper 64 bits of the
 ///    result are copied from the upper double-precision value of the first
 ///    operand.
@@ -154,7 +154,7 @@
   return __a;
 }
 
-/// \brief Multiplies two 128-bit vectors of [2 x double].
+/// Multiplies two 128-bit vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -172,7 +172,7 @@
   return (__m128d)((__v2df)__a * (__v2df)__b);
 }
 
-/// \brief Divides the lower double-precision value of the first operand by the
+/// Divides the lower double-precision value of the first operand by the
 ///    lower double-precision value of the second operand and returns the
 ///    quotient in the lower 64 bits of the result. The upper 64 bits of the
 ///    result are copied from the upper double-precision value of the first
@@ -196,7 +196,7 @@
   return __a;
 }
 
-/// \brief Performs an element-by-element division of two 128-bit vectors of
+/// Performs an element-by-element division of two 128-bit vectors of
 ///    [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -215,7 +215,7 @@
   return (__m128d)((__v2df)__a / (__v2df)__b);
 }
 
-/// \brief Calculates the square root of the lower double-precision value of
+/// Calculates the square root of the lower double-precision value of
 ///    the second operand and returns it in the lower 64 bits of the result.
 ///    The upper 64 bits of the result are copied from the upper
 ///    double-precision value of the first operand.
@@ -241,7 +241,7 @@
   return (__m128d) { __c[0], __a[1] };
 }
 
-/// \brief Calculates the square root of the each of two values stored in a
+/// Calculates the square root of the each of two values stored in a
 ///    128-bit vector of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -258,7 +258,7 @@
   return __builtin_ia32_sqrtpd((__v2df)__a);
 }
 
-/// \brief Compares lower 64-bit double-precision values of both operands, and
+/// Compares lower 64-bit double-precision values of both operands, and
 ///    returns the lesser of the pair of values in the lower 64-bits of the
 ///    result. The upper 64 bits of the result are copied from the upper
 ///    double-precision value of the first operand.
@@ -282,7 +282,7 @@
   return __builtin_ia32_minsd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Performs element-by-element comparison of the two 128-bit vectors of
+/// Performs element-by-element comparison of the two 128-bit vectors of
 ///    [2 x double] and returns the vector containing the lesser of each pair of
 ///    values.
 ///
@@ -302,7 +302,7 @@
   return __builtin_ia32_minpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares lower 64-bit double-precision values of both operands, and
+/// Compares lower 64-bit double-precision values of both operands, and
 ///    returns the greater of the pair of values in the lower 64-bits of the
 ///    result. The upper 64 bits of the result are copied from the upper
 ///    double-precision value of the first operand.
@@ -326,7 +326,7 @@
   return __builtin_ia32_maxsd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Performs element-by-element comparison of the two 128-bit vectors of
+/// Performs element-by-element comparison of the two 128-bit vectors of
 ///    [2 x double] and returns the vector containing the greater of each pair
 ///    of values.
 ///
@@ -346,7 +346,7 @@
   return __builtin_ia32_maxpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Performs a bitwise AND of two 128-bit vectors of [2 x double].
+/// Performs a bitwise AND of two 128-bit vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -364,7 +364,7 @@
   return (__m128d)((__v2du)__a & (__v2du)__b);
 }
 
-/// \brief Performs a bitwise AND of two 128-bit vectors of [2 x double], using
+/// Performs a bitwise AND of two 128-bit vectors of [2 x double], using
 ///    the one's complement of the values contained in the first source operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -385,7 +385,7 @@
   return (__m128d)(~(__v2du)__a & (__v2du)__b);
 }
 
-/// \brief Performs a bitwise OR of two 128-bit vectors of [2 x double].
+/// Performs a bitwise OR of two 128-bit vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -403,7 +403,7 @@
   return (__m128d)((__v2du)__a | (__v2du)__b);
 }
 
-/// \brief Performs a bitwise XOR of two 128-bit vectors of [2 x double].
+/// Performs a bitwise XOR of two 128-bit vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -421,7 +421,7 @@
   return (__m128d)((__v2du)__a ^ (__v2du)__b);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] for equality. Each comparison yields 0x0
 ///    for false, 0xFFFFFFFFFFFFFFFF for true.
 ///
@@ -440,7 +440,7 @@
   return (__m128d)__builtin_ia32_cmpeqpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are less than those in the second operand. Each comparison
 ///    yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
@@ -460,7 +460,7 @@
   return (__m128d)__builtin_ia32_cmpltpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are less than or equal to those in the second operand.
 ///
@@ -481,7 +481,7 @@
   return (__m128d)__builtin_ia32_cmplepd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are greater than those in the second operand.
 ///
@@ -502,7 +502,7 @@
   return (__m128d)__builtin_ia32_cmpltpd((__v2df)__b, (__v2df)__a);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are greater than or equal to those in the second operand.
 ///
@@ -523,7 +523,7 @@
   return (__m128d)__builtin_ia32_cmplepd((__v2df)__b, (__v2df)__a);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are ordered with respect to those in the second operand.
 ///
@@ -546,7 +546,7 @@
   return (__m128d)__builtin_ia32_cmpordpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are unordered with respect to those in the second operand.
 ///
@@ -570,7 +570,7 @@
   return (__m128d)__builtin_ia32_cmpunordpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are unequal to those in the second operand.
 ///
@@ -591,7 +591,7 @@
   return (__m128d)__builtin_ia32_cmpneqpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are not less than those in the second operand.
 ///
@@ -612,7 +612,7 @@
   return (__m128d)__builtin_ia32_cmpnltpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are not less than or equal to those in the second operand.
 ///
@@ -633,7 +633,7 @@
   return (__m128d)__builtin_ia32_cmpnlepd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are not greater than those in the second operand.
 ///
@@ -654,7 +654,7 @@
   return (__m128d)__builtin_ia32_cmpnltpd((__v2df)__b, (__v2df)__a);
 }
 
-/// \brief Compares each of the corresponding double-precision values of the
+/// Compares each of the corresponding double-precision values of the
 ///    128-bit vectors of [2 x double] to determine if the values in the first
 ///    operand are not greater than or equal to those in the second operand.
 ///
@@ -675,7 +675,7 @@
   return (__m128d)__builtin_ia32_cmpnlepd((__v2df)__b, (__v2df)__a);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] for equality.
 ///
 ///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
@@ -698,7 +698,7 @@
   return (__m128d)__builtin_ia32_cmpeqsd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is less than the corresponding value in
 ///    the second parameter.
@@ -723,7 +723,7 @@
   return (__m128d)__builtin_ia32_cmpltsd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is less than or equal to the
 ///    corresponding value in the second parameter.
@@ -748,7 +748,7 @@
   return (__m128d)__builtin_ia32_cmplesd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is greater than the corresponding value
 ///    in the second parameter.
@@ -774,7 +774,7 @@
   return (__m128d) { __c[0], __a[1] };
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is greater than or equal to the
 ///    corresponding value in the second parameter.
@@ -800,7 +800,7 @@
   return (__m128d) { __c[0], __a[1] };
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is "ordered" with respect to the
 ///    corresponding value in the second parameter.
@@ -827,7 +827,7 @@
   return (__m128d)__builtin_ia32_cmpordsd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is "unordered" with respect to the
 ///    corresponding value in the second parameter.
@@ -855,7 +855,7 @@
   return (__m128d)__builtin_ia32_cmpunordsd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is unequal to the corresponding value in
 ///    the second parameter.
@@ -880,7 +880,7 @@
   return (__m128d)__builtin_ia32_cmpneqsd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is not less than the corresponding
 ///    value in the second parameter.
@@ -905,7 +905,7 @@
   return (__m128d)__builtin_ia32_cmpnltsd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is not less than or equal to the
 ///    corresponding value in the second parameter.
@@ -930,7 +930,7 @@
   return (__m128d)__builtin_ia32_cmpnlesd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is not greater than the corresponding
 ///    value in the second parameter.
@@ -956,7 +956,7 @@
   return (__m128d) { __c[0], __a[1] };
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is not greater than or equal to the
 ///    corresponding value in the second parameter.
@@ -982,7 +982,7 @@
   return (__m128d) { __c[0], __a[1] };
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] for equality.
 ///
 ///    The comparison yields 0 for false, 1 for true. If either of the two
@@ -1006,7 +1006,7 @@
   return __builtin_ia32_comisdeq((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is less than the corresponding value in
 ///    the second parameter.
@@ -1032,7 +1032,7 @@
   return __builtin_ia32_comisdlt((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is less than or equal to the
 ///    corresponding value in the second parameter.
@@ -1058,7 +1058,7 @@
   return __builtin_ia32_comisdle((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is greater than the corresponding value
 ///    in the second parameter.
@@ -1084,7 +1084,7 @@
   return __builtin_ia32_comisdgt((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is greater than or equal to the
 ///    corresponding value in the second parameter.
@@ -1110,7 +1110,7 @@
   return __builtin_ia32_comisdge((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is unequal to the corresponding value in
 ///    the second parameter.
@@ -1136,7 +1136,7 @@
   return __builtin_ia32_comisdneq((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] for equality. The
 ///    comparison yields 0 for false, 1 for true.
 ///
@@ -1160,7 +1160,7 @@
   return __builtin_ia32_ucomisdeq((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is less than the corresponding value in
 ///    the second parameter.
@@ -1186,7 +1186,7 @@
   return __builtin_ia32_ucomisdlt((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is less than or equal to the
 ///    corresponding value in the second parameter.
@@ -1212,7 +1212,7 @@
   return __builtin_ia32_ucomisdle((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is greater than the corresponding value
 ///    in the second parameter.
@@ -1238,7 +1238,7 @@
   return __builtin_ia32_ucomisdgt((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is greater than or equal to the
 ///    corresponding value in the second parameter.
@@ -1264,7 +1264,7 @@
   return __builtin_ia32_ucomisdge((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Compares the lower double-precision floating-point values in each of
+/// Compares the lower double-precision floating-point values in each of
 ///    the two 128-bit floating-point vectors of [2 x double] to determine if
 ///    the value in the first parameter is unequal to the corresponding value in
 ///    the second parameter.
@@ -1290,7 +1290,7 @@
   return __builtin_ia32_ucomisdneq((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Converts the two double-precision floating-point elements of a
+/// Converts the two double-precision floating-point elements of a
 ///    128-bit vector of [2 x double] into two single-precision floating-point
 ///    values, returned in the lower 64 bits of a 128-bit vector of [4 x float].
 ///    The upper 64 bits of the result vector are set to zero.
@@ -1309,7 +1309,7 @@
   return __builtin_ia32_cvtpd2ps((__v2df)__a);
 }
 
-/// \brief Converts the lower two single-precision floating-point elements of a
+/// Converts the lower two single-precision floating-point elements of a
 ///    128-bit vector of [4 x float] into two double-precision floating-point
 ///    values, returned in a 128-bit vector of [2 x double]. The upper two
 ///    elements of the input vector are unused.
@@ -1330,7 +1330,7 @@
       __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 1), __v2df);
 }
 
-/// \brief Converts the lower two integer elements of a 128-bit vector of
+/// Converts the lower two integer elements of a 128-bit vector of
 ///    [4 x i32] into two double-precision floating-point values, returned in a
 ///    128-bit vector of [2 x double].
 ///
@@ -1353,7 +1353,7 @@
       __builtin_shufflevector((__v4si)__a, (__v4si)__a, 0, 1), __v2df);
 }
 
-/// \brief Converts the two double-precision floating-point elements of a
+/// Converts the two double-precision floating-point elements of a
 ///    128-bit vector of [2 x double] into two signed 32-bit integer values,
 ///    returned in the lower 64 bits of a 128-bit vector of [4 x i32]. The upper
 ///    64 bits of the result vector are set to zero.
@@ -1372,7 +1372,7 @@
   return __builtin_ia32_cvtpd2dq((__v2df)__a);
 }
 
-/// \brief Converts the low-order element of a 128-bit vector of [2 x double]
+/// Converts the low-order element of a 128-bit vector of [2 x double]
 ///    into a 32-bit signed integer value.
 ///
 /// \headerfile <x86intrin.h>
@@ -1389,7 +1389,7 @@
   return __builtin_ia32_cvtsd2si((__v2df)__a);
 }
 
-/// \brief Converts the lower double-precision floating-point element of a
+/// Converts the lower double-precision floating-point element of a
 ///    128-bit vector of [2 x double], in the second parameter, into a
 ///    single-precision floating-point value, returned in the lower 32 bits of a
 ///    128-bit vector of [4 x float]. The upper 96 bits of the result vector are
@@ -1414,7 +1414,7 @@
   return (__m128)__builtin_ia32_cvtsd2ss((__v4sf)__a, (__v2df)__b);
 }
 
-/// \brief Converts a 32-bit signed integer value, in the second parameter, into
+/// Converts a 32-bit signed integer value, in the second parameter, into
 ///    a double-precision floating-point value, returned in the lower 64 bits of
 ///    a 128-bit vector of [2 x double]. The upper 64 bits of the result vector
 ///    are copied from the upper 64 bits of the first parameter.
@@ -1438,7 +1438,7 @@
   return __a;
 }
 
-/// \brief Converts the lower single-precision floating-point element of a
+/// Converts the lower single-precision floating-point element of a
 ///    128-bit vector of [4 x float], in the second parameter, into a
 ///    double-precision floating-point value, returned in the lower 64 bits of
 ///    a 128-bit vector of [2 x double]. The upper 64 bits of the result vector
@@ -1464,7 +1464,7 @@
   return __a;
 }
 
-/// \brief Converts the two double-precision floating-point elements of a
+/// Converts the two double-precision floating-point elements of a
 ///    128-bit vector of [2 x double] into two signed 32-bit integer values,
 ///    returned in the lower 64 bits of a 128-bit vector of [4 x i32].
 ///
@@ -1487,7 +1487,7 @@
   return (__m128i)__builtin_ia32_cvttpd2dq((__v2df)__a);
 }
 
-/// \brief Converts the low-order element of a [2 x double] vector into a 32-bit
+/// Converts the low-order element of a [2 x double] vector into a 32-bit
 ///    signed integer value, truncating the result when it is inexact.
 ///
 /// \headerfile <x86intrin.h>
@@ -1505,7 +1505,7 @@
   return __builtin_ia32_cvttsd2si((__v2df)__a);
 }
 
-/// \brief Converts the two double-precision floating-point elements of a
+/// Converts the two double-precision floating-point elements of a
 ///    128-bit vector of [2 x double] into two signed 32-bit integer values,
 ///    returned in a 64-bit vector of [2 x i32].
 ///
@@ -1522,7 +1522,7 @@
   return (__m64)__builtin_ia32_cvtpd2pi((__v2df)__a);
 }
 
-/// \brief Converts the two double-precision floating-point elements of a
+/// Converts the two double-precision floating-point elements of a
 ///    128-bit vector of [2 x double] into two signed 32-bit integer values,
 ///    returned in a 64-bit vector of [2 x i32].
 ///
@@ -1542,7 +1542,7 @@
   return (__m64)__builtin_ia32_cvttpd2pi((__v2df)__a);
 }
 
-/// \brief Converts the two signed 32-bit integer elements of a 64-bit vector of
+/// Converts the two signed 32-bit integer elements of a 64-bit vector of
 ///    [2 x i32] into two double-precision floating-point values, returned in a
 ///    128-bit vector of [2 x double].
 ///
@@ -1559,7 +1559,7 @@
   return __builtin_ia32_cvtpi2pd((__v2si)__a);
 }
 
-/// \brief Returns the low-order element of a 128-bit vector of [2 x double] as
+/// Returns the low-order element of a 128-bit vector of [2 x double] as
 ///    a double-precision floating-point value.
 ///
 /// \headerfile <x86intrin.h>
@@ -1576,7 +1576,7 @@
   return __a[0];
 }
 
-/// \brief Loads a 128-bit floating-point vector of [2 x double] from an aligned
+/// Loads a 128-bit floating-point vector of [2 x double] from an aligned
 ///    memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1593,7 +1593,7 @@
   return *(__m128d*)__dp;
 }
 
-/// \brief Loads a double-precision floating-point value from a specified memory
+/// Loads a double-precision floating-point value from a specified memory
 ///    location and duplicates it to both vector elements of a 128-bit vector of
 ///    [2 x double].
 ///
@@ -1617,7 +1617,7 @@
 
 #define        _mm_load_pd1(dp)        _mm_load1_pd(dp)
 
-/// \brief Loads two double-precision values, in reverse order, from an aligned
+/// Loads two double-precision values, in reverse order, from an aligned
 ///    memory location into a 128-bit vector of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -1638,7 +1638,7 @@
   return __builtin_shufflevector((__v2df)__u, (__v2df)__u, 1, 0);
 }
 
-/// \brief Loads a 128-bit floating-point vector of [2 x double] from an
+/// Loads a 128-bit floating-point vector of [2 x double] from an
 ///    unaligned memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1658,7 +1658,7 @@
   return ((struct __loadu_pd*)__dp)->__v;
 }
 
-/// \brief Loads a 64-bit integer value to the low element of a 128-bit integer
+/// Loads a 64-bit integer value to the low element of a 128-bit integer
 ///    vector and clears the upper element.
 ///
 /// \headerfile <x86intrin.h>
@@ -1679,7 +1679,7 @@
   return (__m128i){__u, 0L};
 }
 
-/// \brief Loads a 64-bit double-precision value to the low element of a
+/// Loads a 64-bit double-precision value to the low element of a
 ///    128-bit integer vector and clears the upper element.
 ///
 /// \headerfile <x86intrin.h>
@@ -1700,7 +1700,7 @@
   return (__m128d){ __u, 0 };
 }
 
-/// \brief Loads a double-precision value into the high-order bits of a 128-bit
+/// Loads a double-precision value into the high-order bits of a 128-bit
 ///    vector of [2 x double]. The low-order bits are copied from the low-order
 ///    bits of the first operand.
 ///
@@ -1727,7 +1727,7 @@
   return (__m128d){ __a[0], __u };
 }
 
-/// \brief Loads a double-precision value into the low-order bits of a 128-bit
+/// Loads a double-precision value into the low-order bits of a 128-bit
 ///    vector of [2 x double]. The high-order bits are copied from the
 ///    high-order bits of the first operand.
 ///
@@ -1754,7 +1754,7 @@
   return (__m128d){ __u, __a[1] };
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [2 x double] with
+/// Constructs a 128-bit floating-point vector of [2 x double] with
 ///    unspecified content. This could be used as an argument to another
 ///    intrinsic function where the argument is required but the value is not
 ///    actually used.
@@ -1771,7 +1771,7 @@
   return (__m128d)__builtin_ia32_undef128();
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [2 x double]. The lower
+/// Constructs a 128-bit floating-point vector of [2 x double]. The lower
 ///    64 bits of the vector are initialized with the specified double-precision
 ///    floating-point value. The upper 64 bits are set to zero.
 ///
@@ -1791,7 +1791,7 @@
   return (__m128d){ __w, 0 };
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [2 x double], with each
+/// Constructs a 128-bit floating-point vector of [2 x double], with each
 ///    of the two double-precision floating-point vector elements set to the
 ///    specified double-precision floating-point value.
 ///
@@ -1809,7 +1809,7 @@
   return (__m128d){ __w, __w };
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [2 x double], with each
+/// Constructs a 128-bit floating-point vector of [2 x double], with each
 ///    of the two double-precision floating-point vector elements set to the
 ///    specified double-precision floating-point value.
 ///
@@ -1827,7 +1827,7 @@
   return _mm_set1_pd(__w);
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [2 x double]
+/// Constructs a 128-bit floating-point vector of [2 x double]
 ///    initialized with the specified double-precision floating-point values.
 ///
 /// \headerfile <x86intrin.h>
@@ -1847,7 +1847,7 @@
   return (__m128d){ __x, __w };
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [2 x double],
+/// Constructs a 128-bit floating-point vector of [2 x double],
 ///    initialized in reverse order with the specified double-precision
 ///    floating-point values.
 ///
@@ -1868,7 +1868,7 @@
   return (__m128d){ __w, __x };
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [2 x double]
+/// Constructs a 128-bit floating-point vector of [2 x double]
 ///    initialized to zero.
 ///
 /// \headerfile <x86intrin.h>
@@ -1883,7 +1883,7 @@
   return (__m128d){ 0, 0 };
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [2 x double]. The lower
+/// Constructs a 128-bit floating-point vector of [2 x double]. The lower
 ///    64 bits are set to the lower 64 bits of the second parameter. The upper
 ///    64 bits are set to the upper 64 bits of the first parameter.
 ///
@@ -1904,7 +1904,7 @@
   return (__m128d){ __b[0], __a[1] };
 }
 
-/// \brief Stores the lower 64 bits of a 128-bit vector of [2 x double] to a
+/// Stores the lower 64 bits of a 128-bit vector of [2 x double] to a
 ///    memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1924,7 +1924,7 @@
   ((struct __mm_store_sd_struct*)__dp)->__u = __a[0];
 }
 
-/// \brief Moves packed double-precision values from a 128-bit vector of
+/// Moves packed double-precision values from a 128-bit vector of
 ///    [2 x double] to a memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1943,7 +1943,7 @@
   *(__m128d*)__dp = __a;
 }
 
-/// \brief Moves the lower 64 bits of a 128-bit vector of [2 x double] twice to
+/// Moves the lower 64 bits of a 128-bit vector of [2 x double] twice to
 ///    the upper and lower 64 bits of a memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1964,7 +1964,7 @@
   _mm_store_pd(__dp, __a);
 }
 
-/// \brief Moves the lower 64 bits of a 128-bit vector of [2 x double] twice to
+/// Moves the lower 64 bits of a 128-bit vector of [2 x double] twice to
 ///    the upper and lower 64 bits of a memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1984,7 +1984,7 @@
   return _mm_store1_pd(__dp, __a);
 }
 
-/// \brief Stores a 128-bit vector of [2 x double] into an unaligned memory
+/// Stores a 128-bit vector of [2 x double] into an unaligned memory
 ///    location.
 ///
 /// \headerfile <x86intrin.h>
@@ -2005,7 +2005,7 @@
   ((struct __storeu_pd*)__dp)->__v = __a;
 }
 
-/// \brief Stores two double-precision values, in reverse order, from a 128-bit
+/// Stores two double-precision values, in reverse order, from a 128-bit
 ///    vector of [2 x double] to a 16-byte aligned memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -2026,7 +2026,7 @@
   *(__m128d *)__dp = __a;
 }
 
-/// \brief Stores the upper 64 bits of a 128-bit vector of [2 x double] to a
+/// Stores the upper 64 bits of a 128-bit vector of [2 x double] to a
 ///    memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -2046,7 +2046,7 @@
   ((struct __mm_storeh_pd_struct*)__dp)->__u = __a[1];
 }
 
-/// \brief Stores the lower 64 bits of a 128-bit vector of [2 x double] to a
+/// Stores the lower 64 bits of a 128-bit vector of [2 x double] to a
 ///    memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -2066,7 +2066,7 @@
   ((struct __mm_storeh_pd_struct*)__dp)->__u = __a[0];
 }
 
-/// \brief Adds the corresponding elements of two 128-bit vectors of [16 x i8],
+/// Adds the corresponding elements of two 128-bit vectors of [16 x i8],
 ///    saving the lower 8 bits of each sum in the corresponding element of a
 ///    128-bit result vector of [16 x i8].
 ///
@@ -2088,7 +2088,7 @@
   return (__m128i)((__v16qu)__a + (__v16qu)__b);
 }
 
-/// \brief Adds the corresponding elements of two 128-bit vectors of [8 x i16],
+/// Adds the corresponding elements of two 128-bit vectors of [8 x i16],
 ///    saving the lower 16 bits of each sum in the corresponding element of a
 ///    128-bit result vector of [8 x i16].
 ///
@@ -2110,7 +2110,7 @@
   return (__m128i)((__v8hu)__a + (__v8hu)__b);
 }
 
-/// \brief Adds the corresponding elements of two 128-bit vectors of [4 x i32],
+/// Adds the corresponding elements of two 128-bit vectors of [4 x i32],
 ///    saving the lower 32 bits of each sum in the corresponding element of a
 ///    128-bit result vector of [4 x i32].
 ///
@@ -2132,7 +2132,7 @@
   return (__m128i)((__v4su)__a + (__v4su)__b);
 }
 
-/// \brief Adds two signed or unsigned 64-bit integer values, returning the
+/// Adds two signed or unsigned 64-bit integer values, returning the
 ///    lower 64 bits of the sum.
 ///
 /// \headerfile <x86intrin.h>
@@ -2150,7 +2150,7 @@
   return (__m64)__builtin_ia32_paddq((__v1di)__a, (__v1di)__b);
 }
 
-/// \brief Adds the corresponding elements of two 128-bit vectors of [2 x i64],
+/// Adds the corresponding elements of two 128-bit vectors of [2 x i64],
 ///    saving the lower 64 bits of each sum in the corresponding element of a
 ///    128-bit result vector of [2 x i64].
 ///
@@ -2172,7 +2172,7 @@
   return (__m128i)((__v2du)__a + (__v2du)__b);
 }
 
-/// \brief Adds, with saturation, the corresponding elements of two 128-bit
+/// Adds, with saturation, the corresponding elements of two 128-bit
 ///    signed [16 x i8] vectors, saving each sum in the corresponding element of
 ///    a 128-bit result vector of [16 x i8]. Positive sums greater than 0x7F are
 ///    saturated to 0x7F. Negative sums less than 0x80 are saturated to 0x80.
@@ -2193,7 +2193,7 @@
   return (__m128i)__builtin_ia32_paddsb128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief Adds, with saturation, the corresponding elements of two 128-bit
+/// Adds, with saturation, the corresponding elements of two 128-bit
 ///    signed [8 x i16] vectors, saving each sum in the corresponding element of
 ///    a 128-bit result vector of [8 x i16]. Positive sums greater than 0x7FFF
 ///    are saturated to 0x7FFF. Negative sums less than 0x8000 are saturated to
@@ -2215,7 +2215,7 @@
   return (__m128i)__builtin_ia32_paddsw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Adds, with saturation, the corresponding elements of two 128-bit
+/// Adds, with saturation, the corresponding elements of two 128-bit
 ///    unsigned [16 x i8] vectors, saving each sum in the corresponding element
 ///    of a 128-bit result vector of [16 x i8]. Positive sums greater than 0xFF
 ///    are saturated to 0xFF. Negative sums are saturated to 0x00.
@@ -2236,7 +2236,7 @@
   return (__m128i)__builtin_ia32_paddusb128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief Adds, with saturation, the corresponding elements of two 128-bit
+/// Adds, with saturation, the corresponding elements of two 128-bit
 ///    unsigned [8 x i16] vectors, saving each sum in the corresponding element
 ///    of a 128-bit result vector of [8 x i16]. Positive sums greater than
 ///    0xFFFF are saturated to 0xFFFF. Negative sums are saturated to 0x0000.
@@ -2257,7 +2257,7 @@
   return (__m128i)__builtin_ia32_paddusw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Computes the rounded avarages of corresponding elements of two
+/// Computes the rounded avarages of corresponding elements of two
 ///    128-bit unsigned [16 x i8] vectors, saving each result in the
 ///    corresponding element of a 128-bit result vector of [16 x i8].
 ///
@@ -2281,7 +2281,7 @@
                  >> 1, __v16qu);
 }
 
-/// \brief Computes the rounded avarages of corresponding elements of two
+/// Computes the rounded avarages of corresponding elements of two
 ///    128-bit unsigned [8 x i16] vectors, saving each result in the
 ///    corresponding element of a 128-bit result vector of [8 x i16].
 ///
@@ -2305,7 +2305,7 @@
                  >> 1, __v8hu);
 }
 
-/// \brief Multiplies the corresponding elements of two 128-bit signed [8 x i16]
+/// Multiplies the corresponding elements of two 128-bit signed [8 x i16]
 ///    vectors, producing eight intermediate 32-bit signed integer products, and
 ///    adds the consecutive pairs of 32-bit products to form a 128-bit signed
 ///    [4 x i32] vector.
@@ -2331,7 +2331,7 @@
   return (__m128i)__builtin_ia32_pmaddwd128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Compares corresponding elements of two 128-bit signed [8 x i16]
+/// Compares corresponding elements of two 128-bit signed [8 x i16]
 ///    vectors, saving the greater value from each comparison in the
 ///    corresponding element of a 128-bit result vector of [8 x i16].
 ///
@@ -2351,7 +2351,7 @@
   return (__m128i)__builtin_ia32_pmaxsw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Compares corresponding elements of two 128-bit unsigned [16 x i8]
+/// Compares corresponding elements of two 128-bit unsigned [16 x i8]
 ///    vectors, saving the greater value from each comparison in the
 ///    corresponding element of a 128-bit result vector of [16 x i8].
 ///
@@ -2371,7 +2371,7 @@
   return (__m128i)__builtin_ia32_pmaxub128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief Compares corresponding elements of two 128-bit signed [8 x i16]
+/// Compares corresponding elements of two 128-bit signed [8 x i16]
 ///    vectors, saving the smaller value from each comparison in the
 ///    corresponding element of a 128-bit result vector of [8 x i16].
 ///
@@ -2391,7 +2391,7 @@
   return (__m128i)__builtin_ia32_pminsw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Compares corresponding elements of two 128-bit unsigned [16 x i8]
+/// Compares corresponding elements of two 128-bit unsigned [16 x i8]
 ///    vectors, saving the smaller value from each comparison in the
 ///    corresponding element of a 128-bit result vector of [16 x i8].
 ///
@@ -2411,7 +2411,7 @@
   return (__m128i)__builtin_ia32_pminub128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief Multiplies the corresponding elements of two signed [8 x i16]
+/// Multiplies the corresponding elements of two signed [8 x i16]
 ///    vectors, saving the upper 16 bits of each 32-bit product in the
 ///    corresponding element of a 128-bit signed [8 x i16] result vector.
 ///
@@ -2431,7 +2431,7 @@
   return (__m128i)__builtin_ia32_pmulhw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Multiplies the corresponding elements of two unsigned [8 x i16]
+/// Multiplies the corresponding elements of two unsigned [8 x i16]
 ///    vectors, saving the upper 16 bits of each 32-bit product in the
 ///    corresponding element of a 128-bit unsigned [8 x i16] result vector.
 ///
@@ -2451,7 +2451,7 @@
   return (__m128i)__builtin_ia32_pmulhuw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Multiplies the corresponding elements of two signed [8 x i16]
+/// Multiplies the corresponding elements of two signed [8 x i16]
 ///    vectors, saving the lower 16 bits of each 32-bit product in the
 ///    corresponding element of a 128-bit signed [8 x i16] result vector.
 ///
@@ -2471,7 +2471,7 @@
   return (__m128i)((__v8hu)__a * (__v8hu)__b);
 }
 
-/// \brief Multiplies 32-bit unsigned integer values contained in the lower bits
+/// Multiplies 32-bit unsigned integer values contained in the lower bits
 ///    of the two 64-bit integer vectors and returns the 64-bit unsigned
 ///    product.
 ///
@@ -2490,7 +2490,7 @@
   return __builtin_ia32_pmuludq((__v2si)__a, (__v2si)__b);
 }
 
-/// \brief Multiplies 32-bit unsigned integer values contained in the lower
+/// Multiplies 32-bit unsigned integer values contained in the lower
 ///    bits of the corresponding elements of two [2 x i64] vectors, and returns
 ///    the 64-bit products in the corresponding elements of a [2 x i64] vector.
 ///
@@ -2509,7 +2509,7 @@
   return __builtin_ia32_pmuludq128((__v4si)__a, (__v4si)__b);
 }
 
-/// \brief Computes the absolute differences of corresponding 8-bit integer
+/// Computes the absolute differences of corresponding 8-bit integer
 ///    values in two 128-bit vectors. Sums the first 8 absolute differences, and
 ///    separately sums the second 8 absolute differences. Packs these two
 ///    unsigned 16-bit integer sums into the upper and lower elements of a
@@ -2531,7 +2531,7 @@
   return __builtin_ia32_psadbw128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief Subtracts the corresponding 8-bit integer values in the operands.
+/// Subtracts the corresponding 8-bit integer values in the operands.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2549,7 +2549,7 @@
   return (__m128i)((__v16qu)__a - (__v16qu)__b);
 }
 
-/// \brief Subtracts the corresponding 16-bit integer values in the operands.
+/// Subtracts the corresponding 16-bit integer values in the operands.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2567,7 +2567,7 @@
   return (__m128i)((__v8hu)__a - (__v8hu)__b);
 }
 
-/// \brief Subtracts the corresponding 32-bit integer values in the operands.
+/// Subtracts the corresponding 32-bit integer values in the operands.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2585,7 +2585,7 @@
   return (__m128i)((__v4su)__a - (__v4su)__b);
 }
 
-/// \brief Subtracts signed or unsigned 64-bit integer values and writes the
+/// Subtracts signed or unsigned 64-bit integer values and writes the
 ///    difference to the corresponding bits in the destination.
 ///
 /// \headerfile <x86intrin.h>
@@ -2604,7 +2604,7 @@
   return (__m64)__builtin_ia32_psubq((__v1di)__a, (__v1di)__b);
 }
 
-/// \brief Subtracts the corresponding elements of two [2 x i64] vectors.
+/// Subtracts the corresponding elements of two [2 x i64] vectors.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2622,7 +2622,7 @@
   return (__m128i)((__v2du)__a - (__v2du)__b);
 }
 
-/// \brief Subtracts corresponding 8-bit signed integer values in the input and
+/// Subtracts corresponding 8-bit signed integer values in the input and
 ///    returns the differences in the corresponding bytes in the destination.
 ///    Differences greater than 0x7F are saturated to 0x7F, and differences less
 ///    than 0x80 are saturated to 0x80.
@@ -2643,7 +2643,7 @@
   return (__m128i)__builtin_ia32_psubsb128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief Subtracts corresponding 16-bit signed integer values in the input and
+/// Subtracts corresponding 16-bit signed integer values in the input and
 ///    returns the differences in the corresponding bytes in the destination.
 ///    Differences greater than 0x7FFF are saturated to 0x7FFF, and values less
 ///    than 0x8000 are saturated to 0x8000.
@@ -2664,7 +2664,7 @@
   return (__m128i)__builtin_ia32_psubsw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Subtracts corresponding 8-bit unsigned integer values in the input
+/// Subtracts corresponding 8-bit unsigned integer values in the input
 ///    and returns the differences in the corresponding bytes in the
 ///    destination. Differences less than 0x00 are saturated to 0x00.
 ///
@@ -2684,7 +2684,7 @@
   return (__m128i)__builtin_ia32_psubusb128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief Subtracts corresponding 16-bit unsigned integer values in the input
+/// Subtracts corresponding 16-bit unsigned integer values in the input
 ///    and returns the differences in the corresponding bytes in the
 ///    destination. Differences less than 0x0000 are saturated to 0x0000.
 ///
@@ -2704,7 +2704,7 @@
   return (__m128i)__builtin_ia32_psubusw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Performs a bitwise AND of two 128-bit integer vectors.
+/// Performs a bitwise AND of two 128-bit integer vectors.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2722,7 +2722,7 @@
   return (__m128i)((__v2du)__a & (__v2du)__b);
 }
 
-/// \brief Performs a bitwise AND of two 128-bit integer vectors, using the
+/// Performs a bitwise AND of two 128-bit integer vectors, using the
 ///    one's complement of the values contained in the first source operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2741,7 +2741,7 @@
 {
   return (__m128i)(~(__v2du)__a & (__v2du)__b);
 }
-/// \brief Performs a bitwise OR of two 128-bit integer vectors.
+/// Performs a bitwise OR of two 128-bit integer vectors.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2759,7 +2759,7 @@
   return (__m128i)((__v2du)__a | (__v2du)__b);
 }
 
-/// \brief Performs a bitwise exclusive OR of two 128-bit integer vectors.
+/// Performs a bitwise exclusive OR of two 128-bit integer vectors.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -2777,7 +2777,7 @@
   return (__m128i)((__v2du)__a ^ (__v2du)__b);
 }
 
-/// \brief Left-shifts the 128-bit integer vector operand by the specified
+/// Left-shifts the 128-bit integer vector operand by the specified
 ///    number of bytes. Low-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -2818,7 +2818,7 @@
 #define _mm_bslli_si128(a, imm) \
   _mm_slli_si128((a), (imm))
 
-/// \brief Left-shifts each 16-bit value in the 128-bit integer vector operand
+/// Left-shifts each 16-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. Low-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -2837,7 +2837,7 @@
   return (__m128i)__builtin_ia32_psllwi128((__v8hi)__a, __count);
 }
 
-/// \brief Left-shifts each 16-bit value in the 128-bit integer vector operand
+/// Left-shifts each 16-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. Low-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -2856,7 +2856,7 @@
   return (__m128i)__builtin_ia32_psllw128((__v8hi)__a, (__v8hi)__count);
 }
 
-/// \brief Left-shifts each 32-bit value in the 128-bit integer vector operand
+/// Left-shifts each 32-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. Low-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -2875,7 +2875,7 @@
   return (__m128i)__builtin_ia32_pslldi128((__v4si)__a, __count);
 }
 
-/// \brief Left-shifts each 32-bit value in the 128-bit integer vector operand
+/// Left-shifts each 32-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. Low-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -2894,7 +2894,7 @@
   return (__m128i)__builtin_ia32_pslld128((__v4si)__a, (__v4si)__count);
 }
 
-/// \brief Left-shifts each 64-bit value in the 128-bit integer vector operand
+/// Left-shifts each 64-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. Low-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -2913,7 +2913,7 @@
   return __builtin_ia32_psllqi128((__v2di)__a, __count);
 }
 
-/// \brief Left-shifts each 64-bit value in the 128-bit integer vector operand
+/// Left-shifts each 64-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. Low-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -2932,7 +2932,7 @@
   return __builtin_ia32_psllq128((__v2di)__a, (__v2di)__count);
 }
 
-/// \brief Right-shifts each 16-bit value in the 128-bit integer vector operand
+/// Right-shifts each 16-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. High-order bits are filled with the sign
 ///    bit of the initial value.
 ///
@@ -2952,7 +2952,7 @@
   return (__m128i)__builtin_ia32_psrawi128((__v8hi)__a, __count);
 }
 
-/// \brief Right-shifts each 16-bit value in the 128-bit integer vector operand
+/// Right-shifts each 16-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. High-order bits are filled with the sign
 ///    bit of the initial value.
 ///
@@ -2972,7 +2972,7 @@
   return (__m128i)__builtin_ia32_psraw128((__v8hi)__a, (__v8hi)__count);
 }
 
-/// \brief Right-shifts each 32-bit value in the 128-bit integer vector operand
+/// Right-shifts each 32-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. High-order bits are filled with the sign
 ///    bit of the initial value.
 ///
@@ -2992,7 +2992,7 @@
   return (__m128i)__builtin_ia32_psradi128((__v4si)__a, __count);
 }
 
-/// \brief Right-shifts each 32-bit value in the 128-bit integer vector operand
+/// Right-shifts each 32-bit value in the 128-bit integer vector operand
 ///    by the specified number of bits. High-order bits are filled with the sign
 ///    bit of the initial value.
 ///
@@ -3012,7 +3012,7 @@
   return (__m128i)__builtin_ia32_psrad128((__v4si)__a, (__v4si)__count);
 }
 
-/// \brief Right-shifts the 128-bit integer vector operand by the specified
+/// Right-shifts the 128-bit integer vector operand by the specified
 ///    number of bytes. High-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -3053,7 +3053,7 @@
 #define _mm_bsrli_si128(a, imm) \
   _mm_srli_si128((a), (imm))
 
-/// \brief Right-shifts each of 16-bit values in the 128-bit integer vector
+/// Right-shifts each of 16-bit values in the 128-bit integer vector
 ///    operand by the specified number of bits. High-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -3072,7 +3072,7 @@
   return (__m128i)__builtin_ia32_psrlwi128((__v8hi)__a, __count);
 }
 
-/// \brief Right-shifts each of 16-bit values in the 128-bit integer vector
+/// Right-shifts each of 16-bit values in the 128-bit integer vector
 ///    operand by the specified number of bits. High-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -3091,7 +3091,7 @@
   return (__m128i)__builtin_ia32_psrlw128((__v8hi)__a, (__v8hi)__count);
 }
 
-/// \brief Right-shifts each of 32-bit values in the 128-bit integer vector
+/// Right-shifts each of 32-bit values in the 128-bit integer vector
 ///    operand by the specified number of bits. High-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -3110,7 +3110,7 @@
   return (__m128i)__builtin_ia32_psrldi128((__v4si)__a, __count);
 }
 
-/// \brief Right-shifts each of 32-bit values in the 128-bit integer vector
+/// Right-shifts each of 32-bit values in the 128-bit integer vector
 ///    operand by the specified number of bits. High-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -3129,7 +3129,7 @@
   return (__m128i)__builtin_ia32_psrld128((__v4si)__a, (__v4si)__count);
 }
 
-/// \brief Right-shifts each of 64-bit values in the 128-bit integer vector
+/// Right-shifts each of 64-bit values in the 128-bit integer vector
 ///    operand by the specified number of bits. High-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -3148,7 +3148,7 @@
   return __builtin_ia32_psrlqi128((__v2di)__a, __count);
 }
 
-/// \brief Right-shifts each of 64-bit values in the 128-bit integer vector
+/// Right-shifts each of 64-bit values in the 128-bit integer vector
 ///    operand by the specified number of bits. High-order bits are cleared.
 ///
 /// \headerfile <x86intrin.h>
@@ -3167,7 +3167,7 @@
   return __builtin_ia32_psrlq128((__v2di)__a, (__v2di)__count);
 }
 
-/// \brief Compares each of the corresponding 8-bit values of the 128-bit
+/// Compares each of the corresponding 8-bit values of the 128-bit
 ///    integer vectors for equality. Each comparison yields 0x0 for false, 0xFF
 ///    for true.
 ///
@@ -3186,7 +3186,7 @@
   return (__m128i)((__v16qi)__a == (__v16qi)__b);
 }
 
-/// \brief Compares each of the corresponding 16-bit values of the 128-bit
+/// Compares each of the corresponding 16-bit values of the 128-bit
 ///    integer vectors for equality. Each comparison yields 0x0 for false,
 ///    0xFFFF for true.
 ///
@@ -3205,7 +3205,7 @@
   return (__m128i)((__v8hi)__a == (__v8hi)__b);
 }
 
-/// \brief Compares each of the corresponding 32-bit values of the 128-bit
+/// Compares each of the corresponding 32-bit values of the 128-bit
 ///    integer vectors for equality. Each comparison yields 0x0 for false,
 ///    0xFFFFFFFF for true.
 ///
@@ -3224,7 +3224,7 @@
   return (__m128i)((__v4si)__a == (__v4si)__b);
 }
 
-/// \brief Compares each of the corresponding signed 8-bit values of the 128-bit
+/// Compares each of the corresponding signed 8-bit values of the 128-bit
 ///    integer vectors to determine if the values in the first operand are
 ///    greater than those in the second operand. Each comparison yields 0x0 for
 ///    false, 0xFF for true.
@@ -3246,7 +3246,7 @@
   return (__m128i)((__v16qs)__a > (__v16qs)__b);
 }
 
-/// \brief Compares each of the corresponding signed 16-bit values of the
+/// Compares each of the corresponding signed 16-bit values of the
 ///    128-bit integer vectors to determine if the values in the first operand
 ///    are greater than those in the second operand.
 ///
@@ -3267,7 +3267,7 @@
   return (__m128i)((__v8hi)__a > (__v8hi)__b);
 }
 
-/// \brief Compares each of the corresponding signed 32-bit values of the
+/// Compares each of the corresponding signed 32-bit values of the
 ///    128-bit integer vectors to determine if the values in the first operand
 ///    are greater than those in the second operand.
 ///
@@ -3288,7 +3288,7 @@
   return (__m128i)((__v4si)__a > (__v4si)__b);
 }
 
-/// \brief Compares each of the corresponding signed 8-bit values of the 128-bit
+/// Compares each of the corresponding signed 8-bit values of the 128-bit
 ///    integer vectors to determine if the values in the first operand are less
 ///    than those in the second operand.
 ///
@@ -3309,7 +3309,7 @@
   return _mm_cmpgt_epi8(__b, __a);
 }
 
-/// \brief Compares each of the corresponding signed 16-bit values of the
+/// Compares each of the corresponding signed 16-bit values of the
 ///    128-bit integer vectors to determine if the values in the first operand
 ///    are less than those in the second operand.
 ///
@@ -3330,7 +3330,7 @@
   return _mm_cmpgt_epi16(__b, __a);
 }
 
-/// \brief Compares each of the corresponding signed 32-bit values of the
+/// Compares each of the corresponding signed 32-bit values of the
 ///    128-bit integer vectors to determine if the values in the first operand
 ///    are less than those in the second operand.
 ///
@@ -3352,7 +3352,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Converts a 64-bit signed integer value from the second operand into a
+/// Converts a 64-bit signed integer value from the second operand into a
 ///    double-precision value and returns it in the lower element of a [2 x
 ///    double] vector; the upper element of the returned vector is copied from
 ///    the upper element of the first operand.
@@ -3376,7 +3376,7 @@
   return __a;
 }
 
-/// \brief Converts the first (lower) element of a vector of [2 x double] into a
+/// Converts the first (lower) element of a vector of [2 x double] into a
 ///    64-bit signed integer value, according to the current rounding mode.
 ///
 /// \headerfile <x86intrin.h>
@@ -3393,7 +3393,7 @@
   return __builtin_ia32_cvtsd2si64((__v2df)__a);
 }
 
-/// \brief Converts the first (lower) element of a vector of [2 x double] into a
+/// Converts the first (lower) element of a vector of [2 x double] into a
 ///    64-bit signed integer value, truncating the result when it is inexact.
 ///
 /// \headerfile <x86intrin.h>
@@ -3412,7 +3412,7 @@
 }
 #endif
 
-/// \brief Converts a vector of [4 x i32] into a vector of [4 x float].
+/// Converts a vector of [4 x i32] into a vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -3427,7 +3427,7 @@
   return __builtin_ia32_cvtdq2ps((__v4si)__a);
 }
 
-/// \brief Converts a vector of [4 x float] into a vector of [4 x i32].
+/// Converts a vector of [4 x float] into a vector of [4 x i32].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -3443,7 +3443,7 @@
   return (__m128i)__builtin_ia32_cvtps2dq((__v4sf)__a);
 }
 
-/// \brief Converts a vector of [4 x float] into a vector of [4 x i32],
+/// Converts a vector of [4 x float] into a vector of [4 x i32],
 ///    truncating the result when it is inexact.
 ///
 /// \headerfile <x86intrin.h>
@@ -3460,7 +3460,7 @@
   return (__m128i)__builtin_ia32_cvttps2dq((__v4sf)__a);
 }
 
-/// \brief Returns a vector of [4 x i32] where the lowest element is the input
+/// Returns a vector of [4 x i32] where the lowest element is the input
 ///    operand and the remaining elements are zero.
 ///
 /// \headerfile <x86intrin.h>
@@ -3477,7 +3477,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Returns a vector of [2 x i64] where the lower element is the input
+/// Returns a vector of [2 x i64] where the lower element is the input
 ///    operand and the upper element is zero.
 ///
 /// \headerfile <x86intrin.h>
@@ -3494,7 +3494,7 @@
 }
 #endif
 
-/// \brief Moves the least significant 32 bits of a vector of [4 x i32] to a
+/// Moves the least significant 32 bits of a vector of [4 x i32] to a
 ///    32-bit signed integer value.
 ///
 /// \headerfile <x86intrin.h>
@@ -3513,7 +3513,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Moves the least significant 64 bits of a vector of [2 x i64] to a
+/// Moves the least significant 64 bits of a vector of [2 x i64] to a
 ///    64-bit signed integer value.
 ///
 /// \headerfile <x86intrin.h>
@@ -3531,7 +3531,7 @@
 }
 #endif
 
-/// \brief Moves packed integer values from an aligned 128-bit memory location
+/// Moves packed integer values from an aligned 128-bit memory location
 ///    to elements in a 128-bit integer vector.
 ///
 /// \headerfile <x86intrin.h>
@@ -3547,7 +3547,7 @@
   return *__p;
 }
 
-/// \brief Moves packed integer values from an unaligned 128-bit memory location
+/// Moves packed integer values from an unaligned 128-bit memory location
 ///    to elements in a 128-bit integer vector.
 ///
 /// \headerfile <x86intrin.h>
@@ -3566,7 +3566,7 @@
   return ((struct __loadu_si128*)__p)->__v;
 }
 
-/// \brief Returns a vector of [2 x i64] where the lower element is taken from
+/// Returns a vector of [2 x i64] where the lower element is taken from
 ///    the lower element of the operand, and the upper element is zero.
 ///
 /// \headerfile <x86intrin.h>
@@ -3587,7 +3587,7 @@
   return (__m128i) { ((struct __mm_loadl_epi64_struct*)__p)->__u, 0};
 }
 
-/// \brief Generates a 128-bit vector of [4 x i32] with unspecified content.
+/// Generates a 128-bit vector of [4 x i32] with unspecified content.
 ///    This could be used as an argument to another intrinsic function where the
 ///    argument is required but the value is not actually used.
 ///
@@ -3602,7 +3602,7 @@
   return (__m128i)__builtin_ia32_undef128();
 }
 
-/// \brief Initializes both 64-bit values in a 128-bit vector of [2 x i64] with
+/// Initializes both 64-bit values in a 128-bit vector of [2 x i64] with
 ///    the specified 64-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3624,7 +3624,7 @@
   return (__m128i){ __q0, __q1 };
 }
 
-/// \brief Initializes both 64-bit values in a 128-bit vector of [2 x i64] with
+/// Initializes both 64-bit values in a 128-bit vector of [2 x i64] with
 ///    the specified 64-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3646,7 +3646,7 @@
   return (__m128i){ (long long)__q0, (long long)__q1 };
 }
 
-/// \brief Initializes the 32-bit values in a 128-bit vector of [4 x i32] with
+/// Initializes the 32-bit values in a 128-bit vector of [4 x i32] with
 ///    the specified 32-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3674,7 +3674,7 @@
   return (__m128i)(__v4si){ __i0, __i1, __i2, __i3};
 }
 
-/// \brief Initializes the 16-bit values in a 128-bit vector of [8 x i16] with
+/// Initializes the 16-bit values in a 128-bit vector of [8 x i16] with
 ///    the specified 16-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3714,7 +3714,7 @@
   return (__m128i)(__v8hi){ __w0, __w1, __w2, __w3, __w4, __w5, __w6, __w7 };
 }
 
-/// \brief Initializes the 8-bit values in a 128-bit vector of [16 x i8] with
+/// Initializes the 8-bit values in a 128-bit vector of [16 x i8] with
 ///    the specified 8-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3762,7 +3762,7 @@
   return (__m128i)(__v16qi){ __b0, __b1, __b2, __b3, __b4, __b5, __b6, __b7, __b8, __b9, __b10, __b11, __b12, __b13, __b14, __b15 };
 }
 
-/// \brief Initializes both values in a 128-bit integer vector with the
+/// Initializes both values in a 128-bit integer vector with the
 ///    specified 64-bit integer value.
 ///
 /// \headerfile <x86intrin.h>
@@ -3781,7 +3781,7 @@
   return (__m128i){ __q, __q };
 }
 
-/// \brief Initializes both values in a 128-bit vector of [2 x i64] with the
+/// Initializes both values in a 128-bit vector of [2 x i64] with the
 ///    specified 64-bit value.
 ///
 /// \headerfile <x86intrin.h>
@@ -3800,7 +3800,7 @@
   return (__m128i){ (long long)__q, (long long)__q };
 }
 
-/// \brief Initializes all values in a 128-bit vector of [4 x i32] with the
+/// Initializes all values in a 128-bit vector of [4 x i32] with the
 ///    specified 32-bit value.
 ///
 /// \headerfile <x86intrin.h>
@@ -3819,7 +3819,7 @@
   return (__m128i)(__v4si){ __i, __i, __i, __i };
 }
 
-/// \brief Initializes all values in a 128-bit vector of [8 x i16] with the
+/// Initializes all values in a 128-bit vector of [8 x i16] with the
 ///    specified 16-bit value.
 ///
 /// \headerfile <x86intrin.h>
@@ -3838,7 +3838,7 @@
   return (__m128i)(__v8hi){ __w, __w, __w, __w, __w, __w, __w, __w };
 }
 
-/// \brief Initializes all values in a 128-bit vector of [16 x i8] with the
+/// Initializes all values in a 128-bit vector of [16 x i8] with the
 ///    specified 8-bit value.
 ///
 /// \headerfile <x86intrin.h>
@@ -3857,7 +3857,7 @@
   return (__m128i)(__v16qi){ __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b };
 }
 
-/// \brief Constructs a 128-bit integer vector, initialized in reverse order
+/// Constructs a 128-bit integer vector, initialized in reverse order
 ///     with the specified 64-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3877,7 +3877,7 @@
   return (__m128i){ (long long)__q0, (long long)__q1 };
 }
 
-/// \brief Constructs a 128-bit integer vector, initialized in reverse order
+/// Constructs a 128-bit integer vector, initialized in reverse order
 ///     with the specified 32-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3900,7 +3900,7 @@
   return (__m128i)(__v4si){ __i0, __i1, __i2, __i3};
 }
 
-/// \brief Constructs a 128-bit integer vector, initialized in reverse order
+/// Constructs a 128-bit integer vector, initialized in reverse order
 ///     with the specified 16-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3931,7 +3931,7 @@
   return (__m128i)(__v8hi){ __w0, __w1, __w2, __w3, __w4, __w5, __w6, __w7 };
 }
 
-/// \brief Constructs a 128-bit integer vector, initialized in reverse order
+/// Constructs a 128-bit integer vector, initialized in reverse order
 ///     with the specified 8-bit integral values.
 ///
 /// \headerfile <x86intrin.h>
@@ -3978,7 +3978,7 @@
   return (__m128i)(__v16qi){ __b0, __b1, __b2, __b3, __b4, __b5, __b6, __b7, __b8, __b9, __b10, __b11, __b12, __b13, __b14, __b15 };
 }
 
-/// \brief Creates a 128-bit integer vector initialized to zero.
+/// Creates a 128-bit integer vector initialized to zero.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -3992,7 +3992,7 @@
   return (__m128i){ 0LL, 0LL };
 }
 
-/// \brief Stores a 128-bit integer vector to a memory location aligned on a
+/// Stores a 128-bit integer vector to a memory location aligned on a
 ///    128-bit boundary.
 ///
 /// \headerfile <x86intrin.h>
@@ -4010,7 +4010,7 @@
   *__p = __b;
 }
 
-/// \brief Stores a 128-bit integer vector to an unaligned memory location.
+/// Stores a 128-bit integer vector to an unaligned memory location.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -4029,7 +4029,7 @@
   ((struct __storeu_si128*)__p)->__v = __b;
 }
 
-/// \brief Moves bytes selected by the mask from the first operand to the
+/// Moves bytes selected by the mask from the first operand to the
 ///    specified unaligned memory location. When a mask bit is 1, the
 ///    corresponding byte is written, otherwise it is not written.
 ///
@@ -4056,7 +4056,7 @@
   __builtin_ia32_maskmovdqu((__v16qi)__d, (__v16qi)__n, __p);
 }
 
-/// \brief Stores the lower 64 bits of a 128-bit integer vector of [2 x i64] to
+/// Stores the lower 64 bits of a 128-bit integer vector of [2 x i64] to
 ///    a memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -4078,7 +4078,7 @@
   ((struct __mm_storel_epi64_struct*)__p)->__u = __a[0];
 }
 
-/// \brief Stores a 128-bit floating point vector of [2 x double] to a 128-bit
+/// Stores a 128-bit floating point vector of [2 x double] to a 128-bit
 ///    aligned memory location.
 ///
 ///    To minimize caching, the data is flagged as non-temporal (unlikely to be
@@ -4098,7 +4098,7 @@
   __builtin_nontemporal_store((__v2df)__a, (__v2df*)__p);
 }
 
-/// \brief Stores a 128-bit integer vector to a 128-bit aligned memory location.
+/// Stores a 128-bit integer vector to a 128-bit aligned memory location.
 ///
 ///    To minimize caching, the data is flagged as non-temporal (unlikely to be
 ///    used again soon).
@@ -4117,7 +4117,7 @@
   __builtin_nontemporal_store((__v2di)__a, (__v2di*)__p);
 }
 
-/// \brief Stores a 32-bit integer value in the specified memory location.
+/// Stores a 32-bit integer value in the specified memory location.
 ///
 ///    To minimize caching, the data is flagged as non-temporal (unlikely to be
 ///    used again soon).
@@ -4137,7 +4137,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Stores a 64-bit integer value in the specified memory location.
+/// Stores a 64-bit integer value in the specified memory location.
 ///
 ///    To minimize caching, the data is flagged as non-temporal (unlikely to be
 ///    used again soon).
@@ -4161,7 +4161,7 @@
 extern "C" {
 #endif
 
-/// \brief The cache line containing \a __p is flushed and invalidated from all
+/// The cache line containing \a __p is flushed and invalidated from all
 ///    caches in the coherency domain.
 ///
 /// \headerfile <x86intrin.h>
@@ -4173,7 +4173,7 @@
 ///    flushed.
 void _mm_clflush(void const * __p);
 
-/// \brief Forces strong memory ordering (serialization) between load
+/// Forces strong memory ordering (serialization) between load
 ///    instructions preceding this instruction and load instructions following
 ///    this instruction, ensuring the system completes all previous loads before
 ///    executing subsequent loads.
@@ -4184,7 +4184,7 @@
 ///
 void _mm_lfence(void);
 
-/// \brief Forces strong memory ordering (serialization) between load and store
+/// Forces strong memory ordering (serialization) between load and store
 ///    instructions preceding this instruction and load and store instructions
 ///    following this instruction, ensuring that the system completes all
 ///    previous memory accesses before executing subsequent memory accesses.
@@ -4199,7 +4199,7 @@
 } // extern "C"
 #endif
 
-/// \brief Converts 16-bit signed integers from both 128-bit integer vector
+/// Converts 16-bit signed integers from both 128-bit integer vector
 ///    operands into 8-bit signed integers, and packs the results into the
 ///    destination. Positive values greater than 0x7F are saturated to 0x7F.
 ///    Negative values less than 0x80 are saturated to 0x80.
@@ -4227,7 +4227,7 @@
   return (__m128i)__builtin_ia32_packsswb128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Converts 32-bit signed integers from both 128-bit integer vector
+/// Converts 32-bit signed integers from both 128-bit integer vector
 ///    operands into 16-bit signed integers, and packs the results into the
 ///    destination. Positive values greater than 0x7FFF are saturated to 0x7FFF.
 ///    Negative values less than 0x8000 are saturated to 0x8000.
@@ -4255,7 +4255,7 @@
   return (__m128i)__builtin_ia32_packssdw128((__v4si)__a, (__v4si)__b);
 }
 
-/// \brief Converts 16-bit signed integers from both 128-bit integer vector
+/// Converts 16-bit signed integers from both 128-bit integer vector
 ///    operands into 8-bit unsigned integers, and packs the results into the
 ///    destination. Values greater than 0xFF are saturated to 0xFF. Values less
 ///    than 0x00 are saturated to 0x00.
@@ -4283,7 +4283,7 @@
   return (__m128i)__builtin_ia32_packuswb128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Extracts 16 bits from a 128-bit integer vector of [8 x i16], using
+/// Extracts 16 bits from a 128-bit integer vector of [8 x i16], using
 ///    the immediate-value parameter as a selector.
 ///
 /// \headerfile <x86intrin.h>
@@ -4312,7 +4312,7 @@
   return (unsigned short)__b[__imm & 7];
 }
 
-/// \brief Constructs a 128-bit integer vector by first making a copy of the
+/// Constructs a 128-bit integer vector by first making a copy of the
 ///    128-bit integer vector parameter, and then inserting the lower 16 bits
 ///    of an integer parameter into an offset specified by the immediate-value
 ///    parameter.
@@ -4340,7 +4340,7 @@
   return (__m128i)__c;
 }
 
-/// \brief Copies the values of the most significant bits from each 8-bit
+/// Copies the values of the most significant bits from each 8-bit
 ///    element in a 128-bit integer vector of [16 x i8] to create a 16-bit mask
 ///    value, zero-extends the value, and writes it to the destination.
 ///
@@ -4358,7 +4358,7 @@
   return __builtin_ia32_pmovmskb128((__v16qi)__a);
 }
 
-/// \brief Constructs a 128-bit integer vector by shuffling four 32-bit
+/// Constructs a 128-bit integer vector by shuffling four 32-bit
 ///    elements of a 128-bit integer vector parameter, using the immediate-value
 ///    parameter as a specifier.
 ///
@@ -4392,7 +4392,7 @@
                                    ((imm) >> 0) & 0x3, ((imm) >> 2) & 0x3, \
                                    ((imm) >> 4) & 0x3, ((imm) >> 6) & 0x3); })
 
-/// \brief Constructs a 128-bit integer vector by shuffling four lower 16-bit
+/// Constructs a 128-bit integer vector by shuffling four lower 16-bit
 ///    elements of a 128-bit integer vector of [8 x i16], using the immediate
 ///    value parameter as a specifier.
 ///
@@ -4426,7 +4426,7 @@
                                    ((imm) >> 4) & 0x3, ((imm) >> 6) & 0x3, \
                                    4, 5, 6, 7); })
 
-/// \brief Constructs a 128-bit integer vector by shuffling four upper 16-bit
+/// Constructs a 128-bit integer vector by shuffling four upper 16-bit
 ///    elements of a 128-bit integer vector of [8 x i16], using the immediate
 ///    value parameter as a specifier.
 ///
@@ -4462,7 +4462,7 @@
                                    4 + (((imm) >> 4) & 0x3), \
                                    4 + (((imm) >> 6) & 0x3)); })
 
-/// \brief Unpacks the high-order (index 8-15) values from two 128-bit vectors
+/// Unpacks the high-order (index 8-15) values from two 128-bit vectors
 ///    of [16 x i8] and interleaves them into a 128-bit vector of [16 x i8].
 ///
 /// \headerfile <x86intrin.h>
@@ -4497,7 +4497,7 @@
   return (__m128i)__builtin_shufflevector((__v16qi)__a, (__v16qi)__b, 8, 16+8, 9, 16+9, 10, 16+10, 11, 16+11, 12, 16+12, 13, 16+13, 14, 16+14, 15, 16+15);
 }
 
-/// \brief Unpacks the high-order (index 4-7) values from two 128-bit vectors of
+/// Unpacks the high-order (index 4-7) values from two 128-bit vectors of
 ///    [8 x i16] and interleaves them into a 128-bit vector of [8 x i16].
 ///
 /// \headerfile <x86intrin.h>
@@ -4524,7 +4524,7 @@
   return (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi)__b, 4, 8+4, 5, 8+5, 6, 8+6, 7, 8+7);
 }
 
-/// \brief Unpacks the high-order (index 2,3) values from two 128-bit vectors of
+/// Unpacks the high-order (index 2,3) values from two 128-bit vectors of
 ///    [4 x i32] and interleaves them into a 128-bit vector of [4 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -4547,7 +4547,7 @@
   return (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si)__b, 2, 4+2, 3, 4+3);
 }
 
-/// \brief Unpacks the high-order 64-bit elements from two 128-bit vectors of
+/// Unpacks the high-order 64-bit elements from two 128-bit vectors of
 ///    [2 x i64] and interleaves them into a 128-bit vector of [2 x i64].
 ///
 /// \headerfile <x86intrin.h>
@@ -4568,7 +4568,7 @@
   return (__m128i)__builtin_shufflevector((__v2di)__a, (__v2di)__b, 1, 2+1);
 }
 
-/// \brief Unpacks the low-order (index 0-7) values from two 128-bit vectors of
+/// Unpacks the low-order (index 0-7) values from two 128-bit vectors of
 ///    [16 x i8] and interleaves them into a 128-bit vector of [16 x i8].
 ///
 /// \headerfile <x86intrin.h>
@@ -4603,7 +4603,7 @@
   return (__m128i)__builtin_shufflevector((__v16qi)__a, (__v16qi)__b, 0, 16+0, 1, 16+1, 2, 16+2, 3, 16+3, 4, 16+4, 5, 16+5, 6, 16+6, 7, 16+7);
 }
 
-/// \brief Unpacks the low-order (index 0-3) values from each of the two 128-bit
+/// Unpacks the low-order (index 0-3) values from each of the two 128-bit
 ///    vectors of [8 x i16] and interleaves them into a 128-bit vector of
 ///    [8 x i16].
 ///
@@ -4631,7 +4631,7 @@
   return (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi)__b, 0, 8+0, 1, 8+1, 2, 8+2, 3, 8+3);
 }
 
-/// \brief Unpacks the low-order (index 0,1) values from two 128-bit vectors of
+/// Unpacks the low-order (index 0,1) values from two 128-bit vectors of
 ///    [4 x i32] and interleaves them into a 128-bit vector of [4 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -4654,7 +4654,7 @@
   return (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si)__b, 0, 4+0, 1, 4+1);
 }
 
-/// \brief Unpacks the low-order 64-bit elements from two 128-bit vectors of
+/// Unpacks the low-order 64-bit elements from two 128-bit vectors of
 ///    [2 x i64] and interleaves them into a 128-bit vector of [2 x i64].
 ///
 /// \headerfile <x86intrin.h>
@@ -4675,7 +4675,7 @@
   return (__m128i)__builtin_shufflevector((__v2di)__a, (__v2di)__b, 0, 2+0);
 }
 
-/// \brief Returns the lower 64 bits of a 128-bit integer vector as a 64-bit
+/// Returns the lower 64 bits of a 128-bit integer vector as a 64-bit
 ///    integer.
 ///
 /// \headerfile <x86intrin.h>
@@ -4692,7 +4692,7 @@
   return (__m64)__a[0];
 }
 
-/// \brief Moves the 64-bit operand to a 128-bit integer vector, zeroing the
+/// Moves the 64-bit operand to a 128-bit integer vector, zeroing the
 ///    upper bits.
 ///
 /// \headerfile <x86intrin.h>
@@ -4709,7 +4709,7 @@
   return (__m128i){ (long long)__a, 0 };
 }
 
-/// \brief Moves the lower 64 bits of a 128-bit integer vector to a 128-bit
+/// Moves the lower 64 bits of a 128-bit integer vector to a 128-bit
 ///    integer vector, zeroing the upper bits.
 ///
 /// \headerfile <x86intrin.h>
@@ -4727,7 +4727,7 @@
   return __builtin_shufflevector((__v2di)__a, (__m128i){ 0 }, 0, 2);
 }
 
-/// \brief Unpacks the high-order 64-bit elements from two 128-bit vectors of
+/// Unpacks the high-order 64-bit elements from two 128-bit vectors of
 ///    [2 x double] and interleaves them into a 128-bit vector of [2 x
 ///    double].
 ///
@@ -4748,7 +4748,7 @@
   return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 1, 2+1);
 }
 
-/// \brief Unpacks the low-order 64-bit elements from two 128-bit vectors
+/// Unpacks the low-order 64-bit elements from two 128-bit vectors
 ///    of [2 x double] and interleaves them into a 128-bit vector of [2 x
 ///    double].
 ///
@@ -4769,7 +4769,7 @@
   return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 0, 2+0);
 }
 
-/// \brief Extracts the sign bits of the double-precision values in the 128-bit
+/// Extracts the sign bits of the double-precision values in the 128-bit
 ///    vector of [2 x double], zero-extends the value, and writes it to the
 ///    low-order bits of the destination.
 ///
@@ -4789,7 +4789,7 @@
 }
 
 
-/// \brief Constructs a 128-bit floating-point vector of [2 x double] from two
+/// Constructs a 128-bit floating-point vector of [2 x double] from two
 ///    128-bit vector parameters of [2 x double], using the immediate-value
 ///     parameter as a specifier.
 ///
@@ -4818,7 +4818,7 @@
                                    0 + (((i) >> 0) & 0x1), \
                                    2 + (((i) >> 1) & 0x1)); })
 
-/// \brief Casts a 128-bit floating-point vector of [2 x double] into a 128-bit
+/// Casts a 128-bit floating-point vector of [2 x double] into a 128-bit
 ///    floating-point vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -4835,7 +4835,7 @@
   return (__m128)__a;
 }
 
-/// \brief Casts a 128-bit floating-point vector of [2 x double] into a 128-bit
+/// Casts a 128-bit floating-point vector of [2 x double] into a 128-bit
 ///    integer vector.
 ///
 /// \headerfile <x86intrin.h>
@@ -4852,7 +4852,7 @@
   return (__m128i)__a;
 }
 
-/// \brief Casts a 128-bit floating-point vector of [4 x float] into a 128-bit
+/// Casts a 128-bit floating-point vector of [4 x float] into a 128-bit
 ///    floating-point vector of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -4869,7 +4869,7 @@
   return (__m128d)__a;
 }
 
-/// \brief Casts a 128-bit floating-point vector of [4 x float] into a 128-bit
+/// Casts a 128-bit floating-point vector of [4 x float] into a 128-bit
 ///    integer vector.
 ///
 /// \headerfile <x86intrin.h>
@@ -4886,7 +4886,7 @@
   return (__m128i)__a;
 }
 
-/// \brief Casts a 128-bit integer vector into a 128-bit floating-point vector
+/// Casts a 128-bit integer vector into a 128-bit floating-point vector
 ///    of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -4903,7 +4903,7 @@
   return (__m128)__a;
 }
 
-/// \brief Casts a 128-bit integer vector into a 128-bit floating-point vector
+/// Casts a 128-bit integer vector into a 128-bit floating-point vector
 ///    of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -4924,7 +4924,7 @@
 extern "C" {
 #endif
 
-/// \brief Indicates that a spin loop is being executed for the purposes of
+/// Indicates that a spin loop is being executed for the purposes of
 ///    optimizing power consumption during the loop.
 ///
 /// \headerfile <x86intrin.h>
Index: cfe/trunk/lib/Headers/f16cintrin.h
===================================================================
--- cfe/trunk/lib/Headers/f16cintrin.h
+++ cfe/trunk/lib/Headers/f16cintrin.h
@@ -32,7 +32,7 @@
 #define __DEFAULT_FN_ATTRS \
   __attribute__((__always_inline__, __nodebug__, __target__("f16c")))
 
-/// \brief Converts a 16-bit half-precision float value into a 32-bit float
+/// Converts a 16-bit half-precision float value into a 32-bit float
 ///    value.
 ///
 /// \headerfile <x86intrin.h>
@@ -50,7 +50,7 @@
   return r[0];
 }
 
-/// \brief Converts a 32-bit single-precision float value to a 16-bit
+/// Converts a 32-bit single-precision float value to a 16-bit
 ///    half-precision float value.
 ///
 /// \headerfile <x86intrin.h>
@@ -76,7 +76,7 @@
   (unsigned short)(((__v8hi)__builtin_ia32_vcvtps2ph((__v4sf){a, 0, 0, 0}, \
                                                      (imm)))[0]); })
 
-/// \brief Converts a 128-bit vector containing 32-bit float values into a
+/// Converts a 128-bit vector containing 32-bit float values into a
 ///    128-bit vector containing 16-bit half-precision float values.
 ///
 /// \headerfile <x86intrin.h>
@@ -102,7 +102,7 @@
 #define _mm_cvtps_ph(a, imm) __extension__ ({ \
   (__m128i)__builtin_ia32_vcvtps2ph((__v4sf)(__m128)(a), (imm)); })
 
-/// \brief Converts a 128-bit vector containing 16-bit half-precision float
+/// Converts a 128-bit vector containing 16-bit half-precision float
 ///    values into a 128-bit vector containing 32-bit float values.
 ///
 /// \headerfile <x86intrin.h>
Index: cfe/trunk/lib/Headers/fxsrintrin.h
===================================================================
--- cfe/trunk/lib/Headers/fxsrintrin.h
+++ cfe/trunk/lib/Headers/fxsrintrin.h
@@ -30,7 +30,7 @@
 
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,  __target__("fxsr")))
 
-/// \brief Saves the XMM, MMX, MXCSR and x87 FPU registers into a 512-byte
+/// Saves the XMM, MMX, MXCSR and x87 FPU registers into a 512-byte
 ///    memory region pointed to by the input parameter \a __p.
 ///
 /// \headerfile <x86intrin.h>
@@ -46,7 +46,7 @@
   return __builtin_ia32_fxsave(__p);
 }
 
-/// \brief Restores the XMM, MMX, MXCSR and x87 FPU registers from the 512-byte
+/// Restores the XMM, MMX, MXCSR and x87 FPU registers from the 512-byte
 ///    memory region pointed to by the input parameter \a __p. The contents of
 ///    this memory region should have been written to by a previous \c _fxsave
 ///    or \c _fxsave64 intrinsic.
@@ -65,7 +65,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Saves the XMM, MMX, MXCSR and x87 FPU registers into a 512-byte
+/// Saves the XMM, MMX, MXCSR and x87 FPU registers into a 512-byte
 ///    memory region pointed to by the input parameter \a __p.
 ///
 /// \headerfile <x86intrin.h>
@@ -81,7 +81,7 @@
   return __builtin_ia32_fxsave64(__p);
 }
 
-/// \brief Restores the XMM, MMX, MXCSR and x87 FPU registers from the 512-byte
+/// Restores the XMM, MMX, MXCSR and x87 FPU registers from the 512-byte
 ///    memory region pointed to by the input parameter \a __p. The contents of
 ///    this memory region should have been written to by a previous \c _fxsave
 ///    or \c _fxsave64 intrinsic.
Index: cfe/trunk/lib/Headers/immintrin.h
===================================================================
--- cfe/trunk/lib/Headers/immintrin.h
+++ cfe/trunk/lib/Headers/immintrin.h
@@ -73,7 +73,7 @@
    Intel documents these as being in immintrin.h, and
    they depend on typedefs from avxintrin.h. */
 
-/// \brief Converts a 256-bit vector of [8 x float] into a 128-bit vector
+/// Converts a 256-bit vector of [8 x float] into a 128-bit vector
 ///    containing 16-bit half-precision float values.
 ///
 /// \headerfile <x86intrin.h>
@@ -99,7 +99,7 @@
 #define _mm256_cvtps_ph(a, imm) __extension__ ({ \
  (__m128i)__builtin_ia32_vcvtps2ph256((__v8sf)(__m256)(a), (imm)); })
 
-/// \brief Converts a 128-bit vector containing 16-bit half-precision float
+/// Converts a 128-bit vector containing 16-bit half-precision float
 ///    values into a 256-bit vector of [8 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -248,7 +248,7 @@
 #endif
 
 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__RDPID__)
-/// \brief Returns the value of the IA32_TSC_AUX MSR (0xc0000103).
+/// Returns the value of the IA32_TSC_AUX MSR (0xc0000103).
 ///
 /// \headerfile <immintrin.h>
 ///
Index: cfe/trunk/lib/Headers/lwpintrin.h
===================================================================
--- cfe/trunk/lib/Headers/lwpintrin.h
+++ cfe/trunk/lib/Headers/lwpintrin.h
@@ -31,7 +31,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("lwp")))
 
-/// \brief Parses the LWPCB at the specified address and enables
+/// Parses the LWPCB at the specified address and enables
 ///        profiling if valid.
 ///
 /// \headerfile <x86intrin.h>
@@ -48,7 +48,7 @@
   __builtin_ia32_llwpcb(__addr);
 }
 
-/// \brief Flushes the LWP state to memory and returns the address of the LWPCB.
+/// Flushes the LWP state to memory and returns the address of the LWPCB.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -63,7 +63,7 @@
   return __builtin_ia32_slwpcb();
 }
 
-/// \brief Inserts programmed event record into the LWP event ring buffer
+/// Inserts programmed event record into the LWP event ring buffer
 ///        and advances the ring buffer pointer.
 ///
 /// \headerfile <x86intrin.h>
@@ -84,7 +84,7 @@
   (__builtin_ia32_lwpins32((unsigned int) (DATA2), (unsigned int) (DATA1), \
                            (unsigned int) (FLAGS)))
 
-/// \brief Decrements the LWP programmed value sample event counter. If the result is 
+/// Decrements the LWP programmed value sample event counter. If the result is 
 ///        negative, inserts an event record into the LWP event ring buffer in memory
 ///        and advances the ring buffer pointer.
 ///
@@ -104,7 +104,7 @@
 
 #ifdef __x86_64__
 
-/// \brief Inserts programmed event record into the LWP event ring buffer
+/// Inserts programmed event record into the LWP event ring buffer
 ///        and advances the ring buffer pointer.
 ///
 /// \headerfile <x86intrin.h>
@@ -125,7 +125,7 @@
   (__builtin_ia32_lwpins64((unsigned long long) (DATA2), (unsigned int) (DATA1), \
                            (unsigned int) (FLAGS)))
 
-/// \brief Decrements the LWP programmed value sample event counter. If the result is 
+/// Decrements the LWP programmed value sample event counter. If the result is 
 ///        negative, inserts an event record into the LWP event ring buffer in memory
 ///        and advances the ring buffer pointer.
 ///
Index: cfe/trunk/lib/Headers/lzcntintrin.h
===================================================================
--- cfe/trunk/lib/Headers/lzcntintrin.h
+++ cfe/trunk/lib/Headers/lzcntintrin.h
@@ -31,7 +31,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("lzcnt")))
 
-/// \brief Counts the number of leading zero bits in the operand.
+/// Counts the number of leading zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -47,7 +47,7 @@
   return __X ? __builtin_clzs(__X) : 16;
 }
 
-/// \brief Counts the number of leading zero bits in the operand.
+/// Counts the number of leading zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -63,7 +63,7 @@
   return __X ? __builtin_clz(__X) : 32;
 }
 
-/// \brief Counts the number of leading zero bits in the operand.
+/// Counts the number of leading zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -80,7 +80,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Counts the number of leading zero bits in the operand.
+/// Counts the number of leading zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -96,7 +96,7 @@
   return __X ? __builtin_clzll(__X) : 64;
 }
 
-/// \brief Counts the number of leading zero bits in the operand.
+/// Counts the number of leading zero bits in the operand.
 ///
 /// \headerfile <x86intrin.h>
 ///
Index: cfe/trunk/lib/Headers/mmintrin.h
===================================================================
--- cfe/trunk/lib/Headers/mmintrin.h
+++ cfe/trunk/lib/Headers/mmintrin.h
@@ -34,7 +34,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("mmx")))
 
-/// \brief Clears the MMX state by setting the state of the x87 stack registers
+/// Clears the MMX state by setting the state of the x87 stack registers
 ///    to empty.
 ///
 /// \headerfile <x86intrin.h>
@@ -47,7 +47,7 @@
     __builtin_ia32_emms();
 }
 
-/// \brief Constructs a 64-bit integer vector, setting the lower 32 bits to the
+/// Constructs a 64-bit integer vector, setting the lower 32 bits to the
 ///    value of the 32-bit integer parameter and setting the upper 32 bits to 0.
 ///
 /// \headerfile <x86intrin.h>
@@ -64,7 +64,7 @@
     return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
 }
 
-/// \brief Returns the lower 32 bits of a 64-bit integer vector as a 32-bit
+/// Returns the lower 32 bits of a 64-bit integer vector as a 32-bit
 ///    signed integer.
 ///
 /// \headerfile <x86intrin.h>
@@ -81,7 +81,7 @@
     return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
 }
 
-/// \brief Casts a 64-bit signed integer value into a 64-bit integer vector.
+/// Casts a 64-bit signed integer value into a 64-bit integer vector.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -97,7 +97,7 @@
     return (__m64)__i;
 }
 
-/// \brief Casts a 64-bit integer vector into a 64-bit signed integer value.
+/// Casts a 64-bit integer vector into a 64-bit signed integer value.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -113,7 +113,7 @@
     return (long long)__m;
 }
 
-/// \brief Converts 16-bit signed integers from both 64-bit integer vector
+/// Converts 16-bit signed integers from both 64-bit integer vector
 ///    parameters of [4 x i16] into 8-bit signed integer values, and constructs
 ///    a 64-bit integer vector of [8 x i8] as the result. Positive values
 ///    greater than 0x7F are saturated to 0x7F. Negative values less than 0x80
@@ -143,7 +143,7 @@
     return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Converts 32-bit signed integers from both 64-bit integer vector
+/// Converts 32-bit signed integers from both 64-bit integer vector
 ///    parameters of [2 x i32] into 16-bit signed integer values, and constructs
 ///    a 64-bit integer vector of [4 x i16] as the result. Positive values
 ///    greater than 0x7FFF are saturated to 0x7FFF. Negative values less than
@@ -173,7 +173,7 @@
     return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
 }
 
-/// \brief Converts 16-bit signed integers from both 64-bit integer vector
+/// Converts 16-bit signed integers from both 64-bit integer vector
 ///    parameters of [4 x i16] into 8-bit unsigned integer values, and
 ///    constructs a 64-bit integer vector of [8 x i8] as the result. Values
 ///    greater than 0xFF are saturated to 0xFF. Values less than 0 are saturated
@@ -203,7 +203,7 @@
     return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Unpacks the upper 32 bits from two 64-bit integer vectors of [8 x i8]
+/// Unpacks the upper 32 bits from two 64-bit integer vectors of [8 x i8]
 ///    and interleaves them into a 64-bit integer vector of [8 x i8].
 ///
 /// \headerfile <x86intrin.h>
@@ -230,7 +230,7 @@
     return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Unpacks the upper 32 bits from two 64-bit integer vectors of
+/// Unpacks the upper 32 bits from two 64-bit integer vectors of
 ///    [4 x i16] and interleaves them into a 64-bit integer vector of [4 x i16].
 ///
 /// \headerfile <x86intrin.h>
@@ -253,7 +253,7 @@
     return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Unpacks the upper 32 bits from two 64-bit integer vectors of
+/// Unpacks the upper 32 bits from two 64-bit integer vectors of
 ///    [2 x i32] and interleaves them into a 64-bit integer vector of [2 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -274,7 +274,7 @@
     return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
 }
 
-/// \brief Unpacks the lower 32 bits from two 64-bit integer vectors of [8 x i8]
+/// Unpacks the lower 32 bits from two 64-bit integer vectors of [8 x i8]
 ///    and interleaves them into a 64-bit integer vector of [8 x i8].
 ///
 /// \headerfile <x86intrin.h>
@@ -301,7 +301,7 @@
     return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Unpacks the lower 32 bits from two 64-bit integer vectors of
+/// Unpacks the lower 32 bits from two 64-bit integer vectors of
 ///    [4 x i16] and interleaves them into a 64-bit integer vector of [4 x i16].
 ///
 /// \headerfile <x86intrin.h>
@@ -324,7 +324,7 @@
     return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Unpacks the lower 32 bits from two 64-bit integer vectors of
+/// Unpacks the lower 32 bits from two 64-bit integer vectors of
 ///    [2 x i32] and interleaves them into a 64-bit integer vector of [2 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -345,7 +345,7 @@
     return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
 }
 
-/// \brief Adds each 8-bit integer element of the first 64-bit integer vector
+/// Adds each 8-bit integer element of the first 64-bit integer vector
 ///    of [8 x i8] to the corresponding 8-bit integer element of the second
 ///    64-bit integer vector of [8 x i8]. The lower 8 bits of the results are
 ///    packed into a 64-bit integer vector of [8 x i8].
@@ -366,7 +366,7 @@
     return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Adds each 16-bit integer element of the first 64-bit integer vector
+/// Adds each 16-bit integer element of the first 64-bit integer vector
 ///    of [4 x i16] to the corresponding 16-bit integer element of the second
 ///    64-bit integer vector of [4 x i16]. The lower 16 bits of the results are
 ///    packed into a 64-bit integer vector of [4 x i16].
@@ -387,7 +387,7 @@
     return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Adds each 32-bit integer element of the first 64-bit integer vector
+/// Adds each 32-bit integer element of the first 64-bit integer vector
 ///    of [2 x i32] to the corresponding 32-bit integer element of the second
 ///    64-bit integer vector of [2 x i32]. The lower 32 bits of the results are
 ///    packed into a 64-bit integer vector of [2 x i32].
@@ -408,7 +408,7 @@
     return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
 }
 
-/// \brief Adds each 8-bit signed integer element of the first 64-bit integer
+/// Adds each 8-bit signed integer element of the first 64-bit integer
 ///    vector of [8 x i8] to the corresponding 8-bit signed integer element of
 ///    the second 64-bit integer vector of [8 x i8]. Positive sums greater than
 ///    0x7F are saturated to 0x7F. Negative sums less than 0x80 are saturated to
@@ -430,7 +430,7 @@
     return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Adds each 16-bit signed integer element of the first 64-bit integer
+/// Adds each 16-bit signed integer element of the first 64-bit integer
 ///    vector of [4 x i16] to the corresponding 16-bit signed integer element of
 ///    the second 64-bit integer vector of [4 x i16]. Positive sums greater than
 ///    0x7FFF are saturated to 0x7FFF. Negative sums less than 0x8000 are
@@ -453,7 +453,7 @@
     return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Adds each 8-bit unsigned integer element of the first 64-bit integer
+/// Adds each 8-bit unsigned integer element of the first 64-bit integer
 ///    vector of [8 x i8] to the corresponding 8-bit unsigned integer element of
 ///    the second 64-bit integer vector of [8 x i8]. Sums greater than 0xFF are
 ///    saturated to 0xFF. The results are packed into a 64-bit integer vector of
@@ -475,7 +475,7 @@
     return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Adds each 16-bit unsigned integer element of the first 64-bit integer
+/// Adds each 16-bit unsigned integer element of the first 64-bit integer
 ///    vector of [4 x i16] to the corresponding 16-bit unsigned integer element
 ///    of the second 64-bit integer vector of [4 x i16]. Sums greater than
 ///    0xFFFF are saturated to 0xFFFF. The results are packed into a 64-bit
@@ -497,7 +497,7 @@
     return (__m64)__builtin_ia32_paddusw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Subtracts each 8-bit integer element of the second 64-bit integer
+/// Subtracts each 8-bit integer element of the second 64-bit integer
 ///    vector of [8 x i8] from the corresponding 8-bit integer element of the
 ///    first 64-bit integer vector of [8 x i8]. The lower 8 bits of the results
 ///    are packed into a 64-bit integer vector of [8 x i8].
@@ -518,7 +518,7 @@
     return (__m64)__builtin_ia32_psubb((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Subtracts each 16-bit integer element of the second 64-bit integer
+/// Subtracts each 16-bit integer element of the second 64-bit integer
 ///    vector of [4 x i16] from the corresponding 16-bit integer element of the
 ///    first 64-bit integer vector of [4 x i16]. The lower 16 bits of the
 ///    results are packed into a 64-bit integer vector of [4 x i16].
@@ -539,7 +539,7 @@
     return (__m64)__builtin_ia32_psubw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Subtracts each 32-bit integer element of the second 64-bit integer
+/// Subtracts each 32-bit integer element of the second 64-bit integer
 ///    vector of [2 x i32] from the corresponding 32-bit integer element of the
 ///    first 64-bit integer vector of [2 x i32]. The lower 32 bits of the
 ///    results are packed into a 64-bit integer vector of [2 x i32].
@@ -560,7 +560,7 @@
     return (__m64)__builtin_ia32_psubd((__v2si)__m1, (__v2si)__m2);
 }
 
-/// \brief Subtracts each 8-bit signed integer element of the second 64-bit
+/// Subtracts each 8-bit signed integer element of the second 64-bit
 ///    integer vector of [8 x i8] from the corresponding 8-bit signed integer
 ///    element of the first 64-bit integer vector of [8 x i8]. Positive results
 ///    greater than 0x7F are saturated to 0x7F. Negative results less than 0x80
@@ -583,7 +583,7 @@
     return (__m64)__builtin_ia32_psubsb((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Subtracts each 16-bit signed integer element of the second 64-bit
+/// Subtracts each 16-bit signed integer element of the second 64-bit
 ///    integer vector of [4 x i16] from the corresponding 16-bit signed integer
 ///    element of the first 64-bit integer vector of [4 x i16]. Positive results
 ///    greater than 0x7FFF are saturated to 0x7FFF. Negative results less than
@@ -606,7 +606,7 @@
     return (__m64)__builtin_ia32_psubsw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Subtracts each 8-bit unsigned integer element of the second 64-bit
+/// Subtracts each 8-bit unsigned integer element of the second 64-bit
 ///    integer vector of [8 x i8] from the corresponding 8-bit unsigned integer
 ///    element of the first 64-bit integer vector of [8 x i8].
 ///
@@ -630,7 +630,7 @@
     return (__m64)__builtin_ia32_psubusb((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Subtracts each 16-bit unsigned integer element of the second 64-bit
+/// Subtracts each 16-bit unsigned integer element of the second 64-bit
 ///    integer vector of [4 x i16] from the corresponding 16-bit unsigned
 ///    integer element of the first 64-bit integer vector of [4 x i16].
 ///
@@ -654,7 +654,7 @@
     return (__m64)__builtin_ia32_psubusw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Multiplies each 16-bit signed integer element of the first 64-bit
+/// Multiplies each 16-bit signed integer element of the first 64-bit
 ///    integer vector of [4 x i16] by the corresponding 16-bit signed integer
 ///    element of the second 64-bit integer vector of [4 x i16] and get four
 ///    32-bit products. Adds adjacent pairs of products to get two 32-bit sums.
@@ -681,7 +681,7 @@
     return (__m64)__builtin_ia32_pmaddwd((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Multiplies each 16-bit signed integer element of the first 64-bit
+/// Multiplies each 16-bit signed integer element of the first 64-bit
 ///    integer vector of [4 x i16] by the corresponding 16-bit signed integer
 ///    element of the second 64-bit integer vector of [4 x i16]. Packs the upper
 ///    16 bits of the 32-bit products into a 64-bit integer vector of [4 x i16].
@@ -702,7 +702,7 @@
     return (__m64)__builtin_ia32_pmulhw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Multiplies each 16-bit signed integer element of the first 64-bit
+/// Multiplies each 16-bit signed integer element of the first 64-bit
 ///    integer vector of [4 x i16] by the corresponding 16-bit signed integer
 ///    element of the second 64-bit integer vector of [4 x i16]. Packs the lower
 ///    16 bits of the 32-bit products into a 64-bit integer vector of [4 x i16].
@@ -723,7 +723,7 @@
     return (__m64)__builtin_ia32_pmullw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Left-shifts each 16-bit signed integer element of the first
+/// Left-shifts each 16-bit signed integer element of the first
 ///    parameter, which is a 64-bit integer vector of [4 x i16], by the number
 ///    of bits specified by the second parameter, which is a 64-bit integer. The
 ///    lower 16 bits of the results are packed into a 64-bit integer vector of
@@ -746,7 +746,7 @@
     return (__m64)__builtin_ia32_psllw((__v4hi)__m, __count);
 }
 
-/// \brief Left-shifts each 16-bit signed integer element of a 64-bit integer
+/// Left-shifts each 16-bit signed integer element of a 64-bit integer
 ///    vector of [4 x i16] by the number of bits specified by a 32-bit integer.
 ///    The lower 16 bits of the results are packed into a 64-bit integer vector
 ///    of [4 x i16].
@@ -768,7 +768,7 @@
     return (__m64)__builtin_ia32_psllwi((__v4hi)__m, __count);
 }
 
-/// \brief Left-shifts each 32-bit signed integer element of the first
+/// Left-shifts each 32-bit signed integer element of the first
 ///    parameter, which is a 64-bit integer vector of [2 x i32], by the number
 ///    of bits specified by the second parameter, which is a 64-bit integer. The
 ///    lower 32 bits of the results are packed into a 64-bit integer vector of
@@ -791,7 +791,7 @@
     return (__m64)__builtin_ia32_pslld((__v2si)__m, __count);
 }
 
-/// \brief Left-shifts each 32-bit signed integer element of a 64-bit integer
+/// Left-shifts each 32-bit signed integer element of a 64-bit integer
 ///    vector of [2 x i32] by the number of bits specified by a 32-bit integer.
 ///    The lower 32 bits of the results are packed into a 64-bit integer vector
 ///    of [2 x i32].
@@ -813,7 +813,7 @@
     return (__m64)__builtin_ia32_pslldi((__v2si)__m, __count);
 }
 
-/// \brief Left-shifts the first 64-bit integer parameter by the number of bits
+/// Left-shifts the first 64-bit integer parameter by the number of bits
 ///    specified by the second 64-bit integer parameter. The lower 64 bits of
 ///    result are returned.
 ///
@@ -833,7 +833,7 @@
     return (__m64)__builtin_ia32_psllq((__v1di)__m, __count);
 }
 
-/// \brief Left-shifts the first parameter, which is a 64-bit integer, by the
+/// Left-shifts the first parameter, which is a 64-bit integer, by the
 ///    number of bits specified by the second parameter, which is a 32-bit
 ///    integer. The lower 64 bits of result are returned.
 ///
@@ -853,7 +853,7 @@
     return (__m64)__builtin_ia32_psllqi((__v1di)__m, __count);
 }
 
-/// \brief Right-shifts each 16-bit integer element of the first parameter,
+/// Right-shifts each 16-bit integer element of the first parameter,
 ///    which is a 64-bit integer vector of [4 x i16], by the number of bits
 ///    specified by the second parameter, which is a 64-bit integer.
 ///
@@ -877,7 +877,7 @@
     return (__m64)__builtin_ia32_psraw((__v4hi)__m, __count);
 }
 
-/// \brief Right-shifts each 16-bit integer element of a 64-bit integer vector
+/// Right-shifts each 16-bit integer element of a 64-bit integer vector
 ///    of [4 x i16] by the number of bits specified by a 32-bit integer.
 ///
 ///    High-order bits are filled with the sign bit of the initial value of each
@@ -900,7 +900,7 @@
     return (__m64)__builtin_ia32_psrawi((__v4hi)__m, __count);
 }
 
-/// \brief Right-shifts each 32-bit integer element of the first parameter,
+/// Right-shifts each 32-bit integer element of the first parameter,
 ///    which is a 64-bit integer vector of [2 x i32], by the number of bits
 ///    specified by the second parameter, which is a 64-bit integer.
 ///
@@ -924,7 +924,7 @@
     return (__m64)__builtin_ia32_psrad((__v2si)__m, __count);
 }
 
-/// \brief Right-shifts each 32-bit integer element of a 64-bit integer vector
+/// Right-shifts each 32-bit integer element of a 64-bit integer vector
 ///    of [2 x i32] by the number of bits specified by a 32-bit integer.
 ///
 ///    High-order bits are filled with the sign bit of the initial value of each
@@ -947,7 +947,7 @@
     return (__m64)__builtin_ia32_psradi((__v2si)__m, __count);
 }
 
-/// \brief Right-shifts each 16-bit integer element of the first parameter,
+/// Right-shifts each 16-bit integer element of the first parameter,
 ///    which is a 64-bit integer vector of [4 x i16], by the number of bits
 ///    specified by the second parameter, which is a 64-bit integer.
 ///
@@ -970,7 +970,7 @@
     return (__m64)__builtin_ia32_psrlw((__v4hi)__m, __count);
 }
 
-/// \brief Right-shifts each 16-bit integer element of a 64-bit integer vector
+/// Right-shifts each 16-bit integer element of a 64-bit integer vector
 ///    of [4 x i16] by the number of bits specified by a 32-bit integer.
 ///
 ///    High-order bits are cleared. The 16-bit results are packed into a 64-bit
@@ -992,7 +992,7 @@
     return (__m64)__builtin_ia32_psrlwi((__v4hi)__m, __count);
 }
 
-/// \brief Right-shifts each 32-bit integer element of the first parameter,
+/// Right-shifts each 32-bit integer element of the first parameter,
 ///    which is a 64-bit integer vector of [2 x i32], by the number of bits
 ///    specified by the second parameter, which is a 64-bit integer.
 ///
@@ -1015,7 +1015,7 @@
     return (__m64)__builtin_ia32_psrld((__v2si)__m, __count);
 }
 
-/// \brief Right-shifts each 32-bit integer element of a 64-bit integer vector
+/// Right-shifts each 32-bit integer element of a 64-bit integer vector
 ///    of [2 x i32] by the number of bits specified by a 32-bit integer.
 ///
 ///    High-order bits are cleared. The 32-bit results are packed into a 64-bit
@@ -1037,7 +1037,7 @@
     return (__m64)__builtin_ia32_psrldi((__v2si)__m, __count);
 }
 
-/// \brief Right-shifts the first 64-bit integer parameter by the number of bits
+/// Right-shifts the first 64-bit integer parameter by the number of bits
 ///    specified by the second 64-bit integer parameter.
 ///
 ///    High-order bits are cleared.
@@ -1057,7 +1057,7 @@
     return (__m64)__builtin_ia32_psrlq((__v1di)__m, __count);
 }
 
-/// \brief Right-shifts the first parameter, which is a 64-bit integer, by the
+/// Right-shifts the first parameter, which is a 64-bit integer, by the
 ///    number of bits specified by the second parameter, which is a 32-bit
 ///    integer.
 ///
@@ -1078,7 +1078,7 @@
     return (__m64)__builtin_ia32_psrlqi((__v1di)__m, __count);
 }
 
-/// \brief Performs a bitwise AND of two 64-bit integer vectors.
+/// Performs a bitwise AND of two 64-bit integer vectors.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -1096,7 +1096,7 @@
     return __builtin_ia32_pand((__v1di)__m1, (__v1di)__m2);
 }
 
-/// \brief Performs a bitwise NOT of the first 64-bit integer vector, and then
+/// Performs a bitwise NOT of the first 64-bit integer vector, and then
 ///    performs a bitwise AND of the intermediate result and the second 64-bit
 ///    integer vector.
 ///
@@ -1117,7 +1117,7 @@
     return __builtin_ia32_pandn((__v1di)__m1, (__v1di)__m2);
 }
 
-/// \brief Performs a bitwise OR of two 64-bit integer vectors.
+/// Performs a bitwise OR of two 64-bit integer vectors.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -1135,7 +1135,7 @@
     return __builtin_ia32_por((__v1di)__m1, (__v1di)__m2);
 }
 
-/// \brief Performs a bitwise exclusive OR of two 64-bit integer vectors.
+/// Performs a bitwise exclusive OR of two 64-bit integer vectors.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -1153,7 +1153,7 @@
     return __builtin_ia32_pxor((__v1di)__m1, (__v1di)__m2);
 }
 
-/// \brief Compares the 8-bit integer elements of two 64-bit integer vectors of
+/// Compares the 8-bit integer elements of two 64-bit integer vectors of
 ///    [8 x i8] to determine if the element of the first vector is equal to the
 ///    corresponding element of the second vector.
 ///
@@ -1175,7 +1175,7 @@
     return (__m64)__builtin_ia32_pcmpeqb((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Compares the 16-bit integer elements of two 64-bit integer vectors of
+/// Compares the 16-bit integer elements of two 64-bit integer vectors of
 ///    [4 x i16] to determine if the element of the first vector is equal to the
 ///    corresponding element of the second vector.
 ///
@@ -1197,7 +1197,7 @@
     return (__m64)__builtin_ia32_pcmpeqw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Compares the 32-bit integer elements of two 64-bit integer vectors of
+/// Compares the 32-bit integer elements of two 64-bit integer vectors of
 ///    [2 x i32] to determine if the element of the first vector is equal to the
 ///    corresponding element of the second vector.
 ///
@@ -1219,7 +1219,7 @@
     return (__m64)__builtin_ia32_pcmpeqd((__v2si)__m1, (__v2si)__m2);
 }
 
-/// \brief Compares the 8-bit integer elements of two 64-bit integer vectors of
+/// Compares the 8-bit integer elements of two 64-bit integer vectors of
 ///    [8 x i8] to determine if the element of the first vector is greater than
 ///    the corresponding element of the second vector.
 ///
@@ -1241,7 +1241,7 @@
     return (__m64)__builtin_ia32_pcmpgtb((__v8qi)__m1, (__v8qi)__m2);
 }
 
-/// \brief Compares the 16-bit integer elements of two 64-bit integer vectors of
+/// Compares the 16-bit integer elements of two 64-bit integer vectors of
 ///    [4 x i16] to determine if the element of the first vector is greater than
 ///    the corresponding element of the second vector.
 ///
@@ -1263,7 +1263,7 @@
     return (__m64)__builtin_ia32_pcmpgtw((__v4hi)__m1, (__v4hi)__m2);
 }
 
-/// \brief Compares the 32-bit integer elements of two 64-bit integer vectors of
+/// Compares the 32-bit integer elements of two 64-bit integer vectors of
 ///    [2 x i32] to determine if the element of the first vector is greater than
 ///    the corresponding element of the second vector.
 ///
@@ -1285,7 +1285,7 @@
     return (__m64)__builtin_ia32_pcmpgtd((__v2si)__m1, (__v2si)__m2);
 }
 
-/// \brief Constructs a 64-bit integer vector initialized to zero.
+/// Constructs a 64-bit integer vector initialized to zero.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -1298,7 +1298,7 @@
     return (__m64){ 0LL };
 }
 
-/// \brief Constructs a 64-bit integer vector initialized with the specified
+/// Constructs a 64-bit integer vector initialized with the specified
 ///    32-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -1319,7 +1319,7 @@
     return (__m64)__builtin_ia32_vec_init_v2si(__i0, __i1);
 }
 
-/// \brief Constructs a 64-bit integer vector initialized with the specified
+/// Constructs a 64-bit integer vector initialized with the specified
 ///    16-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -1342,7 +1342,7 @@
     return (__m64)__builtin_ia32_vec_init_v4hi(__s0, __s1, __s2, __s3);
 }
 
-/// \brief Constructs a 64-bit integer vector initialized with the specified
+/// Constructs a 64-bit integer vector initialized with the specified
 ///    8-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -1375,7 +1375,7 @@
                                                __b4, __b5, __b6, __b7);
 }
 
-/// \brief Constructs a 64-bit integer vector of [2 x i32], with each of the
+/// Constructs a 64-bit integer vector of [2 x i32], with each of the
 ///    32-bit integer vector elements set to the specified 32-bit integer
 ///    value.
 ///
@@ -1394,7 +1394,7 @@
     return _mm_set_pi32(__i, __i);
 }
 
-/// \brief Constructs a 64-bit integer vector of [4 x i16], with each of the
+/// Constructs a 64-bit integer vector of [4 x i16], with each of the
 ///    16-bit integer vector elements set to the specified 16-bit integer
 ///    value.
 ///
@@ -1413,7 +1413,7 @@
     return _mm_set_pi16(__w, __w, __w, __w);
 }
 
-/// \brief Constructs a 64-bit integer vector of [8 x i8], with each of the
+/// Constructs a 64-bit integer vector of [8 x i8], with each of the
 ///    8-bit integer vector elements set to the specified 8-bit integer value.
 ///
 /// \headerfile <x86intrin.h>
@@ -1431,7 +1431,7 @@
     return _mm_set_pi8(__b, __b, __b, __b, __b, __b, __b, __b);
 }
 
-/// \brief Constructs a 64-bit integer vector, initialized in reverse order with
+/// Constructs a 64-bit integer vector, initialized in reverse order with
 ///    the specified 32-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -1452,7 +1452,7 @@
     return _mm_set_pi32(__i1, __i0);
 }
 
-/// \brief Constructs a 64-bit integer vector, initialized in reverse order with
+/// Constructs a 64-bit integer vector, initialized in reverse order with
 ///    the specified 16-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
@@ -1475,7 +1475,7 @@
     return _mm_set_pi16(__w3, __w2, __w1, __w0);
 }
 
-/// \brief Constructs a 64-bit integer vector, initialized in reverse order with
+/// Constructs a 64-bit integer vector, initialized in reverse order with
 ///    the specified 8-bit integer values.
 ///
 /// \headerfile <x86intrin.h>
Index: cfe/trunk/lib/Headers/pmmintrin.h
===================================================================
--- cfe/trunk/lib/Headers/pmmintrin.h
+++ cfe/trunk/lib/Headers/pmmintrin.h
@@ -30,7 +30,7 @@
 #define __DEFAULT_FN_ATTRS \
   __attribute__((__always_inline__, __nodebug__, __target__("sse3")))
 
-/// \brief Loads data from an unaligned memory location to elements in a 128-bit
+/// Loads data from an unaligned memory location to elements in a 128-bit
 ///    vector.
 ///
 ///    If the address of the data is not 16-byte aligned, the instruction may
@@ -50,7 +50,7 @@
   return (__m128i)__builtin_ia32_lddqu((char const *)__p);
 }
 
-/// \brief Adds the even-indexed values and subtracts the odd-indexed values of
+/// Adds the even-indexed values and subtracts the odd-indexed values of
 ///    two 128-bit vectors of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -69,7 +69,7 @@
   return __builtin_ia32_addsubps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Horizontally adds the adjacent pairs of values contained in two
+/// Horizontally adds the adjacent pairs of values contained in two
 ///    128-bit vectors of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -92,7 +92,7 @@
   return __builtin_ia32_haddps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Horizontally subtracts the adjacent pairs of values contained in two
+/// Horizontally subtracts the adjacent pairs of values contained in two
 ///    128-bit vectors of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -115,7 +115,7 @@
   return __builtin_ia32_hsubps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Moves and duplicates odd-indexed values from a 128-bit vector
+/// Moves and duplicates odd-indexed values from a 128-bit vector
 ///    of [4 x float] to float values stored in a 128-bit vector of
 ///    [4 x float].
 ///
@@ -137,7 +137,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 1, 1, 3, 3);
 }
 
-/// \brief Duplicates even-indexed values from a 128-bit vector of
+/// Duplicates even-indexed values from a 128-bit vector of
 ///    [4 x float] to float values stored in a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -158,7 +158,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 0, 2, 2);
 }
 
-/// \brief Adds the even-indexed values and subtracts the odd-indexed values of
+/// Adds the even-indexed values and subtracts the odd-indexed values of
 ///    two 128-bit vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -177,7 +177,7 @@
   return __builtin_ia32_addsubpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Horizontally adds the pairs of values contained in two 128-bit
+/// Horizontally adds the pairs of values contained in two 128-bit
 ///    vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -200,7 +200,7 @@
   return __builtin_ia32_haddpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Horizontally subtracts the pairs of values contained in two 128-bit
+/// Horizontally subtracts the pairs of values contained in two 128-bit
 ///    vectors of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -223,7 +223,7 @@
   return __builtin_ia32_hsubpd((__v2df)__a, (__v2df)__b);
 }
 
-/// \brief Moves and duplicates one double-precision value to double-precision
+/// Moves and duplicates one double-precision value to double-precision
 ///    values stored in a 128-bit vector of [2 x double].
 ///
 /// \headerfile <x86intrin.h>
@@ -240,7 +240,7 @@
 ///    duplicated values.
 #define        _mm_loaddup_pd(dp)        _mm_load1_pd(dp)
 
-/// \brief Moves and duplicates the double-precision value in the lower bits of
+/// Moves and duplicates the double-precision value in the lower bits of
 ///    a 128-bit vector of [2 x double] to double-precision values stored in a
 ///    128-bit vector of [2 x double].
 ///
@@ -259,7 +259,7 @@
   return __builtin_shufflevector((__v2df)__a, (__v2df)__a, 0, 0);
 }
 
-/// \brief Establishes a linear address memory range to be monitored and puts
+/// Establishes a linear address memory range to be monitored and puts
 ///    the processor in the monitor event pending state. Data stored in the
 ///    monitored address range causes the processor to exit the pending state.
 ///
@@ -280,7 +280,7 @@
   __builtin_ia32_monitor((void *)__p, __extensions, __hints);
 }
 
-/// \brief Used with the MONITOR instruction to wait while the processor is in
+/// Used with the MONITOR instruction to wait while the processor is in
 ///    the monitor event pending state. Data stored in the monitored address
 ///    range causes the processor to exit the pending state.
 ///
Index: cfe/trunk/lib/Headers/popcntintrin.h
===================================================================
--- cfe/trunk/lib/Headers/popcntintrin.h
+++ cfe/trunk/lib/Headers/popcntintrin.h
@@ -27,7 +27,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("popcnt")))
 
-/// \brief Counts the number of bits in the source operand having a value of 1.
+/// Counts the number of bits in the source operand having a value of 1.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -43,7 +43,7 @@
   return __builtin_popcount(__A);
 }
 
-/// \brief Counts the number of bits in the source operand having a value of 1.
+/// Counts the number of bits in the source operand having a value of 1.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -60,7 +60,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Counts the number of bits in the source operand having a value of 1.
+/// Counts the number of bits in the source operand having a value of 1.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -76,7 +76,7 @@
   return __builtin_popcountll(__A);
 }
 
-/// \brief Counts the number of bits in the source operand having a value of 1.
+/// Counts the number of bits in the source operand having a value of 1.
 ///
 /// \headerfile <x86intrin.h>
 ///
Index: cfe/trunk/lib/Headers/prfchwintrin.h
===================================================================
--- cfe/trunk/lib/Headers/prfchwintrin.h
+++ cfe/trunk/lib/Headers/prfchwintrin.h
@@ -29,7 +29,7 @@
 #define __PRFCHWINTRIN_H
 
 #if defined(__PRFCHW__) || defined(__3dNOW__)
-/// \brief Loads a memory sequence containing the specified memory address into
+/// Loads a memory sequence containing the specified memory address into
 ///    all data cache levels. The cache-coherency state is set to exclusive.
 ///    Data can be read from and written to the cache line without additional
 ///    delay.
@@ -46,7 +46,7 @@
   __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */);
 }
 
-/// \brief Loads a memory sequence containing the specified memory address into
+/// Loads a memory sequence containing the specified memory address into
 ///    the L1 data cache and sets the cache-coherency to modified. This
 ///    provides a hint to the processor that the cache line will be modified.
 ///    It is intended for use when the cache line will be written to shortly
Index: cfe/trunk/lib/Headers/smmintrin.h
===================================================================
--- cfe/trunk/lib/Headers/smmintrin.h
+++ cfe/trunk/lib/Headers/smmintrin.h
@@ -46,7 +46,7 @@
 #define _MM_FROUND_RINT      (_MM_FROUND_RAISE_EXC | _MM_FROUND_CUR_DIRECTION)
 #define _MM_FROUND_NEARBYINT (_MM_FROUND_NO_EXC | _MM_FROUND_CUR_DIRECTION)
 
-/// \brief Rounds up each element of the 128-bit vector of [4 x float] to an
+/// Rounds up each element of the 128-bit vector of [4 x float] to an
 ///    integer and returns the rounded values in a 128-bit vector of
 ///    [4 x float].
 ///
@@ -63,7 +63,7 @@
 /// \returns A 128-bit vector of [4 x float] containing the rounded values.
 #define _mm_ceil_ps(X)       _mm_round_ps((X), _MM_FROUND_CEIL)
 
-/// \brief Rounds up each element of the 128-bit vector of [2 x double] to an
+/// Rounds up each element of the 128-bit vector of [2 x double] to an
 ///    integer and returns the rounded values in a 128-bit vector of
 ///    [2 x double].
 ///
@@ -80,7 +80,7 @@
 /// \returns A 128-bit vector of [2 x double] containing the rounded values.
 #define _mm_ceil_pd(X)       _mm_round_pd((X), _MM_FROUND_CEIL)
 
-/// \brief Copies three upper elements of the first 128-bit vector operand to
+/// Copies three upper elements of the first 128-bit vector operand to
 ///    the corresponding three upper elements of the 128-bit result vector of
 ///    [4 x float]. Rounds up the lowest element of the second 128-bit vector
 ///    operand to an integer and copies it to the lowest element of the 128-bit
@@ -105,7 +105,7 @@
 ///    values.
 #define _mm_ceil_ss(X, Y)    _mm_round_ss((X), (Y), _MM_FROUND_CEIL)
 
-/// \brief Copies the upper element of the first 128-bit vector operand to the
+/// Copies the upper element of the first 128-bit vector operand to the
 ///    corresponding upper element of the 128-bit result vector of [2 x double].
 ///    Rounds up the lower element of the second 128-bit vector operand to an
 ///    integer and copies it to the lower element of the 128-bit result vector
@@ -130,7 +130,7 @@
 ///    values.
 #define _mm_ceil_sd(X, Y)    _mm_round_sd((X), (Y), _MM_FROUND_CEIL)
 
-/// \brief Rounds down each element of the 128-bit vector of [4 x float] to an
+/// Rounds down each element of the 128-bit vector of [4 x float] to an
 ///    an integer and returns the rounded values in a 128-bit vector of
 ///    [4 x float].
 ///
@@ -147,7 +147,7 @@
 /// \returns A 128-bit vector of [4 x float] containing the rounded values.
 #define _mm_floor_ps(X)      _mm_round_ps((X), _MM_FROUND_FLOOR)
 
-/// \brief Rounds down each element of the 128-bit vector of [2 x double] to an
+/// Rounds down each element of the 128-bit vector of [2 x double] to an
 ///    integer and returns the rounded values in a 128-bit vector of
 ///    [2 x double].
 ///
@@ -164,7 +164,7 @@
 /// \returns A 128-bit vector of [2 x double] containing the rounded values.
 #define _mm_floor_pd(X)      _mm_round_pd((X), _MM_FROUND_FLOOR)
 
-/// \brief Copies three upper elements of the first 128-bit vector operand to
+/// Copies three upper elements of the first 128-bit vector operand to
 ///    the corresponding three upper elements of the 128-bit result vector of
 ///    [4 x float]. Rounds down the lowest element of the second 128-bit vector
 ///    operand to an integer and copies it to the lowest element of the 128-bit
@@ -189,7 +189,7 @@
 ///    values.
 #define _mm_floor_ss(X, Y)   _mm_round_ss((X), (Y), _MM_FROUND_FLOOR)
 
-/// \brief Copies the upper element of the first 128-bit vector operand to the
+/// Copies the upper element of the first 128-bit vector operand to the
 ///    corresponding upper element of the 128-bit result vector of [2 x double].
 ///    Rounds down the lower element of the second 128-bit vector operand to an
 ///    integer and copies it to the lower element of the 128-bit result vector
@@ -214,7 +214,7 @@
 ///    values.
 #define _mm_floor_sd(X, Y)   _mm_round_sd((X), (Y), _MM_FROUND_FLOOR)
 
-/// \brief Rounds each element of the 128-bit vector of [4 x float] to an
+/// Rounds each element of the 128-bit vector of [4 x float] to an
 ///    integer value according to the rounding control specified by the second
 ///    argument and returns the rounded values in a 128-bit vector of
 ///    [4 x float].
@@ -247,7 +247,7 @@
 #define _mm_round_ps(X, M) __extension__ ({ \
   (__m128)__builtin_ia32_roundps((__v4sf)(__m128)(X), (M)); })
 
-/// \brief Copies three upper elements of the first 128-bit vector operand to
+/// Copies three upper elements of the first 128-bit vector operand to
 ///    the corresponding three upper elements of the 128-bit result vector of
 ///    [4 x float]. Rounds the lowest element of the second 128-bit vector
 ///    operand to an integer value according to the rounding control specified
@@ -289,7 +289,7 @@
   (__m128)__builtin_ia32_roundss((__v4sf)(__m128)(X), \
                                  (__v4sf)(__m128)(Y), (M)); })
 
-/// \brief Rounds each element of the 128-bit vector of [2 x double] to an
+/// Rounds each element of the 128-bit vector of [2 x double] to an
 ///    integer value according to the rounding control specified by the second
 ///    argument and returns the rounded values in a 128-bit vector of
 ///    [2 x double].
@@ -322,7 +322,7 @@
 #define _mm_round_pd(X, M) __extension__ ({ \
   (__m128d)__builtin_ia32_roundpd((__v2df)(__m128d)(X), (M)); })
 
-/// \brief Copies the upper element of the first 128-bit vector operand to the
+/// Copies the upper element of the first 128-bit vector operand to the
 ///    corresponding upper element of the 128-bit result vector of [2 x double].
 ///    Rounds the lower element of the second 128-bit vector operand to an
 ///    integer value according to the rounding control specified by the third
@@ -365,7 +365,7 @@
                                   (__v2df)(__m128d)(Y), (M)); })
 
 /* SSE4 Packed Blending Intrinsics.  */
-/// \brief Returns a 128-bit vector of [2 x double] where the values are
+/// Returns a 128-bit vector of [2 x double] where the values are
 ///    selected from either the first or second operand as specified by the
 ///    third operand, the control mask.
 ///
@@ -395,7 +395,7 @@
                                    (((M) & 0x01) ? 2 : 0), \
                                    (((M) & 0x02) ? 3 : 1)); })
 
-/// \brief Returns a 128-bit vector of [4 x float] where the values are selected
+/// Returns a 128-bit vector of [4 x float] where the values are selected
 ///    from either the first or second operand as specified by the third
 ///    operand, the control mask.
 ///
@@ -426,7 +426,7 @@
                                   (((M) & 0x04) ? 6 : 2), \
                                   (((M) & 0x08) ? 7 : 3)); })
 
-/// \brief Returns a 128-bit vector of [2 x double] where the values are
+/// Returns a 128-bit vector of [2 x double] where the values are
 ///    selected from either the first or second operand as specified by the
 ///    third operand, the control mask.
 ///
@@ -453,7 +453,7 @@
                                             (__v2df)__M);
 }
 
-/// \brief Returns a 128-bit vector of [4 x float] where the values are
+/// Returns a 128-bit vector of [4 x float] where the values are
 ///    selected from either the first or second operand as specified by the
 ///    third operand, the control mask.
 ///
@@ -480,7 +480,7 @@
                                            (__v4sf)__M);
 }
 
-/// \brief Returns a 128-bit vector of [16 x i8] where the values are selected
+/// Returns a 128-bit vector of [16 x i8] where the values are selected
 ///    from either of the first or second operand as specified by the third
 ///    operand, the control mask.
 ///
@@ -507,7 +507,7 @@
                                                (__v16qi)__M);
 }
 
-/// \brief Returns a 128-bit vector of [8 x i16] where the values are selected
+/// Returns a 128-bit vector of [8 x i16] where the values are selected
 ///    from either of the first or second operand as specified by the third
 ///    operand, the control mask.
 ///
@@ -544,7 +544,7 @@
                                    (((M) & 0x80) ? 15 : 7)); })
 
 /* SSE4 Dword Multiply Instructions.  */
-/// \brief Multiples corresponding elements of two 128-bit vectors of [4 x i32]
+/// Multiples corresponding elements of two 128-bit vectors of [4 x i32]
 ///    and returns the lower 32 bits of the each product in a 128-bit vector of
 ///    [4 x i32].
 ///
@@ -563,7 +563,7 @@
   return (__m128i) ((__v4su)__V1 * (__v4su)__V2);
 }
 
-/// \brief Multiplies corresponding even-indexed elements of two 128-bit
+/// Multiplies corresponding even-indexed elements of two 128-bit
 ///    vectors of [4 x i32] and returns a 128-bit vector of [2 x i64]
 ///    containing the products.
 ///
@@ -584,7 +584,7 @@
 }
 
 /* SSE4 Floating Point Dot Product Instructions.  */
-/// \brief Computes the dot product of the two 128-bit vectors of [4 x float]
+/// Computes the dot product of the two 128-bit vectors of [4 x float]
 ///    and returns it in the elements of the 128-bit result vector of
 ///    [4 x float].
 ///
@@ -620,7 +620,7 @@
   (__m128) __builtin_ia32_dpps((__v4sf)(__m128)(X), \
                                (__v4sf)(__m128)(Y), (M)); })
 
-/// \brief Computes the dot product of the two 128-bit vectors of [2 x double]
+/// Computes the dot product of the two 128-bit vectors of [2 x double]
 ///    and returns it in the elements of the 128-bit result vector of
 ///    [2 x double].
 ///
@@ -656,7 +656,7 @@
                                 (__v2df)(__m128d)(Y), (M)); })
 
 /* SSE4 Streaming Load Hint Instruction.  */
-/// \brief Loads integer values from a 128-bit aligned memory location to a
+/// Loads integer values from a 128-bit aligned memory location to a
 ///    128-bit integer vector.
 ///
 /// \headerfile <x86intrin.h>
@@ -675,7 +675,7 @@
 }
 
 /* SSE4 Packed Integer Min/Max Instructions.  */
-/// \brief Compares the corresponding elements of two 128-bit vectors of
+/// Compares the corresponding elements of two 128-bit vectors of
 ///    [16 x i8] and returns a 128-bit vector of [16 x i8] containing the lesser
 ///    of the two values.
 ///
@@ -694,7 +694,7 @@
   return (__m128i) __builtin_ia32_pminsb128 ((__v16qi) __V1, (__v16qi) __V2);
 }
 
-/// \brief Compares the corresponding elements of two 128-bit vectors of
+/// Compares the corresponding elements of two 128-bit vectors of
 ///    [16 x i8] and returns a 128-bit vector of [16 x i8] containing the
 ///    greater value of the two.
 ///
@@ -713,7 +713,7 @@
   return (__m128i) __builtin_ia32_pmaxsb128 ((__v16qi) __V1, (__v16qi) __V2);
 }
 
-/// \brief Compares the corresponding elements of two 128-bit vectors of
+/// Compares the corresponding elements of two 128-bit vectors of
 ///    [8 x u16] and returns a 128-bit vector of [8 x u16] containing the lesser
 ///    value of the two.
 ///
@@ -732,7 +732,7 @@
   return (__m128i) __builtin_ia32_pminuw128 ((__v8hi) __V1, (__v8hi) __V2);
 }
 
-/// \brief Compares the corresponding elements of two 128-bit vectors of
+/// Compares the corresponding elements of two 128-bit vectors of
 ///    [8 x u16] and returns a 128-bit vector of [8 x u16] containing the
 ///    greater value of the two.
 ///
@@ -751,7 +751,7 @@
   return (__m128i) __builtin_ia32_pmaxuw128 ((__v8hi) __V1, (__v8hi) __V2);
 }
 
-/// \brief Compares the corresponding elements of two 128-bit vectors of
+/// Compares the corresponding elements of two 128-bit vectors of
 ///    [4 x i32] and returns a 128-bit vector of [4 x i32] containing the lesser
 ///    value of the two.
 ///
@@ -770,7 +770,7 @@
   return (__m128i) __builtin_ia32_pminsd128 ((__v4si) __V1, (__v4si) __V2);
 }
 
-/// \brief Compares the corresponding elements of two 128-bit vectors of
+/// Compares the corresponding elements of two 128-bit vectors of
 ///    [4 x i32] and returns a 128-bit vector of [4 x i32] containing the
 ///    greater value of the two.
 ///
@@ -789,7 +789,7 @@
   return (__m128i) __builtin_ia32_pmaxsd128 ((__v4si) __V1, (__v4si) __V2);
 }
 
-/// \brief Compares the corresponding elements of two 128-bit vectors of
+/// Compares the corresponding elements of two 128-bit vectors of
 ///    [4 x u32] and returns a 128-bit vector of [4 x u32] containing the lesser
 ///    value of the two.
 ///
@@ -808,7 +808,7 @@
   return (__m128i) __builtin_ia32_pminud128((__v4si) __V1, (__v4si) __V2);
 }
 
-/// \brief Compares the corresponding elements of two 128-bit vectors of
+/// Compares the corresponding elements of two 128-bit vectors of
 ///    [4 x u32] and returns a 128-bit vector of [4 x u32] containing the
 ///    greater value of the two.
 ///
@@ -828,7 +828,7 @@
 }
 
 /* SSE4 Insertion and Extraction from XMM Register Instructions.  */
-/// \brief Takes the first argument \a X and inserts an element from the second
+/// Takes the first argument \a X and inserts an element from the second
 ///    argument \a Y as selected by the third argument \a N. That result then
 ///    has elements zeroed out also as selected by the third argument \a N. The
 ///    resulting 128-bit vector of [4 x float] is then returned.
@@ -870,7 +870,7 @@
 ///    single-precision floating point elements from the operands.
 #define _mm_insert_ps(X, Y, N) __builtin_ia32_insertps128((X), (Y), (N))
 
-/// \brief Extracts a 32-bit integer from a 128-bit vector of [4 x float] and
+/// Extracts a 32-bit integer from a 128-bit vector of [4 x float] and
 ///    returns it, using the immediate value parameter \a N as a selector.
 ///
 /// \headerfile <x86intrin.h>
@@ -912,7 +912,7 @@
                                              _MM_MK_INSERTPS_NDX((N), 0, 0x0e))
 
 /* Insert int into packed integer array at index.  */
-/// \brief Constructs a 128-bit vector of [16 x i8] by first making a copy of
+/// Constructs a 128-bit vector of [16 x i8] by first making a copy of
 ///    the 128-bit integer vector parameter, and then inserting the lower 8 bits
 ///    of an integer parameter \a I into an offset specified by the immediate
 ///    value parameter \a N.
@@ -957,7 +957,7 @@
                                      __a[(N) & 15] = (I);                 \
                                      (__m128i)__a;}))
 
-/// \brief Constructs a 128-bit vector of [4 x i32] by first making a copy of
+/// Constructs a 128-bit vector of [4 x i32] by first making a copy of
 ///    the 128-bit integer vector parameter, and then inserting the 32-bit
 ///    integer parameter \a I at the offset specified by the immediate value
 ///    parameter \a N.
@@ -991,7 +991,7 @@
                                       (__m128i)__a;}))
 
 #ifdef __x86_64__
-/// \brief Constructs a 128-bit vector of [2 x i64] by first making a copy of
+/// Constructs a 128-bit vector of [2 x i64] by first making a copy of
 ///    the 128-bit integer vector parameter, and then inserting the 64-bit
 ///    integer parameter \a I, using the immediate value parameter \a N as an
 ///    insertion location selector.
@@ -1026,7 +1026,7 @@
 /* Extract int from packed integer array at index.  This returns the element
  * as a zero extended value, so it is unsigned.
  */
-/// \brief Extracts an 8-bit element from the 128-bit integer vector of
+/// Extracts an 8-bit element from the 128-bit integer vector of
 ///    [16 x i8], using the immediate value parameter \a N as a selector.
 ///
 /// \headerfile <x86intrin.h>
@@ -1065,7 +1065,7 @@
                                 ({ __v16qi __a = (__v16qi)(__m128i)(X); \
                                    (int)(unsigned char) __a[(N) & 15];}))
 
-/// \brief Extracts a 32-bit element from the 128-bit integer vector of
+/// Extracts a 32-bit element from the 128-bit integer vector of
 ///    [4 x i32], using the immediate value parameter \a N as a selector.
 ///
 /// \headerfile <x86intrin.h>
@@ -1092,7 +1092,7 @@
                                     (int)__a[(N) & 3];}))
 
 #ifdef __x86_64__
-/// \brief Extracts a 64-bit element from the 128-bit integer vector of
+/// Extracts a 64-bit element from the 128-bit integer vector of
 ///    [2 x i64], using the immediate value parameter \a N as a selector.
 ///
 /// \headerfile <x86intrin.h>
@@ -1117,7 +1117,7 @@
 #endif /* __x86_64 */
 
 /* SSE4 128-bit Packed Integer Comparisons.  */
-/// \brief Tests whether the specified bits in a 128-bit integer vector are all
+/// Tests whether the specified bits in a 128-bit integer vector are all
 ///    zeros.
 ///
 /// \headerfile <x86intrin.h>
@@ -1135,7 +1135,7 @@
   return __builtin_ia32_ptestz128((__v2di)__M, (__v2di)__V);
 }
 
-/// \brief Tests whether the specified bits in a 128-bit integer vector are all
+/// Tests whether the specified bits in a 128-bit integer vector are all
 ///    ones.
 ///
 /// \headerfile <x86intrin.h>
@@ -1153,7 +1153,7 @@
   return __builtin_ia32_ptestc128((__v2di)__M, (__v2di)__V);
 }
 
-/// \brief Tests whether the specified bits in a 128-bit integer vector are
+/// Tests whether the specified bits in a 128-bit integer vector are
 ///    neither all zeros nor all ones.
 ///
 /// \headerfile <x86intrin.h>
@@ -1172,7 +1172,7 @@
   return __builtin_ia32_ptestnzc128((__v2di)__M, (__v2di)__V);
 }
 
-/// \brief Tests whether the specified bits in a 128-bit integer vector are all
+/// Tests whether the specified bits in a 128-bit integer vector are all
 ///    ones.
 ///
 /// \headerfile <x86intrin.h>
@@ -1189,7 +1189,7 @@
 ///    otherwise.
 #define _mm_test_all_ones(V) _mm_testc_si128((V), _mm_cmpeq_epi32((V), (V)))
 
-/// \brief Tests whether the specified bits in a 128-bit integer vector are
+/// Tests whether the specified bits in a 128-bit integer vector are
 ///    neither all zeros nor all ones.
 ///
 /// \headerfile <x86intrin.h>
@@ -1208,7 +1208,7 @@
 ///    FALSE otherwise.
 #define _mm_test_mix_ones_zeros(M, V) _mm_testnzc_si128((M), (V))
 
-/// \brief Tests whether the specified bits in a 128-bit integer vector are all
+/// Tests whether the specified bits in a 128-bit integer vector are all
 ///    zeros.
 ///
 /// \headerfile <x86intrin.h>
@@ -1227,7 +1227,7 @@
 #define _mm_test_all_zeros(M, V) _mm_testz_si128 ((M), (V))
 
 /* SSE4 64-bit Packed Integer Comparisons.  */
-/// \brief Compares each of the corresponding 64-bit values of the 128-bit
+/// Compares each of the corresponding 64-bit values of the 128-bit
 ///    integer vectors for equality.
 ///
 /// \headerfile <x86intrin.h>
@@ -1246,7 +1246,7 @@
 }
 
 /* SSE4 Packed Integer Sign-Extension.  */
-/// \brief Sign-extends each of the lower eight 8-bit integer elements of a
+/// Sign-extends each of the lower eight 8-bit integer elements of a
 ///    128-bit vector of [16 x i8] to 16-bit values and returns them in a
 ///    128-bit vector of [8 x i16]. The upper eight elements of the input vector
 ///    are unused.
@@ -1267,7 +1267,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qs)__V, (__v16qs)__V, 0, 1, 2, 3, 4, 5, 6, 7), __v8hi);
 }
 
-/// \brief Sign-extends each of the lower four 8-bit integer elements of a
+/// Sign-extends each of the lower four 8-bit integer elements of a
 ///    128-bit vector of [16 x i8] to 32-bit values and returns them in a
 ///    128-bit vector of [4 x i32]. The upper twelve elements of the input
 ///    vector are unused.
@@ -1288,7 +1288,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qs)__V, (__v16qs)__V, 0, 1, 2, 3), __v4si);
 }
 
-/// \brief Sign-extends each of the lower two 8-bit integer elements of a
+/// Sign-extends each of the lower two 8-bit integer elements of a
 ///    128-bit integer vector of [16 x i8] to 64-bit values and returns them in
 ///    a 128-bit vector of [2 x i64]. The upper fourteen elements of the input
 ///    vector are unused.
@@ -1309,7 +1309,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qs)__V, (__v16qs)__V, 0, 1), __v2di);
 }
 
-/// \brief Sign-extends each of the lower four 16-bit integer elements of a
+/// Sign-extends each of the lower four 16-bit integer elements of a
 ///    128-bit integer vector of [8 x i16] to 32-bit values and returns them in
 ///    a 128-bit vector of [4 x i32]. The upper four elements of the input
 ///    vector are unused.
@@ -1328,7 +1328,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hi)__V, (__v8hi)__V, 0, 1, 2, 3), __v4si);
 }
 
-/// \brief Sign-extends each of the lower two 16-bit integer elements of a
+/// Sign-extends each of the lower two 16-bit integer elements of a
 ///    128-bit integer vector of [8 x i16] to 64-bit values and returns them in
 ///    a 128-bit vector of [2 x i64]. The upper six elements of the input
 ///    vector are unused.
@@ -1347,7 +1347,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hi)__V, (__v8hi)__V, 0, 1), __v2di);
 }
 
-/// \brief Sign-extends each of the lower two 32-bit integer elements of a
+/// Sign-extends each of the lower two 32-bit integer elements of a
 ///    128-bit integer vector of [4 x i32] to 64-bit values and returns them in
 ///    a 128-bit vector of [2 x i64]. The upper two elements of the input vector
 ///    are unused.
@@ -1367,7 +1367,7 @@
 }
 
 /* SSE4 Packed Integer Zero-Extension.  */
-/// \brief Zero-extends each of the lower eight 8-bit integer elements of a
+/// Zero-extends each of the lower eight 8-bit integer elements of a
 ///    128-bit vector of [16 x i8] to 16-bit values and returns them in a
 ///    128-bit vector of [8 x i16]. The upper eight elements of the input vector
 ///    are unused.
@@ -1386,7 +1386,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3, 4, 5, 6, 7), __v8hi);
 }
 
-/// \brief Zero-extends each of the lower four 8-bit integer elements of a
+/// Zero-extends each of the lower four 8-bit integer elements of a
 ///    128-bit vector of [16 x i8] to 32-bit values and returns them in a
 ///    128-bit vector of [4 x i32]. The upper twelve elements of the input
 ///    vector are unused.
@@ -1405,7 +1405,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3), __v4si);
 }
 
-/// \brief Zero-extends each of the lower two 8-bit integer elements of a
+/// Zero-extends each of the lower two 8-bit integer elements of a
 ///    128-bit integer vector of [16 x i8] to 64-bit values and returns them in
 ///    a 128-bit vector of [2 x i64]. The upper fourteen elements of the input
 ///    vector are unused.
@@ -1424,7 +1424,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1), __v2di);
 }
 
-/// \brief Zero-extends each of the lower four 16-bit integer elements of a
+/// Zero-extends each of the lower four 16-bit integer elements of a
 ///    128-bit integer vector of [8 x i16] to 32-bit values and returns them in
 ///    a 128-bit vector of [4 x i32]. The upper four elements of the input
 ///    vector are unused.
@@ -1443,7 +1443,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1, 2, 3), __v4si);
 }
 
-/// \brief Zero-extends each of the lower two 16-bit integer elements of a
+/// Zero-extends each of the lower two 16-bit integer elements of a
 ///    128-bit integer vector of [8 x i16] to 64-bit values and returns them in
 ///    a 128-bit vector of [2 x i64]. The upper six elements of the input vector
 ///    are unused.
@@ -1462,7 +1462,7 @@
   return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1), __v2di);
 }
 
-/// \brief Zero-extends each of the lower two 32-bit integer elements of a
+/// Zero-extends each of the lower two 32-bit integer elements of a
 ///    128-bit integer vector of [4 x i32] to 64-bit values and returns them in
 ///    a 128-bit vector of [2 x i64]. The upper two elements of the input vector
 ///    are unused.
@@ -1482,7 +1482,7 @@
 }
 
 /* SSE4 Pack with Unsigned Saturation.  */
-/// \brief Converts 32-bit signed integers from both 128-bit integer vector
+/// Converts 32-bit signed integers from both 128-bit integer vector
 ///    operands into 16-bit unsigned integers, and returns the packed result.
 ///    Values greater than 0xFFFF are saturated to 0xFFFF. Values less than
 ///    0x0000 are saturated to 0x0000.
@@ -1511,7 +1511,7 @@
 }
 
 /* SSE4 Multiple Packed Sums of Absolute Difference.  */
-/// \brief Subtracts 8-bit unsigned integer values and computes the absolute
+/// Subtracts 8-bit unsigned integer values and computes the absolute
 ///    values of the differences to the corresponding bits in the destination.
 ///    Then sums of the absolute differences are returned according to the bit
 ///    fields in the immediate operand.
@@ -1550,7 +1550,7 @@
   (__m128i) __builtin_ia32_mpsadbw128((__v16qi)(__m128i)(X), \
                                       (__v16qi)(__m128i)(Y), (M)); })
 
-/// \brief Finds the minimum unsigned 16-bit element in the input 128-bit
+/// Finds the minimum unsigned 16-bit element in the input 128-bit
 ///    vector of [8 x u16] and returns it and along with its index.
 ///
 /// \headerfile <x86intrin.h>
@@ -1604,7 +1604,7 @@
 #define _SIDD_UNIT_MASK                 0x40
 
 /* SSE4.2 Packed Comparison Intrinsics.  */
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with implicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns a 128-bit integer vector representing the result
 ///    mask of the comparison.
@@ -1660,7 +1660,7 @@
   (__m128i)__builtin_ia32_pcmpistrm128((__v16qi)(__m128i)(A), \
                                        (__v16qi)(__m128i)(B), (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with implicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns an integer representing the result index of the
 ///    comparison.
@@ -1714,7 +1714,7 @@
   (int)__builtin_ia32_pcmpistri128((__v16qi)(__m128i)(A), \
                                    (__v16qi)(__m128i)(B), (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with explicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns a 128-bit integer vector representing the result
 ///    mask of the comparison.
@@ -1775,7 +1775,7 @@
                                        (__v16qi)(__m128i)(B), (int)(LB), \
                                        (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with explicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns an integer representing the result index of the
 ///    comparison.
@@ -1835,7 +1835,7 @@
                                    (int)(M))
 
 /* SSE4.2 Packed Comparison Intrinsics and EFlag Reading.  */
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with implicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns 1 if the bit mask is zero and the length of the
 ///    string in \a B is the maximum, otherwise, returns 0.
@@ -1885,7 +1885,7 @@
   (int)__builtin_ia32_pcmpistria128((__v16qi)(__m128i)(A), \
                                     (__v16qi)(__m128i)(B), (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with implicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns 1 if the bit mask is non-zero, otherwise, returns
 ///    0.
@@ -1934,7 +1934,7 @@
   (int)__builtin_ia32_pcmpistric128((__v16qi)(__m128i)(A), \
                                     (__v16qi)(__m128i)(B), (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with implicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns bit 0 of the resulting bit mask.
 ///
@@ -1982,7 +1982,7 @@
   (int)__builtin_ia32_pcmpistrio128((__v16qi)(__m128i)(A), \
                                     (__v16qi)(__m128i)(B), (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with implicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns 1 if the length of the string in \a A is less than
 ///    the maximum, otherwise, returns 0.
@@ -2032,7 +2032,7 @@
   (int)__builtin_ia32_pcmpistris128((__v16qi)(__m128i)(A), \
                                     (__v16qi)(__m128i)(B), (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with implicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns 1 if the length of the string in \a B is less than
 ///    the maximum, otherwise, returns 0.
@@ -2082,7 +2082,7 @@
   (int)__builtin_ia32_pcmpistriz128((__v16qi)(__m128i)(A), \
                                     (__v16qi)(__m128i)(B), (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with explicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns 1 if the bit mask is zero and the length of the
 ///    string in \a B is the maximum, otherwise, returns 0.
@@ -2137,7 +2137,7 @@
                                     (__v16qi)(__m128i)(B), (int)(LB), \
                                     (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with explicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns 1 if the resulting mask is non-zero, otherwise,
 ///    returns 0.
@@ -2191,7 +2191,7 @@
                                     (__v16qi)(__m128i)(B), (int)(LB), \
                                     (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with explicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns bit 0 of the resulting bit mask.
 ///
@@ -2244,7 +2244,7 @@
                                     (__v16qi)(__m128i)(B), (int)(LB), \
                                     (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with explicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns 1 if the length of the string in \a A is less than
 ///    the maximum, otherwise, returns 0.
@@ -2299,7 +2299,7 @@
                                     (__v16qi)(__m128i)(B), (int)(LB), \
                                     (int)(M))
 
-/// \brief Uses the immediate operand \a M to perform a comparison of string
+/// Uses the immediate operand \a M to perform a comparison of string
 ///    data with explicitly defined lengths that is contained in source operands
 ///    \a A and \a B. Returns 1 if the length of the string in \a B is less than
 ///    the maximum, otherwise, returns 0.
@@ -2354,7 +2354,7 @@
                                     (int)(M))
 
 /* SSE4.2 Compare Packed Data -- Greater Than.  */
-/// \brief Compares each of the corresponding 64-bit values of the 128-bit
+/// Compares each of the corresponding 64-bit values of the 128-bit
 ///    integer vectors to determine if the values in the first operand are
 ///    greater than those in the second operand.
 ///
@@ -2374,7 +2374,7 @@
 }
 
 /* SSE4.2 Accumulate CRC32.  */
-/// \brief Adds the unsigned integer operand to the CRC-32C checksum of the
+/// Adds the unsigned integer operand to the CRC-32C checksum of the
 ///    unsigned char operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2394,7 +2394,7 @@
   return __builtin_ia32_crc32qi(__C, __D);
 }
 
-/// \brief Adds the unsigned integer operand to the CRC-32C checksum of the
+/// Adds the unsigned integer operand to the CRC-32C checksum of the
 ///    unsigned short operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2414,7 +2414,7 @@
   return __builtin_ia32_crc32hi(__C, __D);
 }
 
-/// \brief Adds the first unsigned integer operand to the CRC-32C checksum of
+/// Adds the first unsigned integer operand to the CRC-32C checksum of
 ///    the second unsigned integer operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2435,7 +2435,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Adds the unsigned integer operand to the CRC-32C checksum of the
+/// Adds the unsigned integer operand to the CRC-32C checksum of the
 ///    unsigned 64-bit integer operand.
 ///
 /// \headerfile <x86intrin.h>
Index: cfe/trunk/lib/Headers/tmmintrin.h
===================================================================
--- cfe/trunk/lib/Headers/tmmintrin.h
+++ cfe/trunk/lib/Headers/tmmintrin.h
@@ -29,7 +29,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("ssse3")))
 
-/// \brief Computes the absolute value of each of the packed 8-bit signed
+/// Computes the absolute value of each of the packed 8-bit signed
 ///    integers in the source operand and stores the 8-bit unsigned integer
 ///    results in the destination.
 ///
@@ -47,7 +47,7 @@
     return (__m64)__builtin_ia32_pabsb((__v8qi)__a);
 }
 
-/// \brief Computes the absolute value of each of the packed 8-bit signed
+/// Computes the absolute value of each of the packed 8-bit signed
 ///    integers in the source operand and stores the 8-bit unsigned integer
 ///    results in the destination.
 ///
@@ -65,7 +65,7 @@
     return (__m128i)__builtin_ia32_pabsb128((__v16qi)__a);
 }
 
-/// \brief Computes the absolute value of each of the packed 16-bit signed
+/// Computes the absolute value of each of the packed 16-bit signed
 ///    integers in the source operand and stores the 16-bit unsigned integer
 ///    results in the destination.
 ///
@@ -83,7 +83,7 @@
     return (__m64)__builtin_ia32_pabsw((__v4hi)__a);
 }
 
-/// \brief Computes the absolute value of each of the packed 16-bit signed
+/// Computes the absolute value of each of the packed 16-bit signed
 ///    integers in the source operand and stores the 16-bit unsigned integer
 ///    results in the destination.
 ///
@@ -101,7 +101,7 @@
     return (__m128i)__builtin_ia32_pabsw128((__v8hi)__a);
 }
 
-/// \brief Computes the absolute value of each of the packed 32-bit signed
+/// Computes the absolute value of each of the packed 32-bit signed
 ///    integers in the source operand and stores the 32-bit unsigned integer
 ///    results in the destination.
 ///
@@ -119,7 +119,7 @@
     return (__m64)__builtin_ia32_pabsd((__v2si)__a);
 }
 
-/// \brief Computes the absolute value of each of the packed 32-bit signed
+/// Computes the absolute value of each of the packed 32-bit signed
 ///    integers in the source operand and stores the 32-bit unsigned integer
 ///    results in the destination.
 ///
@@ -137,7 +137,7 @@
     return (__m128i)__builtin_ia32_pabsd128((__v4si)__a);
 }
 
-/// \brief Concatenates the two 128-bit integer vector operands, and
+/// Concatenates the two 128-bit integer vector operands, and
 ///    right-shifts the result by the number of bytes specified in the immediate
 ///    operand.
 ///
@@ -161,7 +161,7 @@
   (__m128i)__builtin_ia32_palignr128((__v16qi)(__m128i)(a), \
                                      (__v16qi)(__m128i)(b), (n)); })
 
-/// \brief Concatenates the two 64-bit integer vector operands, and right-shifts
+/// Concatenates the two 64-bit integer vector operands, and right-shifts
 ///    the result by the number of bytes specified in the immediate operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -183,7 +183,7 @@
 #define _mm_alignr_pi8(a, b, n) __extension__ ({ \
   (__m64)__builtin_ia32_palignr((__v8qi)(__m64)(a), (__v8qi)(__m64)(b), (n)); })
 
-/// \brief Horizontally adds the adjacent pairs of values contained in 2 packed
+/// Horizontally adds the adjacent pairs of values contained in 2 packed
 ///    128-bit vectors of [8 x i16].
 ///
 /// \headerfile <x86intrin.h>
@@ -206,7 +206,7 @@
     return (__m128i)__builtin_ia32_phaddw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Horizontally adds the adjacent pairs of values contained in 2 packed
+/// Horizontally adds the adjacent pairs of values contained in 2 packed
 ///    128-bit vectors of [4 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -229,7 +229,7 @@
     return (__m128i)__builtin_ia32_phaddd128((__v4si)__a, (__v4si)__b);
 }
 
-/// \brief Horizontally adds the adjacent pairs of values contained in 2 packed
+/// Horizontally adds the adjacent pairs of values contained in 2 packed
 ///    64-bit vectors of [4 x i16].
 ///
 /// \headerfile <x86intrin.h>
@@ -252,7 +252,7 @@
     return (__m64)__builtin_ia32_phaddw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief Horizontally adds the adjacent pairs of values contained in 2 packed
+/// Horizontally adds the adjacent pairs of values contained in 2 packed
 ///    64-bit vectors of [2 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -275,7 +275,7 @@
     return (__m64)__builtin_ia32_phaddd((__v2si)__a, (__v2si)__b);
 }
 
-/// \brief Horizontally adds the adjacent pairs of values contained in 2 packed
+/// Horizontally adds the adjacent pairs of values contained in 2 packed
 ///    128-bit vectors of [8 x i16]. Positive sums greater than 0x7FFF are
 ///    saturated to 0x7FFF. Negative sums less than 0x8000 are saturated to
 ///    0x8000.
@@ -300,7 +300,7 @@
     return (__m128i)__builtin_ia32_phaddsw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Horizontally adds the adjacent pairs of values contained in 2 packed
+/// Horizontally adds the adjacent pairs of values contained in 2 packed
 ///    64-bit vectors of [4 x i16]. Positive sums greater than 0x7FFF are
 ///    saturated to 0x7FFF. Negative sums less than 0x8000 are saturated to
 ///    0x8000.
@@ -325,7 +325,7 @@
     return (__m64)__builtin_ia32_phaddsw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief Horizontally subtracts the adjacent pairs of values contained in 2
+/// Horizontally subtracts the adjacent pairs of values contained in 2
 ///    packed 128-bit vectors of [8 x i16].
 ///
 /// \headerfile <x86intrin.h>
@@ -348,7 +348,7 @@
     return (__m128i)__builtin_ia32_phsubw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Horizontally subtracts the adjacent pairs of values contained in 2
+/// Horizontally subtracts the adjacent pairs of values contained in 2
 ///    packed 128-bit vectors of [4 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -371,7 +371,7 @@
     return (__m128i)__builtin_ia32_phsubd128((__v4si)__a, (__v4si)__b);
 }
 
-/// \brief Horizontally subtracts the adjacent pairs of values contained in 2
+/// Horizontally subtracts the adjacent pairs of values contained in 2
 ///    packed 64-bit vectors of [4 x i16].
 ///
 /// \headerfile <x86intrin.h>
@@ -394,7 +394,7 @@
     return (__m64)__builtin_ia32_phsubw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief Horizontally subtracts the adjacent pairs of values contained in 2
+/// Horizontally subtracts the adjacent pairs of values contained in 2
 ///    packed 64-bit vectors of [2 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -417,7 +417,7 @@
     return (__m64)__builtin_ia32_phsubd((__v2si)__a, (__v2si)__b);
 }
 
-/// \brief Horizontally subtracts the adjacent pairs of values contained in 2
+/// Horizontally subtracts the adjacent pairs of values contained in 2
 ///    packed 128-bit vectors of [8 x i16]. Positive differences greater than
 ///    0x7FFF are saturated to 0x7FFF. Negative differences less than 0x8000 are
 ///    saturated to 0x8000.
@@ -442,7 +442,7 @@
     return (__m128i)__builtin_ia32_phsubsw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Horizontally subtracts the adjacent pairs of values contained in 2
+/// Horizontally subtracts the adjacent pairs of values contained in 2
 ///    packed 64-bit vectors of [4 x i16]. Positive differences greater than
 ///    0x7FFF are saturated to 0x7FFF. Negative differences less than 0x8000 are
 ///    saturated to 0x8000.
@@ -467,7 +467,7 @@
     return (__m64)__builtin_ia32_phsubsw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief Multiplies corresponding pairs of packed 8-bit unsigned integer
+/// Multiplies corresponding pairs of packed 8-bit unsigned integer
 ///    values contained in the first source operand and packed 8-bit signed
 ///    integer values contained in the second source operand, adds pairs of
 ///    contiguous products with signed saturation, and writes the 16-bit sums to
@@ -501,7 +501,7 @@
     return (__m128i)__builtin_ia32_pmaddubsw128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief Multiplies corresponding pairs of packed 8-bit unsigned integer
+/// Multiplies corresponding pairs of packed 8-bit unsigned integer
 ///    values contained in the first source operand and packed 8-bit signed
 ///    integer values contained in the second source operand, adds pairs of
 ///    contiguous products with signed saturation, and writes the 16-bit sums to
@@ -531,7 +531,7 @@
     return (__m64)__builtin_ia32_pmaddubsw((__v8qi)__a, (__v8qi)__b);
 }
 
-/// \brief Multiplies packed 16-bit signed integer values, truncates the 32-bit
+/// Multiplies packed 16-bit signed integer values, truncates the 32-bit
 ///    products to the 18 most significant bits by right-shifting, rounds the
 ///    truncated value by adding 1, and writes bits [16:1] to the destination.
 ///
@@ -551,7 +551,7 @@
     return (__m128i)__builtin_ia32_pmulhrsw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief Multiplies packed 16-bit signed integer values, truncates the 32-bit
+/// Multiplies packed 16-bit signed integer values, truncates the 32-bit
 ///    products to the 18 most significant bits by right-shifting, rounds the
 ///    truncated value by adding 1, and writes bits [16:1] to the destination.
 ///
@@ -571,7 +571,7 @@
     return (__m64)__builtin_ia32_pmulhrsw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief Copies the 8-bit integers from a 128-bit integer vector to the
+/// Copies the 8-bit integers from a 128-bit integer vector to the
 ///    destination or clears 8-bit values in the destination, as specified by
 ///    the second source operand.
 ///
@@ -597,7 +597,7 @@
     return (__m128i)__builtin_ia32_pshufb128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief Copies the 8-bit integers from a 64-bit integer vector to the
+/// Copies the 8-bit integers from a 64-bit integer vector to the
 ///    destination or clears 8-bit values in the destination, as specified by
 ///    the second source operand.
 ///
@@ -622,7 +622,7 @@
     return (__m64)__builtin_ia32_pshufb((__v8qi)__a, (__v8qi)__b);
 }
 
-/// \brief For each 8-bit integer in the first source operand, perform one of
+/// For each 8-bit integer in the first source operand, perform one of
 ///    the following actions as specified by the second source operand.
 ///
 ///    If the byte in the second source is negative, calculate the two's
@@ -648,7 +648,7 @@
     return (__m128i)__builtin_ia32_psignb128((__v16qi)__a, (__v16qi)__b);
 }
 
-/// \brief For each 16-bit integer in the first source operand, perform one of
+/// For each 16-bit integer in the first source operand, perform one of
 ///    the following actions as specified by the second source operand.
 ///
 ///    If the word in the second source is negative, calculate the two's
@@ -674,7 +674,7 @@
     return (__m128i)__builtin_ia32_psignw128((__v8hi)__a, (__v8hi)__b);
 }
 
-/// \brief For each 32-bit integer in the first source operand, perform one of
+/// For each 32-bit integer in the first source operand, perform one of
 ///    the following actions as specified by the second source operand.
 ///
 ///    If the doubleword in the second source is negative, calculate the two's
@@ -700,7 +700,7 @@
     return (__m128i)__builtin_ia32_psignd128((__v4si)__a, (__v4si)__b);
 }
 
-/// \brief For each 8-bit integer in the first source operand, perform one of
+/// For each 8-bit integer in the first source operand, perform one of
 ///    the following actions as specified by the second source operand.
 ///
 ///    If the byte in the second source is negative, calculate the two's
@@ -726,7 +726,7 @@
     return (__m64)__builtin_ia32_psignb((__v8qi)__a, (__v8qi)__b);
 }
 
-/// \brief For each 16-bit integer in the first source operand, perform one of
+/// For each 16-bit integer in the first source operand, perform one of
 ///    the following actions as specified by the second source operand.
 ///
 ///    If the word in the second source is negative, calculate the two's
@@ -752,7 +752,7 @@
     return (__m64)__builtin_ia32_psignw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief For each 32-bit integer in the first source operand, perform one of
+/// For each 32-bit integer in the first source operand, perform one of
 ///    the following actions as specified by the second source operand.
 ///
 ///    If the doubleword in the second source is negative, calculate the two's
Index: cfe/trunk/lib/Headers/xmmintrin.h
===================================================================
--- cfe/trunk/lib/Headers/xmmintrin.h
+++ cfe/trunk/lib/Headers/xmmintrin.h
@@ -42,7 +42,7 @@
 /* Define the default attributes for the functions in this file. */
 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse")))
 
-/// \brief Adds the 32-bit float values in the low-order bits of the operands.
+/// Adds the 32-bit float values in the low-order bits of the operands.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -64,7 +64,7 @@
   return __a;
 }
 
-/// \brief Adds two 128-bit vectors of [4 x float], and returns the results of
+/// Adds two 128-bit vectors of [4 x float], and returns the results of
 ///    the addition.
 ///
 /// \headerfile <x86intrin.h>
@@ -83,7 +83,7 @@
   return (__m128)((__v4sf)__a + (__v4sf)__b);
 }
 
-/// \brief Subtracts the 32-bit float value in the low-order bits of the second
+/// Subtracts the 32-bit float value in the low-order bits of the second
 ///    operand from the corresponding value in the first operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -106,7 +106,7 @@
   return __a;
 }
 
-/// \brief Subtracts each of the values of the second operand from the first
+/// Subtracts each of the values of the second operand from the first
 ///    operand, both of which are 128-bit vectors of [4 x float] and returns
 ///    the results of the subtraction.
 ///
@@ -126,7 +126,7 @@
   return (__m128)((__v4sf)__a - (__v4sf)__b);
 }
 
-/// \brief Multiplies two 32-bit float values in the low-order bits of the
+/// Multiplies two 32-bit float values in the low-order bits of the
 ///    operands.
 ///
 /// \headerfile <x86intrin.h>
@@ -149,7 +149,7 @@
   return __a;
 }
 
-/// \brief Multiplies two 128-bit vectors of [4 x float] and returns the
+/// Multiplies two 128-bit vectors of [4 x float] and returns the
 ///    results of the multiplication.
 ///
 /// \headerfile <x86intrin.h>
@@ -168,7 +168,7 @@
   return (__m128)((__v4sf)__a * (__v4sf)__b);
 }
 
-/// \brief Divides the value in the low-order 32 bits of the first operand by
+/// Divides the value in the low-order 32 bits of the first operand by
 ///    the corresponding value in the second operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -191,7 +191,7 @@
   return __a;
 }
 
-/// \brief Divides two 128-bit vectors of [4 x float].
+/// Divides two 128-bit vectors of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -209,7 +209,7 @@
   return (__m128)((__v4sf)__a / (__v4sf)__b);
 }
 
-/// \brief Calculates the square root of the value stored in the low-order bits
+/// Calculates the square root of the value stored in the low-order bits
 ///    of a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -228,7 +228,7 @@
   return (__m128) { __c[0], __a[1], __a[2], __a[3] };
 }
 
-/// \brief Calculates the square roots of the values stored in a 128-bit vector
+/// Calculates the square roots of the values stored in a 128-bit vector
 ///    of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -245,7 +245,7 @@
   return __builtin_ia32_sqrtps((__v4sf)__a);
 }
 
-/// \brief Calculates the approximate reciprocal of the value stored in the
+/// Calculates the approximate reciprocal of the value stored in the
 ///    low-order bits of a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -264,7 +264,7 @@
   return (__m128) { __c[0], __a[1], __a[2], __a[3] };
 }
 
-/// \brief Calculates the approximate reciprocals of the values stored in a
+/// Calculates the approximate reciprocals of the values stored in a
 ///    128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -281,7 +281,7 @@
   return __builtin_ia32_rcpps((__v4sf)__a);
 }
 
-/// \brief Calculates the approximate reciprocal of the square root of the value
+/// Calculates the approximate reciprocal of the square root of the value
 ///    stored in the low-order bits of a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -301,7 +301,7 @@
   return (__m128) { __c[0], __a[1], __a[2], __a[3] };
 }
 
-/// \brief Calculates the approximate reciprocals of the square roots of the
+/// Calculates the approximate reciprocals of the square roots of the
 ///    values stored in a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -318,7 +318,7 @@
   return __builtin_ia32_rsqrtps((__v4sf)__a);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands and returns the lesser value in the low-order bits of the
 ///    vector of [4 x float].
 ///
@@ -341,7 +341,7 @@
   return __builtin_ia32_minss((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 128-bit vectors of [4 x float] and returns the lesser
+/// Compares two 128-bit vectors of [4 x float] and returns the lesser
 ///    of each pair of values.
 ///
 /// \headerfile <x86intrin.h>
@@ -360,7 +360,7 @@
   return __builtin_ia32_minps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands and returns the greater value in the low-order bits of a 128-bit
 ///    vector of [4 x float].
 ///
@@ -383,7 +383,7 @@
   return __builtin_ia32_maxss((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 128-bit vectors of [4 x float] and returns the greater
+/// Compares two 128-bit vectors of [4 x float] and returns the greater
 ///    of each pair of values.
 ///
 /// \headerfile <x86intrin.h>
@@ -402,7 +402,7 @@
   return __builtin_ia32_maxps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Performs a bitwise AND of two 128-bit vectors of [4 x float].
+/// Performs a bitwise AND of two 128-bit vectors of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -420,7 +420,7 @@
   return (__m128)((__v4su)__a & (__v4su)__b);
 }
 
-/// \brief Performs a bitwise AND of two 128-bit vectors of [4 x float], using
+/// Performs a bitwise AND of two 128-bit vectors of [4 x float], using
 ///    the one's complement of the values contained in the first source
 ///    operand.
 ///
@@ -442,7 +442,7 @@
   return (__m128)(~(__v4su)__a & (__v4su)__b);
 }
 
-/// \brief Performs a bitwise OR of two 128-bit vectors of [4 x float].
+/// Performs a bitwise OR of two 128-bit vectors of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -460,7 +460,7 @@
   return (__m128)((__v4su)__a | (__v4su)__b);
 }
 
-/// \brief Performs a bitwise exclusive OR of two 128-bit vectors of
+/// Performs a bitwise exclusive OR of two 128-bit vectors of
 ///    [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -479,7 +479,7 @@
   return (__m128)((__v4su)__a ^ (__v4su)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands for equality and returns the result of the comparison in the
 ///    low-order bits of a vector [4 x float].
 ///
@@ -501,7 +501,7 @@
   return (__m128)__builtin_ia32_cmpeqss((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] for equality.
 ///
 /// \headerfile <x86intrin.h>
@@ -519,7 +519,7 @@
   return (__m128)__builtin_ia32_cmpeqps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is less than the
 ///    corresponding value in the second operand and returns the result of the
 ///    comparison in the low-order bits of a vector of [4 x float].
@@ -542,7 +542,7 @@
   return (__m128)__builtin_ia32_cmpltss((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are less than those in the second operand.
 ///
@@ -561,7 +561,7 @@
   return (__m128)__builtin_ia32_cmpltps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is less than or
 ///    equal to the corresponding value in the second operand and returns the
 ///    result of the comparison in the low-order bits of a vector of
@@ -585,7 +585,7 @@
   return (__m128)__builtin_ia32_cmpless((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are less than or equal to those in the second operand.
 ///
@@ -604,7 +604,7 @@
   return (__m128)__builtin_ia32_cmpleps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is greater than
 ///    the corresponding value in the second operand and returns the result of
 ///    the comparison in the low-order bits of a vector of [4 x float].
@@ -629,7 +629,7 @@
                                          4, 1, 2, 3);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are greater than those in the second operand.
 ///
@@ -648,7 +648,7 @@
   return (__m128)__builtin_ia32_cmpltps((__v4sf)__b, (__v4sf)__a);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is greater than
 ///    or equal to the corresponding value in the second operand and returns
 ///    the result of the comparison in the low-order bits of a vector of
@@ -674,7 +674,7 @@
                                          4, 1, 2, 3);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are greater than or equal to those in the second operand.
 ///
@@ -693,7 +693,7 @@
   return (__m128)__builtin_ia32_cmpleps((__v4sf)__b, (__v4sf)__a);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands for inequality and returns the result of the comparison in the
 ///    low-order bits of a vector of [4 x float].
 ///
@@ -716,7 +716,7 @@
   return (__m128)__builtin_ia32_cmpneqss((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] for inequality.
 ///
 /// \headerfile <x86intrin.h>
@@ -735,7 +735,7 @@
   return (__m128)__builtin_ia32_cmpneqps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is not less than
 ///    the corresponding value in the second operand and returns the result of
 ///    the comparison in the low-order bits of a vector of [4 x float].
@@ -759,7 +759,7 @@
   return (__m128)__builtin_ia32_cmpnltss((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are not less than those in the second operand.
 ///
@@ -779,7 +779,7 @@
   return (__m128)__builtin_ia32_cmpnltps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is not less than
 ///    or equal to the corresponding value in the second operand and returns
 ///    the result of the comparison in the low-order bits of a vector of
@@ -804,7 +804,7 @@
   return (__m128)__builtin_ia32_cmpnless((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are not less than or equal to those in the second operand.
 ///
@@ -824,7 +824,7 @@
   return (__m128)__builtin_ia32_cmpnleps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is not greater
 ///    than the corresponding value in the second operand and returns the
 ///    result of the comparison in the low-order bits of a vector of
@@ -851,7 +851,7 @@
                                          4, 1, 2, 3);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are not greater than those in the second operand.
 ///
@@ -871,7 +871,7 @@
   return (__m128)__builtin_ia32_cmpnltps((__v4sf)__b, (__v4sf)__a);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is not greater
 ///    than or equal to the corresponding value in the second operand and
 ///    returns the result of the comparison in the low-order bits of a vector
@@ -898,7 +898,7 @@
                                          4, 1, 2, 3);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are not greater than or equal to those in the second operand.
 ///
@@ -918,7 +918,7 @@
   return (__m128)__builtin_ia32_cmpnleps((__v4sf)__b, (__v4sf)__a);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is ordered with
 ///    respect to the corresponding value in the second operand and returns the
 ///    result of the comparison in the low-order bits of a vector of
@@ -943,7 +943,7 @@
   return (__m128)__builtin_ia32_cmpordss((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are ordered with respect to those in the second operand.
 ///
@@ -963,7 +963,7 @@
   return (__m128)__builtin_ia32_cmpordps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the value in the first operand is unordered
 ///    with respect to the corresponding value in the second operand and
 ///    returns the result of the comparison in the low-order bits of a vector
@@ -988,7 +988,7 @@
   return (__m128)__builtin_ia32_cmpunordss((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares each of the corresponding 32-bit float values of the
+/// Compares each of the corresponding 32-bit float values of the
 ///    128-bit vectors of [4 x float] to determine if the values in the first
 ///    operand are unordered with respect to those in the second operand.
 ///
@@ -1008,7 +1008,7 @@
   return (__m128)__builtin_ia32_cmpunordps((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands for equality and returns the result of the comparison.
 ///
 ///    If either of the two lower 32-bit values is NaN, 0 is returned.
@@ -1032,7 +1032,7 @@
   return __builtin_ia32_comieq((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the first operand is less than the second
 ///    operand and returns the result of the comparison.
 ///
@@ -1057,7 +1057,7 @@
   return __builtin_ia32_comilt((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the first operand is less than or equal to the
 ///    second operand and returns the result of the comparison.
 ///
@@ -1081,7 +1081,7 @@
   return __builtin_ia32_comile((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the first operand is greater than the second
 ///    operand and returns the result of the comparison.
 ///
@@ -1105,7 +1105,7 @@
   return __builtin_ia32_comigt((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the first operand is greater than or equal to
 ///    the second operand and returns the result of the comparison.
 ///
@@ -1129,7 +1129,7 @@
   return __builtin_ia32_comige((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Compares two 32-bit float values in the low-order bits of both
+/// Compares two 32-bit float values in the low-order bits of both
 ///    operands to determine if the first operand is not equal to the second
 ///    operand and returns the result of the comparison.
 ///
@@ -1153,7 +1153,7 @@
   return __builtin_ia32_comineq((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Performs an unordered comparison of two 32-bit float values using
+/// Performs an unordered comparison of two 32-bit float values using
 ///    the low-order bits of both operands to determine equality and returns
 ///    the result of the comparison.
 ///
@@ -1177,7 +1177,7 @@
   return __builtin_ia32_ucomieq((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Performs an unordered comparison of two 32-bit float values using
+/// Performs an unordered comparison of two 32-bit float values using
 ///    the low-order bits of both operands to determine if the first operand is
 ///    less than the second operand and returns the result of the comparison.
 ///
@@ -1201,7 +1201,7 @@
   return __builtin_ia32_ucomilt((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Performs an unordered comparison of two 32-bit float values using
+/// Performs an unordered comparison of two 32-bit float values using
 ///    the low-order bits of both operands to determine if the first operand is
 ///    less than or equal to the second operand and returns the result of the
 ///    comparison.
@@ -1226,7 +1226,7 @@
   return __builtin_ia32_ucomile((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Performs an unordered comparison of two 32-bit float values using
+/// Performs an unordered comparison of two 32-bit float values using
 ///    the low-order bits of both operands to determine if the first operand is
 ///    greater than the second operand and returns the result of the
 ///    comparison.
@@ -1251,7 +1251,7 @@
   return __builtin_ia32_ucomigt((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Performs an unordered comparison of two 32-bit float values using
+/// Performs an unordered comparison of two 32-bit float values using
 ///    the low-order bits of both operands to determine if the first operand is
 ///    greater than or equal to the second operand and returns the result of
 ///    the comparison.
@@ -1276,7 +1276,7 @@
   return __builtin_ia32_ucomige((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Performs an unordered comparison of two 32-bit float values using
+/// Performs an unordered comparison of two 32-bit float values using
 ///    the low-order bits of both operands to determine inequality and returns
 ///    the result of the comparison.
 ///
@@ -1300,7 +1300,7 @@
   return __builtin_ia32_ucomineq((__v4sf)__a, (__v4sf)__b);
 }
 
-/// \brief Converts a float value contained in the lower 32 bits of a vector of
+/// Converts a float value contained in the lower 32 bits of a vector of
 ///    [4 x float] into a 32-bit integer.
 ///
 /// \headerfile <x86intrin.h>
@@ -1318,7 +1318,7 @@
   return __builtin_ia32_cvtss2si((__v4sf)__a);
 }
 
-/// \brief Converts a float value contained in the lower 32 bits of a vector of
+/// Converts a float value contained in the lower 32 bits of a vector of
 ///    [4 x float] into a 32-bit integer.
 ///
 /// \headerfile <x86intrin.h>
@@ -1338,7 +1338,7 @@
 
 #ifdef __x86_64__
 
-/// \brief Converts a float value contained in the lower 32 bits of a vector of
+/// Converts a float value contained in the lower 32 bits of a vector of
 ///    [4 x float] into a 64-bit integer.
 ///
 /// \headerfile <x86intrin.h>
@@ -1358,7 +1358,7 @@
 
 #endif
 
-/// \brief Converts two low-order float values in a 128-bit vector of
+/// Converts two low-order float values in a 128-bit vector of
 ///    [4 x float] into a 64-bit vector of [2 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -1374,7 +1374,7 @@
   return (__m64)__builtin_ia32_cvtps2pi((__v4sf)__a);
 }
 
-/// \brief Converts two low-order float values in a 128-bit vector of
+/// Converts two low-order float values in a 128-bit vector of
 ///    [4 x float] into a 64-bit vector of [2 x i32].
 ///
 /// \headerfile <x86intrin.h>
@@ -1390,7 +1390,7 @@
   return _mm_cvtps_pi32(__a);
 }
 
-/// \brief Converts a float value contained in the lower 32 bits of a vector of
+/// Converts a float value contained in the lower 32 bits of a vector of
 ///    [4 x float] into a 32-bit integer, truncating the result when it is
 ///    inexact.
 ///
@@ -1409,7 +1409,7 @@
   return __builtin_ia32_cvttss2si((__v4sf)__a);
 }
 
-/// \brief Converts a float value contained in the lower 32 bits of a vector of
+/// Converts a float value contained in the lower 32 bits of a vector of
 ///    [4 x float] into a 32-bit integer, truncating the result when it is
 ///    inexact.
 ///
@@ -1429,7 +1429,7 @@
 }
 
 #ifdef __x86_64__
-/// \brief Converts a float value contained in the lower 32 bits of a vector of
+/// Converts a float value contained in the lower 32 bits of a vector of
 ///    [4 x float] into a 64-bit integer, truncating the result when it is
 ///    inexact.
 ///
@@ -1449,7 +1449,7 @@
 }
 #endif
 
-/// \brief Converts two low-order float values in a 128-bit vector of
+/// Converts two low-order float values in a 128-bit vector of
 ///    [4 x float] into a 64-bit vector of [2 x i32], truncating the result
 ///    when it is inexact.
 ///
@@ -1467,7 +1467,7 @@
   return (__m64)__builtin_ia32_cvttps2pi((__v4sf)__a);
 }
 
-/// \brief Converts two low-order float values in a 128-bit vector of [4 x
+/// Converts two low-order float values in a 128-bit vector of [4 x
 ///    float] into a 64-bit vector of [2 x i32], truncating the result when it
 ///    is inexact.
 ///
@@ -1484,7 +1484,7 @@
   return _mm_cvttps_pi32(__a);
 }
 
-/// \brief Converts a 32-bit signed integer value into a floating point value
+/// Converts a 32-bit signed integer value into a floating point value
 ///    and writes it to the lower 32 bits of the destination. The remaining
 ///    higher order elements of the destination vector are copied from the
 ///    corresponding elements in the first operand.
@@ -1507,7 +1507,7 @@
   return __a;
 }
 
-/// \brief Converts a 32-bit signed integer value into a floating point value
+/// Converts a 32-bit signed integer value into a floating point value
 ///    and writes it to the lower 32 bits of the destination. The remaining
 ///    higher order elements of the destination are copied from the
 ///    corresponding elements in the first operand.
@@ -1531,7 +1531,7 @@
 
 #ifdef __x86_64__
 
-/// \brief Converts a 64-bit signed integer value into a floating point value
+/// Converts a 64-bit signed integer value into a floating point value
 ///    and writes it to the lower 32 bits of the destination. The remaining
 ///    higher order elements of the destination are copied from the
 ///    corresponding elements in the first operand.
@@ -1556,7 +1556,7 @@
 
 #endif
 
-/// \brief Converts two elements of a 64-bit vector of [2 x i32] into two
+/// Converts two elements of a 64-bit vector of [2 x i32] into two
 ///    floating point values and writes them to the lower 64-bits of the
 ///    destination. The remaining higher order elements of the destination are
 ///    copied from the corresponding elements in the first operand.
@@ -1579,7 +1579,7 @@
   return __builtin_ia32_cvtpi2ps((__v4sf)__a, (__v2si)__b);
 }
 
-/// \brief Converts two elements of a 64-bit vector of [2 x i32] into two
+/// Converts two elements of a 64-bit vector of [2 x i32] into two
 ///    floating point values and writes them to the lower 64-bits of the
 ///    destination. The remaining higher order elements of the destination are
 ///    copied from the corresponding elements in the first operand.
@@ -1602,7 +1602,7 @@
   return _mm_cvtpi32_ps(__a, __b);
 }
 
-/// \brief Extracts a float value contained in the lower 32 bits of a vector of
+/// Extracts a float value contained in the lower 32 bits of a vector of
 ///    [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -1619,7 +1619,7 @@
   return __a[0];
 }
 
-/// \brief Loads two packed float values from the address \a __p into the
+/// Loads two packed float values from the address \a __p into the
 ///     high-order bits of a 128-bit vector of [4 x float]. The low-order bits
 ///     are copied from the low-order bits of the first operand.
 ///
@@ -1646,7 +1646,7 @@
   return __builtin_shufflevector(__a, __bb, 0, 1, 4, 5);
 }
 
-/// \brief Loads two packed float values from the address \a __p into the
+/// Loads two packed float values from the address \a __p into the
 ///    low-order bits of a 128-bit vector of [4 x float]. The high-order bits
 ///    are copied from the high-order bits of the first operand.
 ///
@@ -1673,7 +1673,7 @@
   return __builtin_shufflevector(__a, __bb, 4, 5, 2, 3);
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [4 x float]. The lower
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
 ///    32 bits of the vector are initialized with the single-precision
 ///    floating-point value loaded from a specified memory location. The upper
 ///    96 bits are set to zero.
@@ -1698,7 +1698,7 @@
   return (__m128){ __u, 0, 0, 0 };
 }
 
-/// \brief Loads a 32-bit float value and duplicates it to all four vector
+/// Loads a 32-bit float value and duplicates it to all four vector
 ///    elements of a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -1722,7 +1722,7 @@
 
 #define        _mm_load_ps1(p) _mm_load1_ps(p)
 
-/// \brief Loads a 128-bit floating-point vector of [4 x float] from an aligned
+/// Loads a 128-bit floating-point vector of [4 x float] from an aligned
 ///    memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1739,7 +1739,7 @@
   return *(__m128*)__p;
 }
 
-/// \brief Loads a 128-bit floating-point vector of [4 x float] from an
+/// Loads a 128-bit floating-point vector of [4 x float] from an
 ///    unaligned memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1759,7 +1759,7 @@
   return ((struct __loadu_ps*)__p)->__v;
 }
 
-/// \brief Loads four packed float values, in reverse order, from an aligned
+/// Loads four packed float values, in reverse order, from an aligned
 ///    memory location to 32-bit elements in a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -1779,7 +1779,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 3, 2, 1, 0);
 }
 
-/// \brief Create a 128-bit vector of [4 x float] with undefined values.
+/// Create a 128-bit vector of [4 x float] with undefined values.
 ///
 /// \headerfile <x86intrin.h>
 ///
@@ -1792,7 +1792,7 @@
   return (__m128)__builtin_ia32_undef128();
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [4 x float]. The lower
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
 ///    32 bits of the vector are initialized with the specified single-precision
 ///    floating-point value. The upper 96 bits are set to zero.
 ///
@@ -1812,7 +1812,7 @@
   return (__m128){ __w, 0, 0, 0 };
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [4 x float], with each
+/// Constructs a 128-bit floating-point vector of [4 x float], with each
 ///    of the four single-precision floating-point vector elements set to the
 ///    specified single-precision floating-point value.
 ///
@@ -1831,7 +1831,7 @@
 }
 
 /* Microsoft specific. */
-/// \brief Constructs a 128-bit floating-point vector of [4 x float], with each
+/// Constructs a 128-bit floating-point vector of [4 x float], with each
 ///    of the four single-precision floating-point vector elements set to the
 ///    specified single-precision floating-point value.
 ///
@@ -1849,7 +1849,7 @@
     return _mm_set1_ps(__w);
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [4 x float]
+/// Constructs a 128-bit floating-point vector of [4 x float]
 ///    initialized with the specified single-precision floating-point values.
 ///
 /// \headerfile <x86intrin.h>
@@ -1876,7 +1876,7 @@
   return (__m128){ __w, __x, __y, __z };
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [4 x float],
+/// Constructs a 128-bit floating-point vector of [4 x float],
 ///    initialized in reverse order with the specified 32-bit single-precision
 ///    float-point values.
 ///
@@ -1904,7 +1904,7 @@
   return (__m128){ __z, __y, __x, __w };
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [4 x float] initialized
+/// Constructs a 128-bit floating-point vector of [4 x float] initialized
 ///    to zero.
 ///
 /// \headerfile <x86intrin.h>
@@ -1919,7 +1919,7 @@
   return (__m128){ 0, 0, 0, 0 };
 }
 
-/// \brief Stores the upper 64 bits of a 128-bit vector of [4 x float] to a
+/// Stores the upper 64 bits of a 128-bit vector of [4 x float] to a
 ///    memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1936,7 +1936,7 @@
   __builtin_ia32_storehps((__v2si *)__p, (__v4sf)__a);
 }
 
-/// \brief Stores the lower 64 bits of a 128-bit vector of [4 x float] to a
+/// Stores the lower 64 bits of a 128-bit vector of [4 x float] to a
 ///     memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1953,7 +1953,7 @@
   __builtin_ia32_storelps((__v2si *)__p, (__v4sf)__a);
 }
 
-/// \brief Stores the lower 32 bits of a 128-bit vector of [4 x float] to a
+/// Stores the lower 32 bits of a 128-bit vector of [4 x float] to a
 ///     memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1973,7 +1973,7 @@
   ((struct __mm_store_ss_struct*)__p)->__u = __a[0];
 }
 
-/// \brief Stores a 128-bit vector of [4 x float] to an unaligned memory
+/// Stores a 128-bit vector of [4 x float] to an unaligned memory
 ///    location.
 ///
 /// \headerfile <x86intrin.h>
@@ -1994,7 +1994,7 @@
   ((struct __storeu_ps*)__p)->__v = __a;
 }
 
-/// \brief Stores a 128-bit vector of [4 x float] into an aligned memory
+/// Stores a 128-bit vector of [4 x float] into an aligned memory
 ///    location.
 ///
 /// \headerfile <x86intrin.h>
@@ -2012,7 +2012,7 @@
   *(__m128*)__p = __a;
 }
 
-/// \brief Stores the lower 32 bits of a 128-bit vector of [4 x float] into
+/// Stores the lower 32 bits of a 128-bit vector of [4 x float] into
 ///    four contiguous elements in an aligned memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -2032,7 +2032,7 @@
   _mm_store_ps(__p, __a);
 }
 
-/// \brief Stores the lower 32 bits of a 128-bit vector of [4 x float] into
+/// Stores the lower 32 bits of a 128-bit vector of [4 x float] into
 ///    four contiguous elements in an aligned memory location.
 ///
 /// \headerfile <x86intrin.h>
@@ -2051,7 +2051,7 @@
   return _mm_store1_ps(__p, __a);
 }
 
-/// \brief Stores float values from a 128-bit vector of [4 x float] to an
+/// Stores float values from a 128-bit vector of [4 x float] to an
 ///    aligned memory location in reverse order.
 ///
 /// \headerfile <x86intrin.h>
@@ -2082,7 +2082,7 @@
 /* FIXME: We have to #define this because "sel" must be a constant integer, and
    Sema doesn't do any form of constant propagation yet. */
 
-/// \brief Loads one cache line of data from the specified address to a location
+/// Loads one cache line of data from the specified address to a location
 ///    closer to the processor.
 ///
 /// \headerfile <x86intrin.h>
@@ -2110,7 +2110,7 @@
                                                  ((sel) >> 2) & 1, (sel) & 0x3))
 #endif
 
-/// \brief Stores a 64-bit integer in the specified aligned memory location. To
+/// Stores a 64-bit integer in the specified aligned memory location. To
 ///    minimize caching, the data is flagged as non-temporal (unlikely to be
 ///    used again soon).
 ///
@@ -2128,7 +2128,7 @@
   __builtin_ia32_movntq(__p, __a);
 }
 
-/// \brief Moves packed float values from a 128-bit vector of [4 x float] to a
+/// Moves packed float values from a 128-bit vector of [4 x float] to a
 ///    128-bit aligned memory location. To minimize caching, the data is flagged
 ///    as non-temporal (unlikely to be used again soon).
 ///
@@ -2151,7 +2151,7 @@
 extern "C" {
 #endif
 
-/// \brief Forces strong memory ordering (serialization) between store
+/// Forces strong memory ordering (serialization) between store
 ///    instructions preceding this instruction and store instructions following
 ///    this instruction, ensuring the system completes all previous stores
 ///    before executing subsequent stores.
@@ -2166,7 +2166,7 @@
 } // extern "C"
 #endif
 
-/// \brief Extracts 16-bit element from a 64-bit vector of [4 x i16] and
+/// Extracts 16-bit element from a 64-bit vector of [4 x i16] and
 ///    returns it, as specified by the immediate integer operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2189,7 +2189,7 @@
 #define _mm_extract_pi16(a, n) __extension__ ({ \
   (int)__builtin_ia32_vec_ext_v4hi((__m64)a, (int)n); })
 
-/// \brief Copies data from the 64-bit vector of [4 x i16] to the destination,
+/// Copies data from the 64-bit vector of [4 x i16] to the destination,
 ///    and inserts the lower 16-bits of an integer operand at the 16-bit offset
 ///    specified by the immediate operand \a n.
 ///
@@ -2220,7 +2220,7 @@
 #define _mm_insert_pi16(a, d, n) __extension__ ({ \
   (__m64)__builtin_ia32_vec_set_v4hi((__m64)a, (int)d, (int)n); })
 
-/// \brief Compares each of the corresponding packed 16-bit integer values of
+/// Compares each of the corresponding packed 16-bit integer values of
 ///    the 64-bit integer vectors, and writes the greater value to the
 ///    corresponding bits in the destination.
 ///
@@ -2239,7 +2239,7 @@
   return (__m64)__builtin_ia32_pmaxsw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief Compares each of the corresponding packed 8-bit unsigned integer
+/// Compares each of the corresponding packed 8-bit unsigned integer
 ///    values of the 64-bit integer vectors, and writes the greater value to the
 ///    corresponding bits in the destination.
 ///
@@ -2258,7 +2258,7 @@
   return (__m64)__builtin_ia32_pmaxub((__v8qi)__a, (__v8qi)__b);
 }
 
-/// \brief Compares each of the corresponding packed 16-bit integer values of
+/// Compares each of the corresponding packed 16-bit integer values of
 ///    the 64-bit integer vectors, and writes the lesser value to the
 ///    corresponding bits in the destination.
 ///
@@ -2277,7 +2277,7 @@
   return (__m64)__builtin_ia32_pminsw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief Compares each of the corresponding packed 8-bit unsigned integer
+/// Compares each of the corresponding packed 8-bit unsigned integer
 ///    values of the 64-bit integer vectors, and writes the lesser value to the
 ///    corresponding bits in the destination.
 ///
@@ -2296,7 +2296,7 @@
   return (__m64)__builtin_ia32_pminub((__v8qi)__a, (__v8qi)__b);
 }
 
-/// \brief Takes the most significant bit from each 8-bit element in a 64-bit
+/// Takes the most significant bit from each 8-bit element in a 64-bit
 ///    integer vector to create an 8-bit mask value. Zero-extends the value to
 ///    32-bit integer and writes it to the destination.
 ///
@@ -2314,7 +2314,7 @@
   return __builtin_ia32_pmovmskb((__v8qi)__a);
 }
 
-/// \brief Multiplies packed 16-bit unsigned integer values and writes the
+/// Multiplies packed 16-bit unsigned integer values and writes the
 ///    high-order 16 bits of each 32-bit product to the corresponding bits in
 ///    the destination.
 ///
@@ -2333,7 +2333,7 @@
   return (__m64)__builtin_ia32_pmulhuw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief Shuffles the 4 16-bit integers from a 64-bit integer vector to the
+/// Shuffles the 4 16-bit integers from a 64-bit integer vector to the
 ///    destination, as specified by the immediate value operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2367,7 +2367,7 @@
 #define _mm_shuffle_pi16(a, n) __extension__ ({ \
   (__m64)__builtin_ia32_pshufw((__v4hi)(__m64)(a), (n)); })
 
-/// \brief Conditionally copies the values from each 8-bit element in the first
+/// Conditionally copies the values from each 8-bit element in the first
 ///    64-bit integer vector operand to the specified memory location, as
 ///    specified by the most significant bit in the corresponding element in the
 ///    second 64-bit integer vector operand.
@@ -2396,7 +2396,7 @@
   __builtin_ia32_maskmovq((__v8qi)__d, (__v8qi)__n, __p);
 }
 
-/// \brief Computes the rounded averages of the packed unsigned 8-bit integer
+/// Computes the rounded averages of the packed unsigned 8-bit integer
 ///    values and writes the averages to the corresponding bits in the
 ///    destination.
 ///
@@ -2415,7 +2415,7 @@
   return (__m64)__builtin_ia32_pavgb((__v8qi)__a, (__v8qi)__b);
 }
 
-/// \brief Computes the rounded averages of the packed unsigned 16-bit integer
+/// Computes the rounded averages of the packed unsigned 16-bit integer
 ///    values and writes the averages to the corresponding bits in the
 ///    destination.
 ///
@@ -2434,7 +2434,7 @@
   return (__m64)__builtin_ia32_pavgw((__v4hi)__a, (__v4hi)__b);
 }
 
-/// \brief Subtracts the corresponding 8-bit unsigned integer values of the two
+/// Subtracts the corresponding 8-bit unsigned integer values of the two
 ///    64-bit vector operands and computes the absolute value for each of the
 ///    difference. Then sum of the 8 absolute differences is written to the
 ///    bits [15:0] of the destination; the remaining bits [63:16] are cleared.
@@ -2460,7 +2460,7 @@
 extern "C" {
 #endif
 
-/// \brief Returns the contents of the MXCSR register as a 32-bit unsigned
+/// Returns the contents of the MXCSR register as a 32-bit unsigned
 ///    integer value.
 ///
 ///    There are several groups of macros associated with this
@@ -2508,7 +2508,7 @@
 ///    register.
 unsigned int _mm_getcsr(void);
 
-/// \brief Sets the MXCSR register with the 32-bit unsigned integer value.
+/// Sets the MXCSR register with the 32-bit unsigned integer value.
 ///
 ///    There are several groups of macros associated with this intrinsic,
 ///    including:
@@ -2566,7 +2566,7 @@
 } // extern "C"
 #endif
 
-/// \brief Selects 4 float values from the 128-bit operands of [4 x float], as
+/// Selects 4 float values from the 128-bit operands of [4 x float], as
 ///    specified by the immediate value operand.
 ///
 /// \headerfile <x86intrin.h>
@@ -2609,7 +2609,7 @@
                                   4 + (((mask) >> 4) & 0x3), \
                                   4 + (((mask) >> 6) & 0x3)); })
 
-/// \brief Unpacks the high-order (index 2,3) values from two 128-bit vectors of
+/// Unpacks the high-order (index 2,3) values from two 128-bit vectors of
 ///    [4 x float] and interleaves them into a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2631,7 +2631,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 2, 6, 3, 7);
 }
 
-/// \brief Unpacks the low-order (index 0,1) values from two 128-bit vectors of
+/// Unpacks the low-order (index 0,1) values from two 128-bit vectors of
 ///    [4 x float] and interleaves them into a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2653,7 +2653,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 4, 1, 5);
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [4 x float]. The lower
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
 ///    32 bits are set to the lower 32 bits of the second parameter. The upper
 ///    96 bits are set to the upper 96 bits of the first parameter.
 ///
@@ -2675,7 +2675,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 4, 1, 2, 3);
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [4 x float]. The lower
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
 ///    64 bits are set to the upper 64 bits of the second parameter. The upper
 ///    64 bits are set to the upper 64 bits of the first parameter.
 ///
@@ -2696,7 +2696,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 6, 7, 2, 3);
 }
 
-/// \brief Constructs a 128-bit floating-point vector of [4 x float]. The lower
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
 ///    64 bits are set to the lower 64 bits of the first parameter. The upper
 ///    64 bits are set to the lower 64 bits of the second parameter.
 ///
@@ -2717,7 +2717,7 @@
   return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 1, 4, 5);
 }
 
-/// \brief Converts a 64-bit vector of [4 x i16] into a 128-bit vector of [4 x
+/// Converts a 64-bit vector of [4 x i16] into a 128-bit vector of [4 x
 ///    float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2747,7 +2747,7 @@
   return __r;
 }
 
-/// \brief Converts a 64-bit vector of 16-bit unsigned integer values into a
+/// Converts a 64-bit vector of 16-bit unsigned integer values into a
 ///    128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2776,7 +2776,7 @@
   return __r;
 }
 
-/// \brief Converts the lower four 8-bit values from a 64-bit vector of [8 x i8]
+/// Converts the lower four 8-bit values from a 64-bit vector of [8 x i8]
 ///    into a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2800,7 +2800,7 @@
   return _mm_cvtpi16_ps(__b);
 }
 
-/// \brief Converts the lower four unsigned 8-bit integer values from a 64-bit
+/// Converts the lower four unsigned 8-bit integer values from a 64-bit
 ///    vector of [8 x u8] into a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2824,7 +2824,7 @@
   return _mm_cvtpi16_ps(__b);
 }
 
-/// \brief Converts the two 32-bit signed integer values from each 64-bit vector
+/// Converts the two 32-bit signed integer values from each 64-bit vector
 ///    operand of [2 x i32] into a 128-bit vector of [4 x float].
 ///
 /// \headerfile <x86intrin.h>
@@ -2852,7 +2852,7 @@
   return _mm_cvtpi32_ps(__c, __a);
 }
 
-/// \brief Converts each single-precision floating-point element of a 128-bit
+/// Converts each single-precision floating-point element of a 128-bit
 ///    floating-point vector of [4 x float] into a 16-bit signed integer, and
 ///    packs the results into a 64-bit integer vector of [4 x i16].
 ///
@@ -2881,7 +2881,7 @@
   return _mm_packs_pi32(__b, __c);
 }
 
-/// \brief Converts each single-precision floating-point element of a 128-bit
+/// Converts each single-precision floating-point element of a 128-bit
 ///    floating-point vector of [4 x float] into an 8-bit signed integer, and
 ///    packs the results into the lower 32 bits of a 64-bit integer vector of
 ///    [8 x i8]. The upper 32 bits of the vector are set to 0.
@@ -2910,7 +2910,7 @@
   return _mm_packs_pi16(__b, __c);
 }
 
-/// \brief Extracts the sign bits from each single-precision floating-point
+/// Extracts the sign bits from each single-precision floating-point
 ///    element of a 128-bit floating-point vector of [4 x float] and returns the
 ///    sign bits in bits [0:3] of the result. Bits [31:4] of the result are set
 ///    to zero.
Index: cfe/trunk/lib/Index/IndexDecl.cpp
===================================================================
--- cfe/trunk/lib/Index/IndexDecl.cpp
+++ cfe/trunk/lib/Index/IndexDecl.cpp
@@ -43,7 +43,7 @@
     return true;
   }
 
-  /// \brief Returns true if the given method has been defined explicitly by the
+  /// Returns true if the given method has been defined explicitly by the
   /// user.
   static bool hasUserDefined(const ObjCMethodDecl *D,
                              const ObjCImplDecl *Container) {
Index: cfe/trunk/lib/Index/SimpleFormatContext.h
===================================================================
--- cfe/trunk/lib/Index/SimpleFormatContext.h
+++ cfe/trunk/lib/Index/SimpleFormatContext.h
@@ -9,7 +9,7 @@
 //
 /// \file
 ///
-/// \brief Defines a utility class for use of clang-format in libclang
+/// Defines a utility class for use of clang-format in libclang
 //
 //===----------------------------------------------------------------------===//
 
@@ -29,7 +29,7 @@
 namespace clang {
 namespace index {
 
-/// \brief A small class to be used by libclang clients to format
+/// A small class to be used by libclang clients to format
 /// a declaration string in memory. This object is instantiated once
 /// and used each time a formatting is needed.
 class SimpleFormatContext {
Index: cfe/trunk/lib/Lex/HeaderSearch.cpp
===================================================================
--- cfe/trunk/lib/Lex/HeaderSearch.cpp
+++ cfe/trunk/lib/Lex/HeaderSearch.cpp
@@ -124,7 +124,7 @@
   return nullptr;
 }
 
-/// \brief Get filenames for all registered header maps.
+/// Get filenames for all registered header maps.
 void HeaderSearch::getHeaderMapFileNames(
     SmallVectorImpl<std::string> &Names) const {
   for (auto &HM : HeaderMaps)
@@ -404,7 +404,7 @@
   return Result;
 }
 
-/// \brief Given a framework directory, find the top-most framework directory.
+/// Given a framework directory, find the top-most framework directory.
 ///
 /// \param FileMgr The file manager to use for directory lookups.
 /// \param DirName The name of the framework directory.
@@ -600,7 +600,7 @@
 // Header File Location.
 //===----------------------------------------------------------------------===//
 
-/// \brief Return true with a diagnostic if the file that MSVC would have found
+/// Return true with a diagnostic if the file that MSVC would have found
 /// fails to match the one that Clang would have found with MSVC header search
 /// disabled.
 static bool checkMSVCHeaderSearch(DiagnosticsEngine &Diags,
@@ -996,7 +996,7 @@
 // File Info Management.
 //===----------------------------------------------------------------------===//
 
-/// \brief Merge the header file info provided by \p OtherHFI into the current
+/// Merge the header file info provided by \p OtherHFI into the current
 /// header file info (\p HFI)
 static void mergeHeaderFileInfo(HeaderFileInfo &HFI, 
                                 const HeaderFileInfo &OtherHFI) {
Index: cfe/trunk/lib/Lex/Lexer.cpp
===================================================================
--- cfe/trunk/lib/Lex/Lexer.cpp
+++ cfe/trunk/lib/Lex/Lexer.cpp
@@ -257,7 +257,7 @@
 // Token Spelling
 //===----------------------------------------------------------------------===//
 
-/// \brief Slow case of getSpelling. Extract the characters comprising the
+/// Slow case of getSpelling. Extract the characters comprising the
 /// spelling of this token from the provided input buffer.
 static size_t getSpellingSlow(const Token &Tok, const char *BufPtr,
                               const LangOptions &LangOpts, char *Spelling) {
@@ -442,7 +442,7 @@
   return TheTok.getLength();
 }
 
-/// \brief Relex the token at the specified location.
+/// Relex the token at the specified location.
 /// \returns true if there was a failure, false on success.
 bool Lexer::getRawToken(SourceLocation Loc, Token &Result,
                         const SourceManager &SM,
@@ -753,7 +753,7 @@
   return PhysOffset;
 }
 
-/// \brief Computes the source location just past the end of the
+/// Computes the source location just past the end of the
 /// token at this source location.
 ///
 /// This routine can be used to produce a source location that
@@ -788,7 +788,7 @@
   return Loc.getLocWithOffset(Len);
 }
 
-/// \brief Returns true if the given MacroID location points at the first
+/// Returns true if the given MacroID location points at the first
 /// token of the macro expansion.
 bool Lexer::isAtStartOfMacroExpansion(SourceLocation loc,
                                       const SourceManager &SM,
@@ -810,7 +810,7 @@
   return isAtStartOfMacroExpansion(expansionLoc, SM, LangOpts, MacroBegin);
 }
 
-/// \brief Returns true if the given MacroID location points at the last
+/// Returns true if the given MacroID location points at the last
 /// token of the macro expansion.
 bool Lexer::isAtEndOfMacroExpansion(SourceLocation loc,
                                     const SourceManager &SM,
@@ -1256,7 +1256,7 @@
   return Tok;
 }
 
-/// \brief Checks that the given token is the first token that occurs after the
+/// Checks that the given token is the first token that occurs after the
 /// given location (this excludes comments and whitespace). Returns the location
 /// immediately after the specified token. If the token is not found or the
 /// location is inside a macro, the returned source location will be invalid.
@@ -1409,7 +1409,7 @@
 // Helper methods for lexing.
 //===----------------------------------------------------------------------===//
 
-/// \brief Routine that indiscriminately sets the offset into the source file.
+/// Routine that indiscriminately sets the offset into the source file.
 void Lexer::SetByteOffset(unsigned Offset, bool StartOfLine) {
   BufferPtr = BufferStart + Offset;
   if (BufferPtr > BufferEnd)
@@ -2755,7 +2755,7 @@
   return Tok.is(tok::l_paren);
 }
 
-/// \brief Find the end of a version control conflict marker.
+/// Find the end of a version control conflict marker.
 static const char *FindConflictEnd(const char *CurPtr, const char *BufferEnd,
                                    ConflictMarkerKind CMK) {
   const char *Terminator = CMK == CMK_Perforce ? "<<<<\n" : ">>>>>>>";
Index: cfe/trunk/lib/Lex/LiteralSupport.cpp
===================================================================
--- cfe/trunk/lib/Lex/LiteralSupport.cpp
+++ cfe/trunk/lib/Lex/LiteralSupport.cpp
@@ -70,7 +70,7 @@
   return CharSourceRange::getCharRange(Begin, End);
 }
 
-/// \brief Produce a diagnostic highlighting some portion of a literal.
+/// Produce a diagnostic highlighting some portion of a literal.
 ///
 /// Emits the diagnostic \p DiagID, highlighting the range of characters from
 /// \p TokRangeBegin (inclusive) to \p TokRangeEnd (exclusive), which must be
@@ -1591,7 +1591,7 @@
   return Err;
 }
 
-/// \brief This function copies from Fragment, which is a sequence of bytes
+/// This function copies from Fragment, which is a sequence of bytes
 /// within Tok's contents (which begin at TokBegin) into ResultPtr.
 /// Performs widening for multi-byte characters.
 bool StringLiteralParser::CopyStringFragment(const Token &Tok,
Index: cfe/trunk/lib/Lex/MacroInfo.cpp
===================================================================
--- cfe/trunk/lib/Lex/MacroInfo.cpp
+++ cfe/trunk/lib/Lex/MacroInfo.cpp
@@ -65,7 +65,7 @@
   return DefinitionLength;
 }
 
-/// \brief Return true if the specified macro definition is equal to
+/// Return true if the specified macro definition is equal to
 /// this macro in spelling, arguments, and whitespace.
 ///
 /// \param Syntactically if true, the macro definitions can be identical even
Index: cfe/trunk/lib/Lex/ModuleMap.cpp
===================================================================
--- cfe/trunk/lib/Lex/ModuleMap.cpp
+++ cfe/trunk/lib/Lex/ModuleMap.cpp
@@ -151,7 +151,7 @@
   return Context;
 }
 
-/// \brief Append to \p Paths the set of paths needed to get to the 
+/// Append to \p Paths the set of paths needed to get to the 
 /// subframework in which the given module lives.
 static void appendSubframeworkPaths(Module *Mod,
                                     SmallVectorImpl<char> &Path) {
@@ -309,7 +309,7 @@
   this->Target = &Target;
 }
 
-/// \brief "Sanitize" a filename so that it can be used as an identifier.
+/// "Sanitize" a filename so that it can be used as an identifier.
 static StringRef sanitizeFilenameAsIdentifier(StringRef Name,
                                               SmallVectorImpl<char> &Buffer) {
   if (Name.empty())
@@ -346,7 +346,7 @@
   return Name;
 }
 
-/// \brief Determine whether the given file name is the name of a builtin
+/// Determine whether the given file name is the name of a builtin
 /// header, supplied by Clang to replace, override, or augment existing system
 /// headers.
 bool ModuleMap::isBuiltinHeader(StringRef FileName) {
@@ -820,7 +820,7 @@
   return Result;
 }
 
-/// \brief For a framework module, infer the framework against which we
+/// For a framework module, infer the framework against which we
 /// should link.
 static void inferFrameworkLink(Module *Mod, const DirectoryEntry *FrameworkDir,
                                FileManager &FileMgr) {
@@ -1244,7 +1244,7 @@
 
 namespace clang {
 
-  /// \brief A token in a module map file.
+  /// A token in a module map file.
   struct MMToken {
     enum TokenKind {
       Comma,
@@ -1314,37 +1314,37 @@
     Lexer &L;
     SourceManager &SourceMgr;
 
-    /// \brief Default target information, used only for string literal
+    /// Default target information, used only for string literal
     /// parsing.
     const TargetInfo *Target;
 
     DiagnosticsEngine &Diags;
     ModuleMap &Map;
 
-    /// \brief The current module map file.
+    /// The current module map file.
     const FileEntry *ModuleMapFile;
     
-    /// \brief The directory that file names in this module map file should
+    /// The directory that file names in this module map file should
     /// be resolved relative to.
     const DirectoryEntry *Directory;
 
-    /// \brief Whether this module map is in a system header directory.
+    /// Whether this module map is in a system header directory.
     bool IsSystem;
     
-    /// \brief Whether an error occurred.
+    /// Whether an error occurred.
     bool HadError = false;
         
-    /// \brief Stores string data for the various string literals referenced
+    /// Stores string data for the various string literals referenced
     /// during parsing.
     llvm::BumpPtrAllocator StringData;
     
-    /// \brief The current token.
+    /// The current token.
     MMToken Tok;
     
-    /// \brief The active module.
+    /// The active module.
     Module *ActiveModule = nullptr;
 
-    /// \brief Whether a module uses the 'requires excluded' hack to mark its
+    /// Whether a module uses the 'requires excluded' hack to mark its
     /// contents as 'textual'.
     ///
     /// On older Darwin SDK versions, 'requires excluded' is used to mark the
@@ -1354,10 +1354,10 @@
     /// 'textual' to match the original intent.
     llvm::SmallPtrSet<Module *, 2> UsesRequiresExcludedHack;
 
-    /// \brief Consume the current token and return its location.
+    /// Consume the current token and return its location.
     SourceLocation consumeToken();
 
-    /// \brief Skip tokens until we reach the a token with the given kind
+    /// Skip tokens until we reach the a token with the given kind
     /// (or the end of the file).
     void skipUntil(MMToken::TokenKind K);
 
@@ -1593,7 +1593,7 @@
   } while (true);
 }
 
-/// \brief Parse a module-id.
+/// Parse a module-id.
 ///
 ///   module-id:
 ///     identifier
@@ -1622,21 +1622,21 @@
 
 namespace {
 
-  /// \brief Enumerates the known attributes.
+  /// Enumerates the known attributes.
   enum AttributeKind {
-    /// \brief An unknown attribute.
+    /// An unknown attribute.
     AT_unknown,
 
-    /// \brief The 'system' attribute.
+    /// The 'system' attribute.
     AT_system,
 
-    /// \brief The 'extern_c' attribute.
+    /// The 'extern_c' attribute.
     AT_extern_c,
 
-    /// \brief The 'exhaustive' attribute.
+    /// The 'exhaustive' attribute.
     AT_exhaustive,
 
-    /// \brief The 'no_undeclared_includes' attribute.
+    /// The 'no_undeclared_includes' attribute.
     AT_no_undeclared_includes
   };
 
@@ -1693,7 +1693,7 @@
   }
 }
 
-/// \brief Parse a module declaration.
+/// Parse a module declaration.
 ///
 ///   module-declaration:
 ///     'extern' 'module' module-id string-literal
@@ -2013,7 +2013,7 @@
   ActiveModule = PreviousActiveModule;
 }
 
-/// \brief Parse an extern module declaration.
+/// Parse an extern module declaration.
 ///
 ///   extern module-declaration:
 ///     'extern' 'module' module-id string-literal
@@ -2091,7 +2091,7 @@
   return true;
 }
 
-/// \brief Parse a requires declaration.
+/// Parse a requires declaration.
 ///
 ///   requires-declaration:
 ///     'requires' feature-list
@@ -2147,7 +2147,7 @@
   } while (true);
 }
 
-/// \brief Parse a header declaration.
+/// Parse a header declaration.
 ///
 ///   header-declaration:
 ///     'textual'[opt] 'header' string-literal
@@ -2275,7 +2275,7 @@
   return A->NameAsWritten.compare(B->NameAsWritten);
 }
 
-/// \brief Parse an umbrella directory declaration.
+/// Parse an umbrella directory declaration.
 ///
 ///   umbrella-dir-declaration:
 ///     umbrella string-literal
@@ -2353,7 +2353,7 @@
   Map.setUmbrellaDir(ActiveModule, Dir, DirName);
 }
 
-/// \brief Parse a module export declaration.
+/// Parse a module export declaration.
 ///
 ///   export-declaration:
 ///     'export' wildcard-module-id
@@ -2401,7 +2401,7 @@
   ActiveModule->UnresolvedExports.push_back(Unresolved);
 }
 
-/// \brief Parse a module export_as declaration.
+/// Parse a module export_as declaration.
 ///
 ///   export-as-declaration:
 ///     'export_as' identifier
@@ -2438,7 +2438,7 @@
   consumeToken();
 }
 
-/// \brief Parse a module use declaration.
+/// Parse a module use declaration.
 ///
 ///   use-declaration:
 ///     'use' wildcard-module-id
@@ -2455,7 +2455,7 @@
     ActiveModule->UnresolvedDirectUses.push_back(ParsedModuleId);
 }
 
-/// \brief Parse a link declaration.
+/// Parse a link declaration.
 ///
 ///   module-declaration:
 ///     'link' 'framework'[opt] string-literal
@@ -2484,7 +2484,7 @@
                                                             IsFramework));
 }
 
-/// \brief Parse a configuration macro declaration.
+/// Parse a configuration macro declaration.
 ///
 ///   module-declaration:
 ///     'config_macros' attributes[opt] config-macro-list?
@@ -2541,7 +2541,7 @@
   } while (true);
 }
 
-/// \brief Format a module-id into a string.
+/// Format a module-id into a string.
 static std::string formatModuleId(const ModuleId &Id) {
   std::string result;
   {
@@ -2557,7 +2557,7 @@
   return result;
 }
 
-/// \brief Parse a conflict declaration.
+/// Parse a conflict declaration.
 ///
 ///   module-declaration:
 ///     'conflict' module-id ',' string-literal
@@ -2591,7 +2591,7 @@
   ActiveModule->UnresolvedConflicts.push_back(Conflict);
 }
 
-/// \brief Parse an inferred module declaration (wildcard modules).
+/// Parse an inferred module declaration (wildcard modules).
 ///
 ///   module-declaration:
 ///     'explicit'[opt] 'framework'[opt] 'module' * attributes[opt]
@@ -2744,7 +2744,7 @@
   }
 }
 
-/// \brief Parse optional attributes.
+/// Parse optional attributes.
 ///
 ///   attributes:
 ///     attribute attributes
@@ -2819,7 +2819,7 @@
   return HadError;
 }
 
-/// \brief Parse a module map file.
+/// Parse a module map file.
 ///
 ///   module-map-file:
 ///     module-declaration*
Index: cfe/trunk/lib/Lex/PPDirectives.cpp
===================================================================
--- cfe/trunk/lib/Lex/PPDirectives.cpp
+++ cfe/trunk/lib/Lex/PPDirectives.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Implements # directive processing for the Preprocessor.
+/// Implements # directive processing for the Preprocessor.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -78,7 +78,7 @@
   return new (BP) VisibilityMacroDirective(Loc, isPublic);
 }
 
-/// \brief Read and discard all tokens remaining on the current line until
+/// Read and discard all tokens remaining on the current line until
 /// the tok::eod token is found.
 void Preprocessor::DiscardUntilEndOfDirective() {
   Token Tmp;
@@ -88,14 +88,14 @@
   } while (Tmp.isNot(tok::eod));
 }
 
-/// \brief Enumerates possible cases of #define/#undef a reserved identifier.
+/// Enumerates possible cases of #define/#undef a reserved identifier.
 enum MacroDiag {
   MD_NoWarn,        //> Not a reserved identifier
   MD_KeywordDef,    //> Macro hides keyword, enabled by default
   MD_ReservedMacro  //> #define of #undef reserved id, disabled by default
 };
 
-/// \brief Checks if the specified identifier is reserved in the specified
+/// Checks if the specified identifier is reserved in the specified
 /// language.
 /// This function does not check if the identifier is a keyword.
 static bool isReservedId(StringRef Text, const LangOptions &Lang) {
@@ -296,7 +296,7 @@
   return false;
 }
 
-/// \brief Lex and validate a macro name, which occurs after a
+/// Lex and validate a macro name, which occurs after a
 /// \#define or \#undef.
 ///
 /// This sets the token kind to eod and discards the rest of the macro line if
@@ -328,7 +328,7 @@
   }
 }
 
-/// \brief Ensure that the next token is a tok::eod token.
+/// Ensure that the next token is a tok::eod token.
 ///
 /// If not, emit a diagnostic and consume up until the eod.  If EnableMacros is
 /// true, then we consider macros that expand to zero tokens as being ok.
@@ -1128,7 +1128,7 @@
   return false;
 }
 
-/// \brief Handle a \#line directive: C99 6.10.4.
+/// Handle a \#line directive: C99 6.10.4.
 ///
 /// The two acceptable forms are:
 /// \verbatim
@@ -1414,7 +1414,7 @@
   }
 }
 
-/// \brief Handle a #public directive.
+/// Handle a #public directive.
 void Preprocessor::HandleMacroPublicDirective(Token &Tok) {
   Token MacroNameTok;
   ReadMacroName(MacroNameTok, MU_Undef);
@@ -1441,7 +1441,7 @@
                                 MacroNameTok.getLocation(), /*IsPublic=*/true));
 }
 
-/// \brief Handle a #private directive.
+/// Handle a #private directive.
 void Preprocessor::HandleMacroPrivateDirective() {
   Token MacroNameTok;
   ReadMacroName(MacroNameTok, MU_Undef);
@@ -1517,7 +1517,7 @@
   return isAngled;
 }
 
-// \brief Handle cases where the \#include name is expanded from a macro
+// Handle cases where the \#include name is expanded from a macro
 // as multiple tokens, which need to be glued together.
 //
 // This occurs for code like:
@@ -1578,7 +1578,7 @@
   return true;
 }
 
-/// \brief Push a token onto the token stream containing an annotation.
+/// Push a token onto the token stream containing an annotation.
 void Preprocessor::EnterAnnotationToken(SourceRange Range,
                                         tok::TokenKind Kind,
                                         void *AnnotationVal) {
@@ -1593,7 +1593,7 @@
   EnterTokenStream(std::move(Tok), 1, true);
 }
 
-/// \brief Produce a diagnostic informing the user that a #include or similar
+/// Produce a diagnostic informing the user that a #include or similar
 /// was implicitly treated as a module import.
 static void diagnoseAutoModuleImport(
     Preprocessor &PP, SourceLocation HashLoc, Token &IncludeTok,
Index: cfe/trunk/lib/Lex/PPLexerChange.cpp
===================================================================
--- cfe/trunk/lib/Lex/PPLexerChange.cpp
+++ cfe/trunk/lib/Lex/PPLexerChange.cpp
@@ -226,7 +226,7 @@
     CurLexerKind = CLK_TokenLexer;
 }
 
-/// \brief Compute the relative path that names the given file relative to
+/// Compute the relative path that names the given file relative to
 /// the given directory.
 static void computeRelativePath(FileManager &FM, const DirectoryEntry *Dir,
                                 const FileEntry *File,
@@ -264,7 +264,7 @@
   // but it might if they're empty?
 }
 
-/// \brief Determine the location to use as the end of the buffer for a lexer.
+/// Determine the location to use as the end of the buffer for a lexer.
 ///
 /// If the file ends with a newline, form the EOF token on the newline itself,
 /// rather than "on the line following it", which doesn't exist.  This makes
Index: cfe/trunk/lib/Lex/PPMacroExpansion.cpp
===================================================================
--- cfe/trunk/lib/Lex/PPMacroExpansion.cpp
+++ cfe/trunk/lib/Lex/PPMacroExpansion.cpp
@@ -1015,7 +1015,7 @@
   return MacroArgs::create(MI, ArgTokens, isVarargsElided, *this);
 }
 
-/// \brief Keeps macro expanded tokens for TokenLexers.
+/// Keeps macro expanded tokens for TokenLexers.
 //
 /// Works like a stack; a TokenLexer adds the macro expanded tokens that is
 /// going to lex in the cache and when it finishes the tokens are removed
@@ -1485,7 +1485,7 @@
   return EvaluateHasIncludeCommon(Tok, II, PP, Lookup, LookupFromFile);
 }
 
-/// \brief Process single-argument builtin feature-like macros that return
+/// Process single-argument builtin feature-like macros that return
 /// integer values.
 static void EvaluateFeatureLikeBuiltinMacro(llvm::raw_svector_ostream& OS,
                                             Token &Tok, IdentifierInfo *II,
@@ -1588,7 +1588,7 @@
   }
 }
 
-/// \brief Helper function to return the IdentifierInfo structure of a Token
+/// Helper function to return the IdentifierInfo structure of a Token
 /// or generate a diagnostic if none available.
 static IdentifierInfo *ExpectFeatureIdentifierInfo(Token &Tok,
                                                    Preprocessor &PP,
Index: cfe/trunk/lib/Lex/Pragma.cpp
===================================================================
--- cfe/trunk/lib/Lex/Pragma.cpp
+++ cfe/trunk/lib/Lex/Pragma.cpp
@@ -148,7 +148,7 @@
 
 namespace {
 
-/// \brief Helper class for \see Preprocessor::Handle_Pragma.
+/// Helper class for \see Preprocessor::Handle_Pragma.
 class LexingFor_PragmaRAII {
   Preprocessor &PP;
   bool InMacroArgPreExpansion;
@@ -588,7 +588,7 @@
   return LookUpIdentifierInfo(MacroTok);
 }
 
-/// \brief Handle \#pragma push_macro.
+/// Handle \#pragma push_macro.
 ///
 /// The syntax is:
 /// \code
@@ -611,7 +611,7 @@
   PragmaPushMacroInfo[IdentInfo].push_back(MI);
 }
 
-/// \brief Handle \#pragma pop_macro.
+/// Handle \#pragma pop_macro.
 ///
 /// The syntax is:
 /// \code
@@ -1730,7 +1730,7 @@
   }
 };
 
-/// \brief Handle "\#pragma region [...]"
+/// Handle "\#pragma region [...]"
 ///
 /// The syntax is
 /// \code
Index: cfe/trunk/lib/Lex/PreprocessingRecord.cpp
===================================================================
--- cfe/trunk/lib/Lex/PreprocessingRecord.cpp
+++ cfe/trunk/lib/Lex/PreprocessingRecord.cpp
@@ -54,7 +54,7 @@
 
 PreprocessingRecord::PreprocessingRecord(SourceManager &SM) : SourceMgr(SM) {}
 
-/// \brief Returns a pair of [Begin, End) iterators of preprocessed entities
+/// Returns a pair of [Begin, End) iterators of preprocessed entities
 /// that source range \p Range encompasses.
 llvm::iterator_range<PreprocessingRecord::iterator>
 PreprocessingRecord::getPreprocessedEntitiesInRange(SourceRange Range) {
@@ -88,7 +88,7 @@
   return SM.isInFileID(SM.getFileLoc(Loc), FID);
 }
 
-/// \brief Returns true if the preprocessed entity that \arg PPEI iterator
+/// Returns true if the preprocessed entity that \arg PPEI iterator
 /// points to is coming from the file \arg FID.
 ///
 /// Can be used to avoid implicit deserializations of preallocated
@@ -132,7 +132,7 @@
                                         FID, SourceMgr);
 }
 
-/// \brief Returns a pair of [Begin, End) iterators of preprocessed entities
+/// Returns a pair of [Begin, End) iterators of preprocessed entities
 /// that source range \arg R encompasses.
 std::pair<int, int>
 PreprocessingRecord::getPreprocessedEntitiesInRangeSlow(SourceRange Range) {
@@ -351,7 +351,7 @@
   MacroDefinitions[Macro] = Def;
 }
 
-/// \brief Retrieve the preprocessed entity at the given ID.
+/// Retrieve the preprocessed entity at the given ID.
 PreprocessedEntity *PreprocessingRecord::getPreprocessedEntity(PPEntityID PPID){
   if (PPID.ID < 0) {
     unsigned Index = -PPID.ID - 1;
@@ -368,7 +368,7 @@
   return PreprocessedEntities[Index];
 }
 
-/// \brief Retrieve the loaded preprocessed entity at the given index.
+/// Retrieve the loaded preprocessed entity at the given index.
 PreprocessedEntity *
 PreprocessingRecord::getLoadedPreprocessedEntity(unsigned Index) {
   assert(Index < LoadedPreprocessedEntities.size() && 
Index: cfe/trunk/lib/Lex/Preprocessor.cpp
===================================================================
--- cfe/trunk/lib/Lex/Preprocessor.cpp
+++ cfe/trunk/lib/Lex/Preprocessor.cpp
@@ -333,7 +333,7 @@
   return CurSubmoduleState->Macros.end();
 }
 
-/// \brief Compares macro tokens with a specified token value sequence.
+/// Compares macro tokens with a specified token value sequence.
 static bool MacroDefinitionEquals(const MacroInfo *MI,
                                   ArrayRef<TokenValue> Tokens) {
   return Tokens.size() == MI->getNumTokens() &&
@@ -645,7 +645,7 @@
     Diag(Identifier,it->second) << Identifier.getIdentifierInfo();
 }
 
-/// \brief Returns a diagnostic message kind for reporting a future keyword as
+/// Returns a diagnostic message kind for reporting a future keyword as
 /// appropriate for the identifier and specified language.
 static diag::kind getFutureCompatDiagKind(const IdentifierInfo &II,
                                           const LangOptions &LangOpts) {
@@ -805,7 +805,7 @@
   LastTokenWasAt = Result.is(tok::at);
 }
 
-/// \brief Lex a token following the 'import' contextual keyword.
+/// Lex a token following the 'import' contextual keyword.
 ///
 void Preprocessor::LexAfterModuleImport(Token &Result) {
   // Figure out what kind of lexer we actually have.
Index: cfe/trunk/lib/Lex/PreprocessorLexer.cpp
===================================================================
--- cfe/trunk/lib/Lex/PreprocessorLexer.cpp
+++ cfe/trunk/lib/Lex/PreprocessorLexer.cpp
@@ -28,7 +28,7 @@
     InitialNumSLocEntries = pp->getSourceManager().local_sloc_entry_size();
 }
 
-/// \brief After the preprocessor has parsed a \#include, lex and
+/// After the preprocessor has parsed a \#include, lex and
 /// (potentially) macro expand the filename.
 void PreprocessorLexer::LexIncludeFilename(Token &FilenameTok) {
   assert(ParsingPreprocessorDirective &&
Index: cfe/trunk/lib/Lex/TokenLexer.cpp
===================================================================
--- cfe/trunk/lib/Lex/TokenLexer.cpp
+++ cfe/trunk/lib/Lex/TokenLexer.cpp
@@ -574,7 +574,7 @@
   }
 }
 
-/// \brief Checks if two tokens form wide string literal.
+/// Checks if two tokens form wide string literal.
 static bool isWideStringLiteralFromMacro(const Token &FirstTok,
                                          const Token &SecondTok) {
   return FirstTok.is(tok::identifier) &&
@@ -918,7 +918,7 @@
   PP.HandleMicrosoftCommentPaste(Tok);
 }
 
-/// \brief If \arg loc is a file ID and points inside the current macro
+/// If \arg loc is a file ID and points inside the current macro
 /// definition, returns the appropriate source location pointing at the
 /// macro expansion source location entry, otherwise it returns an invalid
 /// SourceLocation.
@@ -937,7 +937,7 @@
   return MacroExpansionStart.getLocWithOffset(relativeOffset);
 }
 
-/// \brief Finds the tokens that are consecutive (from the same FileID)
+/// Finds the tokens that are consecutive (from the same FileID)
 /// creates a single SLocEntry, and assigns SourceLocations to each token that
 /// point to that SLocEntry. e.g for
 ///   assert(foo == bar);
@@ -1007,7 +1007,7 @@
   }
 }
 
-/// \brief Creates SLocEntries and updates the locations of macro argument
+/// Creates SLocEntries and updates the locations of macro argument
 /// tokens to their new expanded locations.
 ///
 /// \param ArgIdSpellLoc the location of the macro argument id inside the macro
Index: cfe/trunk/lib/Parse/ParseCXXInlineMethods.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseCXXInlineMethods.cpp
+++ cfe/trunk/lib/Parse/ParseCXXInlineMethods.cpp
@@ -733,7 +733,7 @@
   }
 }
 
-/// \brief Consume tokens and store them in the passed token container until
+/// Consume tokens and store them in the passed token container until
 /// we've passed the try keyword and constructor initializers and have consumed
 /// the opening brace of the function body. The opening brace will be consumed
 /// if and only if there was no error.
@@ -937,7 +937,7 @@
   }
 }
 
-/// \brief Consume and store tokens from the '?' to the ':' in a conditional
+/// Consume and store tokens from the '?' to the ':' in a conditional
 /// expression.
 bool Parser::ConsumeAndStoreConditional(CachedTokens &Toks) {
   // Consume '?'.
@@ -962,7 +962,7 @@
   return true;
 }
 
-/// \brief A tentative parsing action that can also revert token annotations.
+/// A tentative parsing action that can also revert token annotations.
 class Parser::UnannotatedTentativeParsingAction : public TentativeParsingAction {
 public:
   explicit UnannotatedTentativeParsingAction(Parser &Self,
Index: cfe/trunk/lib/Parse/ParseDecl.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseDecl.cpp
+++ cfe/trunk/lib/Parse/ParseDecl.cpp
@@ -70,7 +70,7 @@
   return Actions.ActOnTypeName(getCurScope(), DeclaratorInfo);
 }
 
-/// \brief Normalizes an attribute name by dropping prefixed and suffixed __.
+/// Normalizes an attribute name by dropping prefixed and suffixed __.
 static StringRef normalizeAttrName(StringRef Name) {
   if (Name.size() >= 4 && Name.startswith("__") && Name.endswith("__"))
     return Name.drop_front(2).drop_back(2);
@@ -206,7 +206,7 @@
   }
 }
 
-/// \brief Determine whether the given attribute has an identifier argument.
+/// Determine whether the given attribute has an identifier argument.
 static bool attributeHasIdentifierArg(const IdentifierInfo &II) {
 #define CLANG_ATTR_IDENTIFIER_ARG_LIST
   return llvm::StringSwitch<bool>(normalizeAttrName(II.getName()))
@@ -215,7 +215,7 @@
 #undef CLANG_ATTR_IDENTIFIER_ARG_LIST
 }
 
-/// \brief Determine whether the given attribute parses a type argument.
+/// Determine whether the given attribute parses a type argument.
 static bool attributeIsTypeArgAttr(const IdentifierInfo &II) {
 #define CLANG_ATTR_TYPE_ARG_LIST
   return llvm::StringSwitch<bool>(normalizeAttrName(II.getName()))
@@ -224,7 +224,7 @@
 #undef CLANG_ATTR_TYPE_ARG_LIST
 }
 
-/// \brief Determine whether the given attribute requires parsing its arguments
+/// Determine whether the given attribute requires parsing its arguments
 /// in an unevaluated context or not.
 static bool attributeParsedArgsUnevaluated(const IdentifierInfo &II) {
 #define CLANG_ATTR_ARG_CONTEXT_LIST
@@ -758,7 +758,7 @@
   return (Separator == '.' || Separator == '_');
 }
 
-/// \brief Parse a version number.
+/// Parse a version number.
 ///
 /// version:
 ///   simple-integer
@@ -875,7 +875,7 @@
   return VersionTuple(Major, Minor, Subminor, (AfterMajorSeparator == '_'));
 }
 
-/// \brief Parse the contents of the "availability" attribute.
+/// Parse the contents of the "availability" attribute.
 ///
 /// availability-attribute:
 ///   'availability' '(' platform ',' opt-strict version-arg-list,
@@ -1107,7 +1107,7 @@
                Syntax, StrictLoc, ReplacementExpr.get());
 }
 
-/// \brief Parse the contents of the "external_source_symbol" attribute.
+/// Parse the contents of the "external_source_symbol" attribute.
 ///
 /// external-source-symbol-attribute:
 ///   'external_source_symbol' '(' keyword-arg-list ')'
@@ -1220,7 +1220,7 @@
                ScopeName, ScopeLoc, Args, llvm::array_lengthof(Args), Syntax);
 }
 
-/// \brief Parse the contents of the "objc_bridge_related" attribute.
+/// Parse the contents of the "objc_bridge_related" attribute.
 /// objc_bridge_related '(' related_class ',' opt-class_method ',' opt-instance_method ')'
 /// related_class:
 ///     Identifier
@@ -1351,7 +1351,7 @@
                                                  Class.TagOrTemplate);
 }
 
-/// \brief Parse all attributes in LAs, and attach them to Decl D.
+/// Parse all attributes in LAs, and attach them to Decl D.
 void Parser::ParseLexedAttributeList(LateParsedAttrList &LAs, Decl *D,
                                      bool EnterScope, bool OnDefinition) {
   assert(LAs.parseSoon() &&
@@ -1365,7 +1365,7 @@
   LAs.clear();
 }
 
-/// \brief Finish parsing an attribute for which parsing was delayed.
+/// Finish parsing an attribute for which parsing was delayed.
 /// This will be called at the end of parsing a class declaration
 /// for each LateParsedAttribute. We consume the saved tokens and
 /// create an attribute with the arguments filled in. We add this
@@ -1551,7 +1551,7 @@
   llvm_unreachable("All cases handled above.");
 }
 
-/// \brief We have found the opening square brackets of a C++11
+/// We have found the opening square brackets of a C++11
 /// attribute-specifier in a location where an attribute is not permitted, but
 /// we know where the attributes ought to be written. Parse them anyway, and
 /// provide a fixit moving them to the right place.
@@ -2128,7 +2128,7 @@
   return false;
 }
 
-/// \brief Parse 'declaration' after parsing 'declaration-specifiers
+/// Parse 'declaration' after parsing 'declaration-specifiers
 /// declarator'. This method parses the remainder of the declaration
 /// (including any attributes or initializer, among other things) and
 /// finalizes the declaration.
@@ -2677,7 +2677,7 @@
   return false;
 }
 
-/// \brief Determine the declaration specifier context from the declarator
+/// Determine the declaration specifier context from the declarator
 /// context.
 ///
 /// \param Context the declarator context, which is one of the
Index: cfe/trunk/lib/Parse/ParseDeclCXX.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseDeclCXX.cpp
+++ cfe/trunk/lib/Parse/ParseDeclCXX.cpp
@@ -2109,7 +2109,7 @@
   }
 }
 
-/// \brief If the given declarator has any parts for which parsing has to be
+/// If the given declarator has any parts for which parsing has to be
 /// delayed, e.g., default arguments or an exception-specification, create a
 /// late-parsed method declaration record to handle the parsing at the end of
 /// the class definition.
@@ -2249,7 +2249,7 @@
          Specifier == VirtSpecifiers::VS_Sealed;
 }
 
-/// \brief Parse a C++ member-declarator up to, but not including, the optional
+/// Parse a C++ member-declarator up to, but not including, the optional
 /// brace-or-equal-initializer or pure-specifier.
 bool Parser::ParseCXXMemberDeclaratorBeforeInitializer(
     Declarator &DeclaratorInfo, VirtSpecifiers &VS, ExprResult &BitfieldSize,
@@ -2320,7 +2320,7 @@
   return false;
 }
 
-/// \brief Look for declaration specifiers possibly occurring after C++11
+/// Look for declaration specifiers possibly occurring after C++11
 /// virt-specifier-seq and diagnose them.
 void Parser::MaybeParseAndDiagnoseDeclSpecAfterCXX11VirtSpecifierSeq(
     Declarator &D,
@@ -3505,7 +3505,7 @@
     return Diag(Tok, diag::err_expected) << tok::l_paren;
 }
 
-/// \brief Parse a C++ exception-specification if present (C++0x [except.spec]).
+/// Parse a C++ exception-specification if present (C++0x [except.spec]).
 ///
 ///       exception-specification:
 ///         dynamic-exception-specification
@@ -3714,7 +3714,7 @@
                                    : DeclaratorContext::TrailingReturnContext);
 }
 
-/// \brief We have just started parsing the definition of a new class,
+/// We have just started parsing the definition of a new class,
 /// so push that class onto our stack of classes that is currently
 /// being parsed.
 Sema::ParsingClassState
@@ -3726,7 +3726,7 @@
   return Actions.PushParsingClass();
 }
 
-/// \brief Deallocate the given parsed class and all of its nested
+/// Deallocate the given parsed class and all of its nested
 /// classes.
 void Parser::DeallocateParsedClasses(Parser::ParsingClass *Class) {
   for (unsigned I = 0, N = Class->LateParsedDeclarations.size(); I != N; ++I)
@@ -3734,7 +3734,7 @@
   delete Class;
 }
 
-/// \brief Pop the top class of the stack of classes that are
+/// Pop the top class of the stack of classes that are
 /// currently being parsed.
 ///
 /// This routine should be called when we have finished parsing the
@@ -3772,7 +3772,7 @@
   Victim->TemplateScope = getCurScope()->getParent()->isTemplateParamScope();
 }
 
-/// \brief Try to parse an 'identifier' which appears within an attribute-token.
+/// Try to parse an 'identifier' which appears within an attribute-token.
 ///
 /// \return the parsed identifier on success, and 0 if the next token is not an
 /// attribute-token.
Index: cfe/trunk/lib/Parse/ParseExpr.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseExpr.cpp
+++ cfe/trunk/lib/Parse/ParseExpr.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Provides the Expression parsing implementation.
+/// Provides the Expression parsing implementation.
 ///
 /// Expressions in C99 basically consist of a bunch of binary operators with
 /// unary operators and other random stuff at the leaves.
@@ -32,7 +32,7 @@
 #include "llvm/ADT/SmallVector.h"
 using namespace clang;
 
-/// \brief Simple precedence-based parser for binary/ternary operators.
+/// Simple precedence-based parser for binary/ternary operators.
 ///
 /// Note: we diverge from the C99 grammar when parsing the assignment-expression
 /// production.  C99 specifies that the LHS of an assignment operator should be
@@ -156,7 +156,7 @@
   return ParseRHSOfBinaryExpression(LHS, prec::Comma);
 }
 
-/// \brief Parse an expr that doesn't include (top-level) commas.
+/// Parse an expr that doesn't include (top-level) commas.
 ExprResult Parser::ParseAssignmentExpression(TypeCastState isTypeCast) {
   if (Tok.is(tok::code_completion)) {
     Actions.CodeCompleteOrdinaryName(getCurScope(), Sema::PCC_Expression);
@@ -175,7 +175,7 @@
   return ParseRHSOfBinaryExpression(LHS, prec::Assignment);
 }
 
-/// \brief Parse an assignment expression where part of an Objective-C message
+/// Parse an assignment expression where part of an Objective-C message
 /// send has already been parsed.
 ///
 /// In this case \p LBracLoc indicates the location of the '[' of the message
@@ -217,7 +217,7 @@
   return ParseConstantExpressionInExprEvalContext(isTypeCast);
 }
 
-/// \brief Parse a constraint-expression.
+/// Parse a constraint-expression.
 ///
 /// \verbatim
 ///       constraint-expression: [Concepts TS temp.constr.decl p1]
@@ -279,7 +279,7 @@
   return isFoldOperator(getBinOpPrecedence(Kind, GreaterThanIsOperator, true));
 }
 
-/// \brief Parse a binary expression that starts with \p LHS and has a
+/// Parse a binary expression that starts with \p LHS and has a
 /// precedence of at least \p MinPrec.
 ExprResult
 Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {
@@ -513,7 +513,7 @@
   }
 }
 
-/// \brief Parse a cast-expression, or, if \p isUnaryExpression is true,
+/// Parse a cast-expression, or, if \p isUnaryExpression is true,
 /// parse a unary-expression.
 ///
 /// \p isAddressOfOperand exists because an id-expression that is the
@@ -570,7 +570,7 @@
 };
 }
 
-/// \brief Parse a cast-expression, or, if \pisUnaryExpression is true, parse
+/// Parse a cast-expression, or, if \pisUnaryExpression is true, parse
 /// a unary-expression.
 ///
 /// \p isAddressOfOperand exists because an id-expression that is the operand
@@ -1450,7 +1450,7 @@
   return Res;
 }
 
-/// \brief Once the leading part of a postfix-expression is parsed, this
+/// Once the leading part of a postfix-expression is parsed, this
 /// method parses any suffixes that apply.
 ///
 /// \verbatim
@@ -1882,7 +1882,7 @@
 }
 
 
-/// \brief Parse a sizeof or alignof expression.
+/// Parse a sizeof or alignof expression.
 ///
 /// \verbatim
 ///       unary-expression:  [C99 6.5.3]
@@ -2695,7 +2695,7 @@
                                            Types, Exprs);
 }
 
-/// \brief Parse A C++1z fold-expression after the opening paren and optional
+/// Parse A C++1z fold-expression after the opening paren and optional
 /// left-hand-side expression.
 ///
 /// \verbatim
Index: cfe/trunk/lib/Parse/ParseExprCXX.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseExprCXX.cpp
+++ cfe/trunk/lib/Parse/ParseExprCXX.cpp
@@ -100,7 +100,7 @@
              /*AtDigraph*/false);
 }
 
-/// \brief Parse global scope or nested-name-specifier if present.
+/// Parse global scope or nested-name-specifier if present.
 ///
 /// Parses a C++ global scope specifier ('::') or nested-name-specifier (which
 /// may be preceded by '::'). Note that this routine will not parse ::new or
@@ -730,7 +730,7 @@
   return ParseLambdaExpressionAfterIntroducer(Intro);
 }
 
-/// \brief Parse a lambda introducer.
+/// Parse a lambda introducer.
 /// \param Intro A LambdaIntroducer filled in with information about the
 ///        contents of the lambda-introducer.
 /// \param SkippedInits If non-null, we are disambiguating between an Obj-C
@@ -1500,7 +1500,7 @@
   return Result;
 }
 
-/// \brief Parse a C++ pseudo-destructor expression after the base,
+/// Parse a C++ pseudo-destructor expression after the base,
 /// . or -> operator, and nested-name-specifier have already been
 /// parsed.
 ///
@@ -1621,7 +1621,7 @@
   }
 }
 
-/// \brief Parse the C++ Coroutines co_yield expression.
+/// Parse the C++ Coroutines co_yield expression.
 ///
 ///       co_yield-expression:
 ///         'co_yield' assignment-expression[opt]
@@ -2007,7 +2007,7 @@
   return false;
 }
 
-/// \brief Finish parsing a C++ unqualified-id that is a template-id of
+/// Finish parsing a C++ unqualified-id that is a template-id of
 /// some form. 
 ///
 /// This routine is invoked when a '<' is encountered after an identifier or
@@ -2191,7 +2191,7 @@
   return false;
 }
 
-/// \brief Parse an operator-function-id or conversion-function-id as part
+/// Parse an operator-function-id or conversion-function-id as part
 /// of a C++ unqualified-id.
 ///
 /// This routine is responsible only for parsing the operator-function-id or
@@ -2430,7 +2430,7 @@
   return false;  
 }
 
-/// \brief Parse a C++ unqualified-id (or a C identifier), which describes the
+/// Parse a C++ unqualified-id (or a C identifier), which describes the
 /// name of an entity.
 ///
 /// \code
@@ -3002,7 +3002,7 @@
   }
 }
 
-/// \brief Parse the built-in type-trait pseudo-functions that allow 
+/// Parse the built-in type-trait pseudo-functions that allow 
 /// implementation of the TR1/C++11 type traits templates.
 ///
 ///       primary-expression:
Index: cfe/trunk/lib/Parse/ParseObjc.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseObjc.cpp
+++ cfe/trunk/lib/Parse/ParseObjc.cpp
@@ -2272,7 +2272,7 @@
       P.ParseLexedObjCMethodDefs(*LateParsedObjCMethods[i], 
                                  false/*c-functions*/);
   
-  /// \brief Clear and free the cached objc methods.
+  /// Clear and free the cached objc methods.
   for (LateParsedObjCMethodContainer::iterator
          I = LateParsedObjCMethods.begin(),
          E = LateParsedObjCMethods.end(); I != E; ++I)
@@ -2864,7 +2864,7 @@
   }
 }
 
-/// \brief Parse the receiver of an Objective-C++ message send.
+/// Parse the receiver of an Objective-C++ message send.
 ///
 /// This routine parses the receiver of a message send in
 /// Objective-C++ either as a type or as an expression. Note that this
@@ -2954,7 +2954,7 @@
   return false;
 }
 
-/// \brief Determine whether the parser is currently referring to a an
+/// Determine whether the parser is currently referring to a an
 /// Objective-C message send, using a simplified heuristic to avoid overhead.
 ///
 /// This routine will only return true for a subset of valid message-send
@@ -3099,7 +3099,7 @@
                                         Res.get());
 }
 
-/// \brief Parse the remainder of an Objective-C message following the
+/// Parse the remainder of an Objective-C message following the
 /// '[' objc-receiver.
 ///
 /// This routine handles sends to super, class messages (sent to a
Index: cfe/trunk/lib/Parse/ParseOpenMP.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseOpenMP.cpp
+++ cfe/trunk/lib/Parse/ParseOpenMP.cpp
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 /// \file
-/// \brief This file implements parsing of all OpenMP directives and clauses.
+/// This file implements parsing of all OpenMP directives and clauses.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -210,7 +210,7 @@
                         : DeclNames.getCXXOperatorName(OOK);
 }
 
-/// \brief Parse 'omp declare reduction' construct.
+/// Parse 'omp declare reduction' construct.
 ///
 ///       declare-reduction-directive:
 ///        annot_pragma_openmp 'declare' 'reduction'
@@ -625,7 +625,7 @@
       LinModifiers, Steps, SourceRange(Loc, EndLoc));
 }
 
-/// \brief Parsing of declarative OpenMP directives.
+/// Parsing of declarative OpenMP directives.
 ///
 ///       threadprivate-directive:
 ///         annot_pragma_openmp 'threadprivate' simple-variable-list
@@ -874,7 +874,7 @@
   return nullptr;
 }
 
-/// \brief Parsing of declarative or executable OpenMP directives.
+/// Parsing of declarative or executable OpenMP directives.
 ///
 ///       threadprivate-directive:
 ///         annot_pragma_openmp 'threadprivate' simple-variable-list
@@ -1197,7 +1197,7 @@
   return !IsCorrect;
 }
 
-/// \brief Parsing of OpenMP clauses.
+/// Parsing of OpenMP clauses.
 ///
 ///    clause:
 ///       if-clause | final-clause | num_threads-clause | safelen-clause |
@@ -1384,7 +1384,7 @@
   return Val;
 }
 
-/// \brief Parsing of OpenMP clauses with single expressions like 'final',
+/// Parsing of OpenMP clauses with single expressions like 'final',
 /// 'collapse', 'safelen', 'num_threads', 'simdlen', 'num_teams',
 /// 'thread_limit', 'simdlen', 'priority', 'grainsize', 'num_tasks' or 'hint'.
 ///
@@ -1431,7 +1431,7 @@
   return Actions.ActOnOpenMPSingleExprClause(Kind, Val.get(), Loc, LLoc, RLoc);
 }
 
-/// \brief Parsing of simple OpenMP clauses like 'default' or 'proc_bind'.
+/// Parsing of simple OpenMP clauses like 'default' or 'proc_bind'.
 ///
 ///    default-clause:
 ///         'default' '(' 'none' | 'shared' ')
@@ -1465,7 +1465,7 @@
                                          Tok.getLocation());
 }
 
-/// \brief Parsing of OpenMP clauses like 'ordered'.
+/// Parsing of OpenMP clauses like 'ordered'.
 ///
 ///    ordered-clause:
 ///         'ordered'
@@ -1501,7 +1501,7 @@
 }
 
 
-/// \brief Parsing of OpenMP clauses with single expressions and some additional
+/// Parsing of OpenMP clauses with single expressions and some additional
 /// argument like 'schedule' or 'dist_schedule'.
 ///
 ///    schedule-clause:
@@ -1921,7 +1921,7 @@
          (MustHaveTail && !Data.TailExpr) || InvalidReductionId;
 }
 
-/// \brief Parsing of OpenMP clause 'private', 'firstprivate', 'lastprivate',
+/// Parsing of OpenMP clause 'private', 'firstprivate', 'lastprivate',
 /// 'shared', 'copyin', 'copyprivate', 'flush', 'reduction', 'task_reduction' or
 /// 'in_reduction'.
 ///
Index: cfe/trunk/lib/Parse/ParsePragma.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParsePragma.cpp
+++ cfe/trunk/lib/Parse/ParsePragma.cpp
@@ -458,7 +458,7 @@
   AttributePragmaHandler.reset();
 }
 
-/// \brief Handle the annotation token produced for #pragma unused(...)
+/// Handle the annotation token produced for #pragma unused(...)
 ///
 /// Each annot_pragma_unused is followed by the argument token so e.g.
 /// "#pragma unused(x,y)" becomes:
@@ -2100,7 +2100,7 @@
                                                StateLoc, State);
 }
 
-/// \brief Handle '#pragma omp ...' when OpenMP is disabled.
+/// Handle '#pragma omp ...' when OpenMP is disabled.
 ///
 void
 PragmaNoOpenMPHandler::HandlePragma(Preprocessor &PP,
@@ -2115,7 +2115,7 @@
   PP.DiscardUntilEndOfDirective();
 }
 
-/// \brief Handle '#pragma omp ...' when OpenMP is enabled.
+/// Handle '#pragma omp ...' when OpenMP is enabled.
 ///
 void
 PragmaOpenMPHandler::HandlePragma(Preprocessor &PP,
@@ -2155,7 +2155,7 @@
                       /*DisableMacroExpansion=*/false);
 }
 
-/// \brief Handle '#pragma pointers_to_members'
+/// Handle '#pragma pointers_to_members'
 // The grammar for this pragma is as follows:
 //
 // <inheritance model> ::= ('single' | 'multiple' | 'virtual') '_inheritance'
@@ -2253,7 +2253,7 @@
   PP.EnterToken(AnnotTok);
 }
 
-/// \brief Handle '#pragma vtordisp'
+/// Handle '#pragma vtordisp'
 // The grammar for this pragma is as follows:
 //
 // <vtordisp-mode> ::= ('off' | 'on' | '0' | '1' | '2' )
@@ -2346,7 +2346,7 @@
   PP.EnterToken(AnnotTok);
 }
 
-/// \brief Handle all MS pragmas.  Simply forwards the tokens after inserting
+/// Handle all MS pragmas.  Simply forwards the tokens after inserting
 /// an annotation token.
 void PragmaMSPragma::HandlePragma(Preprocessor &PP,
                                   PragmaIntroducerKind Introducer,
@@ -2377,7 +2377,7 @@
   PP.EnterToken(AnnotTok);
 }
 
-/// \brief Handle the Microsoft \#pragma detect_mismatch extension.
+/// Handle the Microsoft \#pragma detect_mismatch extension.
 ///
 /// The syntax is:
 /// \code
@@ -2434,7 +2434,7 @@
   Actions.ActOnPragmaDetectMismatch(DetectMismatchLoc, NameString, ValueString);
 }
 
-/// \brief Handle the microsoft \#pragma comment extension.
+/// Handle the microsoft \#pragma comment extension.
 ///
 /// The syntax is:
 /// \code
@@ -2683,7 +2683,7 @@
   ConsumeAnnotationToken();
 }
 
-/// \brief Parses loop or unroll pragma hint value and fills in Info.
+/// Parses loop or unroll pragma hint value and fills in Info.
 static bool ParseLoopHintValue(Preprocessor &PP, Token &Tok, Token PragmaName,
                                Token Option, bool ValueInParens,
                                PragmaLoopHintInfo &Info) {
@@ -2725,7 +2725,7 @@
   return false;
 }
 
-/// \brief Handle the \#pragma clang loop directive.
+/// Handle the \#pragma clang loop directive.
 ///  #pragma clang 'loop' loop-hints
 ///
 ///  loop-hints:
@@ -2840,7 +2840,7 @@
                       /*DisableMacroExpansion=*/false);
 }
 
-/// \brief Handle the loop unroll optimization pragmas.
+/// Handle the loop unroll optimization pragmas.
 ///  #pragma unroll
 ///  #pragma unroll unroll-hint-value
 ///  #pragma unroll '(' unroll-hint-value ')'
@@ -2910,7 +2910,7 @@
                       /*DisableMacroExpansion=*/false);
 }
 
-/// \brief Handle the Microsoft \#pragma intrinsic extension.
+/// Handle the Microsoft \#pragma intrinsic extension.
 ///
 /// The syntax is:
 /// \code
@@ -3038,7 +3038,7 @@
             diag::warn_pragma_force_cuda_host_device_bad_arg);
 }
 
-/// \brief Handle the #pragma clang attribute directive.
+/// Handle the #pragma clang attribute directive.
 ///
 /// The syntax is:
 /// \code
Index: cfe/trunk/lib/Parse/ParseStmt.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseStmt.cpp
+++ cfe/trunk/lib/Parse/ParseStmt.cpp
@@ -27,7 +27,7 @@
 // C99 6.8: Statements and Blocks.
 //===----------------------------------------------------------------------===//
 
-/// \brief Parse a standalone statement (for instance, as the body of an 'if',
+/// Parse a standalone statement (for instance, as the body of an 'if',
 /// 'while', or 'for').
 StmtResult Parser::ParseStatement(SourceLocation *TrailingElseLoc,
                                   bool AllowOpenMPStandalone) {
@@ -402,7 +402,7 @@
   return Res;
 }
 
-/// \brief Parse an expression statement.
+/// Parse an expression statement.
 StmtResult Parser::ParseExprStatement() {
   // If a case keyword is missing, this is where it should be inserted.
   Token OldToken = Tok;
Index: cfe/trunk/lib/Parse/ParseTemplate.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseTemplate.cpp
+++ cfe/trunk/lib/Parse/ParseTemplate.cpp
@@ -21,7 +21,7 @@
 #include "clang/Sema/Scope.h"
 using namespace clang;
 
-/// \brief Parse a template declaration, explicit instantiation, or
+/// Parse a template declaration, explicit instantiation, or
 /// explicit specialization.
 Decl *
 Parser::ParseDeclarationStartingWithTemplate(DeclaratorContext Context,
@@ -41,7 +41,7 @@
 
 
 
-/// \brief Parse a template declaration or an explicit specialization.
+/// Parse a template declaration or an explicit specialization.
 ///
 /// Template declarations include one or more template parameter lists
 /// and either the function or class template declaration. Explicit
@@ -157,7 +157,7 @@
                                              DeclEnd, AS, AccessAttrs);
 }
 
-/// \brief Parse a single declaration that declares a template,
+/// Parse a single declaration that declares a template,
 /// template specialization, or explicit instantiation of a template.
 ///
 /// \param DeclEnd will receive the source location of the last token
@@ -403,7 +403,7 @@
   return true;
 }
 
-/// \brief Determine whether the parser is at the start of a template
+/// Determine whether the parser is at the start of a template
 /// type parameter.
 bool Parser::isStartOfTemplateTypeParameter() {
   if (Tok.is(tok::kw_class)) {
@@ -754,7 +754,7 @@
                             AlreadyHasEllipsis, D.hasName());
 }
 
-/// \brief Parses a '>' at the end of a template list.
+/// Parses a '>' at the end of a template list.
 ///
 /// If this function encounters '>>', '>>>', '>=', or '>>=', it tries
 /// to determine if these tokens were supposed to be a '>' followed by
@@ -926,7 +926,7 @@
 }
 
 
-/// \brief Parses a template-id that after the template name has
+/// Parses a template-id that after the template name has
 /// already been parsed.
 ///
 /// This routine takes care of parsing the enclosed template argument
@@ -968,7 +968,7 @@
                                         /*ObjCGenericList=*/false);
 }
 
-/// \brief Replace the tokens that form a simple-template-id with an
+/// Replace the tokens that form a simple-template-id with an
 /// annotation token containing the complete template-id.
 ///
 /// The first token in the stream must be the name of a template that
@@ -1089,7 +1089,7 @@
   return false;
 }
 
-/// \brief Replaces a template-id annotation token with a type
+/// Replaces a template-id annotation token with a type
 /// annotation token.
 ///
 /// If there was a failure when forming the type from the template-id,
@@ -1134,12 +1134,12 @@
   PP.AnnotateCachedTokens(Tok);
 }
 
-/// \brief Determine whether the given token can end a template argument.
+/// Determine whether the given token can end a template argument.
 static bool isEndOfTemplateArgument(Token Tok) {
   return Tok.isOneOf(tok::comma, tok::greater, tok::greatergreater);
 }
 
-/// \brief Parse a C++ template template argument.
+/// Parse a C++ template template argument.
 ParsedTemplateArgument Parser::ParseTemplateTemplateArgument() {
   if (!Tok.is(tok::identifier) && !Tok.is(tok::coloncolon) &&
       !Tok.is(tok::annot_cxxscope))
@@ -1267,7 +1267,7 @@
                                 ExprArg.get(), Loc);
 }
 
-/// \brief Determine whether the current tokens can only be parsed as a 
+/// Determine whether the current tokens can only be parsed as a 
 /// template argument list (starting with the '<') and never as a '<' 
 /// expression.
 bool Parser::IsTemplateArgumentList(unsigned Skip) {
@@ -1329,7 +1329,7 @@
   return false;
 }
 
-/// \brief Parse a C++ explicit template instantiation
+/// Parse a C++ explicit template instantiation
 /// (C++ [temp.explicit]).
 ///
 ///       explicit-instantiation:
@@ -1367,7 +1367,7 @@
   ((Parser *)P)->ParseLateTemplatedFuncDef(LPT);
 }
 
-/// \brief Late parse a C++ function template in Microsoft mode.
+/// Late parse a C++ function template in Microsoft mode.
 void Parser::ParseLateTemplatedFuncDef(LateParsedTemplate &LPT) {
   if (!LPT.D)
      return;
@@ -1458,7 +1458,7 @@
     delete *I;
 }
 
-/// \brief Lex a delayed template function for late parsing.
+/// Lex a delayed template function for late parsing.
 void Parser::LexTemplateFunctionForLateParsing(CachedTokens &Toks) {
   tok::TokenKind kind = Tok.getKind();
   if (!ConsumeAndStoreFunctionPrologue(Toks)) {
Index: cfe/trunk/lib/Parse/ParseTentative.cpp
===================================================================
--- cfe/trunk/lib/Parse/ParseTentative.cpp
+++ cfe/trunk/lib/Parse/ParseTentative.cpp
@@ -401,7 +401,7 @@
   }
 };
 
-/// \brief Disambiguates between a declaration in a condition, a
+/// Disambiguates between a declaration in a condition, a
 /// simple-declaration in an init-statement, and an expression for
 /// a condition of a if/switch statement.
 ///
@@ -472,7 +472,7 @@
     return ConditionOrInitStatement::Expression;
 }
 
-  /// \brief Determine whether the next set of tokens contains a type-id.
+  /// Determine whether the next set of tokens contains a type-id.
   ///
   /// The context parameter states what context we're parsing right
   /// now, which affects how this routine copes with the token
@@ -553,7 +553,7 @@
   return TPR == TPResult::True;
 }
 
-/// \brief Returns true if this is a C++11 attribute-specifier. Per
+/// Returns true if this is a C++11 attribute-specifier. Per
 /// C++11 [dcl.attr.grammar]p6, two consecutive left square bracket tokens
 /// always introduce an attribute. In Objective-C++11, this rule does not
 /// apply if either '[' begins a message-send.
Index: cfe/trunk/lib/Parse/Parser.cpp
===================================================================
--- cfe/trunk/lib/Parse/Parser.cpp
+++ cfe/trunk/lib/Parse/Parser.cpp
@@ -24,7 +24,7 @@
 
 
 namespace {
-/// \brief A comment handler that passes comments found by the preprocessor
+/// A comment handler that passes comments found by the preprocessor
 /// to the parser action.
 class ActionCommentHandler : public CommentHandler {
   Sema &S;
@@ -77,7 +77,7 @@
   return Diag(Tok.getLocation(), DiagID);
 }
 
-/// \brief Emits a diagnostic suggesting parentheses surrounding a
+/// Emits a diagnostic suggesting parentheses surrounding a
 /// given range.
 ///
 /// \param Loc The location where we'll emit the diagnostic.
@@ -858,7 +858,7 @@
   return Actions.ConvertDeclToDeclGroup(SingleDecl);
 }
 
-/// \brief Determine whether the current token, if it occurs after a
+/// Determine whether the current token, if it occurs after a
 /// declarator, continues a declaration or declaration list.
 bool Parser::isDeclarationAfterDeclarator() {
   // Check for '= delete' or '= default'
@@ -877,7 +877,7 @@
      Tok.is(tok::l_paren));         // int X(0) -> not a function def [C++]
 }
 
-/// \brief Determine whether the current token, if it occurs after a
+/// Determine whether the current token, if it occurs after a
 /// declarator, indicates the start of a function definition.
 bool Parser::isStartOfFunctionDefinition(const ParsingDeclarator &Declarator) {
   assert(Declarator.isFunctionDeclarator() && "Isn't a function declarator");
@@ -1451,7 +1451,7 @@
   return Result;
 }
 
-/// \brief Get the TemplateIdAnnotation from the token and put it in the
+/// Get the TemplateIdAnnotation from the token and put it in the
 /// cleanup pool so that it gets destroyed when parsing the current top level
 /// declaration is finished.
 TemplateIdAnnotation *Parser::takeTemplateIdAnnotation(const Token &tok) {
@@ -1479,7 +1479,7 @@
     PP.AnnotateCachedTokens(Tok);
 }
 
-/// \brief Attempt to classify the name at the current token position. This may
+/// Attempt to classify the name at the current token position. This may
 /// form a type, scope or primary expression annotation, or replace the token
 /// with a typo-corrected keyword. This is only appropriate when the current
 /// name must refer to an entity which has already been declared.
@@ -1764,7 +1764,7 @@
   return TryAnnotateTypeOrScopeTokenAfterScopeSpec(SS, !WasScopeAnnotation);
 }
 
-/// \brief Try to annotate a type or scope token, having already parsed an
+/// Try to annotate a type or scope token, having already parsed an
 /// optional scope specifier. \p IsNewScope should be \c true unless the scope
 /// specifier was extracted from an existing tok::annot_cxxscope annotation.
 bool Parser::TryAnnotateTypeOrScopeTokenAfterScopeSpec(CXXScopeSpec &SS,
@@ -2185,7 +2185,7 @@
   }
 }
 
-/// \brief Try recover parser when module annotation appears where it must not
+/// Try recover parser when module annotation appears where it must not
 /// be found.
 /// \returns false if the recover was successful and parsing may be continued, or
 /// true if parser must bail out to top level and handle the token there.
Index: cfe/trunk/lib/Rewrite/Rewriter.cpp
===================================================================
--- cfe/trunk/lib/Rewrite/Rewriter.cpp
+++ cfe/trunk/lib/Rewrite/Rewriter.cpp
@@ -44,7 +44,7 @@
   return os;
 }
 
-/// \brief Return true if this character is non-new-line whitespace:
+/// Return true if this character is non-new-line whitespace:
 /// ' ', '\\t', '\\f', '\\v', '\\r'.
 static inline bool isWhitespaceExceptNL(unsigned char c) {
   switch (c) {
Index: cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp
===================================================================
--- cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp
+++ cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp
@@ -122,7 +122,7 @@
 }
 
 namespace {
-/// \brief Warn on logical operator errors in CFGBuilder
+/// Warn on logical operator errors in CFGBuilder
 class LogicalErrorHandler : public CFGCallback {
   Sema &S;
 
@@ -1650,7 +1650,7 @@
 
   void setVerbose(bool b) { Verbose = b; }
 
-  /// \brief Emit all buffered diagnostics in order of sourcelocation.
+  /// Emit all buffered diagnostics in order of sourcelocation.
   /// We need to output diagnostics produced while iterating through
   /// the lockset in deterministic order, so this function orders diagnostics
   /// and outputs them.
Index: cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp
===================================================================
--- cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp
+++ cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp
@@ -621,7 +621,7 @@
   }
 }
 
-/// \brief Retrieve the effective availability of the given declaration.
+/// Retrieve the effective availability of the given declaration.
 static AvailabilityResult getDeclAvailability(const Decl *D) {
   AvailabilityResult AR = D->getAvailability();
   if (isa<EnumConstantDecl>(D))
@@ -683,7 +683,7 @@
     Availability = CXAvailability_NotAccessible;
 }
 
-/// \brief Retrieve the name that should be used to order a result.
+/// Retrieve the name that should be used to order a result.
 ///
 /// If the name needs to be constructed as a string, that string will be
 /// saved into Saved and the returned StringRef will refer to it.
Index: cfe/trunk/lib/Sema/CoroutineStmtBuilder.h
===================================================================
--- cfe/trunk/lib/Sema/CoroutineStmtBuilder.h
+++ cfe/trunk/lib/Sema/CoroutineStmtBuilder.h
@@ -33,16 +33,16 @@
   CXXRecordDecl *PromiseRecordDecl = nullptr;
 
 public:
-  /// \brief Construct a CoroutineStmtBuilder and initialize the promise
+  /// Construct a CoroutineStmtBuilder and initialize the promise
   /// statement and initial/final suspends from the FunctionScopeInfo.
   CoroutineStmtBuilder(Sema &S, FunctionDecl &FD, sema::FunctionScopeInfo &Fn,
                        Stmt *Body);
 
-  /// \brief Build the coroutine body statements, including the
+  /// Build the coroutine body statements, including the
   /// "promise dependent" statements when the promise type is not dependent.
   bool buildStatements();
 
-  /// \brief Build the coroutine body statements that require a non-dependent
+  /// Build the coroutine body statements that require a non-dependent
   /// promise type in order to construct.
   ///
   /// For example different new/delete overloads are selected depending on
Index: cfe/trunk/lib/Sema/IdentifierResolver.cpp
===================================================================
--- cfe/trunk/lib/Sema/IdentifierResolver.cpp
+++ cfe/trunk/lib/Sema/IdentifierResolver.cpp
@@ -257,7 +257,7 @@
 
 } // namespace
 
-/// \brief Compare two declarations to see whether they are different or,
+/// Compare two declarations to see whether they are different or,
 /// if they are the same, whether the new declaration should replace the 
 /// existing declaration.
 static DeclMatchKind compareDeclarations(NamedDecl *Existing, NamedDecl *New) {
Index: cfe/trunk/lib/Sema/JumpDiagnostics.cpp
===================================================================
--- cfe/trunk/lib/Sema/JumpDiagnostics.cpp
+++ cfe/trunk/lib/Sema/JumpDiagnostics.cpp
@@ -216,7 +216,7 @@
   return ScopePair(0U, 0U);
 }
 
-/// \brief Build scope information for a declaration that is part of a DeclStmt.
+/// Build scope information for a declaration that is part of a DeclStmt.
 void JumpScopeChecker::BuildScopeInformation(Decl *D, unsigned &ParentScope) {
   // If this decl causes a new scope, push and switch to it.
   std::pair<unsigned,unsigned> Diags = GetDiagForGotoScopeDecl(S, D);
@@ -233,7 +233,7 @@
       BuildScopeInformation(Init, ParentScope);
 }
 
-/// \brief Build scope information for a captured block literal variables.
+/// Build scope information for a captured block literal variables.
 void JumpScopeChecker::BuildScopeInformation(VarDecl *D,
                                              const BlockDecl *BDecl,
                                              unsigned &ParentScope) {
Index: cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp
===================================================================
--- cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp
+++ cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp
@@ -16,7 +16,7 @@
 
 using namespace clang;
 
-///\brief Constructs a new multiplexing external sema source and appends the
+///Constructs a new multiplexing external sema source and appends the
 /// given element to it.
 ///
 MultiplexExternalSemaSource::MultiplexExternalSemaSource(ExternalSemaSource &s1,
@@ -28,7 +28,7 @@
 // pin the vtable here.
 MultiplexExternalSemaSource::~MultiplexExternalSemaSource() {}
 
-///\brief Appends new source to the source list.
+///Appends new source to the source list.
 ///
 ///\param[in] source - An ExternalSemaSource.
 ///
Index: cfe/trunk/lib/Sema/Sema.cpp
===================================================================
--- cfe/trunk/lib/Sema/Sema.cpp
+++ cfe/trunk/lib/Sema/Sema.cpp
@@ -395,7 +395,7 @@
   return getASTConsumer().GetASTMutationListener();
 }
 
-///\brief Registers an external source. If an external source already exists,
+///Registers an external source. If an external source already exists,
 /// creates a multiplex external source and appends to it.
 ///
 ///\param[in] E - A non-null external sema source.
@@ -416,7 +416,7 @@
   }
 }
 
-/// \brief Print out statistics about the semantic analysis.
+/// Print out statistics about the semantic analysis.
 void Sema::PrintStats() const {
   llvm::errs() << "\n*** Semantic Analysis Stats:\n";
   llvm::errs() << NumSFINAEErrors << " SFINAE diagnostics trapped.\n";
@@ -536,7 +536,7 @@
   llvm_unreachable("unknown scalar type kind");
 }
 
-/// \brief Used to prune the decls of Sema's UnusedFileScopedDecls vector.
+/// Used to prune the decls of Sema's UnusedFileScopedDecls vector.
 static bool ShouldRemoveFromUnused(Sema *SemaRef, const DeclaratorDecl *D) {
   if (D->getMostRecentDecl()->isUsed())
     return true;
@@ -724,7 +724,7 @@
 
 typedef llvm::DenseMap<const CXXRecordDecl*, bool> RecordCompleteMap;
 
-/// \brief Returns true, if all methods and nested classes of the given
+/// Returns true, if all methods and nested classes of the given
 /// CXXRecordDecl are defined in this translation unit.
 ///
 /// Should only be called from ActOnEndOfTranslationUnit so that all
@@ -764,7 +764,7 @@
   return Complete;
 }
 
-/// \brief Returns true, if the given CXXRecordDecl is fully defined in this
+/// Returns true, if the given CXXRecordDecl is fully defined in this
 /// translation unit, i.e. all methods are defined or pure virtual and all
 /// friends, friend functions and nested classes are fully defined in this
 /// translation unit.
@@ -1310,7 +1310,7 @@
   return Builder;
 }
 
-/// \brief Looks through the macro-expansion chain for the given
+/// Looks through the macro-expansion chain for the given
 /// location, looking for a macro expansion with the given name.
 /// If one is found, returns true and sets the location to that
 /// expansion loc.
@@ -1331,7 +1331,7 @@
   return false;
 }
 
-/// \brief Determines the active Scope associated with the given declaration
+/// Determines the active Scope associated with the given declaration
 /// context.
 ///
 /// This routine maps a declaration context to the active Scope object that
@@ -1360,7 +1360,7 @@
   return nullptr;
 }
 
-/// \brief Enter a new function scope
+/// Enter a new function scope
 void Sema::PushFunctionScope() {
   if (FunctionScopes.empty()) {
     // Use PreallocatedFunctionScope to avoid allocating memory when possible.
@@ -1424,7 +1424,7 @@
   CurFunction->CompoundScopes.pop_back();
 }
 
-/// \brief Determine whether any errors occurred within this function/method/
+/// Determine whether any errors occurred within this function/method/
 /// block.
 bool Sema::hasAnyUnrecoverableErrorsInThisFunction() const {
   return getCurFunction()->ErrorTrap.hasUnrecoverableErrorOccurred();
@@ -1547,7 +1547,7 @@
 void ExternalSemaSource::ReadMismatchingDeleteExpressions(llvm::MapVector<
     FieldDecl *, llvm::SmallVector<std::pair<SourceLocation, bool>, 4>> &) {}
 
-/// \brief Figure out if an expression could be turned into a call.
+/// Figure out if an expression could be turned into a call.
 ///
 /// Use this when trying to recover from an error where the programmer may have
 /// written just the name of a function instead of actually calling it.
@@ -1649,7 +1649,7 @@
   return false;
 }
 
-/// \brief Give notes for a set of overloads.
+/// Give notes for a set of overloads.
 ///
 /// A companion to tryExprAsCall. In cases when the name that the programmer
 /// wrote was an overloaded function, we may be able to make some guesses about
Index: cfe/trunk/lib/Sema/SemaAccess.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaAccess.cpp
+++ cfe/trunk/lib/Sema/SemaAccess.cpp
@@ -1712,7 +1712,7 @@
   return CheckAccess(*this, OpLoc, Entity);
 }
 
-/// \brief Checks access to a member.
+/// Checks access to a member.
 Sema::AccessResult Sema::CheckMemberAccess(SourceLocation UseLoc,
                                            CXXRecordDecl *NamingClass,
                                            DeclAccessPair Found) {
Index: cfe/trunk/lib/Sema/SemaAttr.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaAttr.cpp
+++ cfe/trunk/lib/Sema/SemaAttr.cpp
@@ -389,7 +389,7 @@
   return false;
 }
 
-/// \brief Called on well formed \#pragma bss_seg().
+/// Called on well formed \#pragma bss_seg().
 void Sema::ActOnPragmaMSSeg(SourceLocation PragmaLocation,
                             PragmaMsStackAction Action,
                             llvm::StringRef StackSlotLabel,
@@ -410,7 +410,7 @@
   Stack->Act(PragmaLocation, Action, StackSlotLabel, SegmentName);
 }
 
-/// \brief Called on well formed \#pragma bss_seg().
+/// Called on well formed \#pragma bss_seg().
 void Sema::ActOnPragmaMSSection(SourceLocation PragmaLocation,
                                 int SectionFlags, StringLiteral *SegmentName) {
   UnifySection(SegmentName->getString(), SectionFlags, PragmaLocation);
Index: cfe/trunk/lib/Sema/SemaCUDA.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaCUDA.cpp
+++ cfe/trunk/lib/Sema/SemaCUDA.cpp
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 /// \file
-/// \brief This file implements semantic analysis for CUDA constructs.
+/// This file implements semantic analysis for CUDA constructs.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp
+++ cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp
@@ -24,7 +24,7 @@
 #include "llvm/ADT/STLExtras.h"
 using namespace clang;
 
-/// \brief Find the current instantiation that associated with the given type.
+/// Find the current instantiation that associated with the given type.
 static CXXRecordDecl *getCurrentInstantiationOf(QualType T,
                                                 DeclContext *CurContext) {
   if (T.isNull())
@@ -44,7 +44,7 @@
     return nullptr;
 }
 
-/// \brief Compute the DeclContext that is associated with the given type.
+/// Compute the DeclContext that is associated with the given type.
 ///
 /// \param T the type for which we are attempting to find a DeclContext.
 ///
@@ -59,7 +59,7 @@
   return ::getCurrentInstantiationOf(T, CurContext);
 }
 
-/// \brief Compute the DeclContext that is associated with the given
+/// Compute the DeclContext that is associated with the given
 /// scope specifier.
 ///
 /// \param SS the C++ scope specifier as it appears in the source
@@ -172,7 +172,7 @@
   return SS.getScopeRep()->isDependent();
 }
 
-/// \brief If the given nested name specifier refers to the current
+/// If the given nested name specifier refers to the current
 /// instantiation, return the declaration that corresponds to that
 /// current instantiation (C++0x [temp.dep.type]p1).
 ///
@@ -188,7 +188,7 @@
   return ::getCurrentInstantiationOf(T, CurContext);
 }
 
-/// \brief Require that the context specified by SS be complete.
+/// Require that the context specified by SS be complete.
 ///
 /// If SS refers to a type, this routine checks whether the type is
 /// complete enough (or can be made complete enough) for name lookup
@@ -305,7 +305,7 @@
   return false;
 }
 
-/// \brief Determines whether the given declaration is an valid acceptable
+/// Determines whether the given declaration is an valid acceptable
 /// result for name lookup of a nested-name-specifier.
 /// \param SD Declaration checked for nested-name-specifier.
 /// \param IsExtension If not null and the declaration is accepted as an
@@ -350,7 +350,7 @@
   return false;
 }
 
-/// \brief If the given nested-name-specifier begins with a bare identifier
+/// If the given nested-name-specifier begins with a bare identifier
 /// (e.g., Base::), perform name lookup for that identifier as a
 /// nested-name-specifier within the given scope, and return the result of that
 /// name lookup.
@@ -443,7 +443,7 @@
 
 }
 
-/// \brief Build a new nested-name-specifier for "identifier::", as described
+/// Build a new nested-name-specifier for "identifier::", as described
 /// by ActOnCXXNestedNameSpecifier.
 ///
 /// \param S Scope in which the nested-name-specifier occurs.
@@ -967,7 +967,7 @@
 }
 
 namespace {
-  /// \brief A structure that stores a nested-name-specifier annotation,
+  /// A structure that stores a nested-name-specifier annotation,
   /// including both the nested-name-specifier 
   struct NestedNameSpecifierAnnotation {
     NestedNameSpecifier *NNS;
Index: cfe/trunk/lib/Sema/SemaChecking.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaChecking.cpp
+++ cfe/trunk/lib/Sema/SemaChecking.cpp
@@ -684,7 +684,7 @@
   return false;
 }
 
-// \brief Performs semantic analysis for the read/write_pipe call.
+// Performs semantic analysis for the read/write_pipe call.
 // \param S Reference to the semantic analyzer.
 // \param Call A pointer to the builtin call.
 // \return True if a semantic error has been found, false otherwise.
@@ -738,7 +738,7 @@
   return false;
 }
 
-// \brief Performs a semantic analysis on the {work_group_/sub_group_
+// Performs a semantic analysis on the {work_group_/sub_group_
 //        /_}reserve_{read/write}_pipe
 // \param S Reference to the semantic analyzer.
 // \param Call The call to the builtin function to be analyzed.
@@ -767,7 +767,7 @@
   return false;
 }
 
-// \brief Performs a semantic analysis on {work_group_/sub_group_
+// Performs a semantic analysis on {work_group_/sub_group_
 //        /_}commit_{read/write}_pipe
 // \param S Reference to the semantic analyzer.
 // \param Call The call to the builtin function to be analyzed.
@@ -790,7 +790,7 @@
   return false;
 }
 
-// \brief Performs a semantic analysis on the call to built-in Pipe
+// Performs a semantic analysis on the call to built-in Pipe
 //        Query Functions.
 // \param S Reference to the semantic analyzer.
 // \param Call The call to the builtin function to be analyzed.
@@ -808,8 +808,8 @@
   return false;
 }
 
-// \brief OpenCL v2.0 s6.13.9 - Address space qualifier functions.
-// \brief Performs semantic analysis for the to_global/local/private call.
+// OpenCL v2.0 s6.13.9 - Address space qualifier functions.
+// Performs semantic analysis for the to_global/local/private call.
 // \param S Reference to the semantic analyzer.
 // \param BuiltinID ID of the builtin function.
 // \param Call A pointer to the builtin call.
@@ -2573,7 +2573,7 @@
 
 /// Checks if a the given expression evaluates to null.
 ///
-/// \brief Returns true if the value evaluates to null.
+/// Returns true if the value evaluates to null.
 static bool CheckNonNullExpr(Sema &S, const Expr *Expr) {
   // If the expression has non-null type, it doesn't evaluate to null.
   if (auto nullability
@@ -2617,7 +2617,7 @@
   return false;
 }
 
-/// \brief Diagnose use of %s directive in an NSString which is being passed
+/// Diagnose use of %s directive in an NSString which is being passed
 /// as formatting string to formatting method.
 static void
 DiagnoseCStringFormatDirectiveInCFAPI(Sema &S,
@@ -5706,7 +5706,7 @@
                        Loc, IsStringLocation, StringRange, FixIt);
 }
 
-/// \brief If the format string is not within the function call, emit a note
+/// If the format string is not within the function call, emit a note
 /// so that the function call and string are in diagnostic messages.
 ///
 /// \param InFunctionCall if true, the format string is within the function
@@ -7319,7 +7319,7 @@
 
 //===--- CHECK: Standard memory functions ---------------------------------===//
 
-/// \brief Takes the expression passed to the size_t parameter of functions
+/// Takes the expression passed to the size_t parameter of functions
 /// such as memcmp, strncat, etc and warns if it's a comparison.
 ///
 /// This is to catch typos like `if (memcmp(&a, &b, sizeof(a) > 0))`.
@@ -7350,7 +7350,7 @@
   return true;
 }
 
-/// \brief Determine whether the given type is or contains a dynamic class type
+/// Determine whether the given type is or contains a dynamic class type
 /// (e.g., whether it has a vtable).
 static const CXXRecordDecl *getContainedDynamicClass(QualType T,
                                                      bool &IsContained) {
@@ -7381,7 +7381,7 @@
   return nullptr;
 }
 
-/// \brief If E is a sizeof expression, returns its argument expression,
+/// If E is a sizeof expression, returns its argument expression,
 /// otherwise returns NULL.
 static const Expr *getSizeOfExprArg(const Expr *E) {
   if (const UnaryExprOrTypeTraitExpr *SizeOf =
@@ -7392,7 +7392,7 @@
   return nullptr;
 }
 
-/// \brief If E is a sizeof expression, returns its argument type.
+/// If E is a sizeof expression, returns its argument type.
 static QualType getSizeOfArgType(const Expr *E) {
   if (const UnaryExprOrTypeTraitExpr *SizeOf =
       dyn_cast<UnaryExprOrTypeTraitExpr>(E))
@@ -7494,7 +7494,7 @@
 
 }
 
-/// \brief Check for dangerous or invalid arguments to memset().
+/// Check for dangerous or invalid arguments to memset().
 ///
 /// This issues warnings on known problematic, dangerous or unspecified
 /// arguments to the standard 'memset', 'memcpy', 'memmove', and 'memcmp'
@@ -9077,7 +9077,7 @@
   AnalyzeImplicitConversions(S, E->getRHS(), E->getOperatorLoc());
 }
 
-/// \brief Implements -Wsign-compare.
+/// Implements -Wsign-compare.
 ///
 /// \param E the binary operator to check for warnings
 static void AnalyzeComparison(Sema &S, BinaryOperator *E) {
@@ -10197,7 +10197,7 @@
   return false;
 }
 
-/// \brief Diagnose pointers that are always non-null.
+/// Diagnose pointers that are always non-null.
 /// \param E the expression containing the pointer
 /// \param NullKind NPCK_NotNull if E is a cast to bool, otherwise, E is
 /// compared to a null pointer
@@ -10444,12 +10444,12 @@
 
 namespace {
 
-/// \brief Visitor for expressions which looks for unsequenced operations on the
+/// Visitor for expressions which looks for unsequenced operations on the
 /// same object.
 class SequenceChecker : public EvaluatedExprVisitor<SequenceChecker> {
   using Base = EvaluatedExprVisitor<SequenceChecker>;
 
-  /// \brief A tree of sequenced regions within an expression. Two regions are
+  /// A tree of sequenced regions within an expression. Two regions are
   /// unsequenced if one is an ancestor or a descendent of the other. When we
   /// finish processing an expression with sequencing, such as a comma
   /// expression, we fold its tree nodes into its parent, since they are
@@ -10463,7 +10463,7 @@
     SmallVector<Value, 8> Values;
 
   public:
-    /// \brief A region within an expression which may be sequenced with respect
+    /// A region within an expression which may be sequenced with respect
     /// to some other region.
     class Seq {
       friend class SequenceTree;
@@ -10479,7 +10479,7 @@
     SequenceTree() { Values.push_back(Value(0)); }
     Seq root() const { return Seq(0); }
 
-    /// \brief Create a new sequence of operations, which is an unsequenced
+    /// Create a new sequence of operations, which is an unsequenced
     /// subset of \p Parent. This sequence of operations is sequenced with
     /// respect to other children of \p Parent.
     Seq allocate(Seq Parent) {
@@ -10487,12 +10487,12 @@
       return Seq(Values.size() - 1);
     }
 
-    /// \brief Merge a sequence of operations into its parent.
+    /// Merge a sequence of operations into its parent.
     void merge(Seq S) {
       Values[S.Index].Merged = true;
     }
 
-    /// \brief Determine whether two operations are unsequenced. This operation
+    /// Determine whether two operations are unsequenced. This operation
     /// is asymmetric: \p Cur should be the more recent sequence, and \p Old
     /// should have been merged into its parent as appropriate.
     bool isUnsequenced(Seq Cur, Seq Old) {
@@ -10507,7 +10507,7 @@
     }
 
   private:
-    /// \brief Pick a representative for a sequence.
+    /// Pick a representative for a sequence.
     unsigned representative(unsigned K) {
       if (Values[K].Merged)
         // Perform path compression as we go.
@@ -10628,7 +10628,7 @@
     bool EvalOK = true;
   } *EvalTracker = nullptr;
 
-  /// \brief Find the object which is produced by the specified expression,
+  /// Find the object which is produced by the specified expression,
   /// if any.
   Object getObject(Expr *E, bool Mod) const {
     E = E->IgnoreParenCasts();
@@ -10650,7 +10650,7 @@
     return nullptr;
   }
 
-  /// \brief Note that an object was modified or used by an expression.
+  /// Note that an object was modified or used by an expression.
   void addUsage(UsageInfo &UI, Object O, Expr *Ref, UsageKind UK) {
     Usage &U = UI.Uses[UK];
     if (!U.Use || !Tree.isUnsequenced(Region, U.Seq)) {
@@ -10661,7 +10661,7 @@
     }
   }
 
-  /// \brief Check whether a modification or use conflicts with a prior usage.
+  /// Check whether a modification or use conflicts with a prior usage.
   void checkUsage(Object O, UsageInfo &UI, Expr *Ref, UsageKind OtherKind,
                   bool IsModMod) {
     if (UI.Diagnosed)
@@ -11134,7 +11134,7 @@
     << TRange << Op->getSourceRange();
 }
 
-/// \brief Check whether this array fits the idiom of a size-one tail padded
+/// Check whether this array fits the idiom of a size-one tail padded
 /// array member of a struct.
 ///
 /// We avoid emitting out-of-bounds access warnings for such arrays as they are
@@ -12150,7 +12150,7 @@
 
 static bool isLayoutCompatible(ASTContext &C, QualType T1, QualType T2);
 
-/// \brief Check if two enumeration types are layout-compatible.
+/// Check if two enumeration types are layout-compatible.
 static bool isLayoutCompatible(ASTContext &C, EnumDecl *ED1, EnumDecl *ED2) {
   // C++11 [dcl.enum] p8:
   // Two enumeration types are layout-compatible if they have the same
@@ -12159,7 +12159,7 @@
          C.hasSameType(ED1->getIntegerType(), ED2->getIntegerType());
 }
 
-/// \brief Check if two fields are layout-compatible.
+/// Check if two fields are layout-compatible.
 static bool isLayoutCompatible(ASTContext &C, FieldDecl *Field1,
                                FieldDecl *Field2) {
   if (!isLayoutCompatible(C, Field1->getType(), Field2->getType()))
@@ -12180,7 +12180,7 @@
   return true;
 }
 
-/// \brief Check if two standard-layout structs are layout-compatible.
+/// Check if two standard-layout structs are layout-compatible.
 /// (C++11 [class.mem] p17)
 static bool isLayoutCompatibleStruct(ASTContext &C, RecordDecl *RD1,
                                      RecordDecl *RD2) {
@@ -12224,7 +12224,7 @@
   return true;
 }
 
-/// \brief Check if two standard-layout unions are layout-compatible.
+/// Check if two standard-layout unions are layout-compatible.
 /// (C++11 [class.mem] p18)
 static bool isLayoutCompatibleUnion(ASTContext &C, RecordDecl *RD1,
                                     RecordDecl *RD2) {
@@ -12263,7 +12263,7 @@
     return isLayoutCompatibleStruct(C, RD1, RD2);
 }
 
-/// \brief Check if two types are layout-compatible in C++11 sense.
+/// Check if two types are layout-compatible in C++11 sense.
 static bool isLayoutCompatible(ASTContext &C, QualType T1, QualType T2) {
   if (T1.isNull() || T2.isNull())
     return false;
@@ -12301,7 +12301,7 @@
 
 //===--- CHECK: pointer_with_type_tag attribute: datatypes should match ----//
 
-/// \brief Given a type tag expression find the type tag itself.
+/// Given a type tag expression find the type tag itself.
 ///
 /// \param TypeExpr Type tag expression, as it appears in user's code.
 ///
@@ -12372,7 +12372,7 @@
   }
 }
 
-/// \brief Retrieve the C type corresponding to type tag TypeExpr.
+/// Retrieve the C type corresponding to type tag TypeExpr.
 ///
 /// \param TypeExpr Expression that specifies a type tag.
 ///
Index: cfe/trunk/lib/Sema/SemaCodeComplete.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaCodeComplete.cpp
+++ cfe/trunk/lib/Sema/SemaCodeComplete.cpp
@@ -40,10 +40,10 @@
 using namespace sema;
 
 namespace {
-  /// \brief A container of code-completion results.
+  /// A container of code-completion results.
   class ResultBuilder {
   public:
-    /// \brief The type of a name-lookup filter, which can be provided to the
+    /// The type of a name-lookup filter, which can be provided to the
     /// name-lookup routines to specify which declarations should be included in
     /// the result set (when it returns true) and which declarations should be
     /// filtered out (returns false).
@@ -52,27 +52,27 @@
     typedef CodeCompletionResult Result;
     
   private:
-    /// \brief The actual results we have found.
+    /// The actual results we have found.
     std::vector<Result> Results;
     
-    /// \brief A record of all of the declarations we have found and placed
+    /// A record of all of the declarations we have found and placed
     /// into the result set, used to ensure that no declaration ever gets into
     /// the result set twice.
     llvm::SmallPtrSet<const Decl*, 16> AllDeclsFound;
     
     typedef std::pair<const NamedDecl *, unsigned> DeclIndexPair;
 
-    /// \brief An entry in the shadow map, which is optimized to store
+    /// An entry in the shadow map, which is optimized to store
     /// a single (declaration, index) mapping (the common case) but
     /// can also store a list of (declaration, index) mappings.
     class ShadowMapEntry {
       typedef SmallVector<DeclIndexPair, 4> DeclIndexPairVector;
 
-      /// \brief Contains either the solitary NamedDecl * or a vector
+      /// Contains either the solitary NamedDecl * or a vector
       /// of (declaration, index) pairs.
       llvm::PointerUnion<const NamedDecl *, DeclIndexPairVector*> DeclOrVector;
 
-      /// \brief When the entry contains a single declaration, this is
+      /// When the entry contains a single declaration, this is
       /// the index associated with that entry.
       unsigned SingleDeclIndex;
 
@@ -115,53 +115,53 @@
       iterator end() const;
     };
 
-    /// \brief A mapping from declaration names to the declarations that have
+    /// A mapping from declaration names to the declarations that have
     /// this name within a particular scope and their index within the list of
     /// results.
     typedef llvm::DenseMap<DeclarationName, ShadowMapEntry> ShadowMap;
     
-    /// \brief The semantic analysis object for which results are being 
+    /// The semantic analysis object for which results are being 
     /// produced.
     Sema &SemaRef;
 
-    /// \brief The allocator used to allocate new code-completion strings.
+    /// The allocator used to allocate new code-completion strings.
     CodeCompletionAllocator &Allocator;
 
     CodeCompletionTUInfo &CCTUInfo;
     
-    /// \brief If non-NULL, a filter function used to remove any code-completion
+    /// If non-NULL, a filter function used to remove any code-completion
     /// results that are not desirable.
     LookupFilter Filter;
 
-    /// \brief Whether we should allow declarations as
+    /// Whether we should allow declarations as
     /// nested-name-specifiers that would otherwise be filtered out.
     bool AllowNestedNameSpecifiers;
 
-    /// \brief If set, the type that we would prefer our resulting value
+    /// If set, the type that we would prefer our resulting value
     /// declarations to have.
     ///
     /// Closely matching the preferred type gives a boost to a result's 
     /// priority.
     CanQualType PreferredType;
     
-    /// \brief A list of shadow maps, which is used to model name hiding at
+    /// A list of shadow maps, which is used to model name hiding at
     /// different levels of, e.g., the inheritance hierarchy.
     std::list<ShadowMap> ShadowMaps;
     
-    /// \brief If we're potentially referring to a C++ member function, the set
+    /// If we're potentially referring to a C++ member function, the set
     /// of qualifiers applied to the object type.
     Qualifiers ObjectTypeQualifiers;
     
-    /// \brief Whether the \p ObjectTypeQualifiers field is active.
+    /// Whether the \p ObjectTypeQualifiers field is active.
     bool HasObjectTypeQualifiers;
     
-    /// \brief The selector that we prefer.
+    /// The selector that we prefer.
     Selector PreferredSelector;
     
-    /// \brief The completion context in which we are gathering results.
+    /// The completion context in which we are gathering results.
     CodeCompletionContext CompletionContext;
     
-    /// \brief If we are in an instance method definition, the \@implementation
+    /// If we are in an instance method definition, the \@implementation
     /// object.
     ObjCImplementationDecl *ObjCImplementation;
 
@@ -199,17 +199,17 @@
       }
     }
 
-    /// \brief Determine the priority for a reference to the given declaration.
+    /// Determine the priority for a reference to the given declaration.
     unsigned getBasePriority(const NamedDecl *D);
 
-    /// \brief Whether we should include code patterns in the completion
+    /// Whether we should include code patterns in the completion
     /// results.
     bool includeCodePatterns() const {
       return SemaRef.CodeCompleter && 
              SemaRef.CodeCompleter->includeCodePatterns();
     }
     
-    /// \brief Set the filter used for code-completion results.
+    /// Set the filter used for code-completion results.
     void setFilter(LookupFilter Filter) {
       this->Filter = Filter;
     }
@@ -218,12 +218,12 @@
     unsigned size() const { return Results.size(); }
     bool empty() const { return Results.empty(); }
     
-    /// \brief Specify the preferred type.
+    /// Specify the preferred type.
     void setPreferredType(QualType T) { 
       PreferredType = SemaRef.Context.getCanonicalType(T); 
     }
     
-    /// \brief Set the cv-qualifiers on the object type, for us in filtering
+    /// Set the cv-qualifiers on the object type, for us in filtering
     /// calls to member functions.
     ///
     /// When there are qualifiers in this set, they will be used to filter
@@ -235,7 +235,7 @@
       HasObjectTypeQualifiers = true;
     }
     
-    /// \brief Set the preferred selector.
+    /// Set the preferred selector.
     ///
     /// When an Objective-C method declaration result is added, and that
     /// method's selector matches this preferred selector, we give that method
@@ -244,27 +244,27 @@
       PreferredSelector = Sel;
     }
         
-    /// \brief Retrieve the code-completion context for which results are
+    /// Retrieve the code-completion context for which results are
     /// being collected.
     const CodeCompletionContext &getCompletionContext() const { 
       return CompletionContext; 
     }
     
-    /// \brief Specify whether nested-name-specifiers are allowed.
+    /// Specify whether nested-name-specifiers are allowed.
     void allowNestedNameSpecifiers(bool Allow = true) {
       AllowNestedNameSpecifiers = Allow;
     }
 
-    /// \brief Return the semantic analysis object for which we are collecting
+    /// Return the semantic analysis object for which we are collecting
     /// code completion results.
     Sema &getSema() const { return SemaRef; }
     
-    /// \brief Retrieve the allocator used to allocate code completion strings.
+    /// Retrieve the allocator used to allocate code completion strings.
     CodeCompletionAllocator &getAllocator() const { return Allocator; }
 
     CodeCompletionTUInfo &getCodeCompletionTUInfo() const { return CCTUInfo; }
     
-    /// \brief Determine whether the given declaration is at all interesting
+    /// Determine whether the given declaration is at all interesting
     /// as a code-completion result.
     ///
     /// \param ND the declaration that we are inspecting.
@@ -274,7 +274,7 @@
     bool isInterestingDecl(const NamedDecl *ND,
                            bool &AsNestedNameSpecifier) const;
     
-    /// \brief Check whether the result is hidden by the Hiding declaration.
+    /// Check whether the result is hidden by the Hiding declaration.
     ///
     /// \returns true if the result is hidden and cannot be found, false if
     /// the hidden result could still be found. When false, \p R may be
@@ -283,7 +283,7 @@
     bool CheckHiddenResult(Result &R, DeclContext *CurContext,
                            const NamedDecl *Hiding);
     
-    /// \brief Add a new result to this result set (if it isn't already in one
+    /// Add a new result to this result set (if it isn't already in one
     /// of the shadow maps), or replace an existing result (for, e.g., a 
     /// redeclaration).
     ///
@@ -292,7 +292,7 @@
     /// \param CurContext the context in which this result will be named.
     void MaybeAddResult(Result R, DeclContext *CurContext = nullptr);
 
-    /// \brief Add a new result to this result set, where we already know
+    /// Add a new result to this result set, where we already know
     /// the hiding declaration (if any).
     ///
     /// \param R the result to add (if it is unique).
@@ -306,19 +306,19 @@
     void AddResult(Result R, DeclContext *CurContext, NamedDecl *Hiding,
                    bool InBaseClass);
     
-    /// \brief Add a new non-declaration result to this result set.
+    /// Add a new non-declaration result to this result set.
     void AddResult(Result R);
 
-    /// \brief Enter into a new scope.
+    /// Enter into a new scope.
     void EnterNewScope();
     
-    /// \brief Exit from the current scope.
+    /// Exit from the current scope.
     void ExitScope();
     
-    /// \brief Ignore this declaration, if it is seen again.
+    /// Ignore this declaration, if it is seen again.
     void Ignore(const Decl *D) { AllDeclsFound.insert(D->getCanonicalDecl()); }
 
-    /// \brief Add a visited context.
+    /// Add a visited context.
     void addVisitedContext(DeclContext *Ctx) {
       CompletionContext.addVisitedContext(Ctx);
     }
@@ -439,7 +439,7 @@
   return iterator(DeclOrVector.get<DeclIndexPairVector *>()->end());
 }
 
-/// \brief Compute the qualification required to get from the current context
+/// Compute the qualification required to get from the current context
 /// (\p CurContext) to the target context (\p TargetContext).
 ///
 /// \param Context the AST context in which the qualification will be used.
@@ -603,7 +603,7 @@
   return false;
 }
 
-/// \brief A simplified classification of types used to determine whether two
+/// A simplified classification of types used to determine whether two
 /// types are "similar enough" when adjusting priorities.
 SimplifiedTypeClass clang::getSimplifiedTypeClass(CanQualType T) {
   switch (T->getTypeClass()) {
@@ -672,7 +672,7 @@
   }
 }
 
-/// \brief Get the type that a given expression will have if this declaration
+/// Get the type that a given expression will have if this declaration
 /// is used as an expression in its "typical" code-completion form.
 QualType clang::getDeclUsageType(ASTContext &C, const NamedDecl *ND) {
   ND = ND->getUnderlyingDecl();
@@ -1057,10 +1057,10 @@
   Results.push_back(R);
 }
 
-/// \brief Enter into a new scope.
+/// Enter into a new scope.
 void ResultBuilder::EnterNewScope() { ShadowMaps.emplace_back(); }
 
-/// \brief Exit from the current scope.
+/// Exit from the current scope.
 void ResultBuilder::ExitScope() {
   for (ShadowMap::iterator E = ShadowMaps.back().begin(),
                         EEnd = ShadowMaps.back().end();
@@ -1071,7 +1071,7 @@
   ShadowMaps.pop_back();
 }
 
-/// \brief Determines whether this given declaration will be found by
+/// Determines whether this given declaration will be found by
 /// ordinary name lookup.
 bool ResultBuilder::IsOrdinaryName(const NamedDecl *ND) const {
   ND = ND->getUnderlyingDecl();
@@ -1089,7 +1089,7 @@
   return ND->getIdentifierNamespace() & IDNS;
 }
 
-/// \brief Determines whether this given declaration will be found by
+/// Determines whether this given declaration will be found by
 /// ordinary name lookup but is not a type name.
 bool ResultBuilder::IsOrdinaryNonTypeName(const NamedDecl *ND) const {
   ND = ND->getUnderlyingDecl();
@@ -1125,7 +1125,7 @@
   return false;
 }
 
-/// \brief Determines whether this given declaration will be found by
+/// Determines whether this given declaration will be found by
 /// ordinary name lookup.
 bool ResultBuilder::IsOrdinaryNonValueName(const NamedDecl *ND) const {
   ND = ND->getUnderlyingDecl();
@@ -1139,7 +1139,7 @@
     !isa<ObjCPropertyDecl>(ND);
 }
 
-/// \brief Determines whether the given declaration is suitable as the 
+/// Determines whether the given declaration is suitable as the 
 /// start of a C++ nested-name-specifier, e.g., a class or namespace.
 bool ResultBuilder::IsNestedNameSpecifier(const NamedDecl *ND) const {
   // Allow us to find class templates, too.
@@ -1149,12 +1149,12 @@
   return SemaRef.isAcceptableNestedNameSpecifier(ND);
 }
 
-/// \brief Determines whether the given declaration is an enumeration.
+/// Determines whether the given declaration is an enumeration.
 bool ResultBuilder::IsEnum(const NamedDecl *ND) const {
   return isa<EnumDecl>(ND);
 }
 
-/// \brief Determines whether the given declaration is a class or struct.
+/// Determines whether the given declaration is a class or struct.
 bool ResultBuilder::IsClassOrStruct(const NamedDecl *ND) const {
   // Allow us to find class templates, too.
   if (const ClassTemplateDecl *ClassTemplate = dyn_cast<ClassTemplateDecl>(ND))
@@ -1169,7 +1169,7 @@
   return false;
 }
 
-/// \brief Determines whether the given declaration is a union.
+/// Determines whether the given declaration is a union.
 bool ResultBuilder::IsUnion(const NamedDecl *ND) const {
   // Allow us to find class templates, too.
   if (const ClassTemplateDecl *ClassTemplate = dyn_cast<ClassTemplateDecl>(ND))
@@ -1181,24 +1181,24 @@
   return false;
 }
 
-/// \brief Determines whether the given declaration is a namespace.
+/// Determines whether the given declaration is a namespace.
 bool ResultBuilder::IsNamespace(const NamedDecl *ND) const {
   return isa<NamespaceDecl>(ND);
 }
 
-/// \brief Determines whether the given declaration is a namespace or 
+/// Determines whether the given declaration is a namespace or 
 /// namespace alias.
 bool ResultBuilder::IsNamespaceOrAlias(const NamedDecl *ND) const {
   return isa<NamespaceDecl>(ND->getUnderlyingDecl());
 }
 
-/// \brief Determines whether the given declaration is a type.
+/// Determines whether the given declaration is a type.
 bool ResultBuilder::IsType(const NamedDecl *ND) const {
   ND = ND->getUnderlyingDecl();
   return isa<TypeDecl>(ND) || isa<ObjCInterfaceDecl>(ND);
 }
 
-/// \brief Determines which members of a class should be visible via
+/// Determines which members of a class should be visible via
 /// "." or "->".  Only value declarations, nested name specifiers, and
 /// using declarations thereof should show up.
 bool ResultBuilder::IsMember(const NamedDecl *ND) const {
@@ -1279,14 +1279,14 @@
   return false;
 }
 
-/// \brief Determines whether the given declaration is an Objective-C
+/// Determines whether the given declaration is an Objective-C
 /// instance variable.
 bool ResultBuilder::IsObjCIvar(const NamedDecl *ND) const {
   return isa<ObjCIvarDecl>(ND);
 }
 
 namespace {
-  /// \brief Visible declaration consumer that adds a code-completion result
+  /// Visible declaration consumer that adds a code-completion result
   /// for each visible declaration.
   class CodeCompletionDeclConsumer : public VisibleDeclConsumer {
     ResultBuilder &Results;
@@ -1313,7 +1313,7 @@
   };
 }
 
-/// \brief Add type specifiers for the current language as keyword results.
+/// Add type specifiers for the current language as keyword results.
 static void AddTypeSpecifierResults(const LangOptions &LangOpts,
                                     ResultBuilder &Results) {
   typedef CodeCompletionResult Result;
@@ -1522,12 +1522,12 @@
   return Policy;
 }
 
-/// \brief Retrieve a printing policy suitable for code completion.
+/// Retrieve a printing policy suitable for code completion.
 static PrintingPolicy getCompletionPrintingPolicy(Sema &S) {
   return getCompletionPrintingPolicy(S.Context, S.PP);
 }
 
-/// \brief Retrieve the string representation of the given type as a string
+/// Retrieve the string representation of the given type as a string
 /// that has the appropriate lifetime for code completion.
 ///
 /// This routine provides a fast path where we provide constant strings for
@@ -1561,7 +1561,7 @@
   return Allocator.CopyString(Result);
 }
 
-/// \brief Add a completion for "this", if we're in a member function.
+/// Add a completion for "this", if we're in a member function.
 static void addThisCompletion(Sema &S, ResultBuilder &Results) {
   QualType ThisTy = S.getCurrentThisType();
   if (ThisTy.isNull())
@@ -1593,7 +1593,7 @@
   Results.AddResult(CodeCompletionResult(Builder.TakeString()));
 }
 
-/// \brief Add language constructs that show up for "ordinary" names.
+/// Add language constructs that show up for "ordinary" names.
 static void AddOrdinaryNameResults(Sema::ParserCompletionContext CCC,
                                    Scope *S,
                                    Sema &SemaRef,
@@ -2139,7 +2139,7 @@
     Results.AddResult(Result("operator"));
 }
 
-/// \brief If the given declaration has an associated type, add it as a result 
+/// If the given declaration has an associated type, add it as a result 
 /// type chunk.
 static void AddResultTypeChunk(ASTContext &Context,
                                const PrintingPolicy &Policy,
@@ -2238,7 +2238,7 @@
   return Result;
 }
 
-/// \brief Tries to find the most appropriate type location for an Objective-C
+/// Tries to find the most appropriate type location for an Objective-C
 /// block placeholder.
 ///
 /// This function ignores things like typedefs and qualifiers in order to
@@ -2372,7 +2372,7 @@
                                 ObjCSubsts);
 }
 
-/// \brief Returns a placeholder string that corresponds to an Objective-C block
+/// Returns a placeholder string that corresponds to an Objective-C block
 /// declaration.
 ///
 /// \param BlockDecl A declaration with an Objective-C block type.
@@ -2464,7 +2464,7 @@
   return " " + DefValue;
 }
 
-/// \brief Add function parameter chunks to the given code completion string.
+/// Add function parameter chunks to the given code completion string.
 static void AddFunctionParameterChunks(Preprocessor &PP,
                                        const PrintingPolicy &Policy,
                                        const FunctionDecl *Function,
@@ -2518,7 +2518,7 @@
     }
 }
 
-/// \brief Add template parameter chunks to the given code completion string.
+/// Add template parameter chunks to the given code completion string.
 static void AddTemplateParameterChunks(ASTContext &Context,
                                        const PrintingPolicy &Policy,
                                        const TemplateDecl *Template,
@@ -2599,7 +2599,7 @@
   }    
 }
 
-/// \brief Add a qualifier to the given code-completion string, if the
+/// Add a qualifier to the given code-completion string, if the
 /// provided nested-name-specifier is non-NULL.
 static void 
 AddQualifierToCompletionString(CodeCompletionBuilder &Result, 
@@ -2658,7 +2658,7 @@
   Result.AddInformativeChunk(Result.getAllocator().CopyString(QualsStr));
 }
 
-/// \brief Add the name of the given declaration 
+/// Add the name of the given declaration 
 static void AddTypedNameChunk(ASTContext &Context, const PrintingPolicy &Policy,
                               const NamedDecl *ND,
                               CodeCompletionBuilder &Result) {
@@ -2742,7 +2742,7 @@
                                     CCTUInfo, IncludeBriefComments);
 }
 
-/// \brief If possible, create a new code completion string for the given
+/// If possible, create a new code completion string for the given
 /// result.
 ///
 /// \returns Either a new, heap-allocated code completion string describing
@@ -3042,7 +3042,7 @@
   return Result.TakeString();
 }
 
-/// \brief Add function overload parameter chunks to the given code completion
+/// Add function overload parameter chunks to the given code completion
 /// string.
 static void AddOverloadParameterChunks(ASTContext &Context,
                                        const PrintingPolicy &Policy,
@@ -3366,7 +3366,7 @@
   llvm_unreachable("Invalid ParserCompletionContext!");
 }
 
-/// \brief If we're in a C++ virtual member function, add completion results
+/// If we're in a C++ virtual member function, add completion results
 /// that invoke the functions we override, since it's common to invoke the 
 /// overridden function as well as adding new functionality.
 ///
@@ -3661,7 +3661,7 @@
   SmallVector<Decl *, 4> IgnoreDecls;
 };
 
-/// \brief Perform code-completion in an expression context when we know what
+/// Perform code-completion in an expression context when we know what
 /// type we're looking for.
 void Sema::CodeCompleteExpression(Scope *S, 
                                   const CodeCompleteExpressionData &Data) {
@@ -3719,11 +3719,11 @@
     CodeCompleteObjCInstanceMessage(S, E.get(), None, false);
 }
 
-/// \brief The set of properties that have already been added, referenced by
+/// The set of properties that have already been added, referenced by
 /// property name.
 typedef llvm::SmallPtrSet<IdentifierInfo*, 16> AddedPropertiesSet;
 
-/// \brief Retrieve the container definition, if any?
+/// Retrieve the container definition, if any?
 static ObjCContainerDecl *getContainerDef(ObjCContainerDecl *Container) {
   if (ObjCInterfaceDecl *Interface = dyn_cast<ObjCInterfaceDecl>(Container)) {
     if (Interface->hasDefinition())
@@ -3741,7 +3741,7 @@
   return Container;
 }
 
-/// \brief Adds a block invocation code completion result for the given block
+/// Adds a block invocation code completion result for the given block
 /// declaration \p BD.
 static void AddObjCBlockCall(ASTContext &Context, const PrintingPolicy &Policy,
                              CodeCompletionBuilder &Builder,
@@ -4339,7 +4339,7 @@
   }
 }
 
-/// \brief Get the type of the Nth parameter from a given set of overload
+/// Get the type of the Nth parameter from a given set of overload
 /// candidates.
 static QualType getParamType(Sema &SemaRef,
                              ArrayRef<ResultCandidate> Candidates,
@@ -4946,7 +4946,7 @@
                             Results.data(), Results.size());
 }
 
-/// \brief Determine whether this scope denotes a namespace.
+/// Determine whether this scope denotes a namespace.
 static bool isNamespaceScope(Scope *S) {
   DeclContext *DC = S->getEntity();
   if (!DC)
@@ -5273,7 +5273,7 @@
                             Results.data(),Results.size());
 }
 
-/// \brief Determine whether the addition of the given flag to an Objective-C
+/// Determine whether the addition of the given flag to an Objective-C
 /// property's attributes will cause a conflict.
 static bool ObjCPropertyFlagConflicts(unsigned Attributes, unsigned NewFlag) {
   // Check if we've already added this flag.
@@ -5369,7 +5369,7 @@
                             Results.data(),Results.size());
 }
 
-/// \brief Describes the kind of Objective-C method that we want to find
+/// Describes the kind of Objective-C method that we want to find
 /// via code completion.
 enum ObjCMethodKind {
   MK_Any, ///< Any kind of method, provided it means other specified criteria.
@@ -5410,12 +5410,12 @@
 }
 
 namespace {
-  /// \brief A set of selectors, which is used to avoid introducing multiple 
+  /// A set of selectors, which is used to avoid introducing multiple 
   /// completions with the same selector into the result set.
   typedef llvm::SmallPtrSet<Selector, 16> VisitedSelectorSet;
 }
 
-/// \brief Add all of the Objective-C methods in the given Objective-C 
+/// Add all of the Objective-C methods in the given Objective-C 
 /// container to the set of results.
 ///
 /// The container will be a class, protocol, category, or implementation of 
@@ -5660,7 +5660,7 @@
                             Results.data(), Results.size());
 }
 
-/// \brief When we have an expression with type "id", we may assume
+/// When we have an expression with type "id", we may assume
 /// that it has some more-specific class type based on knowledge of
 /// common uses of Objective-C. This routine returns that class type,
 /// or NULL if no better result could be determined.
@@ -5952,7 +5952,7 @@
                                       /*IsSuper=*/true);
 }
 
-/// \brief Given a set of code-completion results for the argument of a message
+/// Given a set of code-completion results for the argument of a message
 /// send, determine the preferred type (if any) for that argument expression.
 static QualType getPreferredArgumentTypeForMessageSend(ResultBuilder &Results,
                                                        unsigned NumSelIdents) {
@@ -6334,7 +6334,7 @@
                             Results.data(), Results.size());
 }
 
-/// \brief Add all of the protocol declarations that we find in the given
+/// Add all of the protocol declarations that we find in the given
 /// (translation unit) context.
 static void AddProtocolResults(DeclContext *Ctx, DeclContext *CurContext,
                                bool OnlyForwardDeclarations,
@@ -6399,7 +6399,7 @@
                             Results.data(),Results.size());
 }
 
-/// \brief Add all of the Objective-C interface declarations that we find in
+/// Add all of the Objective-C interface declarations that we find in
 /// the given (translation unit) context.
 static void AddInterfaceResults(DeclContext *Ctx, DeclContext *CurContext,
                                 bool OnlyForwardDeclarations,
@@ -6696,7 +6696,7 @@
 typedef llvm::DenseMap<
     Selector, llvm::PointerIntPair<ObjCMethodDecl *, 1, bool> > KnownMethodsMap;
 
-/// \brief Find all of the methods that reside in the given container
+/// Find all of the methods that reside in the given container
 /// (and its superclasses, protocols, etc.) that meet the given
 /// criteria. Insert those methods into the map of known methods,
 /// indexed by selector so they can be easily found.
@@ -6784,7 +6784,7 @@
   }
 }
 
-/// \brief Add the parenthesized return or parameter type chunk to a code 
+/// Add the parenthesized return or parameter type chunk to a code 
 /// completion string.
 static void AddObjCPassingTypeChunk(QualType Type,
                                     unsigned ObjCDeclQuals,
@@ -6800,7 +6800,7 @@
   Builder.AddChunk(CodeCompletionString::CK_RightParen);
 }
 
-/// \brief Determine whether the given class is or inherits from a class by
+/// Determine whether the given class is or inherits from a class by
 /// the given name.
 static bool InheritsFromClassNamed(ObjCInterfaceDecl *Class, 
                                    StringRef Name) {
@@ -6813,7 +6813,7 @@
   return InheritsFromClassNamed(Class->getSuperClass(), Name);
 }
                   
-/// \brief Add code completions for Objective-C Key-Value Coding (KVC) and
+/// Add code completions for Objective-C Key-Value Coding (KVC) and
 /// Key-Value Observing (KVO).
 static void AddObjCKeyValueCompletions(ObjCPropertyDecl *Property,
                                        bool IsInstanceMethod,
Index: cfe/trunk/lib/Sema/SemaCoroutine.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaCoroutine.cpp
+++ cfe/trunk/lib/Sema/SemaCoroutine.cpp
@@ -1438,7 +1438,7 @@
       .get();
 }
 
-/// \brief Build a variable declaration for move parameter.
+/// Build a variable declaration for move parameter.
 static VarDecl *buildVarDecl(Sema &S, SourceLocation Loc, QualType Type,
                              IdentifierInfo *II) {
   TypeSourceInfo *TInfo = S.Context.getTrivialTypeSourceInfo(Type, Loc);
Index: cfe/trunk/lib/Sema/SemaDecl.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaDecl.cpp
+++ cfe/trunk/lib/Sema/SemaDecl.cpp
@@ -115,7 +115,7 @@
 
 } // end anonymous namespace
 
-/// \brief Determine whether the token kind starts a simple-type-specifier.
+/// Determine whether the token kind starts a simple-type-specifier.
 bool Sema::isSimpleTypeSpecifier(tok::TokenKind Kind) const {
   switch (Kind) {
   // FIXME: Take into account the current language when deciding whether a
@@ -166,7 +166,7 @@
 };
 } // end anonymous namespace
 
-/// \brief Tries to perform unqualified lookup of the type decls in bases for
+/// Tries to perform unqualified lookup of the type decls in bases for
 /// dependent class.
 /// \return \a NotFound if no any decls is found, \a FoundNotType if found not a
 /// type decl, \a FoundType if only type decls are found.
@@ -266,7 +266,7 @@
   return S.CreateParsedType(T, Builder.getTypeSourceInfo(Context, T));
 }
 
-/// \brief If the identifier refers to a type name within this scope,
+/// If the identifier refers to a type name within this scope,
 /// return the declaration of that type.
 ///
 /// This routine performs ordinary name lookup of the identifier II
@@ -760,7 +760,7 @@
   }
 }
 
-/// \brief Determine whether the given result set contains either a type name
+/// Determine whether the given result set contains either a type name
 /// or
 static bool isResultTypeOrTemplate(LookupResult &R, const Token &NextToken) {
   bool CheckTemplate = R.getSema().getLangOpts().CPlusPlus &&
@@ -1315,7 +1315,7 @@
   assert(CurContext && "Popped translation unit!");
 }
 
-/// \brief Determine whether we allow overloading of the function
+/// Determine whether we allow overloading of the function
 /// PrevDecl with another declaration.
 ///
 /// This routine determines whether overloading is possible, not
@@ -1501,7 +1501,7 @@
   F.done();
 }
 
-/// \brief Check for this common pattern:
+/// Check for this common pattern:
 /// @code
 /// class S {
 ///   S(const S&); // DO NOT IMPLEMENT
@@ -1838,7 +1838,7 @@
   }
 }
 
-/// \brief Look for an Objective-C class in the translation unit.
+/// Look for an Objective-C class in the translation unit.
 ///
 /// \param Id The name of the Objective-C class we're looking for. If
 /// typo-correction fixes this name, the Id will be updated
@@ -1908,7 +1908,7 @@
   return S;
 }
 
-/// \brief Looks up the declaration of "struct objc_super" and
+/// Looks up the declaration of "struct objc_super" and
 /// saves it for later use in building builtin declaration of
 /// objc_msgSendSuper and objc_msgSendSuper_stret. If no such
 /// pre-existing declaration exists no action takes place.
@@ -2870,7 +2870,7 @@
 template<typename T> static bool isExternC(T *D) { return D->isExternC(); }
 static bool isExternC(VarTemplateDecl *) { return false; }
 
-/// \brief Check whether a redeclaration of an entity introduced by a
+/// Check whether a redeclaration of an entity introduced by a
 /// using-declaration is valid, given that we know it's not an overload
 /// (nor a hidden tag declaration).
 template<typename ExpectedDecl>
@@ -3563,7 +3563,7 @@
   return true;
 }
 
-/// \brief Completes the merge of two function declarations that are
+/// Completes the merge of two function declarations that are
 /// known to be compatible.
 ///
 /// This routine handles the merging of attributes and other
@@ -4938,7 +4938,7 @@
   return GetNameFromUnqualifiedId(D.getName());
 }
 
-/// \brief Retrieves the declaration name from a parsed unqualified-id.
+/// Retrieves the declaration name from a parsed unqualified-id.
 DeclarationNameInfo
 Sema::GetNameFromUnqualifiedId(const UnqualifiedId &Name) {
   DeclarationNameInfo NameInfo;
@@ -5225,7 +5225,7 @@
   return false;
 }
 
-/// \brief Diagnose a declaration whose declarator-id has the given
+/// Diagnose a declaration whose declarator-id has the given
 /// nested-name-specifier.
 ///
 /// \param SS The nested-name-specifier of the declarator-id.
@@ -5663,7 +5663,7 @@
   return FixedTInfo;
 }
 
-/// \brief Register the given locally-scoped extern "C" declaration so
+/// Register the given locally-scoped extern "C" declaration so
 /// that it can be found later for redeclarations. We include any extern "C"
 /// declaration that is not visible in the translation unit here, not just
 /// function-scope declarations.
@@ -5684,7 +5684,7 @@
   return Result.empty() ? nullptr : *Result.begin();
 }
 
-/// \brief Diagnose function specifiers on a declaration of an identifier that
+/// Diagnose function specifiers on a declaration of an identifier that
 /// does not identify a function.
 void Sema::DiagnoseFunctionSpecifiers(const DeclSpec &DS) {
   // FIXME: We should probably indicate the identifier in question to avoid
@@ -5826,7 +5826,7 @@
   return NewTD;
 }
 
-/// \brief Determines whether the given declaration is an out-of-scope
+/// Determines whether the given declaration is an out-of-scope
 /// previous declaration.
 ///
 /// This routine should be invoked when name lookup has found a
@@ -6251,7 +6251,7 @@
   return true;
 }
 
-/// \brief Returns true if given declaration has external C language linkage.
+/// Returns true if given declaration has external C language linkage.
 static bool isDeclExternC(const Decl *D) {
   if (const auto *FD = dyn_cast<FunctionDecl>(D))
     return FD->isExternC();
@@ -6958,7 +6958,7 @@
   return !Diags.isIgnored(diag::warn_decl_shadow, R.getNameLoc());
 }
 
-/// \brief Return the declaration shadowed by the given variable \p D, or null
+/// Return the declaration shadowed by the given variable \p D, or null
 /// if it doesn't shadow any declaration or shadowing warnings are disabled.
 NamedDecl *Sema::getShadowedDeclaration(const VarDecl *D,
                                         const LookupResult &R) {
@@ -6975,7 +6975,7 @@
              : nullptr;
 }
 
-/// \brief Return the declaration shadowed by the given typedef \p D, or null
+/// Return the declaration shadowed by the given typedef \p D, or null
 /// if it doesn't shadow any declaration or shadowing warnings are disabled.
 NamedDecl *Sema::getShadowedDeclaration(const TypedefNameDecl *D,
                                         const LookupResult &R) {
@@ -6990,7 +6990,7 @@
   return isa<TypedefNameDecl>(ShadowedDecl) ? ShadowedDecl : nullptr;
 }
 
-/// \brief Diagnose variable or built-in function shadowing.  Implements
+/// Diagnose variable or built-in function shadowing.  Implements
 /// -Wshadow.
 ///
 /// This method is called whenever a VarDecl is added to a "useful"
@@ -7121,7 +7121,7 @@
   }
 }
 
-/// \brief Check -Wshadow without the advantage of a previous lookup.
+/// Check -Wshadow without the advantage of a previous lookup.
 void Sema::CheckShadow(Scope *S, VarDecl *D) {
   if (Diags.isIgnored(diag::warn_decl_shadow, D->getLocation()))
     return;
@@ -7491,7 +7491,7 @@
   }
 }
 
-/// \brief Perform semantic checking on a newly-created variable
+/// Perform semantic checking on a newly-created variable
 /// declaration.
 ///
 /// This routine performs all of the type-checking required for a
@@ -7562,7 +7562,7 @@
 enum OverrideErrorKind { OEK_All, OEK_NonDeleted, OEK_Deleted };
 } // end anonymous namespace
 
-/// \brief Report an error regarding overriding, along with any relevant
+/// Report an error regarding overriding, along with any relevant
 /// overridden methods.
 ///
 /// \param DiagID the primary error to report.
@@ -7678,7 +7678,7 @@
   TypoCorrectedFunctionDefinitions.insert(F);
 }
 
-/// \brief Generate diagnostics for an invalid function redeclaration.
+/// Generate diagnostics for an invalid function redeclaration.
 ///
 /// This routine handles generating the diagnostic messages for an invalid
 /// function redeclaration, including finding possible similar declarations
@@ -9156,7 +9156,7 @@
   return NewFD;
 }
 
-/// \brief Checks if the new declaration declared in dependent context must be
+/// Checks if the new declaration declared in dependent context must be
 /// put in the same redeclaration chain as the specified declaration.
 ///
 /// \param D Declaration that is checked.
@@ -9182,7 +9182,7 @@
            D->getFriendObjectKind() != Decl::FOK_None);
 }
 
-/// \brief Check the target attribute of the function for MultiVersion
+/// Check the target attribute of the function for MultiVersion
 /// validity.
 ///
 /// Returns true if there was an error, false otherwise.
@@ -9333,7 +9333,7 @@
   return false;
 }
 
-/// \brief Check the validity of a mulitversion function declaration.
+/// Check the validity of a mulitversion function declaration.
 /// Also sets the multiversion'ness' of the function itself.
 ///
 /// This sets NewFD->isInvalidDecl() to true if there was an error.
@@ -9517,7 +9517,7 @@
   return false;
 }
 
-/// \brief Perform semantic checking of a new function declaration.
+/// Perform semantic checking of a new function declaration.
 ///
 /// Performs semantic analysis of the new function declaration
 /// NewFD. This routine performs all semantic checking that does not
@@ -11564,7 +11564,7 @@
     Context.addModuleInitializer(ModuleScopes.back().Module, var);
 }
 
-/// \brief Determines if a variable's alignment is dependent.
+/// Determines if a variable's alignment is dependent.
 static bool hasDependentAlignment(VarDecl *VD) {
   if (VD->getType()->isDependentType())
     return true;
@@ -12081,7 +12081,7 @@
   return New;
 }
 
-/// \brief Synthesizes a variable for a parameter arising from a
+/// Synthesizes a variable for a parameter arising from a
 /// typedef.
 ParmVarDecl *Sema::BuildParmVarDeclForTypedef(DeclContext *DC,
                                               SourceLocation Loc,
@@ -12584,7 +12584,7 @@
   return D;
 }
 
-/// \brief Given the set of return statements within a function body,
+/// Given the set of return statements within a function body,
 /// compute the variables that are subject to the named return value
 /// optimization.
 ///
@@ -13089,7 +13089,7 @@
   return FD;
 }
 
-/// \brief Adds any function attributes that we know a priori based on
+/// Adds any function attributes that we know a priori based on
 /// the declaration of this function.
 ///
 /// These attributes can apply both to implicitly-declared builtins
@@ -13281,7 +13281,7 @@
   return NewTD;
 }
 
-/// \brief Check that this is a valid underlying type for an enum declaration.
+/// Check that this is a valid underlying type for an enum declaration.
 bool Sema::CheckEnumUnderlyingType(TypeSourceInfo *TI) {
   SourceLocation UnderlyingLoc = TI->getTypeLoc().getBeginLoc();
   QualType T = TI->getType();
@@ -13331,7 +13331,7 @@
   return false;
 }
 
-/// \brief Get diagnostic %select index for tag kind for
+/// Get diagnostic %select index for tag kind for
 /// redeclaration diagnostic message.
 /// WARNING: Indexes apply to particular diagnostics only!
 ///
@@ -13345,7 +13345,7 @@
   }
 }
 
-/// \brief Determine if tag kind is a class-key compatible with
+/// Determine if tag kind is a class-key compatible with
 /// class for redeclaration (class, struct, or __interface).
 ///
 /// \returns true iff the tag kind is compatible.
@@ -13379,7 +13379,7 @@
   llvm_unreachable("invalid TTK");
 }
 
-/// \brief Determine whether a tag with a given kind is acceptable
+/// Determine whether a tag with a given kind is acceptable
 /// as a redeclaration of the given tag declaration.
 ///
 /// \returns true if the new tag kind is acceptable, false otherwise.
@@ -13515,7 +13515,7 @@
   return FixItHint::CreateInsertion(NameLoc, Insertion);
 }
 
-/// \brief Determine whether a tag originally declared in context \p OldDC can
+/// Determine whether a tag originally declared in context \p OldDC can
 /// be redeclared with an unqualified name in \p NewDC (assuming name lookup
 /// found a declaration in \p OldDC as a previous decl, perhaps through a
 /// using-declaration).
@@ -13536,7 +13536,7 @@
   return false;
 }
 
-/// \brief This is invoked when we see 'struct foo' or 'struct {'.  In the
+/// This is invoked when we see 'struct foo' or 'struct {'.  In the
 /// former case, Name will be non-null.  In the later case, Name will be null.
 /// TagSpec indicates what kind of tag this is. TUK indicates whether this is a
 /// reference/declaration/definition of a tag.
@@ -14838,7 +14838,7 @@
   return NewFD;
 }
 
-/// \brief Build a new FieldDecl and check its well-formedness.
+/// Build a new FieldDecl and check its well-formedness.
 ///
 /// This routine builds a new FieldDecl given the fields name, type,
 /// record, etc. \p PrevDecl should refer to any previous declaration
@@ -15708,7 +15708,7 @@
     ProcessDeclAttributeList(S, Record, Attr);
 }
 
-/// \brief Determine whether the given integral value is representable within
+/// Determine whether the given integral value is representable within
 /// the given type T.
 static bool isRepresentableIntegerValue(ASTContext &Context,
                                         llvm::APSInt &Value,
@@ -15725,7 +15725,7 @@
   return Value.getMinSignedBits() <= BitWidth;
 }
 
-// \brief Given an integral type, return the next larger integral type
+// Given an integral type, return the next larger integral type
 // (or a NULL type of no such type exists).
 static QualType getNextLargerIntegralType(ASTContext &Context, QualType T) {
   // FIXME: Int128/UInt128 support, which also needs to be introduced into
Index: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaDeclAttr.cpp
+++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp
@@ -59,7 +59,7 @@
   return (D->getFunctionType() != nullptr) || isa<ObjCMethodDecl>(D);
 }
 
-/// \brief Return true if the given decl has function type (function or
+/// Return true if the given decl has function type (function or
 /// function-typed variable) or an Objective-C method or a block.
 static bool isFunctionOrMethodOrBlock(const Decl *D) {
   return isFunctionOrMethod(D) || isa<BlockDecl>(D);
@@ -189,7 +189,7 @@
   return true;
 }
 
-/// \brief Check if the attribute has exactly as many args as Num. May
+/// Check if the attribute has exactly as many args as Num. May
 /// output an error.
 static bool checkAttributeNumArgs(Sema &S, const AttributeList &AL,
                                   unsigned Num) {
@@ -198,7 +198,7 @@
                                    std::not_equal_to<unsigned>());
 }
 
-/// \brief Check if the attribute has at least as many args as Num. May
+/// Check if the attribute has at least as many args as Num. May
 /// output an error.
 static bool checkAttributeAtLeastNumArgs(Sema &S, const AttributeList &AL,
                                          unsigned Num) {
@@ -207,7 +207,7 @@
                                    std::less<unsigned>());
 }
 
-/// \brief Check if the attribute has at most as many args as Num. May
+/// Check if the attribute has at most as many args as Num. May
 /// output an error.
 static bool checkAttributeAtMostNumArgs(Sema &S, const AttributeList &AL,
                                          unsigned Num) {
@@ -216,7 +216,7 @@
                                    std::greater<unsigned>());
 }
 
-/// \brief A helper function to provide Attribute Location for the Attr types
+/// A helper function to provide Attribute Location for the Attr types
 /// AND the AttributeList.
 template <typename AttrInfo>
 static typename std::enable_if<std::is_base_of<Attr, AttrInfo>::value,
@@ -228,7 +228,7 @@
   return AL.getLoc();
 }
 
-/// \brief A helper function to provide Attribute Name for the Attr types
+/// A helper function to provide Attribute Name for the Attr types
 /// AND the AttributeList.
 template <typename AttrInfo>
 static typename std::enable_if<std::is_base_of<Attr, AttrInfo>::value,
@@ -240,7 +240,7 @@
   return AL.getName();
 }
 
-/// \brief If Expr is a valid integer constant, get the value of the integer
+/// If Expr is a valid integer constant, get the value of the integer
 /// expression and return success or failure. May output an error.
 template <typename AttrInfo>
 static bool checkUInt32Argument(Sema &S, const AttrInfo &AI, const Expr *Expr,
@@ -269,7 +269,7 @@
   return true;
 }
 
-/// \brief Wrapper around checkUInt32Argument, with an extra check to be sure
+/// Wrapper around checkUInt32Argument, with an extra check to be sure
 /// that the result will fit into a regular (signed) int. All args have the same
 /// purpose as they do in checkUInt32Argument.
 template <typename AttrInfo>
@@ -291,7 +291,7 @@
   return true;
 }
 
-/// \brief Diagnose mutually exclusive attributes when present on a given
+/// Diagnose mutually exclusive attributes when present on a given
 /// declaration. Returns true if diagnosed.
 template <typename AttrTy>
 static bool checkAttrMutualExclusion(Sema &S, Decl *D, SourceRange Range,
@@ -305,7 +305,7 @@
   return false;
 }
 
-/// \brief Check if IdxExpr is a valid parameter index for a function or
+/// Check if IdxExpr is a valid parameter index for a function or
 /// instance method D.  May output an error.
 ///
 /// \returns true if IdxExpr is a valid index.
@@ -351,7 +351,7 @@
   return true;
 }
 
-/// \brief Check if the argument \p ArgNum of \p Attr is a ASCII string literal.
+/// Check if the argument \p ArgNum of \p Attr is a ASCII string literal.
 /// If not emit an error and return false. If the argument is an identifier it
 /// will emit an error with a fixit hint and treat it as if it was a string
 /// literal.
@@ -387,7 +387,7 @@
   return true;
 }
 
-/// \brief Applies the given attribute to the Decl without performing any
+/// Applies the given attribute to the Decl without performing any
 /// additional semantic checking.
 template <typename AttrType>
 static void handleSimpleAttribute(Sema &S, Decl *D, const AttributeList &AL) {
@@ -401,7 +401,7 @@
   handleSimpleAttribute<AttrType>(S, D, AL);
 }
 
-/// \brief Applies the given attribute to the Decl so long as the Decl doesn't
+/// Applies the given attribute to the Decl so long as the Decl doesn't
 /// already have one of the given incompatible attributes.
 template <typename AttrType, typename IncompatibleAttrType,
           typename... IncompatibleAttrTypes>
@@ -414,7 +414,7 @@
                                                                           AL);
 }
 
-/// \brief Check if the passed-in expression is of type int or bool.
+/// Check if the passed-in expression is of type int or bool.
 static bool isIntOrBool(Expr *Exp) {
   QualType QT = Exp->getType();
   return QT->isBooleanType() || QT->isIntegerType();
@@ -437,7 +437,7 @@
   return true;
 }
 
-/// \brief Check if passed in Decl is a pointer type.
+/// Check if passed in Decl is a pointer type.
 /// Note that this function may produce an error message.
 /// \return true if the Decl is a pointer type; false otherwise
 static bool threadSafetyCheckIsPointer(Sema &S, const Decl *D,
@@ -463,7 +463,7 @@
   return false;
 }
 
-/// \brief Checks that the passed in QualType either is of RecordType or points
+/// Checks that the passed in QualType either is of RecordType or points
 /// to RecordType. Returns the relevant RecordType, null if it does not exit.
 static const RecordType *getRecordType(QualType QT) {
   if (const auto *RT = QT->getAs<RecordType>())
@@ -555,7 +555,7 @@
   return typeHasCapability(S, Ex->getType());
 }
 
-/// \brief Checks that all attribute arguments, starting from Sidx, resolve to
+/// Checks that all attribute arguments, starting from Sidx, resolve to
 /// a capability object.
 /// \param Sidx The attribute argument index to start checking with.
 /// \param ParamIdxOk Whether an argument can be indexing into a function
@@ -765,7 +765,7 @@
       AL.getAttributeSpellingListIndex()));
 }
 
-/// \brief Checks to be sure that the given parameter number is in bounds, and
+/// Checks to be sure that the given parameter number is in bounds, and
 /// is an integral type. Will emit appropriate diagnostics if this returns
 /// false.
 ///
@@ -2137,7 +2137,7 @@
   return false;
 }
 
-/// \brief Check whether the two versions match.
+/// Check whether the two versions match.
 ///
 /// If either version tuple is empty, then they are assumed to match. If
 /// \p BeforeIsOkay is true, then \p X can be less than or equal to \p Y.
@@ -6795,7 +6795,7 @@
 }
 
 
-/// \brief whether we should emit a diagnostic for \c K and \c DeclVersion in
+/// whether we should emit a diagnostic for \c K and \c DeclVersion in
 /// the context of \c Ctx. For example, we should emit an unavailable diagnostic
 /// in a deprecated context, but not the other way around.
 static bool ShouldDiagnoseAvailabilityInContext(Sema &S, AvailabilityResult K,
@@ -7362,7 +7362,7 @@
   }
 };
 
-/// \brief This class implements -Wunguarded-availability.
+/// This class implements -Wunguarded-availability.
 ///
 /// This is done with a traversal of the AST of a function that makes reference
 /// to a partially available declaration. Whenever we encounter an \c if of the
Index: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp
@@ -1457,7 +1457,7 @@
     DD->setInvalidDecl();
 }
 
-/// \brief Merge the exception specifications of two variable declarations.
+/// Merge the exception specifications of two variable declarations.
 ///
 /// This is called when there's a redeclaration of a VarDecl. The function
 /// checks if the redeclaration might have an exception specification and
@@ -1573,7 +1573,7 @@
   return true;
 }
 
-/// \brief Get diagnostic %select index for tag kind for
+/// Get diagnostic %select index for tag kind for
 /// record diagnostic message.
 /// WARNING: Indexes apply to particular diagnostics only!
 ///
@@ -2079,7 +2079,7 @@
   return false;
 }
 
-/// \brief Determine whether the identifier II is a typo for the name of
+/// Determine whether the identifier II is a typo for the name of
 /// the class type currently being defined. If so, update it to the identifier
 /// that should have been used.
 bool Sema::isCurrentClassNameTypo(IdentifierInfo *&II, const CXXScopeSpec *SS) {
@@ -2105,7 +2105,7 @@
   return false;
 }
 
-/// \brief Determine whether the given class is a base class of the given
+/// Determine whether the given class is a base class of the given
 /// class, including looking at dependent bases.
 static bool findCircularInheritance(const CXXRecordDecl *Class,
                                     const CXXRecordDecl *Current) {
@@ -2137,7 +2137,7 @@
   return false;
 }
 
-/// \brief Check the validity of a C++ base class specifier.
+/// Check the validity of a C++ base class specifier.
 ///
 /// \returns a new CXXBaseSpecifier if well-formed, emits diagnostics
 /// and returns NULL otherwise.
@@ -2324,7 +2324,7 @@
 /// locally, there's no need to abstract the small size parameter.
 typedef llvm::SmallPtrSet<QualType, 4> IndirectBaseSet;
 
-/// \brief Recursively add the bases of Type.  Don't add Type itself.
+/// Recursively add the bases of Type.  Don't add Type itself.
 static void
 NoteIndirectBases(ASTContext &Context, IndirectBaseSet &Set,
                   const QualType &Type)
@@ -2345,7 +2345,7 @@
   }
 }
 
-/// \brief Performs the actual work of attaching the given base class
+/// Performs the actual work of attaching the given base class
 /// specifiers to a C++ class.
 bool Sema::AttachBaseSpecifiers(CXXRecordDecl *Class,
                                 MutableArrayRef<CXXBaseSpecifier *> Bases) {
@@ -2464,7 +2464,7 @@
   AttachBaseSpecifiers(cast<CXXRecordDecl>(ClassDecl), Bases);
 }
 
-/// \brief Determine whether the type \p Derived is a C++ class that is
+/// Determine whether the type \p Derived is a C++ class that is
 /// derived from the type \p Base.
 bool Sema::IsDerivedFrom(SourceLocation Loc, QualType Derived, QualType Base) {
   if (!getLangOpts().CPlusPlus)
@@ -2491,7 +2491,7 @@
   return DerivedRD->isDerivedFrom(BaseRD);
 }
 
-/// \brief Determine whether the type \p Derived is a C++ class that is
+/// Determine whether the type \p Derived is a C++ class that is
 /// derived from the type \p Base.
 bool Sema::IsDerivedFrom(SourceLocation Loc, QualType Derived, QualType Base,
                          CXXBasePaths &Paths) {
@@ -2643,7 +2643,7 @@
 }
 
 
-/// @brief Builds a string representing ambiguous paths from a
+/// Builds a string representing ambiguous paths from a
 /// specific derived class to different subobjects of the same base
 /// class.
 ///
@@ -3551,7 +3551,7 @@
   }
 } // namespace
 
-/// \brief Enter a new C++ default initializer scope. After calling this, the
+/// Enter a new C++ default initializer scope. After calling this, the
 /// caller must call \ref ActOnFinishCXXInClassMemberInitializer, even if
 /// parsing or instantiating the initializer failed.
 void Sema::ActOnStartCXXInClassMemberInitializer() {
@@ -3560,7 +3560,7 @@
   PushFunctionScope();
 }
 
-/// \brief This is invoked after parsing an in-class initializer for a
+/// This is invoked after parsing an in-class initializer for a
 /// non-static C++ class member, and after instantiating an in-class initializer
 /// in a class template. Such actions are deferred until the class is complete.
 void Sema::ActOnFinishCXXInClassMemberInitializer(Decl *D,
@@ -3617,7 +3617,7 @@
   FD->setInClassInitializer(InitExpr);
 }
 
-/// \brief Find the direct and/or virtual base specifiers that
+/// Find the direct and/or virtual base specifiers that
 /// correspond to the given base type, for use in base initialization
 /// within a constructor.
 static bool FindBaseInitializer(Sema &SemaRef,
@@ -3661,7 +3661,7 @@
   return DirectBaseSpec || VirtualBaseSpec;
 }
 
-/// \brief Handle a C++ member initializer using braced-init-list syntax.
+/// Handle a C++ member initializer using braced-init-list syntax.
 MemInitResult
 Sema::ActOnMemInitializer(Decl *ConstructorD,
                           Scope *S,
@@ -3677,7 +3677,7 @@
                              EllipsisLoc);
 }
 
-/// \brief Handle a C++ member initializer using parentheses syntax.
+/// Handle a C++ member initializer using parentheses syntax.
 MemInitResult
 Sema::ActOnMemInitializer(Decl *ConstructorD,
                           Scope *S,
@@ -3720,7 +3720,7 @@
 
 }
 
-/// \brief Handle a C++ member initializer.
+/// Handle a C++ member initializer.
 MemInitResult
 Sema::BuildMemInitializer(Decl *ConstructorD,
                           Scope *S,
@@ -4548,7 +4548,7 @@
     return !FieldRD->hasInClassInitializer();
   }
 
-  /// \brief Determine whether the given field is, or is within, a union member
+  /// Determine whether the given field is, or is within, a union member
   /// that is inactive (because there was an initializer given for a different
   /// member of the union, or because the union was not initialized at all).
   bool isWithinInactiveUnionMember(FieldDecl *Field,
@@ -4566,7 +4566,7 @@
 };
 }
 
-/// \brief Determine whether the given type is an incomplete or zero-lenfgth
+/// Determine whether the given type is an incomplete or zero-lenfgth
 /// array type.
 static bool isIncompleteOrZeroLengthArrayType(ASTContext &Context, QualType T) {
   if (T->isIncompleteArrayType())
@@ -5576,7 +5576,7 @@
   }
 }
 
-/// \brief Check class-level dllimport/dllexport attribute.
+/// Check class-level dllimport/dllexport attribute.
 void Sema::checkClassLevelDLLAttribute(CXXRecordDecl *Class) {
   Attr *ClassAttr = getDLLAttr(Class);
 
@@ -5707,7 +5707,7 @@
     DelayedDllExportClasses.push_back(Class);
 }
 
-/// \brief Perform propagation of DLL attributes from a derived class to a
+/// Perform propagation of DLL attributes from a derived class to a
 /// templated base class for MS compatibility.
 void Sema::propagateDLLAttrToBaseClassTemplate(
     CXXRecordDecl *Class, Attr *ClassAttr,
@@ -5916,7 +5916,7 @@
   return RecordDecl::APK_CannotPassInRegs;
 }
 
-/// \brief Perform semantic checks on a class definition that has been
+/// Perform semantic checks on a class definition that has been
 /// completing, introducing implicitly-declared members, checking for
 /// abstract types, etc.
 void Sema::CheckCompletedCXXClass(CXXRecordDecl *Record) {
@@ -7637,7 +7637,7 @@
 };
 } // end anonymous namespace
 
-/// \brief Add the most overriden methods from MD to Methods
+/// Add the most overriden methods from MD to Methods
 static void AddMostOverridenMethods(const CXXMethodDecl *MD,
                         llvm::SmallPtrSetImpl<const CXXMethodDecl *>& Methods) {
   if (MD->size_overridden_methods() == 0)
@@ -7647,7 +7647,7 @@
       AddMostOverridenMethods(O, Methods);
 }
 
-/// \brief Check if a method overloads virtual methods in a base class without
+/// Check if a method overloads virtual methods in a base class without
 /// overriding any.
 void Sema::FindHiddenVirtualMethods(CXXMethodDecl *MD,
                           SmallVectorImpl<CXXMethodDecl*> &OverloadedMethods) {
@@ -7688,7 +7688,7 @@
   }
 }
 
-/// \brief Diagnose methods which overload virtual methods in a base class
+/// Diagnose methods which overload virtual methods in a base class
 /// without overriding any.
 void Sema::DiagnoseHiddenVirtualMethods(CXXMethodDecl *MD) {
   if (MD->isInvalidDecl())
@@ -8656,7 +8656,7 @@
 // Namespace Handling
 //===----------------------------------------------------------------------===//
 
-/// \brief Diagnose a mismatch in 'inline' qualifiers when a namespace is
+/// Diagnose a mismatch in 'inline' qualifiers when a namespace is
 /// reopened.
 static void DiagnoseNamespaceInlineMismatch(Sema &S, SourceLocation KeywordLoc,
                                             SourceLocation Loc,
@@ -9022,7 +9022,7 @@
   return Info->getType();
 }
 
-/// \brief Retrieve the special "std" namespace, which may require us to
+/// Retrieve the special "std" namespace, which may require us to
 /// implicitly define the namespace.
 NamespaceDecl *Sema::getOrCreateStdNamespace() {
   if (!StdNamespace) {
@@ -9165,7 +9165,7 @@
   return isStdInitializerList(ArgType, nullptr);
 }
 
-/// \brief Determine whether a using statement is in a context where it will be
+/// Determine whether a using statement is in a context where it will be
 /// apply in all contexts.
 static bool IsUsingDirectiveInToplevelContext(DeclContext *CurContext) {
   switch (CurContext->getDeclKind()) {
@@ -9405,7 +9405,7 @@
   return UD;
 }
 
-/// \brief Determine whether a using declaration considers the given
+/// Determine whether a using declaration considers the given
 /// declarations as "equivalent", e.g., if they are redeclarations of
 /// the same entity or are both typedefs of the same type.
 static bool
@@ -10727,7 +10727,7 @@
     }
   }
 
-  /// \brief Are we already trying to declare this special member?
+  /// Are we already trying to declare this special member?
   bool isAlreadyBeingDeclared() const {
     return WasAlreadyBeingDeclared;
   }
@@ -11135,7 +11135,7 @@
   }
 }
 
-/// \brief Perform any semantic analysis which needs to be delayed until all
+/// Perform any semantic analysis which needs to be delayed until all
 /// pending class member declarations have been parsed.
 void Sema::ActOnFinishCXXMemberDecls() {
   // If the context is an invalid C++ class, just suppress these checks.
@@ -11194,7 +11194,7 @@
 }
 
 namespace {
-/// \brief An abstract base class for all helper classes used in building the
+/// An abstract base class for all helper classes used in building the
 //  copy/move operators. These classes serve as factory functions and help us
 //  avoid using the same Expr* in the AST twice.
 class ExprBuilder {
@@ -11379,7 +11379,7 @@
   return Call.getAs<Stmt>();
 }
 
-/// \brief Builds a statement that copies/moves the given entity from \p From to
+/// Builds a statement that copies/moves the given entity from \p From to
 /// \c To.
 ///
 /// This routine is used to copy/move the members of a class with an
@@ -12688,7 +12688,7 @@
   }
 }
 
-/// \brief Determine whether the given list arguments contains exactly one
+/// Determine whether the given list arguments contains exactly one
 /// "real" (non-default) argument.
 static bool hasOneRealArgument(MultiExprArg Args) {
   switch (Args.size()) {
@@ -12899,7 +12899,7 @@
     Diag(VD->getLocation(), diag::warn_global_destructor);
 }
 
-/// \brief Given a constructor and the set of arguments provided for the
+/// Given a constructor and the set of arguments provided for the
 /// constructor, convert the arguments and add any required default arguments
 /// to form a proper call to this constructor.
 ///
@@ -13500,7 +13500,7 @@
   return ED;
 }
 
-/// \brief Perform semantic analysis for the variable declaration that
+/// Perform semantic analysis for the variable declaration that
 /// occurs within a C++ catch clause, returning the newly-created
 /// variable.
 VarDecl *Sema::BuildExceptionDeclaration(Scope *S,
@@ -13756,7 +13756,7 @@
   return Decl;
 }
 
-/// \brief Perform semantic analysis of the given friend type declaration.
+/// Perform semantic analysis of the given friend type declaration.
 ///
 /// \returns A friend declaration that.
 FriendDecl *Sema::CheckFriendTypeDecl(SourceLocation LocStart,
@@ -14647,7 +14647,7 @@
   return false;
 }
 
-/// \brief Mark the given method pure.
+/// Mark the given method pure.
 ///
 /// \param Method the method to be marked pure.
 ///
@@ -14677,7 +14677,7 @@
     Diag(D->getLocation(), diag::err_illegal_initializer);
 }
 
-/// \brief Determine whether the given declaration is a global variable or
+/// Determine whether the given declaration is a global variable or
 /// static data member.
 static bool isNonlocalVariable(const Decl *D) {
   if (const VarDecl *Var = dyn_cast_or_null<VarDecl>(D))
@@ -15098,7 +15098,7 @@
 }
 
 namespace {
-  /// \brief AST visitor that finds references to the 'this' expression.
+  /// AST visitor that finds references to the 'this' expression.
   class FindCXXThisExpr : public RecursiveASTVisitor<FindCXXThisExpr> {
     Sema &S;
 
Index: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaDeclObjC.cpp
+++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp
@@ -202,7 +202,7 @@
   }
 }
 
-/// \brief Check a method declaration for compatibility with the Objective-C
+/// Check a method declaration for compatibility with the Objective-C
 /// ARC conventions.
 bool Sema::CheckARCMethodDecl(ObjCMethodDecl *method) {
   ObjCMethodFamily family = method->getMethodFamily();
@@ -3366,7 +3366,7 @@
   Previous->setNext(new (Mem) ObjCMethodList(Method));
 }
 
-/// \brief Read the contents of the method pool for a given selector from
+/// Read the contents of the method pool for a given selector from
 /// external storage.
 void Sema::ReadMethodPool(Selector Sel) {
   assert(ExternalSource && "We need an external AST source");
@@ -4105,7 +4105,7 @@
   return (Decl::ObjCDeclQualifier) (unsigned) PQTVal;
 }
 
-/// \brief Check whether the declared result type of the given Objective-C
+/// Check whether the declared result type of the given Objective-C
 /// method declaration is compatible with the method's class.
 ///
 static Sema::ResultTypeCompatibilityKind 
@@ -4817,7 +4817,7 @@
   }
 }
 
-/// \brief Build a type-check a new Objective-C exception variable declaration.
+/// Build a type-check a new Objective-C exception variable declaration.
 VarDecl *Sema::BuildObjCExceptionDecl(TypeSourceInfo *TInfo, QualType T,
                                       SourceLocation StartLoc,
                                       SourceLocation IdLoc,
Index: cfe/trunk/lib/Sema/SemaExpr.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp
+++ cfe/trunk/lib/Sema/SemaExpr.cpp
@@ -48,7 +48,7 @@
 using namespace clang;
 using namespace sema;
 
-/// \brief Determine whether the use of this declaration is valid, without
+/// Determine whether the use of this declaration is valid, without
 /// emitting diagnostics.
 bool Sema::CanUseDecl(NamedDecl *D, bool TreatUnavailableAsInvalid) {
   // See if this is an auto-typed variable whose initializer we are parsing.
@@ -89,7 +89,7 @@
   }
 }
 
-/// \brief Emit a note explaining that this function is deleted.
+/// Emit a note explaining that this function is deleted.
 void Sema::NoteDeletedFunction(FunctionDecl *Decl) {
   assert(Decl->isDeleted());
 
@@ -117,7 +117,7 @@
     << Decl << true;
 }
 
-/// \brief Determine whether a FunctionDecl was ever declared with an
+/// Determine whether a FunctionDecl was ever declared with an
 /// explicit storage class.
 static bool hasAnyExplicitStorageClass(const FunctionDecl *D) {
   for (auto I : D->redecls()) {
@@ -127,7 +127,7 @@
   return false;
 }
 
-/// \brief Check whether we're in an extern inline function and referring to a
+/// Check whether we're in an extern inline function and referring to a
 /// variable or function with internal linkage (C11 6.7.4p3).
 ///
 /// This is only a warning because we used to silently accept this code, but
@@ -190,7 +190,7 @@
   }
 }
 
-/// \brief Determine whether the use of this declaration is valid, and
+/// Determine whether the use of this declaration is valid, and
 /// emit any corresponding diagnostics.
 ///
 /// This routine diagnoses various problems with referencing
@@ -300,7 +300,7 @@
   return false;
 }
 
-/// \brief Retrieve the message suffix that should be added to a
+/// Retrieve the message suffix that should be added to a
 /// diagnostic complaining about the given function being deleted or
 /// unavailable.
 std::string Sema::getDeletedOrUnavailableSuffix(const FunctionDecl *FD) {
@@ -917,7 +917,7 @@
   return E;
 }
 
-/// \brief Converts an integer to complex float type.  Helper function of
+/// Converts an integer to complex float type.  Helper function of
 /// UsualArithmeticConversions()
 ///
 /// \return false if the integer expression is an integer type and is
@@ -942,7 +942,7 @@
   return false;
 }
 
-/// \brief Handle arithmetic conversion with complex types.  Helper function of
+/// Handle arithmetic conversion with complex types.  Helper function of
 /// UsualArithmeticConversions()
 static QualType handleComplexFloatConversion(Sema &S, ExprResult &LHS,
                                              ExprResult &RHS, QualType LHSType,
@@ -998,7 +998,7 @@
   return ResultType;
 }
 
-/// \brief Handle arithmetic conversion from integer to float.  Helper function
+/// Handle arithmetic conversion from integer to float.  Helper function
 /// of UsualArithmeticConversions()
 static QualType handleIntToFloatConversion(Sema &S, ExprResult &FloatExpr,
                                            ExprResult &IntExpr,
@@ -1029,7 +1029,7 @@
   return result;
 }
 
-/// \brief Handle arithmethic conversion with floating point types.  Helper
+/// Handle arithmethic conversion with floating point types.  Helper
 /// function of UsualArithmeticConversions()
 static QualType handleFloatConversion(Sema &S, ExprResult &LHS,
                                       ExprResult &RHS, QualType LHSType,
@@ -1067,7 +1067,7 @@
                                     /*convertFloat=*/!IsCompAssign);
 }
 
-/// \brief Diagnose attempts to convert between __float128 and long double if
+/// Diagnose attempts to convert between __float128 and long double if
 /// there is no support for such conversion. Helper function of
 /// UsualArithmeticConversions().
 static bool unsupportedTypeConversion(const Sema &S, QualType LHSType,
@@ -1123,7 +1123,7 @@
 }
 }
 
-/// \brief Handle integer arithmetic conversions.  Helper function of
+/// Handle integer arithmetic conversions.  Helper function of
 /// UsualArithmeticConversions()
 template <PerformCastFn doLHSCast, PerformCastFn doRHSCast>
 static QualType handleIntegerConversion(Sema &S, ExprResult &LHS,
@@ -1174,7 +1174,7 @@
   }
 }
 
-/// \brief Handle conversions with GCC complex int extension.  Helper function
+/// Handle conversions with GCC complex int extension.  Helper function
 /// of UsualArithmeticConversions()
 static QualType handleComplexIntConversion(Sema &S, ExprResult &LHS,
                                            ExprResult &RHS, QualType LHSType,
@@ -2484,7 +2484,7 @@
   return ExprResult((Expr *)nullptr);
 }
 
-/// \brief Cast a base object to a member's actual type.
+/// Cast a base object to a member's actual type.
 ///
 /// Logically this happens in three phases:
 ///
@@ -2766,7 +2766,7 @@
 diagnoseUncapturableValueReference(Sema &S, SourceLocation loc,
                                    ValueDecl *var, DeclContext *DC);
 
-/// \brief Complete semantic analysis for a reference to the given declaration.
+/// Complete semantic analysis for a reference to the given declaration.
 ExprResult Sema::BuildDeclarationNameExpr(
     const CXXScopeSpec &SS, const DeclarationNameInfo &NameInfo, NamedDecl *D,
     NamedDecl *FoundD, const TemplateArgumentListInfo *TemplateArgs,
@@ -3567,7 +3567,7 @@
   return false;
 }
 
-/// \brief Check whether E is a pointer from a decayed array type (the decayed
+/// Check whether E is a pointer from a decayed array type (the decayed
 /// pointer type is equal to T) and emit a warning if it is.
 static void warnOnSizeofOnArrayDecay(Sema &S, SourceLocation Loc, QualType T,
                                      Expr *E) {
@@ -3585,7 +3585,7 @@
                                              << ICE->getSubExpr()->getType();
 }
 
-/// \brief Check the constraints on expression operands to unary type expression
+/// Check the constraints on expression operands to unary type expression
 /// and type traits.
 ///
 /// Completes any types necessary and validates the constraints on the operand
@@ -3669,7 +3669,7 @@
   return false;
 }
 
-/// \brief Check the constraints on operands to unary expression and type
+/// Check the constraints on operands to unary expression and type
 /// traits.
 ///
 /// This will complete any types necessary, and validate the various constraints
@@ -3923,7 +3923,7 @@
   } while (!T.isNull() && T->isVariablyModifiedType());
 }
 
-/// \brief Build a sizeof or alignof expression given a type operand.
+/// Build a sizeof or alignof expression given a type operand.
 ExprResult
 Sema::CreateUnaryExprOrTypeTraitExpr(TypeSourceInfo *TInfo,
                                      SourceLocation OpLoc,
@@ -3967,7 +3967,7 @@
       ExprKind, TInfo, Context.getSizeType(), OpLoc, R.getEnd());
 }
 
-/// \brief Build a sizeof or alignof expression given an expression
+/// Build a sizeof or alignof expression given an expression
 /// operand.
 ExprResult
 Sema::CreateUnaryExprOrTypeTraitExpr(Expr *E, SourceLocation OpLoc,
@@ -4085,7 +4085,7 @@
   return BuildUnaryOp(S, OpLoc, Opc, Input);
 }
 
-/// \brief Diagnose if arithmetic on the given ObjC pointer is illegal.
+/// Diagnose if arithmetic on the given ObjC pointer is illegal.
 ///
 /// \return true on error
 static bool checkArithmeticOnObjCPointer(Sema &S,
@@ -6261,7 +6261,7 @@
   return expr;
 }
 
-/// \brief Emit a specialized diagnostic when one expression is a null pointer
+/// Emit a specialized diagnostic when one expression is a null pointer
 /// constant and the other is not a pointer.  Returns true if a diagnostic is
 /// emitted.
 bool Sema::DiagnoseConditionalForNull(Expr *LHSExpr, Expr *RHSExpr,
@@ -6302,7 +6302,7 @@
   return true;
 }
 
-/// \brief Return false if the condition expression is valid, true otherwise.
+/// Return false if the condition expression is valid, true otherwise.
 static bool checkCondition(Sema &S, Expr *Cond, SourceLocation QuestionLoc) {
   QualType CondTy = Cond->getType();
 
@@ -6321,7 +6321,7 @@
   return true;
 }
 
-/// \brief Handle when one or both operands are void type.
+/// Handle when one or both operands are void type.
 static QualType checkConditionalVoidType(Sema &S, ExprResult &LHS,
                                          ExprResult &RHS) {
     Expr *LHSExpr = LHS.get();
@@ -6338,7 +6338,7 @@
     return S.Context.VoidTy;
 }
 
-/// \brief Return false if the NullExpr can be promoted to PointerTy,
+/// Return false if the NullExpr can be promoted to PointerTy,
 /// true otherwise.
 static bool checkConditionalNullPointer(Sema &S, ExprResult &NullExpr,
                                         QualType PointerTy) {
@@ -6351,7 +6351,7 @@
   return false;
 }
 
-/// \brief Checks compatibility between two pointers and return the resulting
+/// Checks compatibility between two pointers and return the resulting
 /// type.
 static QualType checkConditionalPointerCompatibility(Sema &S, ExprResult &LHS,
                                                      ExprResult &RHS,
@@ -6485,7 +6485,7 @@
   return ResultTy;
 }
 
-/// \brief Return the resulting type when the operands are both block pointers.
+/// Return the resulting type when the operands are both block pointers.
 static QualType checkConditionalBlockPointerCompatibility(Sema &S,
                                                           ExprResult &LHS,
                                                           ExprResult &RHS,
@@ -6510,7 +6510,7 @@
   return checkConditionalPointerCompatibility(S, LHS, RHS, Loc);
 }
 
-/// \brief Return the resulting type when the operands are both pointers.
+/// Return the resulting type when the operands are both pointers.
 static QualType
 checkConditionalObjectPointersCompatibility(Sema &S, ExprResult &LHS,
                                             ExprResult &RHS,
@@ -6549,7 +6549,7 @@
   return checkConditionalPointerCompatibility(S, LHS, RHS, Loc);
 }
 
-/// \brief Return false if the first expression is not an integer and the second
+/// Return false if the first expression is not an integer and the second
 /// expression is not a pointer, true otherwise.
 static bool checkPointerIntegerMismatch(Sema &S, ExprResult &Int,
                                         Expr* PointerExpr, SourceLocation Loc,
@@ -6569,7 +6569,7 @@
   return true;
 }
 
-/// \brief Simple conversion between integer and floating point types.
+/// Simple conversion between integer and floating point types.
 ///
 /// Used when handling the OpenCL conditional operator where the
 /// condition is a vector while the other operands are scalar.
@@ -6624,7 +6624,7 @@
   (S, LHS, RHS, LHSType, RHSType, /*IsCompAssign = */ false);
 }
 
-/// \brief Convert scalar operands to a vector that matches the
+/// Convert scalar operands to a vector that matches the
 ///        condition in length.
 ///
 /// Used when handling the OpenCL conditional operator where the
@@ -6669,7 +6669,7 @@
   return VectorTy;
 }
 
-/// \brief Return false if this is a valid OpenCL condition vector
+/// Return false if this is a valid OpenCL condition vector
 static bool checkOpenCLConditionVector(Sema &S, Expr *Cond,
                                        SourceLocation QuestionLoc) {
   // OpenCL v1.1 s6.11.6 says the elements of the vector must be of
@@ -6684,7 +6684,7 @@
   return true;
 }
 
-/// \brief Return false if the vector condition type and the vector
+/// Return false if the vector condition type and the vector
 ///        result type are compatible.
 ///
 /// OpenCL v1.1 s6.11.6 requires that both vector types have the same
@@ -6714,7 +6714,7 @@
   return false;
 }
 
-/// \brief Return the resulting type for the conditional operator in
+/// Return the resulting type for the conditional operator in
 ///        OpenCL (aka "ternary selection operator", OpenCL v1.1
 ///        s6.3.i) when the condition is a vector type.
 static QualType
@@ -6749,7 +6749,7 @@
   return OpenCLConvertScalarsToVectors(S, LHS, RHS, CondTy, QuestionLoc);
 }
 
-/// \brief Return true if the Expr is block type
+/// Return true if the Expr is block type
 static bool checkBlockType(Sema &S, const Expr *E) {
   if (const CallExpr *CE = dyn_cast<CallExpr>(E)) {
     QualType Ty = CE->getCallee()->getType();
@@ -7870,7 +7870,7 @@
   return Incompatible;
 }
 
-/// \brief Constructs a transparent union from an expression that is
+/// Constructs a transparent union from an expression that is
 /// used to initialize the transparent union.
 static void ConstructTransparentUnion(Sema &S, ASTContext &C,
                                       ExprResult &EResult, QualType UnionType,
@@ -8616,7 +8616,7 @@
   return compType;
 }
 
-/// \brief Diagnose invalid arithmetic on two void pointers.
+/// Diagnose invalid arithmetic on two void pointers.
 static void diagnoseArithmeticOnTwoVoidPointers(Sema &S, SourceLocation Loc,
                                                 Expr *LHSExpr, Expr *RHSExpr) {
   S.Diag(Loc, S.getLangOpts().CPlusPlus
@@ -8626,7 +8626,7 @@
                             << RHSExpr->getSourceRange();
 }
 
-/// \brief Diagnose invalid arithmetic on a void pointer.
+/// Diagnose invalid arithmetic on a void pointer.
 static void diagnoseArithmeticOnVoidPointer(Sema &S, SourceLocation Loc,
                                             Expr *Pointer) {
   S.Diag(Loc, S.getLangOpts().CPlusPlus
@@ -8635,7 +8635,7 @@
     << 0 /* one pointer */ << Pointer->getSourceRange();
 }
 
-/// \brief Diagnose invalid arithmetic on a null pointer.
+/// Diagnose invalid arithmetic on a null pointer.
 ///
 /// If \p IsGNUIdiom is true, the operation is using the 'p = (i8*)nullptr + n'
 /// idiom, which we recognize as a GNU extension.
@@ -8650,7 +8650,7 @@
       << S.getLangOpts().CPlusPlus << Pointer->getSourceRange();
 }
 
-/// \brief Diagnose invalid arithmetic on two function pointers.
+/// Diagnose invalid arithmetic on two function pointers.
 static void diagnoseArithmeticOnTwoFunctionPointers(Sema &S, SourceLocation Loc,
                                                     Expr *LHS, Expr *RHS) {
   assert(LHS->getType()->isAnyPointerType());
@@ -8666,7 +8666,7 @@
     << LHS->getSourceRange() << RHS->getSourceRange();
 }
 
-/// \brief Diagnose invalid arithmetic on a function pointer.
+/// Diagnose invalid arithmetic on a function pointer.
 static void diagnoseArithmeticOnFunctionPointer(Sema &S, SourceLocation Loc,
                                                 Expr *Pointer) {
   assert(Pointer->getType()->isAnyPointerType());
@@ -8678,7 +8678,7 @@
     << Pointer->getSourceRange();
 }
 
-/// \brief Emit error if Operand is incomplete pointer type
+/// Emit error if Operand is incomplete pointer type
 ///
 /// \returns True if pointer has incomplete type
 static bool checkArithmeticIncompletePointerType(Sema &S, SourceLocation Loc,
@@ -8694,7 +8694,7 @@
                                PointeeTy, Operand->getSourceRange());
 }
 
-/// \brief Check the validity of an arithmetic pointer operand.
+/// Check the validity of an arithmetic pointer operand.
 ///
 /// If the operand has pointer type, this code will check for pointer types
 /// which are invalid in arithmetic operations. These will be diagnosed
@@ -8725,7 +8725,7 @@
   return true;
 }
 
-/// \brief Check the validity of a binary arithmetic operation w.r.t. pointer
+/// Check the validity of a binary arithmetic operation w.r.t. pointer
 /// operands.
 ///
 /// This routine will diagnose any invalid arithmetic on pointer operands much
@@ -8827,7 +8827,7 @@
     Self.Diag(OpLoc, diag::note_string_plus_scalar_silence);
 }
 
-/// \brief Emit a warning when adding a char literal to a string.
+/// Emit a warning when adding a char literal to a string.
 static void diagnoseStringPlusChar(Sema &Self, SourceLocation OpLoc,
                                    Expr *LHSExpr, Expr *RHSExpr) {
   const Expr *StringRefExpr = LHSExpr;
@@ -8878,7 +8878,7 @@
   }
 }
 
-/// \brief Emit error when two pointers are incompatible.
+/// Emit error when two pointers are incompatible.
 static void diagnosePointerIncompatibility(Sema &S, SourceLocation Loc,
                                            Expr *LHSExpr, Expr *RHSExpr) {
   assert(LHSExpr->getType()->isAnyPointerType());
@@ -9176,7 +9176,7 @@
     << RHS.get()->getSourceRange();
 }
 
-/// \brief Return the resulting type when a vector is shifted
+/// Return the resulting type when a vector is shifted
 ///        by a scalar or vector shift amount.
 static QualType checkVectorShift(Sema &S, ExprResult &LHS, ExprResult &RHS,
                                  SourceLocation Loc, bool IsCompAssign) {
@@ -9351,7 +9351,7 @@
       << LHS->getSourceRange() << RHS->getSourceRange();
 }
 
-/// \brief Diagnose bad pointer comparisons.
+/// Diagnose bad pointer comparisons.
 static void diagnoseDistinctPointerComparison(Sema &S, SourceLocation Loc,
                                               ExprResult &LHS, ExprResult &RHS,
                                               bool IsError) {
@@ -9361,7 +9361,7 @@
     << LHS.get()->getSourceRange() << RHS.get()->getSourceRange();
 }
 
-/// \brief Returns false if the pointers are converted to a composite type,
+/// Returns false if the pointers are converted to a composite type,
 /// true otherwise.
 static bool convertPointersToCompositeType(Sema &S, SourceLocation Loc,
                                            ExprResult &LHS, ExprResult &RHS) {
@@ -11354,7 +11354,7 @@
     AO_No_Error = 4
   };
 }
-/// \brief Diagnose invalid operand for address of operations.
+/// Diagnose invalid operand for address of operations.
 ///
 /// \param Type The type of operand which cannot have its address taken.
 static void diagnoseAddressOfInvalidType(Sema &S, SourceLocation Loc,
@@ -12166,7 +12166,7 @@
     ParensRange);
 }
 
-/// \brief It accepts a '&&' expr that is inside a '||' one.
+/// It accepts a '&&' expr that is inside a '||' one.
 /// Emit a diagnostic together with a fixit hint that wraps the '&&' expression
 /// in parentheses.
 static void
@@ -12181,7 +12181,7 @@
     Bop->getSourceRange());
 }
 
-/// \brief Returns true if the given expression can be evaluated as a constant
+/// Returns true if the given expression can be evaluated as a constant
 /// 'true'.
 static bool EvaluatesAsTrue(Sema &S, Expr *E) {
   bool Res;
@@ -12189,7 +12189,7 @@
          E->EvaluateAsBooleanCondition(Res, S.getASTContext()) && Res;
 }
 
-/// \brief Returns true if the given expression can be evaluated as a constant
+/// Returns true if the given expression can be evaluated as a constant
 /// 'false'.
 static bool EvaluatesAsFalse(Sema &S, Expr *E) {
   bool Res;
@@ -12197,7 +12197,7 @@
          E->EvaluateAsBooleanCondition(Res, S.getASTContext()) && !Res;
 }
 
-/// \brief Look for '&&' in the left hand of a '||' expr.
+/// Look for '&&' in the left hand of a '||' expr.
 static void DiagnoseLogicalAndInLogicalOrLHS(Sema &S, SourceLocation OpLoc,
                                              Expr *LHSExpr, Expr *RHSExpr) {
   if (BinaryOperator *Bop = dyn_cast<BinaryOperator>(LHSExpr)) {
@@ -12219,7 +12219,7 @@
   }
 }
 
-/// \brief Look for '&&' in the right hand of a '||' expr.
+/// Look for '&&' in the right hand of a '||' expr.
 static void DiagnoseLogicalAndInLogicalOrRHS(Sema &S, SourceLocation OpLoc,
                                              Expr *LHSExpr, Expr *RHSExpr) {
   if (BinaryOperator *Bop = dyn_cast<BinaryOperator>(RHSExpr)) {
@@ -12234,7 +12234,7 @@
   }
 }
 
-/// \brief Look for bitwise op in the left or right hand of a bitwise op with
+/// Look for bitwise op in the left or right hand of a bitwise op with
 /// lower precedence and emit a diagnostic together with a fixit hint that wraps
 /// the '&' expression in parentheses.
 static void DiagnoseBitwiseOpInBitwiseOp(Sema &S, BinaryOperatorKind Opc,
@@ -12702,7 +12702,7 @@
   return UO;
 }
 
-/// \brief Determine whether the given expression is a qualified member
+/// Determine whether the given expression is a qualified member
 /// access expression, of a form that could be turned into a pointer to member
 /// with the address-of operator.
 static bool isQualifiedMemberAccess(Expr *E) {
@@ -14195,7 +14195,7 @@
          (Func->isImplicitlyInstantiable() || (MD && !MD->isUserProvided()));
 }
 
-/// \brief Mark a function referenced, and check whether it is odr-used
+/// Mark a function referenced, and check whether it is odr-used
 /// (C++ [basic.def.odr]p2, C99 6.9p3)
 void Sema::MarkFunctionReferenced(SourceLocation Loc, FunctionDecl *Func,
                                   bool MightBeOdrUse) {
@@ -14672,7 +14672,7 @@
 }
 
 
-/// \brief Capture the given variable in the captured region.
+/// Capture the given variable in the captured region.
 static bool captureInCapturedRegion(CapturedRegionScopeInfo *RSI,
                                     VarDecl *Var, 
                                     SourceLocation Loc, 
@@ -14732,7 +14732,7 @@
   return true;
 }
 
-/// \brief Create a field within the lambda class for the variable
+/// Create a field within the lambda class for the variable
 /// being captured.
 static void addAsFieldToClosureType(Sema &S, LambdaScopeInfo *LSI, 
                                     QualType FieldType, QualType DeclRefType,
@@ -14750,7 +14750,7 @@
   Lambda->addDecl(Field);
 }
 
-/// \brief Capture the given variable in the lambda.
+/// Capture the given variable in the lambda.
 static bool captureInLambda(LambdaScopeInfo *LSI,
                             VarDecl *Var, 
                             SourceLocation Loc, 
@@ -15284,7 +15284,7 @@
   }
 }
 
-/// \brief Mark a variable referenced, and check whether it is odr-used
+/// Mark a variable referenced, and check whether it is odr-used
 /// (C++ [basic.def.odr]p2, C99 6.9p3).  Note that this should not be
 /// used directly for normal expressions referring to VarDecl.
 void Sema::MarkVariableReferenced(SourceLocation Loc, VarDecl *Var) {
@@ -15325,7 +15325,7 @@
     SemaRef.MarkAnyDeclReferenced(Loc, DM, MightBeOdrUse);
 }
 
-/// \brief Perform reference-marking and odr-use handling for a DeclRefExpr.
+/// Perform reference-marking and odr-use handling for a DeclRefExpr.
 void Sema::MarkDeclRefReferenced(DeclRefExpr *E, const Expr *Base) {
   // TODO: update this with DR# once a defect report is filed.
   // C++11 defect. The address of a pure member should not be an ODR use, even
@@ -15338,7 +15338,7 @@
   MarkExprReferenced(*this, E->getLocation(), E->getDecl(), E, OdrUse);
 }
 
-/// \brief Perform reference-marking and odr-use handling for a MemberExpr.
+/// Perform reference-marking and odr-use handling for a MemberExpr.
 void Sema::MarkMemberReferenced(MemberExpr *E) {
   // C++11 [basic.def.odr]p2:
   //   A non-overloaded function whose name appears as a potentially-evaluated
@@ -15357,7 +15357,7 @@
   MarkExprReferenced(*this, Loc, E->getMemberDecl(), E, MightBeOdrUse);
 }
 
-/// \brief Perform marking for a reference to an arbitrary declaration.  It
+/// Perform marking for a reference to an arbitrary declaration.  It
 /// marks the declaration referenced, and performs odr-use checking for
 /// functions and variables. This method should not be used when building a
 /// normal expression which refers to a variable.
@@ -15420,7 +15420,7 @@
 }
 
 namespace {
-  /// \brief Helper class that marks all of the declarations referenced by
+  /// Helper class that marks all of the declarations referenced by
   /// potentially-evaluated subexpressions as "referenced".
   class EvaluatedExprMarker : public EvaluatedExprVisitor<EvaluatedExprMarker> {
     Sema &S;
@@ -15493,7 +15493,7 @@
   };
 }
 
-/// \brief Mark any declarations that appear within this expression or any
+/// Mark any declarations that appear within this expression or any
 /// potentially-evaluated subexpressions as "referenced".
 ///
 /// \param SkipLocalVariables If true, don't mark local variables as 
@@ -15503,7 +15503,7 @@
   EvaluatedExprMarker(*this, SkipLocalVariables).Visit(E);
 }
 
-/// \brief Emit a diagnostic that describes an effect on the run-time behavior
+/// Emit a diagnostic that describes an effect on the run-time behavior
 /// of the program being compiled.
 ///
 /// This routine emits the given diagnostic when the code currently being
@@ -15660,7 +15660,7 @@
       << FixItHint::CreateReplacement(Loc, "==");
 }
 
-/// \brief Redundant parentheses over an equality comparison can indicate
+/// Redundant parentheses over an equality comparison can indicate
 /// that the user intended an assignment used as condition.
 void Sema::DiagnoseEqualityWithExtraParens(ParenExpr *ParenE) {
   // Don't warn if the parens came from a macro.
Index: cfe/trunk/lib/Sema/SemaExprCXX.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaExprCXX.cpp
+++ cfe/trunk/lib/Sema/SemaExprCXX.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Implements semantic analysis for C++ expressions.
+/// Implements semantic analysis for C++ expressions.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -42,7 +42,7 @@
 using namespace clang;
 using namespace sema;
 
-/// \brief Handle the result of the special case name lookup for inheriting
+/// Handle the result of the special case name lookup for inheriting
 /// constructor declarations. 'NS::X::X' and 'NS::X<...>::X' are treated as
 /// constructor names in member using declarations, even if 'X' is not the
 /// name of the corresponding type.
@@ -383,7 +383,7 @@
   llvm_unreachable("unknown nested name specifier kind");
 }
 
-/// \brief Build a C++ typeid expression with a type operand.
+/// Build a C++ typeid expression with a type operand.
 ExprResult Sema::BuildCXXTypeId(QualType TypeInfoType,
                                 SourceLocation TypeidLoc,
                                 TypeSourceInfo *Operand,
@@ -408,7 +408,7 @@
                                      SourceRange(TypeidLoc, RParenLoc));
 }
 
-/// \brief Build a C++ typeid expression with an expression operand.
+/// Build a C++ typeid expression with an expression operand.
 ExprResult Sema::BuildCXXTypeId(QualType TypeInfoType,
                                 SourceLocation TypeidLoc,
                                 Expr *E,
@@ -560,7 +560,7 @@
   }
 }
 
-/// \brief Build a Microsoft __uuidof expression with a type operand.
+/// Build a Microsoft __uuidof expression with a type operand.
 ExprResult Sema::BuildCXXUuidof(QualType TypeInfoType,
                                 SourceLocation TypeidLoc,
                                 TypeSourceInfo *Operand,
@@ -580,7 +580,7 @@
                                      SourceRange(TypeidLoc, RParenLoc));
 }
 
-/// \brief Build a Microsoft __uuidof expression with an expression operand.
+/// Build a Microsoft __uuidof expression with an expression operand.
 ExprResult Sema::BuildCXXUuidof(QualType TypeInfoType,
                                 SourceLocation TypeidLoc,
                                 Expr *E,
@@ -1392,7 +1392,7 @@
   return Result;
 }
 
-/// \brief Determine whether the given function is a non-placement
+/// Determine whether the given function is a non-placement
 /// deallocation function.
 static bool isNonPlacementDeallocationFunction(Sema &S, FunctionDecl *FD) {
   if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(FD))
@@ -1560,7 +1560,7 @@
   return Best && Best.HasSizeT;
 }
 
-/// \brief Parsed a C++ 'new' expression (C++ 5.3.4).
+/// Parsed a C++ 'new' expression (C++ 5.3.4).
 ///
 /// E.g.:
 /// @code new (memory) int[size][4] @endcode
@@ -2119,7 +2119,7 @@
                  Range, DirectInitRange);
 }
 
-/// \brief Checks that a type is suitable as the allocated type
+/// Checks that a type is suitable as the allocated type
 /// in a new-expression.
 bool Sema::CheckAllocatedType(QualType AllocType, SourceLocation Loc,
                               SourceRange R) {
@@ -2877,7 +2877,7 @@
 }
 
 namespace {
-/// \brief Checks whether delete-expression, and new-expression used for
+/// Checks whether delete-expression, and new-expression used for
 ///  initializing deletee have the same array form.
 class MismatchingNewDeleteDetector {
 public:
@@ -2900,7 +2900,7 @@
       : Field(nullptr), IsArrayForm(false), EndOfTU(EndOfTU),
         HasUndefinedConstructors(false) {}
 
-  /// \brief Checks whether pointee of a delete-expression is initialized with
+  /// Checks whether pointee of a delete-expression is initialized with
   /// matching form of new-expression.
   ///
   /// If return value is \c VarInitMismatches or \c MemberInitMismatches at the
@@ -2911,7 +2911,7 @@
   /// couldn't be analyzed. If at least one constructor initializes the member
   /// with matching type of new, the return value is \c NoMismatch.
   MismatchResult analyzeDeleteExpr(const CXXDeleteExpr *DE);
-  /// \brief Analyzes a class member.
+  /// Analyzes a class member.
   /// \param Field Class member to analyze.
   /// \param DeleteWasArrayForm Array form-ness of the delete-expression used
   /// for deleting the \p Field.
@@ -2924,13 +2924,13 @@
 
 private:
   const bool EndOfTU;
-  /// \brief Indicates that there is at least one constructor without body.
+  /// Indicates that there is at least one constructor without body.
   bool HasUndefinedConstructors;
-  /// \brief Returns \c CXXNewExpr from given initialization expression.
+  /// Returns \c CXXNewExpr from given initialization expression.
   /// \param E Expression used for initializing pointee in delete-expression.
   /// E can be a single-element \c InitListExpr consisting of new-expression.
   const CXXNewExpr *getNewExprFromInitListOrExpr(const Expr *E);
-  /// \brief Returns whether member is initialized with mismatching form of
+  /// Returns whether member is initialized with mismatching form of
   /// \c new either by the member initializer or in-class initialization.
   ///
   /// If bodies of all constructors are not visible at the end of translation
@@ -2938,7 +2938,7 @@
   /// form of \c new, mismatch cannot be proven, and this function will return
   /// \c NoMismatch.
   MismatchResult analyzeMemberExpr(const MemberExpr *ME);
-  /// \brief Returns whether variable is initialized with mismatching form of
+  /// Returns whether variable is initialized with mismatching form of
   /// \c new.
   ///
   /// If variable is initialized with matching form of \c new or variable is not
@@ -2946,7 +2946,7 @@
   /// If variable is initialized with mismatching form of \c new, returns false.
   /// \param D Variable to analyze.
   bool hasMatchingVarInit(const DeclRefExpr *D);
-  /// \brief Checks whether the constructor initializes pointee with mismatching
+  /// Checks whether the constructor initializes pointee with mismatching
   /// form of \c new.
   ///
   /// Returns true, if member is initialized with matching form of \c new in
@@ -2955,7 +2955,7 @@
   /// constructor isn't defined at the point where delete-expression is seen, or
   /// member isn't initialized by the constructor.
   bool hasMatchingNewInCtor(const CXXConstructorDecl *CD);
-  /// \brief Checks whether member is initialized with matching form of
+  /// Checks whether member is initialized with matching form of
   /// \c new in member initializer list.
   bool hasMatchingNewInCtorInit(const CXXCtorInitializer *CI);
   /// Checks whether member is initialized with mismatching form of \c new by
@@ -3532,7 +3532,7 @@
                          CK == ConditionKind::ConstexprIf);
 }
 
-/// \brief Check the use of the given variable as a C++ condition in an if,
+/// Check the use of the given variable as a C++ condition in an if,
 /// while, do-while, or switch statement.
 ExprResult Sema::CheckConditionVariable(VarDecl *ConditionVar,
                                         SourceLocation StmtLoc,
@@ -4231,7 +4231,7 @@
   return From;
 }
 
-/// \brief Check the completeness of a type in a unary type trait.
+/// Check the completeness of a type in a unary type trait.
 ///
 /// If the particular type trait requires a complete type, tries to complete
 /// it. If completing the type fails, a diagnostic is emitted and false
@@ -5433,7 +5433,7 @@
   return Result;
 }
 
-/// \brief Try to convert a type to another according to C++11 5.16p3.
+/// Try to convert a type to another according to C++11 5.16p3.
 ///
 /// This is part of the parameter validation for the ? operator. If either
 /// value operand is a class type, the two operands are attempted to be
@@ -5527,7 +5527,7 @@
   return false;
 }
 
-/// \brief Try to find a common type for two according to C++0x 5.16p5.
+/// Try to find a common type for two according to C++0x 5.16p5.
 ///
 /// This is part of the parameter validation for the ? operator. If either
 /// value operand is a class type, overload resolution is used to find a
@@ -5589,7 +5589,7 @@
   return true;
 }
 
-/// \brief Perform an "extended" implicit conversion as returned by
+/// Perform an "extended" implicit conversion as returned by
 /// TryClassUnification.
 static bool ConvertForConditional(Sema &Self, ExprResult &E, QualType T) {
   InitializedEntity Entity = InitializedEntity::InitializeTemporary(T);
@@ -5605,7 +5605,7 @@
   return false;
 }
 
-/// \brief Check the operands of ?: under C++ semantics.
+/// Check the operands of ?: under C++ semantics.
 ///
 /// See C++ [expr.cond]. Note that LHS is never null, even for the GNU x ?: y
 /// extension. In this case, LHS == Cond. (But they're not aliases.)
@@ -5967,7 +5967,7 @@
   llvm_unreachable("invalid ExceptionSpecificationType");
 }
 
-/// \brief Find a merged pointer type and convert the two expressions to it.
+/// Find a merged pointer type and convert the two expressions to it.
 ///
 /// This finds the composite pointer type (or member pointer type) for @p E1
 /// and @p E2 according to C++1z 5p14. It converts both expressions to this
@@ -6734,7 +6734,7 @@
   return false;
 }
 
-/// \brief Check if it's ok to try and recover dot pseudo destructor calls on
+/// Check if it's ok to try and recover dot pseudo destructor calls on
 /// pointer objects.
 static bool
 canRecoverDotPseudoDestructorCallsOnPointerObjects(Sema &SemaRef,
@@ -7285,7 +7285,7 @@
   return !IsVariableAConstantExpression(Var, Context);
 }
 
-/// \brief Check if the current lambda has any potential captures
+/// Check if the current lambda has any potential captures
 /// that must be captured by any of its enclosing lambdas that are ready to
 /// capture. If there is a lambda that can capture a nested
 /// potential-capture, go ahead and do so.  Also, check to see if any
@@ -7465,7 +7465,7 @@
   llvm::SmallDenseMap<TypoExpr *, ExprResult, 2> TransformCache;
   llvm::SmallDenseMap<OverloadExpr *, Expr *, 4> OverloadResolution;
 
-  /// \brief Emit diagnostics for all of the TypoExprs encountered.
+  /// Emit diagnostics for all of the TypoExprs encountered.
   /// If the TypoExprs were successfully corrected, then the diagnostics should
   /// suggest the corrections. Otherwise the diagnostics will not suggest
   /// anything (having been passed an empty TypoCorrection).
@@ -7491,7 +7491,7 @@
     }
   }
 
-  /// \brief If corrections for the first TypoExpr have been exhausted for a
+  /// If corrections for the first TypoExpr have been exhausted for a
   /// given combination of the other TypoExprs, retry those corrections against
   /// the next combination of substitutions for the other TypoExprs by advancing
   /// to the next potential correction of the second TypoExpr. For the second
Index: cfe/trunk/lib/Sema/SemaExprMember.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaExprMember.cpp
+++ cfe/trunk/lib/Sema/SemaExprMember.cpp
@@ -888,7 +888,7 @@
                                            NameInfo.getLoc());
 }
 
-/// \brief Build a MemberExpr AST node.
+/// Build a MemberExpr AST node.
 static MemberExpr *BuildMemberExpr(
     Sema &SemaRef, ASTContext &C, Expr *Base, bool isArrow,
     SourceLocation OpLoc, const CXXScopeSpec &SS, SourceLocation TemplateKWLoc,
@@ -903,7 +903,7 @@
   return E;
 }
 
-/// \brief Determine if the given scope is within a function-try-block handler.
+/// Determine if the given scope is within a function-try-block handler.
 static bool IsInFnTryBlockHandler(const Scope *S) {
   // Walk the scope stack until finding a FnTryCatchScope, or leave the
   // function scope. If a FnTryCatchScope is found, check whether the TryScope
Index: cfe/trunk/lib/Sema/SemaExprObjC.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaExprObjC.cpp
+++ cfe/trunk/lib/Sema/SemaExprObjC.cpp
@@ -141,7 +141,7 @@
   return new (Context) ObjCStringLiteral(S, Ty, AtLoc);
 }
 
-/// \brief Emits an error if the given method does not exist, or if the return
+/// Emits an error if the given method does not exist, or if the return
 /// type is not an Objective-C object.
 static bool validateBoxingMethod(Sema &S, SourceLocation Loc,
                                  const ObjCInterfaceDecl *Class,
@@ -165,7 +165,7 @@
   return true;
 }
 
-/// \brief Maps ObjCLiteralKind to NSClassIdKindKind
+/// Maps ObjCLiteralKind to NSClassIdKindKind
 static NSAPI::NSClassIdKindKind ClassKindFromLiteralKind(
                                             Sema::ObjCLiteralKind LiteralKind) {
   switch (LiteralKind) {
@@ -189,7 +189,7 @@
   llvm_unreachable("LiteralKind can't be converted into a ClassKind");
 }
 
-/// \brief Validates ObjCInterfaceDecl availability.
+/// Validates ObjCInterfaceDecl availability.
 /// ObjCInterfaceDecl, used to create ObjC literals, should be defined
 /// if clang not in a debugger mode.
 static bool ValidateObjCLiteralInterfaceDecl(Sema &S, ObjCInterfaceDecl *Decl,
@@ -211,7 +211,7 @@
   return true;
 }
 
-/// \brief Looks up ObjCInterfaceDecl of a given NSClassIdKindKind.
+/// Looks up ObjCInterfaceDecl of a given NSClassIdKindKind.
 /// Used to create ObjC literals, such as NSDictionary (@{}),
 /// NSArray (@[]) and Boxed Expressions (@())
 static ObjCInterfaceDecl *LookupObjCInterfaceDeclForLiteral(Sema &S,
@@ -236,7 +236,7 @@
   return ID;
 }
 
-/// \brief Retrieve the NSNumber factory method that should be used to create
+/// Retrieve the NSNumber factory method that should be used to create
 /// an Objective-C literal for the given type.
 static ObjCMethodDecl *getNSNumberFactoryMethod(Sema &S, SourceLocation Loc,
                                                 QualType NumberType,
@@ -379,7 +379,7 @@
   return BuildObjCNumericLiteral(AtLoc, Inner.get());
 }
 
-/// \brief Check that the given expression is a valid element of an Objective-C
+/// Check that the given expression is a valid element of an Objective-C
 /// collection literal.
 static ExprResult CheckObjCCollectionLiteralElement(Sema &S, Expr *Element, 
                                                     QualType T,
@@ -2324,7 +2324,7 @@
   }
 }
 
-/// \brief Diagnose use of %s directive in an NSString which is being passed
+/// Diagnose use of %s directive in an NSString which is being passed
 /// as formatting string to formatting method.
 static void
 DiagnoseCStringFormatDirectiveInObjCAPI(Sema &S,
@@ -2363,7 +2363,7 @@
   }
 }
 
-/// \brief Build an Objective-C class message expression.
+/// Build an Objective-C class message expression.
 ///
 /// This routine takes care of both normal class messages and
 /// class messages to the superclass.
@@ -2587,7 +2587,7 @@
   return false;
 }
 
-/// \brief Build an Objective-C instance message expression.
+/// Build an Objective-C instance message expression.
 ///
 /// This routine takes care of both normal instance messages and
 /// instance messages to the superclass instance.
Index: cfe/trunk/lib/Sema/SemaInit.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaInit.cpp
+++ cfe/trunk/lib/Sema/SemaInit.cpp
@@ -32,7 +32,7 @@
 // Sema Initialization Checking
 //===----------------------------------------------------------------------===//
 
-/// \brief Check whether T is compatible with a wide character type (wchar_t,
+/// Check whether T is compatible with a wide character type (wchar_t,
 /// char16_t or char32_t).
 static bool IsWideCharCompatible(QualType T, ASTContext &Context) {
   if (Context.typesAreCompatible(Context.getWideCharType(), T))
@@ -54,7 +54,7 @@
   SIF_Other
 };
 
-/// \brief Check whether the array of type AT can be initialized by the Init
+/// Check whether the array of type AT can be initialized by the Init
 /// expression by means of string initialization. Returns SIF_None if so,
 /// otherwise returns a StringInitFailureKind that describes why the
 /// initialization would not work.
@@ -217,7 +217,7 @@
 
 namespace {
 
-/// @brief Semantic checking for initializer lists.
+/// Semantic checking for initializer lists.
 ///
 /// The InitListChecker class contains a set of routines that each
 /// handle the initialization of a certain kind of entity, e.g.,
@@ -377,7 +377,7 @@
                   bool TreatUnavailableAsInvalid);
   bool HadError() { return hadError; }
 
-  // @brief Retrieves the fully-structured initializer list used for
+  // Retrieves the fully-structured initializer list used for
   // semantic analysis and code generation.
   InitListExpr *getFullyStructuredList() const { return FullyStructuredList; }
 };
@@ -2025,7 +2025,7 @@
                           StructuredList, StructuredIndex);
 }
 
-/// \brief Expand a field designator that refers to a member of an
+/// Expand a field designator that refers to a member of an
 /// anonymous struct or union into a series of field designators that
 /// refers to the field within the appropriate subobject.
 ///
@@ -2089,7 +2089,7 @@
 
 } // end anonymous namespace
 
-/// @brief Check the well-formedness of a C99 designated initializer.
+/// Check the well-formedness of a C99 designated initializer.
 ///
 /// Determines whether the designated initializer @p DIE, which
 /// resides at the given @p Index within the initializer list @p
@@ -3545,7 +3545,7 @@
                                   InitializationSequence &Sequence,
                                   bool TreatUnavailableAsInvalid);
 
-/// \brief When initializing from init list via constructor, handle
+/// When initializing from init list via constructor, handle
 /// initialization of an object of type std::initializer_list<T>.
 ///
 /// \return true if we have handled initialization of an object of type
@@ -3706,7 +3706,7 @@
   return CandidateSet.BestViableFunction(S, DeclLoc, Best);
 }
 
-/// \brief Attempt initialization by constructor (C++ [dcl.init]), which
+/// Attempt initialization by constructor (C++ [dcl.init]), which
 /// enumerates the constructors of the initialized entity and performs overload
 /// resolution to select the best.
 /// \param DestType       The destination class type.
@@ -3923,7 +3923,7 @@
                                    InitializationSequence &Sequence,
                                    InitListExpr *InitList = nullptr);
 
-/// \brief Attempt list initialization of a reference.
+/// Attempt list initialization of a reference.
 static void TryReferenceListInitialization(Sema &S,
                                            const InitializedEntity &Entity,
                                            const InitializationKind &Kind,
@@ -3997,7 +3997,7 @@
   }
 }
 
-/// \brief Attempt list initialization (C++0x [dcl.init.list])
+/// Attempt list initialization (C++0x [dcl.init.list])
 static void TryListInitialization(Sema &S,
                                   const InitializedEntity &Entity,
                                   const InitializationKind &Kind,
@@ -4192,7 +4192,7 @@
   Sequence.AddListInitializationStep(DestType);
 }
 
-/// \brief Try a reference initialization that involves calling a conversion
+/// Try a reference initialization that involves calling a conversion
 /// function.
 static OverloadingResult TryRefInitWithConversionFunction(
     Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind,
@@ -4382,7 +4382,7 @@
                                            const InitializedEntity &Entity,
                                            Expr *CurInitExpr);
 
-/// \brief Attempt reference initialization (C++0x [dcl.init.ref])
+/// Attempt reference initialization (C++0x [dcl.init.ref])
 static void TryReferenceInitialization(Sema &S,
                                        const InitializedEntity &Entity,
                                        const InitializationKind &Kind,
@@ -4415,7 +4415,7 @@
   return E->refersToBitField() || E->refersToVectorElement();
 }
 
-/// \brief Reference initialization without resolving overloaded functions.
+/// Reference initialization without resolving overloaded functions.
 static void TryReferenceInitializationCore(Sema &S,
                                            const InitializedEntity &Entity,
                                            const InitializationKind &Kind,
@@ -4675,7 +4675,7 @@
   Sequence.AddReferenceBindingStep(cv1T1, /*bindingTemporary=*/true);
 }
 
-/// \brief Attempt character array initialization from a string literal
+/// Attempt character array initialization from a string literal
 /// (C++ [dcl.init.string], C99 6.7.8).
 static void TryStringLiteralInitialization(Sema &S,
                                            const InitializedEntity &Entity,
@@ -4685,7 +4685,7 @@
   Sequence.AddStringInitStep(Entity.getType());
 }
 
-/// \brief Attempt value initialization (C++ [dcl.init]p7).
+/// Attempt value initialization (C++ [dcl.init]p7).
 static void TryValueInitialization(Sema &S,
                                    const InitializedEntity &Entity,
                                    const InitializationKind &Kind,
@@ -4763,7 +4763,7 @@
   Sequence.AddZeroInitializationStep(Entity.getType());
 }
 
-/// \brief Attempt default initialization (C++ [dcl.init]p6).
+/// Attempt default initialization (C++ [dcl.init]p6).
 static void TryDefaultInitialization(Sema &S,
                                      const InitializedEntity &Entity,
                                      const InitializationKind &Kind,
@@ -4802,7 +4802,7 @@
   }
 }
 
-/// \brief Attempt a user-defined conversion between two types (C++ [dcl.init]),
+/// Attempt a user-defined conversion between two types (C++ [dcl.init]),
 /// which enumerates all conversion functions and performs overload resolution
 /// to select the best.
 static void TryUserDefinedConversion(Sema &S,
@@ -5081,7 +5081,7 @@
     << src->getSourceRange();
 }
 
-/// \brief Determine whether we have compatible array types for the
+/// Determine whether we have compatible array types for the
 /// purposes of GNU by-copy array initialization.
 static bool hasCompatibleArrayTypes(ASTContext &Context, const ArrayType *Dest,
                                     const ArrayType *Source) {
@@ -5648,7 +5648,7 @@
   llvm_unreachable("Invalid EntityKind!");
 }
 
-/// \brief Whether we should bind a created object as a temporary when
+/// Whether we should bind a created object as a temporary when
 /// initializing the given entity.
 static bool shouldBindAsTemporary(const InitializedEntity &Entity) {
   switch (Entity.getKind()) {
@@ -5679,7 +5679,7 @@
   llvm_unreachable("missed an InitializedEntity kind?");
 }
 
-/// \brief Whether the given entity, when initialized with an object
+/// Whether the given entity, when initialized with an object
 /// created for that initialization, requires destruction.
 static bool shouldDestroyEntity(const InitializedEntity &Entity) {
   switch (Entity.getKind()) {
@@ -5710,7 +5710,7 @@
   llvm_unreachable("missed an InitializedEntity kind?");
 }
 
-/// \brief Get the location at which initialization diagnostics should appear.
+/// Get the location at which initialization diagnostics should appear.
 static SourceLocation getInitializationLoc(const InitializedEntity &Entity,
                                            Expr *Initializer) {
   switch (Entity.getKind()) {
@@ -5746,7 +5746,7 @@
   llvm_unreachable("missed an InitializedEntity kind?");
 }
 
-/// \brief Make a (potentially elidable) temporary copy of the object
+/// Make a (potentially elidable) temporary copy of the object
 /// provided by the given initializer by calling the appropriate copy
 /// constructor.
 ///
@@ -5911,7 +5911,7 @@
   return CurInit;
 }
 
-/// \brief Check whether elidable copy construction for binding a reference to
+/// Check whether elidable copy construction for binding a reference to
 /// a temporary would have succeeded if we were building in C++98 mode, for
 /// -Wc++98-compat.
 static void CheckCXX98CompatAccessibleCopy(Sema &S,
Index: cfe/trunk/lib/Sema/SemaLambda.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaLambda.cpp
+++ cfe/trunk/lib/Sema/SemaLambda.cpp
@@ -24,7 +24,7 @@
 using namespace clang;
 using namespace sema;
 
-/// \brief Examines the FunctionScopeInfo stack to determine the nearest
+/// Examines the FunctionScopeInfo stack to determine the nearest
 /// enclosing lambda (to the current lambda) that is 'capture-ready' for 
 /// the variable referenced in the current lambda (i.e. \p VarToCapture).
 /// If successful, returns the index into Sema's FunctionScopeInfo stack
@@ -135,7 +135,7 @@
   return NoLambdaIsCaptureReady;
 }
 
-/// \brief Examines the FunctionScopeInfo stack to determine the nearest
+/// Examines the FunctionScopeInfo stack to determine the nearest
 /// enclosing lambda (to the current lambda) that is 'capture-capable' for 
 /// the variable referenced in the current lambda (i.e. \p VarToCapture).
 /// If successful, returns the index into Sema's FunctionScopeInfo stack
@@ -263,7 +263,7 @@
   return Class;
 }
 
-/// \brief Determine whether the given context is or is enclosed in an inline
+/// Determine whether the given context is or is enclosed in an inline
 /// function.
 static bool isInInlineFunction(const DeclContext *DC) {
   while (!DC->isFileContext()) {
@@ -1189,7 +1189,7 @@
                                  CallOpProto->getParamTypes(), InvokerExtInfo);
 }
 
-/// \brief Add a lambda's conversion to function pointer, as described in
+/// Add a lambda's conversion to function pointer, as described in
 /// C++11 [expr.prim.lambda]p6.
 static void addFunctionPointerConversion(Sema &S,
                                          SourceRange IntroducerRange,
@@ -1358,7 +1358,7 @@
     Class->addDecl(Invoke);
 }
 
-/// \brief Add a lambda's conversion to block pointer.
+/// Add a lambda's conversion to block pointer.
 static void addBlockPointerConversion(Sema &S, 
                                       SourceRange IntroducerRange,
                                       CXXRecordDecl *Class,
Index: cfe/trunk/lib/Sema/SemaLookup.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaLookup.cpp
+++ cfe/trunk/lib/Sema/SemaLookup.cpp
@@ -356,7 +356,7 @@
   return D->getDeclContext()->getRedeclContext();
 }
 
-/// \brief Determine whether \p D is a better lookup result than \p Existing,
+/// Determine whether \p D is a better lookup result than \p Existing,
 /// given that they declare the same entity.
 static bool isPreferredLookupResult(Sema &S, Sema::LookupNameKind Kind,
                                     NamedDecl *D, NamedDecl *Existing) {
@@ -669,7 +669,7 @@
     D->dump();
 }
 
-/// \brief Lookup a builtin function, when name lookup would otherwise
+/// Lookup a builtin function, when name lookup would otherwise
 /// fail.
 static bool LookupBuiltin(Sema &S, LookupResult &R) {
   Sema::LookupNameKind NameKind = R.getLookupKind();
@@ -713,7 +713,7 @@
   return false;
 }
 
-/// \brief Determine whether we can declare a special member function within
+/// Determine whether we can declare a special member function within
 /// the class at this point.
 static bool CanDeclareSpecialMemberFunction(const CXXRecordDecl *Class) {
   // We need to have a definition for the class.
@@ -755,7 +755,7 @@
     DeclareImplicitDestructor(Class);
 }
 
-/// \brief Determine whether this is the name of an implicitly-declared
+/// Determine whether this is the name of an implicitly-declared
 /// special member function.
 static bool isImplicitlyDeclaredMemberFunctionName(DeclarationName Name) {
   switch (Name.getNameKind()) {
@@ -773,7 +773,7 @@
   return false;
 }
 
-/// \brief If there are any implicit member functions with the given name
+/// If there are any implicit member functions with the given name
 /// that need to be declared in the given declaration context, do so.
 static void DeclareImplicitMemberFunctionsWithName(Sema &S,
                                                    DeclarationName Name,
@@ -1354,7 +1354,7 @@
       makeMergedDefinitionVisible(Param);
 }
 
-/// \brief Find the module in which the given declaration was defined.
+/// Find the module in which the given declaration was defined.
 static Module *getDefiningModule(Sema &S, Decl *Entity) {
   if (FunctionDecl *FD = dyn_cast<FunctionDecl>(Entity)) {
     // If this function was instantiated from a template, the defining module is
@@ -1501,7 +1501,7 @@
   return false;
 }
 
-/// \brief Determine whether a declaration is visible to name lookup.
+/// Determine whether a declaration is visible to name lookup.
 ///
 /// This routine determines whether the declaration D is visible in the current
 /// lookup context, taking into account the current template instantiation
@@ -1648,7 +1648,7 @@
   return New->isExternallyDeclarable();
 }
 
-/// \brief Retrieve the visible declaration corresponding to D, if any.
+/// Retrieve the visible declaration corresponding to D, if any.
 ///
 /// This routine determines whether the declaration D is visible in the current
 /// module, with the current imports. If not, it checks whether any
@@ -1706,7 +1706,7 @@
   return findAcceptableDecl(getSema(), D, IDNS);
 }
 
-/// @brief Perform unqualified name lookup starting from a given
+/// Perform unqualified name lookup starting from a given
 /// scope.
 ///
 /// Unqualified name lookup (C++ [basic.lookup.unqual], C99 6.2.1) is
@@ -1844,7 +1844,7 @@
   return (ExternalSource && ExternalSource->LookupUnqualified(R, S));
 }
 
-/// @brief Perform qualified name lookup in the namespaces nominated by
+/// Perform qualified name lookup in the namespaces nominated by
 /// using directives by the given context.
 ///
 /// C++98 [namespace.qual]p2:
@@ -1950,7 +1950,7 @@
   return Found;
 }
 
-/// \brief Callback that looks for any member of a class with the given name.
+/// Callback that looks for any member of a class with the given name.
 static bool LookupAnyMember(const CXXBaseSpecifier *Specifier,
                             CXXBasePath &Path, DeclarationName Name) {
   RecordDecl *BaseRecord = Specifier->getType()->getAs<RecordType>()->getDecl();
@@ -1959,7 +1959,7 @@
   return !Path.Decls.empty();
 }
 
-/// \brief Determine whether the given set of member declarations contains only
+/// Determine whether the given set of member declarations contains only
 /// static members, nested types, and enumerators.
 template<typename InputIterator>
 static bool HasOnlyStaticMembers(InputIterator First, InputIterator Last) {
@@ -1991,7 +1991,7 @@
   return false;
 }
 
-/// \brief Perform qualified name lookup into a given context.
+/// Perform qualified name lookup into a given context.
 ///
 /// Qualified name lookup (C++ [basic.lookup.qual]) is used to find
 /// names when the context of those names is explicit specified, e.g.,
@@ -2215,7 +2215,7 @@
   return true;
 }
 
-/// \brief Performs qualified name lookup or special type of lookup for
+/// Performs qualified name lookup or special type of lookup for
 /// "__super::" scope specifier.
 ///
 /// This routine is a convenience overload meant to be called from contexts
@@ -2240,7 +2240,7 @@
     return LookupQualifiedName(R, LookupCtx);
 }
 
-/// @brief Performs name lookup for a name that was parsed in the
+/// Performs name lookup for a name that was parsed in the
 /// source code, and may contain a C++ scope specifier.
 ///
 /// This routine is a convenience routine meant to be called from
@@ -2294,7 +2294,7 @@
   return LookupName(R, S, AllowBuiltinCreation);
 }
 
-/// \brief Perform qualified name lookup into all base classes of the given
+/// Perform qualified name lookup into all base classes of the given
 /// class.
 ///
 /// \param R captures both the lookup criteria and any lookup results found.
@@ -2332,7 +2332,7 @@
   return !R.empty();
 }
 
-/// \brief Produce a diagnostic describing the ambiguity that resulted
+/// Produce a diagnostic describing the ambiguity that resulted
 /// from name lookup.
 ///
 /// \param Result The result of the ambiguous lookup to be diagnosed.
@@ -2448,7 +2448,7 @@
     Namespaces.insert(Ctx->getPrimaryContext());
 }
 
-// \brief Add the associated classes and namespaces for argument-dependent
+// Add the associated classes and namespaces for argument-dependent
 // lookup that involves a template argument (C++ [basic.lookup.koenig]p2).
 static void
 addAssociatedClassesAndNamespaces(AssociatedLookup &Result,
@@ -2498,7 +2498,7 @@
   }
 }
 
-// \brief Add the associated classes and namespaces for
+// Add the associated classes and namespaces for
 // argument-dependent lookup with an argument of class type
 // (C++ [basic.lookup.koenig]p2).
 static void
@@ -2593,7 +2593,7 @@
   }
 }
 
-// \brief Add the associated classes and namespaces for
+// Add the associated classes and namespaces for
 // argument-dependent lookup with an argument of type T
 // (C++ [basic.lookup.koenig]p2).
 static void
@@ -2757,7 +2757,7 @@
   }
 }
 
-/// \brief Find the associated classes and namespaces for
+/// Find the associated classes and namespaces for
 /// argument-dependent lookup for a call with the given set of
 /// arguments.
 ///
@@ -2824,7 +2824,7 @@
   return R.getAsSingle<NamedDecl>();
 }
 
-/// \brief Find the protocol with the given name, if any.
+/// Find the protocol with the given name, if any.
 ObjCProtocolDecl *Sema::LookupProtocol(IdentifierInfo *II,
                                        SourceLocation IdLoc,
                                        RedeclarationKind Redecl) {
@@ -3051,7 +3051,7 @@
   return *Result;
 }
 
-/// \brief Look up the default constructor for the given class.
+/// Look up the default constructor for the given class.
 CXXConstructorDecl *Sema::LookupDefaultConstructor(CXXRecordDecl *Class) {
   SpecialMemberOverloadResult Result =
     LookupSpecialMember(Class, CXXDefaultConstructor, false, false, false,
@@ -3060,7 +3060,7 @@
   return cast_or_null<CXXConstructorDecl>(Result.getMethod());
 }
 
-/// \brief Look up the copying constructor for the given class.
+/// Look up the copying constructor for the given class.
 CXXConstructorDecl *Sema::LookupCopyingConstructor(CXXRecordDecl *Class,
                                                    unsigned Quals) {
   assert(!(Quals & ~(Qualifiers::Const | Qualifiers::Volatile)) &&
@@ -3072,7 +3072,7 @@
   return cast_or_null<CXXConstructorDecl>(Result.getMethod());
 }
 
-/// \brief Look up the moving constructor for the given class.
+/// Look up the moving constructor for the given class.
 CXXConstructorDecl *Sema::LookupMovingConstructor(CXXRecordDecl *Class,
                                                   unsigned Quals) {
   SpecialMemberOverloadResult Result =
@@ -3082,7 +3082,7 @@
   return cast_or_null<CXXConstructorDecl>(Result.getMethod());
 }
 
-/// \brief Look up the constructors for the given class.
+/// Look up the constructors for the given class.
 DeclContext::lookup_result Sema::LookupConstructors(CXXRecordDecl *Class) {
   // If the implicit constructors have not yet been declared, do so now.
   if (CanDeclareSpecialMemberFunction(Class)) {
@@ -3099,7 +3099,7 @@
   return Class->lookup(Name);
 }
 
-/// \brief Look up the copying assignment operator for the given class.
+/// Look up the copying assignment operator for the given class.
 CXXMethodDecl *Sema::LookupCopyingAssignment(CXXRecordDecl *Class,
                                              unsigned Quals, bool RValueThis,
                                              unsigned ThisQuals) {
@@ -3116,7 +3116,7 @@
   return Result.getMethod();
 }
 
-/// \brief Look up the moving assignment operator for the given class.
+/// Look up the moving assignment operator for the given class.
 CXXMethodDecl *Sema::LookupMovingAssignment(CXXRecordDecl *Class,
                                             unsigned Quals,
                                             bool RValueThis,
@@ -3132,7 +3132,7 @@
   return Result.getMethod();
 }
 
-/// \brief Look for the destructor of the given class.
+/// Look for the destructor of the given class.
 ///
 /// During semantic analysis, this routine should be used in lieu of
 /// CXXRecordDecl::getDestructor().
@@ -3389,26 +3389,26 @@
 
 class VisibleDeclsRecord {
 public:
-  /// \brief An entry in the shadow map, which is optimized to store a
+  /// An entry in the shadow map, which is optimized to store a
   /// single declaration (the common case) but can also store a list
   /// of declarations.
   typedef llvm::TinyPtrVector<NamedDecl*> ShadowMapEntry;
 
 private:
-  /// \brief A mapping from declaration names to the declarations that have
+  /// A mapping from declaration names to the declarations that have
   /// this name within a particular scope.
   typedef llvm::DenseMap<DeclarationName, ShadowMapEntry> ShadowMap;
 
-  /// \brief A list of shadow maps, which is used to model name hiding.
+  /// A list of shadow maps, which is used to model name hiding.
   std::list<ShadowMap> ShadowMaps;
 
-  /// \brief The declaration contexts we have already visited.
+  /// The declaration contexts we have already visited.
   llvm::SmallPtrSet<DeclContext *, 8> VisitedContexts;
 
   friend class ShadowContextRAII;
 
 public:
-  /// \brief Determine whether we have already visited this context
+  /// Determine whether we have already visited this context
   /// (and, if not, note that we are going to visit that context now).
   bool visitedContext(DeclContext *Ctx) {
     return !VisitedContexts.insert(Ctx).second;
@@ -3418,20 +3418,20 @@
     return VisitedContexts.count(Ctx);
   }
 
-  /// \brief Determine whether the given declaration is hidden in the
+  /// Determine whether the given declaration is hidden in the
   /// current scope.
   ///
   /// \returns the declaration that hides the given declaration, or
   /// NULL if no such declaration exists.
   NamedDecl *checkHidden(NamedDecl *ND);
 
-  /// \brief Add a declaration to the current shadow map.
+  /// Add a declaration to the current shadow map.
   void add(NamedDecl *ND) {
     ShadowMaps.back()[ND->getDeclName()].push_back(ND);
   }
 };
 
-/// \brief RAII object that records when we've entered a shadow context.
+/// RAII object that records when we've entered a shadow context.
 class ShadowContextRAII {
   VisibleDeclsRecord &Visible;
 
@@ -3868,7 +3868,7 @@
                                       bool isObjCIvarLookup,
                                       bool FindHidden);
 
-/// \brief Check whether the declarations found for a typo correction are
+/// Check whether the declarations found for a typo correction are
 /// visible. Set the correction's RequiresImport flag to true if none of the
 /// declarations are visible, false otherwise.
 static void checkCorrectionVisibility(Sema &SemaRef, TypoCorrection &TC) {
@@ -4354,7 +4354,7 @@
   DistanceMap[NumSpecifiers].push_back(SI);
 }
 
-/// \brief Perform name lookup for a possible result for typo correction.
+/// Perform name lookup for a possible result for typo correction.
 static void LookupPotentialTypoResult(Sema &SemaRef,
                                       LookupResult &Res,
                                       IdentifierInfo *Name,
@@ -4408,7 +4408,7 @@
   }
 }
 
-/// \brief Add keywords to the consumer as possible typo corrections.
+/// Add keywords to the consumer as possible typo corrections.
 static void AddKeywordsToConsumer(Sema &SemaRef,
                                   TypoCorrectionConsumer &Consumer,
                                   Scope *S, CorrectionCandidateCallback &CCC,
@@ -4699,7 +4699,7 @@
   return Consumer;
 }
 
-/// \brief Try to "correct" a typo in the source code by finding
+/// Try to "correct" a typo in the source code by finding
 /// visible declarations whose names are similar to the name that was
 /// present in the source code.
 ///
@@ -4828,7 +4828,7 @@
   return FailedCorrection(Typo, TypoName.getLoc(), RecordFailure && !SecondBestTC);
 }
 
-/// \brief Try to "correct" a typo in the source code by finding
+/// Try to "correct" a typo in the source code by finding
 /// visible declarations whose names are similar to the name that was
 /// present in the source code.
 ///
@@ -5065,7 +5065,7 @@
                         Recover);
 }
 
-/// \brief Get a "quoted.h" or <angled.h> include path to use in a diagnostic
+/// Get a "quoted.h" or <angled.h> include path to use in a diagnostic
 /// suggesting the addition of a #include of the specified file.
 static std::string getIncludeStringForHeader(Preprocessor &PP,
                                              const FileEntry *E) {
@@ -5144,7 +5144,7 @@
     createImplicitModuleImportForErrorRecovery(UseLoc, Modules[0]);
 }
 
-/// \brief Diagnose a successfully-corrected typo. Separated from the correction
+/// Diagnose a successfully-corrected typo. Separated from the correction
 /// itself to allow external validation of the result, etc.
 ///
 /// \param Correction The result of performing typo correction.
Index: cfe/trunk/lib/Sema/SemaObjCProperty.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaObjCProperty.cpp
+++ cfe/trunk/lib/Sema/SemaObjCProperty.cpp
@@ -104,7 +104,7 @@
     << propertyLifetime;
 }
 
-/// \brief Check this Objective-C property against a property declared in the
+/// Check this Objective-C property against a property declared in the
 /// given protocol.
 static void
 CheckPropertyAgainstProtocol(Sema &S, ObjCPropertyDecl *Prop,
@@ -1829,7 +1829,7 @@
   return false;
 }
 
-/// \brief Default synthesizes all properties which must be synthesized
+/// Default synthesizes all properties which must be synthesized
 /// in class's \@implementation.
 void Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl *IMPDecl,
                                        ObjCInterfaceDecl *IDecl,
Index: cfe/trunk/lib/Sema/SemaOpenMP.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaOpenMP.cpp
+++ cfe/trunk/lib/Sema/SemaOpenMP.cpp
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 /// \file
-/// \brief This file implements semantic analysis for OpenMP directives and
+/// This file implements semantic analysis for OpenMP directives and
 /// clauses.
 ///
 //===----------------------------------------------------------------------===//
@@ -41,11 +41,11 @@
     OpenMPClauseKind CKind, bool NoDiagnose);
 
 namespace {
-/// \brief Default data sharing attributes, which can be applied to directive.
+/// Default data sharing attributes, which can be applied to directive.
 enum DefaultDataSharingAttributes {
-  DSA_unspecified = 0, /// \brief Data sharing attribute not specified.
-  DSA_none = 1 << 0,   /// \brief Default data sharing attribute 'none'.
-  DSA_shared = 1 << 1, /// \brief Default data sharing attribute 'shared'.
+  DSA_unspecified = 0, /// Data sharing attribute not specified.
+  DSA_none = 1 << 0,   /// Default data sharing attribute 'none'.
+  DSA_shared = 1 << 1, /// Default data sharing attribute 'shared'.
 };
 
 /// Attributes of the defaultmap clause.
@@ -54,7 +54,7 @@
   DMA_tofrom_scalar, /// Default mapping is 'tofrom:scalar'.
 };
 
-/// \brief Stack for tracking declarations used in OpenMP directives and
+/// Stack for tracking declarations used in OpenMP directives and
 /// clauses and their data-sharing attributes.
 class DSAStackTy {
 public:
@@ -134,7 +134,7 @@
     /// get the data (loop counters etc.) about enclosing loop-based construct.
     /// This data is required during codegen.
     DoacrossDependMapTy DoacrossDepends;
-    /// \brief first argument (Expr *) contains optional argument of the
+    /// first argument (Expr *) contains optional argument of the
     /// 'ordered' clause, the second one is true if the regions has 'ordered'
     /// clause, false otherwise.
     llvm::PointerIntPair<const Expr *, 1, bool> OrderedRegion;
@@ -153,11 +153,11 @@
 
   using StackTy = SmallVector<SharingMapTy, 4>;
 
-  /// \brief Stack of used declaration and their data-sharing attributes.
+  /// Stack of used declaration and their data-sharing attributes.
   DeclSAMapTy Threadprivates;
   const FunctionScopeInfo *CurrentNonCapturingFunctionScope = nullptr;
   SmallVector<std::pair<StackTy, const FunctionScopeInfo *>, 4> Stack;
-  /// \brief true, if check for DSA must be from parent directive, false, if
+  /// true, if check for DSA must be from parent directive, false, if
   /// from current directive.
   OpenMPClauseKind ClauseKindMode = OMPC_unknown;
   Sema &SemaRef;
@@ -168,7 +168,7 @@
 
   DSAVarData getDSA(iterator &Iter, ValueDecl *D) const;
 
-  /// \brief Checks if the variable is a local for OpenMP region.
+  /// Checks if the variable is a local for OpenMP region.
   bool isOpenMPLocal(VarDecl *D, iterator Iter) const;
 
   bool isStackEmpty() const {
@@ -236,28 +236,28 @@
       return I->second;
     return std::make_pair(nullptr, llvm::APSInt());
   }
-  /// \brief If 'aligned' declaration for given variable \a D was not seen yet,
+  /// If 'aligned' declaration for given variable \a D was not seen yet,
   /// add it and return NULL; otherwise return previous occurrence's expression
   /// for diagnostics.
   const Expr *addUniqueAligned(const ValueDecl *D, const Expr *NewDE);
 
-  /// \brief Register specified variable as loop control variable.
+  /// Register specified variable as loop control variable.
   void addLoopControlVariable(const ValueDecl *D, VarDecl *Capture);
-  /// \brief Check if the specified variable is a loop control variable for
+  /// Check if the specified variable is a loop control variable for
   /// current region.
   /// \return The index of the loop control variable in the list of associated
   /// for-loops (from outer to inner).
   const LCDeclInfo isLoopControlVariable(const ValueDecl *D) const;
-  /// \brief Check if the specified variable is a loop control variable for
+  /// Check if the specified variable is a loop control variable for
   /// parent region.
   /// \return The index of the loop control variable in the list of associated
   /// for-loops (from outer to inner).
   const LCDeclInfo isParentLoopControlVariable(const ValueDecl *D) const;
-  /// \brief Get the loop control variable for the I-th loop (or nullptr) in
+  /// Get the loop control variable for the I-th loop (or nullptr) in
   /// parent directive.
   const ValueDecl *getParentLoopControlVariable(unsigned I) const;
 
-  /// \brief Adds explicit data sharing attribute to the specified declaration.
+  /// Adds explicit data sharing attribute to the specified declaration.
   void addDSA(const ValueDecl *D, const Expr *E, OpenMPClauseKind A,
               DeclRefExpr *PrivateCopy = nullptr);
 
@@ -296,19 +296,19 @@
                    ->getDecl() == VD;
   }
 
-  /// \brief Returns data sharing attributes from top of the stack for the
+  /// Returns data sharing attributes from top of the stack for the
   /// specified declaration.
   const DSAVarData getTopDSA(ValueDecl *D, bool FromParent);
-  /// \brief Returns data-sharing attributes for the specified declaration.
+  /// Returns data-sharing attributes for the specified declaration.
   const DSAVarData getImplicitDSA(ValueDecl *D, bool FromParent) const;
-  /// \brief Checks if the specified variables has data-sharing attributes which
+  /// Checks if the specified variables has data-sharing attributes which
   /// match specified \a CPred predicate in any directive which matches \a DPred
   /// predicate.
   const DSAVarData
   hasDSA(ValueDecl *D, const llvm::function_ref<bool(OpenMPClauseKind)> CPred,
          const llvm::function_ref<bool(OpenMPDirectiveKind)> DPred,
          bool FromParent) const;
-  /// \brief Checks if the specified variables has data-sharing attributes which
+  /// Checks if the specified variables has data-sharing attributes which
   /// match specified \a CPred predicate in any innermost directive which
   /// matches \a DPred predicate.
   const DSAVarData
@@ -316,49 +316,49 @@
                   const llvm::function_ref<bool(OpenMPClauseKind)> CPred,
                   const llvm::function_ref<bool(OpenMPDirectiveKind)> DPred,
                   bool FromParent) const;
-  /// \brief Checks if the specified variables has explicit data-sharing
+  /// Checks if the specified variables has explicit data-sharing
   /// attributes which match specified \a CPred predicate at the specified
   /// OpenMP region.
   bool hasExplicitDSA(const ValueDecl *D,
                       const llvm::function_ref<bool(OpenMPClauseKind)> CPred,
                       unsigned Level, bool NotLastprivate = false) const;
 
-  /// \brief Returns true if the directive at level \Level matches in the
+  /// Returns true if the directive at level \Level matches in the
   /// specified \a DPred predicate.
   bool hasExplicitDirective(
       const llvm::function_ref<bool(OpenMPDirectiveKind)> DPred,
       unsigned Level) const;
 
-  /// \brief Finds a directive which matches specified \a DPred predicate.
+  /// Finds a directive which matches specified \a DPred predicate.
   bool hasDirective(
       const llvm::function_ref<bool(
           OpenMPDirectiveKind, const DeclarationNameInfo &, SourceLocation)>
           DPred,
       bool FromParent) const;
 
-  /// \brief Returns currently analyzed directive.
+  /// Returns currently analyzed directive.
   OpenMPDirectiveKind getCurrentDirective() const {
     return isStackEmpty() ? OMPD_unknown : Stack.back().first.back().Directive;
   }
-  /// \brief Returns directive kind at specified level.
+  /// Returns directive kind at specified level.
   OpenMPDirectiveKind getDirective(unsigned Level) const {
     assert(!isStackEmpty() && "No directive at specified level.");
     return Stack.back().first[Level].Directive;
   }
-  /// \brief Returns parent directive.
+  /// Returns parent directive.
   OpenMPDirectiveKind getParentDirective() const {
     if (isStackEmpty() || Stack.back().first.size() == 1)
       return OMPD_unknown;
     return std::next(Stack.back().first.rbegin())->Directive;
   }
 
-  /// \brief Set default data sharing attribute to none.
+  /// Set default data sharing attribute to none.
   void setDefaultDSANone(SourceLocation Loc) {
     assert(!isStackEmpty());
     Stack.back().first.back().DefaultAttr = DSA_none;
     Stack.back().first.back().DefaultAttrLoc = Loc;
   }
-  /// \brief Set default data sharing attribute to shared.
+  /// Set default data sharing attribute to shared.
   void setDefaultDSAShared(SourceLocation Loc) {
     assert(!isStackEmpty());
     Stack.back().first.back().DefaultAttr = DSA_shared;
@@ -391,66 +391,66 @@
                           : Stack.back().first.back().DefaultMapAttrLoc;
   }
 
-  /// \brief Checks if the specified variable is a threadprivate.
+  /// Checks if the specified variable is a threadprivate.
   bool isThreadPrivate(VarDecl *D) {
     const DSAVarData DVar = getTopDSA(D, false);
     return isOpenMPThreadPrivate(DVar.CKind);
   }
 
-  /// \brief Marks current region as ordered (it has an 'ordered' clause).
+  /// Marks current region as ordered (it has an 'ordered' clause).
   void setOrderedRegion(bool IsOrdered, const Expr *Param) {
     assert(!isStackEmpty());
     Stack.back().first.back().OrderedRegion.setInt(IsOrdered);
     Stack.back().first.back().OrderedRegion.setPointer(Param);
   }
-  /// \brief Returns true, if parent region is ordered (has associated
+  /// Returns true, if parent region is ordered (has associated
   /// 'ordered' clause), false - otherwise.
   bool isParentOrderedRegion() const {
     if (isStackEmpty() || Stack.back().first.size() == 1)
       return false;
     return std::next(Stack.back().first.rbegin())->OrderedRegion.getInt();
   }
-  /// \brief Returns optional parameter for the ordered region.
+  /// Returns optional parameter for the ordered region.
   const Expr *getParentOrderedRegionParam() const {
     if (isStackEmpty() || Stack.back().first.size() == 1)
       return nullptr;
     return std::next(Stack.back().first.rbegin())->OrderedRegion.getPointer();
   }
-  /// \brief Marks current region as nowait (it has a 'nowait' clause).
+  /// Marks current region as nowait (it has a 'nowait' clause).
   void setNowaitRegion(bool IsNowait = true) {
     assert(!isStackEmpty());
     Stack.back().first.back().NowaitRegion = IsNowait;
   }
-  /// \brief Returns true, if parent region is nowait (has associated
+  /// Returns true, if parent region is nowait (has associated
   /// 'nowait' clause), false - otherwise.
   bool isParentNowaitRegion() const {
     if (isStackEmpty() || Stack.back().first.size() == 1)
       return false;
     return std::next(Stack.back().first.rbegin())->NowaitRegion;
   }
-  /// \brief Marks parent region as cancel region.
+  /// Marks parent region as cancel region.
   void setParentCancelRegion(bool Cancel = true) {
     if (!isStackEmpty() && Stack.back().first.size() > 1) {
       auto &StackElemRef = *std::next(Stack.back().first.rbegin());
       StackElemRef.CancelRegion |= StackElemRef.CancelRegion || Cancel;
     }
   }
-  /// \brief Return true if current region has inner cancel construct.
+  /// Return true if current region has inner cancel construct.
   bool isCancelRegion() const {
     return isStackEmpty() ? false : Stack.back().first.back().CancelRegion;
   }
 
-  /// \brief Set collapse value for the region.
+  /// Set collapse value for the region.
   void setAssociatedLoops(unsigned Val) {
     assert(!isStackEmpty());
     Stack.back().first.back().AssociatedLoops = Val;
   }
-  /// \brief Return collapse value for region.
+  /// Return collapse value for region.
   unsigned getAssociatedLoops() const {
     return isStackEmpty() ? 0 : Stack.back().first.back().AssociatedLoops;
   }
 
-  /// \brief Marks current target region as one with closely nested teams
+  /// Marks current target region as one with closely nested teams
   /// region.
   void setParentTeamsRegionLoc(SourceLocation TeamsRegionLoc) {
     if (!isStackEmpty() && Stack.back().first.size() > 1) {
@@ -458,11 +458,11 @@
           TeamsRegionLoc;
     }
   }
-  /// \brief Returns true, if current region has closely nested teams region.
+  /// Returns true, if current region has closely nested teams region.
   bool hasInnerTeamsRegion() const {
     return getInnerTeamsRegionLoc().isValid();
   }
-  /// \brief Returns location of the nested teams region (if any).
+  /// Returns location of the nested teams region (if any).
   SourceLocation getInnerTeamsRegionLoc() const {
     return isStackEmpty() ? SourceLocation()
                           : Stack.back().first.back().InnerTeamsRegionLoc;
@@ -822,7 +822,7 @@
   }
 }
 
-/// \brief Build a variable declaration for OpenMP loop iteration variable.
+/// Build a variable declaration for OpenMP loop iteration variable.
 static VarDecl *buildVarDecl(Sema &SemaRef, SourceLocation Loc, QualType Type,
                              StringRef Name, const AttrVec *Attrs = nullptr,
                              DeclRefExpr *OrigRef = nullptr) {
@@ -3656,99 +3656,99 @@
 }
 
 namespace {
-/// \brief Helper class for checking canonical form of the OpenMP loops and
+/// Helper class for checking canonical form of the OpenMP loops and
 /// extracting iteration space of each loop in the loop nest, that will be used
 /// for IR generation.
 class OpenMPIterationSpaceChecker {
-  /// \brief Reference to Sema.
+  /// Reference to Sema.
   Sema &SemaRef;
-  /// \brief A location for diagnostics (when there is no some better location).
+  /// A location for diagnostics (when there is no some better location).
   SourceLocation DefaultLoc;
-  /// \brief A location for diagnostics (when increment is not compatible).
+  /// A location for diagnostics (when increment is not compatible).
   SourceLocation ConditionLoc;
-  /// \brief A source location for referring to loop init later.
+  /// A source location for referring to loop init later.
   SourceRange InitSrcRange;
-  /// \brief A source location for referring to condition later.
+  /// A source location for referring to condition later.
   SourceRange ConditionSrcRange;
-  /// \brief A source location for referring to increment later.
+  /// A source location for referring to increment later.
   SourceRange IncrementSrcRange;
-  /// \brief Loop variable.
+  /// Loop variable.
   ValueDecl *LCDecl = nullptr;
-  /// \brief Reference to loop variable.
+  /// Reference to loop variable.
   Expr *LCRef = nullptr;
-  /// \brief Lower bound (initializer for the var).
+  /// Lower bound (initializer for the var).
   Expr *LB = nullptr;
-  /// \brief Upper bound.
+  /// Upper bound.
   Expr *UB = nullptr;
-  /// \brief Loop step (increment).
+  /// Loop step (increment).
   Expr *Step = nullptr;
-  /// \brief This flag is true when condition is one of:
+  /// This flag is true when condition is one of:
   ///   Var <  UB
   ///   Var <= UB
   ///   UB  >  Var
   ///   UB  >= Var
   bool TestIsLessOp = false;
-  /// \brief This flag is true when condition is strict ( < or > ).
+  /// This flag is true when condition is strict ( < or > ).
   bool TestIsStrictOp = false;
-  /// \brief This flag is true when step is subtracted on each iteration.
+  /// This flag is true when step is subtracted on each iteration.
   bool SubtractStep = false;
 
 public:
   OpenMPIterationSpaceChecker(Sema &SemaRef, SourceLocation DefaultLoc)
       : SemaRef(SemaRef), DefaultLoc(DefaultLoc), ConditionLoc(DefaultLoc) {}
-  /// \brief Check init-expr for canonical loop form and save loop counter
+  /// Check init-expr for canonical loop form and save loop counter
   /// variable - #Var and its initialization value - #LB.
   bool checkAndSetInit(Stmt *S, bool EmitDiags = true);
-  /// \brief Check test-expr for canonical form, save upper-bound (#UB), flags
+  /// Check test-expr for canonical form, save upper-bound (#UB), flags
   /// for less/greater and for strict/non-strict comparison.
   bool checkAndSetCond(Expr *S);
-  /// \brief Check incr-expr for canonical loop form and return true if it
+  /// Check incr-expr for canonical loop form and return true if it
   /// does not conform, otherwise save loop step (#Step).
   bool checkAndSetInc(Expr *S);
-  /// \brief Return the loop counter variable.
+  /// Return the loop counter variable.
   ValueDecl *getLoopDecl() const { return LCDecl; }
-  /// \brief Return the reference expression to loop counter variable.
+  /// Return the reference expression to loop counter variable.
   Expr *getLoopDeclRefExpr() const { return LCRef; }
-  /// \brief Source range of the loop init.
+  /// Source range of the loop init.
   SourceRange getInitSrcRange() const { return InitSrcRange; }
-  /// \brief Source range of the loop condition.
+  /// Source range of the loop condition.
   SourceRange getConditionSrcRange() const { return ConditionSrcRange; }
-  /// \brief Source range of the loop increment.
+  /// Source range of the loop increment.
   SourceRange getIncrementSrcRange() const { return IncrementSrcRange; }
-  /// \brief True if the step should be subtracted.
+  /// True if the step should be subtracted.
   bool shouldSubtractStep() const { return SubtractStep; }
-  /// \brief Build the expression to calculate the number of iterations.
+  /// Build the expression to calculate the number of iterations.
   Expr *buildNumIterations(
       Scope *S, const bool LimitedType,
       llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const;
-  /// \brief Build the precondition expression for the loops.
+  /// Build the precondition expression for the loops.
   Expr *
   buildPreCond(Scope *S, Expr *Cond,
                llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const;
-  /// \brief Build reference expression to the counter be used for codegen.
+  /// Build reference expression to the counter be used for codegen.
   DeclRefExpr *
   buildCounterVar(llvm::MapVector<const Expr *, DeclRefExpr *> &Captures,
                   DSAStackTy &DSA) const;
-  /// \brief Build reference expression to the private counter be used for
+  /// Build reference expression to the private counter be used for
   /// codegen.
   Expr *buildPrivateCounterVar() const;
-  /// \brief Build initialization of the counter be used for codegen.
+  /// Build initialization of the counter be used for codegen.
   Expr *buildCounterInit() const;
-  /// \brief Build step of the counter be used for codegen.
+  /// Build step of the counter be used for codegen.
   Expr *buildCounterStep() const;
-  /// \brief Return true if any expression is dependent.
+  /// Return true if any expression is dependent.
   bool dependent() const;
 
 private:
-  /// \brief Check the right-hand side of an assignment in the increment
+  /// Check the right-hand side of an assignment in the increment
   /// expression.
   bool checkAndSetIncRHS(Expr *RHS);
-  /// \brief Helper to set loop counter variable and its initializer.
+  /// Helper to set loop counter variable and its initializer.
   bool setLCDeclAndLB(ValueDecl *NewLCDecl, Expr *NewDeclRefExpr, Expr *NewLB);
-  /// \brief Helper to set upper bound.
+  /// Helper to set upper bound.
   bool setUB(Expr *NewUB, bool LessOp, bool StrictOp, SourceRange SR,
              SourceLocation SL);
-  /// \brief Helper to set loop increment.
+  /// Helper to set loop increment.
   bool setStep(Expr *NewStep, bool Subtract);
 };
 
@@ -3930,7 +3930,7 @@
   return true;
 }
 
-/// \brief Ignore parenthesizes, implicit casts, copy constructor and return the
+/// Ignore parenthesizes, implicit casts, copy constructor and return the
 /// variable (which may be the loop variable) if possible.
 static const ValueDecl *getInitLCDecl(const Expr *E) {
   if (!E)
@@ -4134,7 +4134,7 @@
   return Res;
 }
 
-/// \brief Build the expression to calculate the number of iterations.
+/// Build the expression to calculate the number of iterations.
 Expr *OpenMPIterationSpaceChecker::buildNumIterations(
     Scope *S, const bool LimitedType,
     llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const {
@@ -4260,7 +4260,7 @@
   return CondExpr.isUsable() ? CondExpr.get() : Cond;
 }
 
-/// \brief Build reference expression to the counter be used for codegen.
+/// Build reference expression to the counter be used for codegen.
 DeclRefExpr *OpenMPIterationSpaceChecker::buildCounterVar(
     llvm::MapVector<const Expr *, DeclRefExpr *> &Captures, DSAStackTy &DSA) const {
   auto *VD = dyn_cast<VarDecl>(LCDecl);
@@ -4296,35 +4296,35 @@
   return nullptr;
 }
 
-/// \brief Build initialization of the counter to be used for codegen.
+/// Build initialization of the counter to be used for codegen.
 Expr *OpenMPIterationSpaceChecker::buildCounterInit() const { return LB; }
 
-/// \brief Build step of the counter be used for codegen.
+/// Build step of the counter be used for codegen.
 Expr *OpenMPIterationSpaceChecker::buildCounterStep() const { return Step; }
 
-/// \brief Iteration space of a single for loop.
+/// Iteration space of a single for loop.
 struct LoopIterationSpace final {
-  /// \brief Condition of the loop.
+  /// Condition of the loop.
   Expr *PreCond = nullptr;
-  /// \brief This expression calculates the number of iterations in the loop.
+  /// This expression calculates the number of iterations in the loop.
   /// It is always possible to calculate it before starting the loop.
   Expr *NumIterations = nullptr;
-  /// \brief The loop counter variable.
+  /// The loop counter variable.
   Expr *CounterVar = nullptr;
-  /// \brief Private loop counter variable.
+  /// Private loop counter variable.
   Expr *PrivateCounterVar = nullptr;
-  /// \brief This is initializer for the initial value of #CounterVar.
+  /// This is initializer for the initial value of #CounterVar.
   Expr *CounterInit = nullptr;
-  /// \brief This is step for the #CounterVar used to generate its update:
+  /// This is step for the #CounterVar used to generate its update:
   /// #CounterVar = #CounterInit + #CounterStep * CurrentIteration.
   Expr *CounterStep = nullptr;
-  /// \brief Should step be subtracted?
+  /// Should step be subtracted?
   bool Subtract = false;
-  /// \brief Source range of the loop init.
+  /// Source range of the loop init.
   SourceRange InitSrcRange;
-  /// \brief Source range of the loop condition.
+  /// Source range of the loop condition.
   SourceRange CondSrcRange;
-  /// \brief Source range of the loop increment.
+  /// Source range of the loop increment.
   SourceRange IncSrcRange;
 };
 
@@ -4356,7 +4356,7 @@
   }
 }
 
-/// \brief Called on a for stmt to check and extract its iteration space
+/// Called on a for stmt to check and extract its iteration space
 /// for further processing (such as collapsing).
 static bool checkOpenMPIterationSpace(
     OpenMPDirectiveKind DKind, Stmt *S, Sema &SemaRef, DSAStackTy &DSA,
@@ -4510,7 +4510,7 @@
   return HasErrors;
 }
 
-/// \brief Build 'VarRef = Start.
+/// Build 'VarRef = Start.
 static ExprResult
 buildCounterInit(Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef,
                  ExprResult Start,
@@ -4533,7 +4533,7 @@
   return Init;
 }
 
-/// \brief Build 'VarRef = Start + Iter * Step'.
+/// Build 'VarRef = Start + Iter * Step'.
 static ExprResult buildCounterUpdate(
     Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef,
     ExprResult Start, ExprResult Iter, ExprResult Step, bool Subtract,
@@ -4604,7 +4604,7 @@
   return Update;
 }
 
-/// \brief Convert integer expression \a E to make it have at least \a Bits
+/// Convert integer expression \a E to make it have at least \a Bits
 /// bits.
 static ExprResult widenIterationCount(unsigned Bits, Expr *E, Sema &SemaRef) {
   if (E == nullptr)
@@ -4620,7 +4620,7 @@
                                            true);
 }
 
-/// \brief Check if the given expression \a E is a constant integer that fits
+/// Check if the given expression \a E is a constant integer that fits
 /// into \a Bits bits.
 static bool fitsInto(unsigned Bits, bool Signed, const Expr *E, Sema &SemaRef) {
   if (E == nullptr)
@@ -4675,7 +4675,7 @@
   return PostUpdate;
 }
 
-/// \brief Called on a for stmt to check itself and nested loops (if any).
+/// Called on a for stmt to check itself and nested loops (if any).
 /// \return Returns 0 if one of the collapsed stmts is not canonical for loop,
 /// number of collapsed loops otherwise.
 static unsigned
@@ -5863,50 +5863,50 @@
 }
 
 namespace {
-/// \brief Helper class for checking expression in 'omp atomic [update]'
+/// Helper class for checking expression in 'omp atomic [update]'
 /// construct.
 class OpenMPAtomicUpdateChecker {
-  /// \brief Error results for atomic update expressions.
+  /// Error results for atomic update expressions.
   enum ExprAnalysisErrorCode {
-    /// \brief A statement is not an expression statement.
+    /// A statement is not an expression statement.
     NotAnExpression,
-    /// \brief Expression is not builtin binary or unary operation.
+    /// Expression is not builtin binary or unary operation.
     NotABinaryOrUnaryExpression,
-    /// \brief Unary operation is not post-/pre- increment/decrement operation.
+    /// Unary operation is not post-/pre- increment/decrement operation.
     NotAnUnaryIncDecExpression,
-    /// \brief An expression is not of scalar type.
+    /// An expression is not of scalar type.
     NotAScalarType,
-    /// \brief A binary operation is not an assignment operation.
+    /// A binary operation is not an assignment operation.
     NotAnAssignmentOp,
-    /// \brief RHS part of the binary operation is not a binary expression.
+    /// RHS part of the binary operation is not a binary expression.
     NotABinaryExpression,
-    /// \brief RHS part is not additive/multiplicative/shift/biwise binary
+    /// RHS part is not additive/multiplicative/shift/biwise binary
     /// expression.
     NotABinaryOperator,
-    /// \brief RHS binary operation does not have reference to the updated LHS
+    /// RHS binary operation does not have reference to the updated LHS
     /// part.
     NotAnUpdateExpression,
-    /// \brief No errors is found.
+    /// No errors is found.
     NoError
   };
-  /// \brief Reference to Sema.
+  /// Reference to Sema.
   Sema &SemaRef;
-  /// \brief A location for note diagnostics (when error is found).
+  /// A location for note diagnostics (when error is found).
   SourceLocation NoteLoc;
-  /// \brief 'x' lvalue part of the source atomic expression.
+  /// 'x' lvalue part of the source atomic expression.
   Expr *X;
-  /// \brief 'expr' rvalue part of the source atomic expression.
+  /// 'expr' rvalue part of the source atomic expression.
   Expr *E;
-  /// \brief Helper expression of the form
+  /// Helper expression of the form
   /// 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' or
   /// 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'.
   Expr *UpdateExpr;
-  /// \brief Is 'x' a LHS in a RHS part of full update expression. It is
+  /// Is 'x' a LHS in a RHS part of full update expression. It is
   /// important for non-associative operations.
   bool IsXLHSInRHSPart;
   BinaryOperatorKind Op;
   SourceLocation OpLoc;
-  /// \brief true if the source expression is a postfix unary operation, false
+  /// true if the source expression is a postfix unary operation, false
   /// if it is a prefix unary operation.
   bool IsPostfixUpdate;
 
@@ -5914,7 +5914,7 @@
   OpenMPAtomicUpdateChecker(Sema &SemaRef)
       : SemaRef(SemaRef), X(nullptr), E(nullptr), UpdateExpr(nullptr),
         IsXLHSInRHSPart(false), Op(BO_PtrMemD), IsPostfixUpdate(false) {}
-  /// \brief Check specified statement that it is suitable for 'atomic update'
+  /// Check specified statement that it is suitable for 'atomic update'
   /// constructs and extract 'x', 'expr' and Operation from the original
   /// expression. If DiagId and NoteId == 0, then only check is performed
   /// without error notification.
@@ -5922,19 +5922,19 @@
   /// \param NoteId Diagnostic note for the main error message.
   /// \return true if statement is not an update expression, false otherwise.
   bool checkStatement(Stmt *S, unsigned DiagId = 0, unsigned NoteId = 0);
-  /// \brief Return the 'x' lvalue part of the source atomic expression.
+  /// Return the 'x' lvalue part of the source atomic expression.
   Expr *getX() const { return X; }
-  /// \brief Return the 'expr' rvalue part of the source atomic expression.
+  /// Return the 'expr' rvalue part of the source atomic expression.
   Expr *getExpr() const { return E; }
-  /// \brief Return the update expression used in calculation of the updated
+  /// Return the update expression used in calculation of the updated
   /// value. Always has form 'OpaqueValueExpr(x) binop OpaqueValueExpr(expr)' or
   /// 'OpaqueValueExpr(expr) binop OpaqueValueExpr(x)'.
   Expr *getUpdateExpr() const { return UpdateExpr; }
-  /// \brief Return true if 'x' is LHS in RHS part of full update expression,
+  /// Return true if 'x' is LHS in RHS part of full update expression,
   /// false otherwise.
   bool isXLHSInRHSPart() const { return IsXLHSInRHSPart; }
 
-  /// \brief true if the source expression is a postfix unary operation, false
+  /// true if the source expression is a postfix unary operation, false
   /// if it is a prefix unary operation.
   bool isPostfixUpdate() const { return IsPostfixUpdate; }
 
@@ -11654,7 +11654,7 @@
   return true;
 }
 
-/// \brief Return true if it can be proven that the provided array expression
+/// Return true if it can be proven that the provided array expression
 /// (array section or array subscript) does NOT specify the whole size of the
 /// array whose base type is \a BaseQTy.
 static bool checkArrayExpressionDoesNotReferToWholeSize(Sema &SemaRef,
Index: cfe/trunk/lib/Sema/SemaOverload.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaOverload.cpp
+++ cfe/trunk/lib/Sema/SemaOverload.cpp
@@ -583,7 +583,7 @@
   };
 }
 
-/// \brief Convert from Sema's representation of template deduction information
+/// Convert from Sema's representation of template deduction information
 /// to the form used in overload-candidate information.
 DeductionFailureInfo
 clang::MakeDeductionFailureInfo(ASTContext &Context,
@@ -1192,7 +1192,7 @@
   return false;
 }
 
-/// \brief Checks availability of the function depending on the current
+/// Checks availability of the function depending on the current
 /// function context. Inside an unavailable function, unavailability is ignored.
 ///
 /// \returns true if \arg FD is unavailable and current context is inside
@@ -1210,7 +1210,7 @@
   return true;
 }
 
-/// \brief Tries a user-defined conversion from From to ToType.
+/// Tries a user-defined conversion from From to ToType.
 ///
 /// Produces an implicit conversion sequence for when a standard conversion
 /// is not an option. See TryImplicitConversion for more information.
@@ -1422,7 +1422,7 @@
   return PerformImplicitConversion(From, ToType, ICS, Action);
 }
 
-/// \brief Determine whether the conversion from FromType to ToType is a valid
+/// Determine whether the conversion from FromType to ToType is a valid
 /// conversion that strips "noexcept" or "noreturn" off the nested function
 /// type.
 bool Sema::IsFunctionConversion(QualType FromType, QualType ToType,
@@ -1519,7 +1519,7 @@
   return true;
 }
 
-/// \brief Determine whether the conversion from FromType to ToType is a valid
+/// Determine whether the conversion from FromType to ToType is a valid
 /// vector conversion.
 ///
 /// \param ICK Will be set to the vector conversion kind, if this is a vector
@@ -2119,7 +2119,7 @@
   return false;
 }
 
-/// \brief Determine if a conversion is a complex promotion.
+/// Determine if a conversion is a complex promotion.
 ///
 /// A complex promotion is defined as a complex -> complex conversion
 /// where the conversion between the underlying real types is a
@@ -2353,7 +2353,7 @@
   return false;
 }
 
-/// \brief Adopt the given qualifiers for the given type.
+/// Adopt the given qualifiers for the given type.
 static QualType AdoptQualifiers(ASTContext &Context, QualType T, Qualifiers Qs){
   Qualifiers TQs = T.getQualifiers();
 
@@ -2541,7 +2541,7 @@
   return false;
 }
 
-/// \brief Determine whether this is an Objective-C writeback conversion,
+/// Determine whether this is an Objective-C writeback conversion,
 /// used for parameter passing when performing automatic reference counting.
 ///
 /// \param FromType The type we're converting form.
@@ -2601,7 +2601,7 @@
                                     IncompatibleObjC))
     return false;
 
-  /// \brief Construct the type we're converting to, which is a pointer to
+  /// Construct the type we're converting to, which is a pointer to
   /// __autoreleasing pointee.
   FromPointee = Context.getQualifiedType(FromPointee, FromQuals);
   ConvertedType = Context.getPointerType(FromPointee);
@@ -3137,7 +3137,7 @@
   return UnwrappedAnyPointer && Context.hasSameUnqualifiedType(FromType,ToType);
 }
 
-/// \brief - Determine whether this is a conversion from a scalar type to an
+/// - Determine whether this is a conversion from a scalar type to an
 /// atomic type.
 ///
 /// If successful, updates \c SCS's second and third steps in the conversion
@@ -3480,7 +3480,7 @@
   return true;
 }
 
-/// \brief Compare the user-defined conversion functions or constructors
+/// Compare the user-defined conversion functions or constructors
 /// of two user-defined conversion sequences to determine whether any ordering
 /// is possible.
 static ImplicitConversionSequence::CompareKind
@@ -3682,7 +3682,7 @@
   return ImplicitConversionSequence::Indistinguishable;
 }
 
-/// \brief Determine whether one of the given reference bindings is better
+/// Determine whether one of the given reference bindings is better
 /// than the other based on what kind of bindings they are.
 static bool
 isBetterReferenceBindingKind(const StandardConversionSequence &SCS1,
@@ -4207,7 +4207,7 @@
   return ImplicitConversionSequence::Indistinguishable;
 }
 
-/// \brief Determine whether the given type is valid, e.g., it is not an invalid
+/// Determine whether the given type is valid, e.g., it is not an invalid
 /// C++ class.
 static bool isTypeValid(QualType T) {
   if (CXXRecordDecl *Record = T->getAsCXXRecordDecl())
@@ -4310,7 +4310,7 @@
     return Ref_Related;
 }
 
-/// \brief Look for a user-defined conversion to a value reference-compatible
+/// Look for a user-defined conversion to a value reference-compatible
 ///        with DeclType. Return true if something definite is found.
 static bool
 FindConversionForRefInit(Sema &S, ImplicitConversionSequence &ICS,
@@ -4437,7 +4437,7 @@
   llvm_unreachable("Invalid OverloadResult!");
 }
 
-/// \brief Compute an implicit conversion sequence for reference
+/// Compute an implicit conversion sequence for reference
 /// initialization.
 static ImplicitConversionSequence
 TryReferenceInit(Sema &S, Expr *Init, QualType DeclType,
@@ -5649,7 +5649,7 @@
   }
 }
 
-/// \brief Attempt to convert the given expression to a type which is accepted
+/// Attempt to convert the given expression to a type which is accepted
 /// by the given converter.
 ///
 /// This routine will attempt to convert an expression of class type to a
@@ -6375,7 +6375,7 @@
       });
 }
 
-/// \brief Add all of the function declarations in the given function set to
+/// Add all of the function declarations in the given function set to
 /// the overload candidate set.
 void Sema::AddFunctionCandidates(const UnresolvedSetImpl &Fns,
                                  ArrayRef<Expr *> Args,
@@ -6611,7 +6611,7 @@
   }
 }
 
-/// \brief Add a C++ member function template as a candidate to the candidate
+/// Add a C++ member function template as a candidate to the candidate
 /// set, using template argument deduction to produce an appropriate member
 /// function template specialization.
 void
@@ -6679,7 +6679,7 @@
                      Conversions);
 }
 
-/// \brief Add a C++ function template specialization as a candidate
+/// Add a C++ function template specialization as a candidate
 /// in the candidate set, using template argument deduction to produce
 /// an appropriate function template specialization.
 void
@@ -7020,7 +7020,7 @@
   }
 }
 
-/// \brief Adds a conversion function template specialization
+/// Adds a conversion function template specialization
 /// candidate to the overload set, using template argument deduction
 /// to deduce the template arguments of the conversion function
 /// template from the type that we are converting to (C++
@@ -7175,7 +7175,7 @@
   }
 }
 
-/// \brief Add overload candidates for overloaded operators that are
+/// Add overload candidates for overloaded operators that are
 /// member functions.
 ///
 /// Add the overloaded operator candidates that are member functions
@@ -7311,18 +7311,18 @@
   /// used in the built-in candidates.
   TypeSet EnumerationTypes;
 
-  /// \brief The set of vector types that will be used in the built-in
+  /// The set of vector types that will be used in the built-in
   /// candidates.
   TypeSet VectorTypes;
 
-  /// \brief A flag indicating non-record types are viable candidates
+  /// A flag indicating non-record types are viable candidates
   bool HasNonRecordTypes;
 
-  /// \brief A flag indicating whether either arithmetic or enumeration types
+  /// A flag indicating whether either arithmetic or enumeration types
   /// were present in the candidate set.
   bool HasArithmeticOrEnumeralTypes;
 
-  /// \brief A flag indicating whether the nullptr type was present in the
+  /// A flag indicating whether the nullptr type was present in the
   /// candidate set.
   bool HasNullPtrType;
 
@@ -7575,7 +7575,7 @@
   }
 }
 
-/// \brief Helper function for AddBuiltinOperatorCandidates() that adds
+/// Helper function for AddBuiltinOperatorCandidates() that adds
 /// the volatile- and non-volatile-qualified assignment operators for the
 /// given type to the candidate set.
 static void AddBuiltinAssignmentOperatorCandidates(Sema &S,
@@ -7653,7 +7653,7 @@
 
 namespace {
 
-/// \brief Helper class to manage the addition of builtin operator overload
+/// Helper class to manage the addition of builtin operator overload
 /// candidates. It provides shared state and utility methods used throughout
 /// the process, as well as a helper method to add each group of builtin
 /// operator overloads from the standard to a candidate set.
@@ -7726,7 +7726,7 @@
            "Enough inline storage for all arithmetic types.");
   }
 
-  /// \brief Helper method to factor out the common pattern of adding overloads
+  /// Helper method to factor out the common pattern of adding overloads
   /// for '++' and '--' builtin operators.
   void addPlusPlusMinusMinusStyleOverloads(QualType CandidateTy,
                                            bool HasVolatile,
@@ -8862,7 +8862,7 @@
   }
 }
 
-/// \brief Add function candidates found via argument-dependent lookup
+/// Add function candidates found via argument-dependent lookup
 /// to the set of overloading candidates.
 ///
 /// This routine performs argument-dependent name lookup based on the
@@ -9235,7 +9235,7 @@
   }
 }
 
-/// \brief Computes the best viable function (C++ 13.3.3)
+/// Computes the best viable function (C++ 13.3.3)
 /// within an overload candidate set.
 ///
 /// \param Loc The location of the function name (or operator symbol) for
@@ -9411,7 +9411,7 @@
   return true;
 }
 
-/// \brief Returns true if we can take the address of the function.
+/// Returns true if we can take the address of the function.
 ///
 /// \param Complain - If true, we'll emit a diagnostic
 /// \param InOverloadResolution - For the purposes of emitting a diagnostic, are
@@ -11265,7 +11265,7 @@
   return Fn;
 }
 
-/// \brief Given an expression that refers to an overloaded function, try to
+/// Given an expression that refers to an overloaded function, try to
 /// resolve that function to a single function that can have its address taken.
 /// This will modify `Pair` iff it returns non-null.
 ///
@@ -11301,7 +11301,7 @@
   return Result;
 }
 
-/// \brief Given an overloaded function, tries to turn it into a non-overloaded
+/// Given an overloaded function, tries to turn it into a non-overloaded
 /// function reference using resolveAddressOfOnlyViableOverloadCandidate. This
 /// will perform access checks, diagnose the use of the resultant decl, and, if
 /// requested, potentially perform a function-to-pointer decay.
@@ -11331,7 +11331,7 @@
   return true;
 }
 
-/// \brief Given an expression that refers to an overloaded function, try to
+/// Given an expression that refers to an overloaded function, try to
 /// resolve that overloaded function expression down to a single function.
 ///
 /// This routine can only resolve template-ids that refer to a single function
@@ -11500,7 +11500,7 @@
   return true;
 }
 
-/// \brief Add a single candidate to the overload set.
+/// Add a single candidate to the overload set.
 static void AddOverloadedCallCandidate(Sema &S,
                                        DeclAccessPair FoundDecl,
                                  TemplateArgumentListInfo *ExplicitTemplateArgs,
@@ -11539,7 +11539,7 @@
   assert(!KnownValid && "unhandled case in overloaded call candidate");
 }
 
-/// \brief Add the overload candidates named by callee and/or found by argument
+/// Add the overload candidates named by callee and/or found by argument
 /// dependent lookup to the given overload set.
 void Sema::AddOverloadedCallCandidates(UnresolvedLookupExpr *ULE,
                                        ArrayRef<Expr *> Args,
@@ -11831,7 +11831,7 @@
                                RParenLoc);
 }
 
-/// \brief Constructs and populates an OverloadedCandidateSet from
+/// Constructs and populates an OverloadedCandidateSet from
 /// the given function.
 /// \returns true when an the ExprResult output parameter has been set.
 bool Sema::buildOverloadedCallSet(Scope *S, Expr *Fn,
@@ -12037,7 +12037,7 @@
     (Functions.size() == 1 && isa<FunctionTemplateDecl>(*Functions.begin()));
 }
 
-/// \brief Create a unary operation that may resolve to an overloaded
+/// Create a unary operation that may resolve to an overloaded
 /// operator.
 ///
 /// \param OpLoc The location of the operator itself (e.g., '*').
@@ -12228,7 +12228,7 @@
   return CreateBuiltinUnaryOp(OpLoc, Opc, Input);
 }
 
-/// \brief Create a binary operation that may resolve to an overloaded
+/// Create a binary operation that may resolve to an overloaded
 /// operator.
 ///
 /// \param OpLoc The location of the operator itself (e.g., '+').
Index: cfe/trunk/lib/Sema/SemaPseudoObject.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaPseudoObject.cpp
+++ cfe/trunk/lib/Sema/SemaPseudoObject.cpp
@@ -253,7 +253,7 @@
     virtual ExprResult buildGet() = 0;
     virtual ExprResult buildSet(Expr *, SourceLocation,
                                 bool captureSetValueAsResult) = 0;
-    /// \brief Should the result of an assignment be the formal result of the
+    /// Should the result of an assignment be the formal result of the
     /// setter call or the value that was passed to the setter?
     ///
     /// Different pseudo-object language features use different language rules
Index: cfe/trunk/lib/Sema/SemaStmt.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaStmt.cpp
+++ cfe/trunk/lib/Sema/SemaStmt.cpp
@@ -121,7 +121,7 @@
   }
 }
 
-/// \brief Diagnose unused comparisons, both builtin and overloaded operators.
+/// Diagnose unused comparisons, both builtin and overloaded operators.
 /// For '==' and '!=', suggest fixits for '=' or '|='.
 ///
 /// Adding a cast to void (or other expression wrappers) will prevent the
@@ -2121,7 +2121,7 @@
                               DS, RParenLoc, Kind);
 }
 
-/// \brief Create the initialization, compare, and increment steps for
+/// Create the initialization, compare, and increment steps for
 /// the range-based for loop expression.
 /// This function does not handle array-based for loops,
 /// which are created in Sema::BuildCXXForRangeStmt.
@@ -2851,7 +2851,7 @@
   return new (Context) BreakStmt(BreakLoc);
 }
 
-/// \brief Determine whether the given expression is a candidate for
+/// Determine whether the given expression is a candidate for
 /// copy elision in either a return statement or a throw expression.
 ///
 /// \param ReturnType If we're determining the copy elision candidate for
@@ -2931,7 +2931,7 @@
   return true;
 }
 
-/// \brief Try to perform the initialization of a potentially-movable value,
+/// Try to perform the initialization of a potentially-movable value,
 /// which is the operand to a return or throw statement.
 ///
 /// This routine implements C++14 [class.copy]p32, which attempts to treat
@@ -3019,7 +3019,7 @@
   }
 }
 
-/// \brief Perform the initialization of a potentially-movable value, which
+/// Perform the initialization of a potentially-movable value, which
 /// is the result of return value.
 ///
 /// This routine implements C++14 [class.copy]p32, which attempts to treat
@@ -3131,7 +3131,7 @@
   return Res;
 }
 
-/// \brief Determine whether the declared return type of the specified function
+/// Determine whether the declared return type of the specified function
 /// contains 'auto'.
 static bool hasDeducedReturnType(FunctionDecl *FD) {
   const FunctionProtoType *FPT =
@@ -3303,7 +3303,7 @@
 }
 
 namespace {
-/// \brief Marks all typedefs in all local classes in a type referenced.
+/// Marks all typedefs in all local classes in a type referenced.
 ///
 /// In a function like
 /// auto f() {
Index: cfe/trunk/lib/Sema/SemaStmtAsm.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaStmtAsm.cpp
+++ cfe/trunk/lib/Sema/SemaStmtAsm.cpp
@@ -109,7 +109,7 @@
   return false;
 }
 
-/// \brief Returns true if given expression is not compatible with inline
+/// Returns true if given expression is not compatible with inline
 /// assembly's memory constraint; false otherwise.
 static bool checkExprMemoryConstraintCompat(Sema &S, Expr *E,
                                             TargetInfo::ConstraintInfo &Info,
Index: cfe/trunk/lib/Sema/SemaTemplate.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaTemplate.cpp
+++ cfe/trunk/lib/Sema/SemaTemplate.cpp
@@ -46,7 +46,7 @@
 }
 
 namespace clang {
-/// \brief [temp.constr.decl]p2: A template's associated constraints are
+/// [temp.constr.decl]p2: A template's associated constraints are
 /// defined as a single constraint-expression derived from the introduced
 /// constraint-expressions [ ... ].
 ///
@@ -65,7 +65,7 @@
   return Params->getRequiresClause();
 }
 
-/// \brief Determine whether the declaration found is acceptable as the name
+/// Determine whether the declaration found is acceptable as the name
 /// of a template and, if so, return that template declaration. Otherwise,
 /// returns NULL.
 static NamedDecl *isAcceptableTemplateName(ASTContext &Context,
@@ -765,7 +765,7 @@
   llvm_unreachable("Unhandled parsed template argument");
 }
 
-/// \brief Translates template arguments as provided by the parser
+/// Translates template arguments as provided by the parser
 /// into template arguments used by semantic analysis.
 void Sema::translateTemplateArguments(const ASTTemplateArgsPtr &TemplateArgsIn,
                                       TemplateArgumentListInfo &TemplateArgs) {
@@ -904,7 +904,7 @@
   return Param;
 }
 
-/// \brief Check that the type of a non-type template parameter is
+/// Check that the type of a non-type template parameter is
 /// well-formed.
 ///
 /// \returns the (possibly-promoted) parameter type if valid;
@@ -1975,7 +1975,7 @@
       ->setIsCopyDeductionCandidate();
 }
 
-/// \brief Diagnose the presence of a default template argument on a
+/// Diagnose the presence of a default template argument on a
 /// template parameter, which is ill-formed in certain contexts.
 ///
 /// \returns true if the default template argument should be dropped.
@@ -2031,7 +2031,7 @@
   llvm_unreachable("Invalid TemplateParamListContext!");
 }
 
-/// \brief Check for unexpanded parameter packs within the template parameters
+/// Check for unexpanded parameter packs within the template parameters
 /// of a template template parameter, recursively.
 static bool DiagnoseUnexpandedParameterPacks(Sema &S,
                                              TemplateTemplateParmDecl *TTP) {
@@ -2062,7 +2062,7 @@
   return false;
 }
 
-/// \brief Checks the validity of a template parameter list, possibly
+/// Checks the validity of a template parameter list, possibly
 /// considering the template parameter list from a previous
 /// declaration.
 ///
@@ -2429,7 +2429,7 @@
   return SourceRange();
 }
 
-/// \brief Match the given template parameter lists to the given scope
+/// Match the given template parameter lists to the given scope
 /// specifier, returning the template parameter list that applies to the
 /// name.
 ///
@@ -3804,7 +3804,7 @@
 }
 
 namespace {
-/// \brief A partial specialization whose template arguments have matched
+/// A partial specialization whose template arguments have matched
 /// a given template-id.
 struct PartialSpecMatchResult {
   VarTemplatePartialSpecializationDecl *Partial;
@@ -4092,7 +4092,7 @@
   return BuildTemplateIdExpr(SS, TemplateKWLoc, R, /*ADL*/ false, TemplateArgs);
 }
 
-/// \brief Form a dependent template name.
+/// Form a dependent template name.
 ///
 /// This action forms a dependent template name given the template
 /// name and its (presumably dependent) scope specifier. For
@@ -4319,7 +4319,7 @@
   return false;
 }
 
-/// \brief Substitute template arguments into the default template argument for
+/// Substitute template arguments into the default template argument for
 /// the given template type parameter.
 ///
 /// \param SemaRef the semantic analysis object for which we are performing
@@ -4375,7 +4375,7 @@
   return ArgType;
 }
 
-/// \brief Substitute template arguments into the default template argument for
+/// Substitute template arguments into the default template argument for
 /// the given non-type template parameter.
 ///
 /// \param SemaRef the semantic analysis object for which we are performing
@@ -4423,7 +4423,7 @@
   return SemaRef.SubstExpr(Param->getDefaultArgument(), TemplateArgLists);
 }
 
-/// \brief Substitute template arguments into the default template argument for
+/// Substitute template arguments into the default template argument for
 /// the given template template parameter.
 ///
 /// \param SemaRef the semantic analysis object for which we are performing
@@ -4487,7 +4487,7 @@
              TemplateArgLists);
 }
 
-/// \brief If the given template parameter has a default template
+/// If the given template parameter has a default template
 /// argument, substitute into that default template argument and
 /// return the corresponding template argument.
 TemplateArgumentLoc
@@ -4588,7 +4588,7 @@
   return TemplateArgumentLoc();
 }
 
-/// \brief Check that the given template argument corresponds to the given
+/// Check that the given template argument corresponds to the given
 /// template parameter.
 ///
 /// \param Param The template parameter against which the argument will be
@@ -4850,7 +4850,7 @@
   return false;
 }
 
-/// \brief Diagnose an arity mismatch in the
+/// Diagnose an arity mismatch in the
 static bool diagnoseArityMismatch(Sema &S, TemplateDecl *Template,
                                   SourceLocation TemplateLoc,
                                   TemplateArgumentListInfo &TemplateArgs) {
@@ -4871,7 +4871,7 @@
   return true;
 }
 
-/// \brief Check whether the template parameter is a pack expansion, and if so,
+/// Check whether the template parameter is a pack expansion, and if so,
 /// determine the number of parameters produced by that expansion. For instance:
 ///
 /// \code
@@ -4927,7 +4927,7 @@
   return diagnoseArityMismatch(S, TD, Loc, Args);
 }
 
-/// \brief Check that the given template argument list is well-formed
+/// Check that the given template argument list is well-formed
 /// for specializing the given template.
 bool Sema::CheckTemplateArgumentList(
     TemplateDecl *Template, SourceLocation TemplateLoc,
@@ -5434,7 +5434,7 @@
   llvm_unreachable("Invalid NestedNameSpecifier::Kind!");
 }
 
-/// \brief Check a template argument against its corresponding
+/// Check a template argument against its corresponding
 /// template type parameter.
 ///
 /// This routine implements the semantics of C++ [temp.arg.type]. It
@@ -5472,7 +5472,7 @@
   NPV_Error
 };
 
-/// \brief Determine whether the given template argument is a null pointer
+/// Determine whether the given template argument is a null pointer
 /// value of the appropriate type.
 static NullPointerValueKind
 isNullPointerValueTemplateArgument(Sema &S, NonTypeTemplateParmDecl *Param,
@@ -5568,7 +5568,7 @@
   return NPV_NotNullPointer;
 }
 
-/// \brief Checks whether the given template argument is compatible with its
+/// Checks whether the given template argument is compatible with its
 /// template parameter.
 static bool CheckTemplateArgumentIsCompatibleWithParameter(
     Sema &S, NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *ArgIn,
@@ -5625,7 +5625,7 @@
   return false;
 }
 
-/// \brief Checks whether the given template argument is the address
+/// Checks whether the given template argument is the address
 /// of an object or function according to C++ [temp.arg.nontype]p1.
 static bool
 CheckTemplateArgumentAddressOfObjectOrFunction(Sema &S,
@@ -5913,7 +5913,7 @@
   return false;
 }
 
-/// \brief Checks whether the given template argument is a pointer to
+/// Checks whether the given template argument is a pointer to
 /// member constant according to C++ [temp.arg.nontype]p1.
 static bool CheckTemplateArgumentPointerToMember(Sema &S,
                                                  NonTypeTemplateParmDecl *Param,
@@ -6042,7 +6042,7 @@
   return true;
 }
 
-/// \brief Check a template argument against its corresponding
+/// Check a template argument against its corresponding
 /// non-type template parameter.
 ///
 /// This routine implements the semantics of C++ [temp.arg.nontype].
@@ -6560,7 +6560,7 @@
     Sema &S, TemplateParameterList *New, TemplateParameterList *Old,
     Sema::TemplateParameterListEqualKind Kind, SourceLocation TemplateArgLoc);
 
-/// \brief Check a template argument against its corresponding
+/// Check a template argument against its corresponding
 /// template template parameter.
 ///
 /// This routine implements the semantics of C++ [temp.arg.template].
@@ -6627,7 +6627,7 @@
                                          Arg.getLocation());
 }
 
-/// \brief Given a non-type template argument that refers to a
+/// Given a non-type template argument that refers to a
 /// declaration and the type of its corresponding non-type template
 /// parameter, produce an expression that properly refers to that
 /// declaration.
@@ -6750,7 +6750,7 @@
   return BuildDeclRefExpr(VD, T, VK, Loc);
 }
 
-/// \brief Construct a new expression that refers to the given
+/// Construct a new expression that refers to the given
 /// integral template argument with the given source-location
 /// information.
 ///
@@ -6810,7 +6810,7 @@
   return E;
 }
 
-/// \brief Match two template parameters within template parameter lists.
+/// Match two template parameters within template parameter lists.
 static bool MatchTemplateParameterKind(Sema &S, NamedDecl *New, NamedDecl *Old,
                                        bool Complain,
                                      Sema::TemplateParameterListEqualKind Kind,
@@ -6913,7 +6913,7 @@
   return true;
 }
 
-/// \brief Diagnose a known arity mismatch when comparing template argument
+/// Diagnose a known arity mismatch when comparing template argument
 /// lists.
 static
 void DiagnoseTemplateParameterListArityMismatch(Sema &S,
@@ -6935,7 +6935,7 @@
     << SourceRange(Old->getTemplateLoc(), Old->getRAngleLoc());
 }
 
-/// \brief Determine whether the given template parameter lists are
+/// Determine whether the given template parameter lists are
 /// equivalent.
 ///
 /// \param New  The new template parameter list, typically written in the
@@ -7027,7 +7027,7 @@
   return true;
 }
 
-/// \brief Check whether a template can be declared within this scope.
+/// Check whether a template can be declared within this scope.
 ///
 /// If the template declaration is valid in this scope, returns
 /// false. Otherwise, issues a diagnostic and returns true.
@@ -7076,7 +7076,7 @@
     << TemplateParams->getSourceRange();
 }
 
-/// \brief Determine what kind of template specialization the given declaration
+/// Determine what kind of template specialization the given declaration
 /// is.
 static TemplateSpecializationKind getTemplateSpecializationKind(Decl *D) {
   if (!D)
@@ -7092,7 +7092,7 @@
   return TSK_Undeclared;
 }
 
-/// \brief Check whether a specialization is well-formed in the current
+/// Check whether a specialization is well-formed in the current
 /// context.
 ///
 /// This routine determines whether a template specialization can be declared
@@ -7208,7 +7208,7 @@
   return Checker.MatchLoc;
 }
 
-/// \brief Subroutine of Sema::CheckTemplatePartialSpecializationArgs
+/// Subroutine of Sema::CheckTemplatePartialSpecializationArgs
 /// that checks non-type template partial specialization arguments.
 static bool CheckNonTypeTemplatePartialSpecializationArgs(
     Sema &S, SourceLocation TemplateNameLoc, NonTypeTemplateParmDecl *Param,
@@ -7296,7 +7296,7 @@
   return false;
 }
 
-/// \brief Check the non-type template arguments of a class template
+/// Check the non-type template arguments of a class template
 /// partial specialization according to C++ [temp.class.spec]p9.
 ///
 /// \param TemplateNameLoc the location of the template name.
@@ -7710,7 +7710,7 @@
   return NewDecl;
 }
 
-/// \brief Strips various properties off an implicit instantiation
+/// Strips various properties off an implicit instantiation
 /// that has just been explicitly specialized.
 static void StripImplicitInstantiation(NamedDecl *D) {
   D->dropAttr<DLLImportAttr>();
@@ -7720,7 +7720,7 @@
     FD->setInlineSpecified(false);
 }
 
-/// \brief Compute the diagnostic location for an explicit instantiation
+/// Compute the diagnostic location for an explicit instantiation
 //  declaration or definition.
 static SourceLocation DiagLocForExplicitInstantiation(
     NamedDecl* D, SourceLocation PointOfInstantiation) {
@@ -7737,7 +7737,7 @@
   return PrevDiagLoc;
 }
 
-/// \brief Diagnose cases where we have an explicit template specialization
+/// Diagnose cases where we have an explicit template specialization
 /// before/after an explicit template instantiation, producing diagnostics
 /// for those cases where they are required and determining whether the
 /// new specialization/instantiation will have any effect.
@@ -7922,7 +7922,7 @@
   llvm_unreachable("Missing specialization/instantiation case?");
 }
 
-/// \brief Perform semantic analysis for the given dependent function
+/// Perform semantic analysis for the given dependent function
 /// template specialization.
 ///
 /// The only possible way to get a dependent function template specialization
@@ -7962,7 +7962,7 @@
   return false;
 }
 
-/// \brief Perform semantic analysis for the given function template
+/// Perform semantic analysis for the given function template
 /// specialization.
 ///
 /// This routine performs all of the semantic analysis required for an
@@ -8185,7 +8185,7 @@
   return false;
 }
 
-/// \brief Perform semantic analysis for the given non-template member
+/// Perform semantic analysis for the given non-template member
 /// specialization.
 ///
 /// This routine performs all of the semantic analysis required for an
@@ -8395,7 +8395,7 @@
     llvm_unreachable("unknown member specialization kind");
 }
 
-/// \brief Check the scope of an explicit instantiation.
+/// Check the scope of an explicit instantiation.
 ///
 /// \returns true if a serious error occurs, false otherwise.
 static bool CheckExplicitInstantiationScope(Sema &S, NamedDecl *D,
@@ -8449,7 +8449,7 @@
   return false;
 }
 
-/// \brief Determine whether the given scope specifier has a template-id in it.
+/// Determine whether the given scope specifier has a template-id in it.
 static bool ScopeSpecifierHasTemplateId(const CXXScopeSpec &SS) {
   if (!SS.isSet())
     return false;
@@ -9503,7 +9503,7 @@
   return true;
 }
 
-/// \brief Build the type that describes a C++ typename specifier,
+/// Build the type that describes a C++ typename specifier,
 /// e.g., "typename T::type".
 QualType
 Sema::CheckTypenameType(ElaboratedTypeKeyword Keyword,
@@ -9678,7 +9678,7 @@
     : TreeTransform<CurrentInstantiationRebuilder>(SemaRef),
       Loc(Loc), Entity(Entity) { }
 
-    /// \brief Determine whether the given type \p T has already been
+    /// Determine whether the given type \p T has already been
     /// transformed.
     ///
     /// For the purposes of type reconstruction, a type has already been
@@ -9687,14 +9687,14 @@
       return T.isNull() || !T->isDependentType();
     }
 
-    /// \brief Returns the location of the entity whose type is being
+    /// Returns the location of the entity whose type is being
     /// rebuilt.
     SourceLocation getBaseLocation() { return Loc; }
 
-    /// \brief Returns the name of the entity whose type is being rebuilt.
+    /// Returns the name of the entity whose type is being rebuilt.
     DeclarationName getBaseEntity() { return Entity; }
 
-    /// \brief Sets the "base" location and entity when that
+    /// Sets the "base" location and entity when that
     /// information is known based on another transformation.
     void setBase(SourceLocation Loc, DeclarationName Entity) {
       this->Loc = Loc;
@@ -9708,7 +9708,7 @@
   };
 } // end anonymous namespace
 
-/// \brief Rebuilds a type within the context of the current instantiation.
+/// Rebuilds a type within the context of the current instantiation.
 ///
 /// The type \p T is part of the type of an out-of-line member definition of
 /// a class template (or class template partial specialization) that was parsed
@@ -9766,7 +9766,7 @@
   return false;
 }
 
-/// \brief Rebuild the template parameters now that we know we're in a current
+/// Rebuild the template parameters now that we know we're in a current
 /// instantiation.
 bool Sema::RebuildTemplateParamsInCurrentInstantiation(
                                                TemplateParameterList *Params) {
@@ -9805,7 +9805,7 @@
   return false;
 }
 
-/// \brief Produces a formatted string that describes the binding of
+/// Produces a formatted string that describes the binding of
 /// template parameters to template arguments.
 std::string
 Sema::getTemplateArgumentBindingsText(const TemplateParameterList *Params,
@@ -9883,7 +9883,7 @@
 }
 
 namespace {
-/// \brief Walk the path from which a declaration was instantiated, and check
+/// Walk the path from which a declaration was instantiated, and check
 /// that every explicit specialization along that path is visible. This enforces
 /// C++ [temp.expl.spec]/6:
 ///
@@ -10019,7 +10019,7 @@
   ExplicitSpecializationVisibilityChecker(*this, Loc).check(Spec);
 }
 
-/// \brief Check whether a template partial specialization that we've discovered
+/// Check whether a template partial specialization that we've discovered
 /// is hidden, and produce suitable diagnostics if so.
 void Sema::checkPartialSpecializationVisibility(SourceLocation Loc,
                                                 NamedDecl *Spec) {
Index: cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp
+++ cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp
@@ -59,39 +59,39 @@
 
 namespace clang {
 
-  /// \brief Various flags that control template argument deduction.
+  /// Various flags that control template argument deduction.
   ///
   /// These flags can be bitwise-OR'd together.
   enum TemplateDeductionFlags {
-    /// \brief No template argument deduction flags, which indicates the
+    /// No template argument deduction flags, which indicates the
     /// strictest results for template argument deduction (as used for, e.g.,
     /// matching class template partial specializations).
     TDF_None = 0,
 
-    /// \brief Within template argument deduction from a function call, we are
+    /// Within template argument deduction from a function call, we are
     /// matching with a parameter type for which the original parameter was
     /// a reference.
     TDF_ParamWithReferenceType = 0x1,
 
-    /// \brief Within template argument deduction from a function call, we
+    /// Within template argument deduction from a function call, we
     /// are matching in a case where we ignore cv-qualifiers.
     TDF_IgnoreQualifiers = 0x02,
 
-    /// \brief Within template argument deduction from a function call,
+    /// Within template argument deduction from a function call,
     /// we are matching in a case where we can perform template argument
     /// deduction from a template-id of a derived class of the argument type.
     TDF_DerivedClass = 0x04,
 
-    /// \brief Allow non-dependent types to differ, e.g., when performing
+    /// Allow non-dependent types to differ, e.g., when performing
     /// template argument deduction from a function call where conversions
     /// may apply.
     TDF_SkipNonDependent = 0x08,
 
-    /// \brief Whether we are performing template argument deduction for
+    /// Whether we are performing template argument deduction for
     /// parameters and arguments in a top-level template argument
     TDF_TopLevelParameterTypeList = 0x10,
 
-    /// \brief Within template argument deduction from overload resolution per
+    /// Within template argument deduction from overload resolution per
     /// C++ [over.over] allow matching function types that are compatible in
     /// terms of noreturn and default calling convention adjustments, or
     /// similarly matching a declared template specialization against a
@@ -105,7 +105,7 @@
 using namespace clang;
 using namespace sema;
 
-/// \brief Compare two APSInts, extending and switching the sign as
+/// Compare two APSInts, extending and switching the sign as
 /// necessary to compare their values regardless of underlying type.
 static bool hasSameExtendedValue(llvm::APSInt X, llvm::APSInt Y) {
   if (Y.getBitWidth() > X.getBitWidth())
@@ -163,7 +163,7 @@
                                        bool OnlyDeduced, unsigned Level,
                                        llvm::SmallBitVector &Deduced);
 
-/// \brief If the given expression is of a form that permits the deduction
+/// If the given expression is of a form that permits the deduction
 /// of a non-type template parameter, return the declaration of that
 /// non-type template parameter.
 static NonTypeTemplateParmDecl *
@@ -188,7 +188,7 @@
   return nullptr;
 }
 
-/// \brief Determine whether two declaration pointers refer to the same
+/// Determine whether two declaration pointers refer to the same
 /// declaration.
 static bool isSameDeclaration(Decl *X, Decl *Y) {
   if (NamedDecl *NX = dyn_cast<NamedDecl>(X))
@@ -199,7 +199,7 @@
   return X->getCanonicalDecl() == Y->getCanonicalDecl();
 }
 
-/// \brief Verify that the given, deduced template arguments are compatible.
+/// Verify that the given, deduced template arguments are compatible.
 ///
 /// \returns The deduced template argument, or a NULL template argument if
 /// the deduced template arguments were incompatible.
@@ -362,7 +362,7 @@
   llvm_unreachable("Invalid TemplateArgument Kind!");
 }
 
-/// \brief Deduce the value of the given non-type template parameter
+/// Deduce the value of the given non-type template parameter
 /// as the given deduced template argument. All non-type template parameter
 /// deduction is funneled through here.
 static Sema::TemplateDeductionResult DeduceNonTypeTemplateArgument(
@@ -410,7 +410,7 @@
       /*ArrayBound=*/NewDeduced.wasDeducedFromArrayBound());
 }
 
-/// \brief Deduce the value of the given non-type template parameter
+/// Deduce the value of the given non-type template parameter
 /// from the given integral constant.
 static Sema::TemplateDeductionResult DeduceNonTypeTemplateArgument(
     Sema &S, TemplateParameterList *TemplateParams,
@@ -424,7 +424,7 @@
       ValueType, Info, Deduced);
 }
 
-/// \brief Deduce the value of the given non-type template parameter
+/// Deduce the value of the given non-type template parameter
 /// from the given null pointer template argument type.
 static Sema::TemplateDeductionResult DeduceNullPtrTemplateArgument(
     Sema &S, TemplateParameterList *TemplateParams,
@@ -441,7 +441,7 @@
                                        Value->getType(), Info, Deduced);
 }
 
-/// \brief Deduce the value of the given non-type template parameter
+/// Deduce the value of the given non-type template parameter
 /// from the given type- or value-dependent expression.
 ///
 /// \returns true if deduction succeeded, false otherwise.
@@ -454,7 +454,7 @@
                                        Value->getType(), Info, Deduced);
 }
 
-/// \brief Deduce the value of the given non-type template parameter
+/// Deduce the value of the given non-type template parameter
 /// from the given declaration.
 ///
 /// \returns true if deduction succeeded, false otherwise.
@@ -514,7 +514,7 @@
   return Sema::TDK_NonDeducedMismatch;
 }
 
-/// \brief Deduce the template arguments by comparing the template parameter
+/// Deduce the template arguments by comparing the template parameter
 /// type (which is a template-id) with the template argument type.
 ///
 /// \param S the Sema
@@ -599,7 +599,7 @@
                                  Deduced, /*NumberOfArgumentsMustMatch=*/true);
 }
 
-/// \brief Determines whether the given type is an opaque type that
+/// Determines whether the given type is an opaque type that
 /// might be more qualified when instantiated.
 static bool IsPossiblyOpaquelyQualifiedType(QualType T) {
   switch (T->getTypeClass()) {
@@ -623,7 +623,7 @@
   }
 }
 
-/// \brief Retrieve the depth and index of a template parameter.
+/// Retrieve the depth and index of a template parameter.
 static std::pair<unsigned, unsigned>
 getDepthAndIndex(NamedDecl *ND) {
   if (TemplateTypeParmDecl *TTP = dyn_cast<TemplateTypeParmDecl>(ND))
@@ -636,7 +636,7 @@
   return std::make_pair(TTP->getDepth(), TTP->getIndex());
 }
 
-/// \brief Retrieve the depth and index of an unexpanded parameter pack.
+/// Retrieve the depth and index of an unexpanded parameter pack.
 static std::pair<unsigned, unsigned>
 getDepthAndIndex(UnexpandedParameterPack UPP) {
   if (const TemplateTypeParmType *TTP
@@ -646,7 +646,7 @@
   return getDepthAndIndex(UPP.first.get<NamedDecl *>());
 }
 
-/// \brief Helper function to build a TemplateParameter when we don't
+/// Helper function to build a TemplateParameter when we don't
 /// know its type statically.
 static TemplateParameter makeTemplateParameter(Decl *D) {
   if (TemplateTypeParmDecl *TTP = dyn_cast<TemplateTypeParmDecl>(D))
@@ -805,7 +805,7 @@
     ++PackElements;
   }
 
-  /// \brief Finish template argument deduction for a set of argument packs,
+  /// Finish template argument deduction for a set of argument packs,
   /// producing the argument packs and checking for consistency with prior
   /// deductions.
   Sema::TemplateDeductionResult finish() {
@@ -897,7 +897,7 @@
 
 } // namespace
 
-/// \brief Deduce the template arguments by comparing the list of parameter
+/// Deduce the template arguments by comparing the list of parameter
 /// types to the list of argument types, as in the parameter-type-lists of
 /// function types (C++ [temp.deduct.type]p10).
 ///
@@ -1019,7 +1019,7 @@
   return Sema::TDK_Success;
 }
 
-/// \brief Determine whether the parameter has qualifiers that are either
+/// Determine whether the parameter has qualifiers that are either
 /// inconsistent with or a superset of the argument's qualifiers.
 static bool hasInconsistentOrSupersetQualifiersOf(QualType ParamType,
                                                   QualType ArgType) {
@@ -1050,7 +1050,7 @@
                                                 == ParamQs.getCVRQualifiers());
 }
 
-/// \brief Compare types for equality with respect to possibly compatible
+/// Compare types for equality with respect to possibly compatible
 /// function types (noreturn adjustment, implicit calling conventions). If any
 /// of parameter and argument is not a function, just perform type comparison.
 ///
@@ -1102,7 +1102,7 @@
   return false;
 }
 
-/// \brief Deduce the template arguments by comparing the parameter type and
+/// Deduce the template arguments by comparing the parameter type and
 /// the argument type (C++ [temp.deduct.type]).
 ///
 /// \param S the semantic analysis object within which we are deducing
@@ -2078,7 +2078,7 @@
   llvm_unreachable("Invalid TemplateArgument Kind!");
 }
 
-/// \brief Determine whether there is a template argument to be used for
+/// Determine whether there is a template argument to be used for
 /// deduction.
 ///
 /// This routine "expands" argument packs in-place, overriding its input
@@ -2101,7 +2101,7 @@
   return ArgIdx < Args.size();
 }
 
-/// \brief Determine whether the given set of template arguments has a pack
+/// Determine whether the given set of template arguments has a pack
 /// expansion that is not the last template argument.
 static bool hasPackExpansionBeforeEnd(ArrayRef<TemplateArgument> Args) {
   bool FoundPackExpansion = false;
@@ -2216,7 +2216,7 @@
                                  /*NumberOfArgumentsMustMatch*/false);
 }
 
-/// \brief Determine whether two template arguments are the same.
+/// Determine whether two template arguments are the same.
 static bool isSameTemplateArg(ASTContext &Context,
                               TemplateArgument X,
                               const TemplateArgument &Y,
@@ -2277,7 +2277,7 @@
   llvm_unreachable("Invalid TemplateArgument Kind!");
 }
 
-/// \brief Allocate a TemplateArgumentLoc where all locations have
+/// Allocate a TemplateArgumentLoc where all locations have
 /// been initialized to the given location.
 ///
 /// \param Arg The template argument we are producing template argument
@@ -2352,7 +2352,7 @@
   llvm_unreachable("Invalid TemplateArgument Kind!");
 }
 
-/// \brief Convert the given deduced template argument and add it to the set of
+/// Convert the given deduced template argument and add it to the set of
 /// fully-converted template arguments.
 static bool
 ConvertDeducedTemplateArgument(Sema &S, NamedDecl *Param,
@@ -2707,7 +2707,7 @@
 }
 
 
-/// \brief Perform template argument deduction to determine whether
+/// Perform template argument deduction to determine whether
 /// the given template arguments match the given class template
 /// partial specialization per C++ [temp.class.spec.match].
 Sema::TemplateDeductionResult
@@ -2750,7 +2750,7 @@
       *this, Partial, /*PartialOrdering=*/false, TemplateArgs, Deduced, Info);
 }
 
-/// \brief Perform template argument deduction to determine whether
+/// Perform template argument deduction to determine whether
 /// the given template arguments match the given variable template
 /// partial specialization per C++ [temp.class.spec.match].
 Sema::TemplateDeductionResult
@@ -2791,7 +2791,7 @@
       *this, Partial, /*PartialOrdering=*/false, TemplateArgs, Deduced, Info);
 }
 
-/// \brief Determine whether the given type T is a simple-template-id type.
+/// Determine whether the given type T is a simple-template-id type.
 static bool isSimpleTemplateIdType(QualType T) {
   if (const TemplateSpecializationType *Spec
         = T->getAs<TemplateSpecializationType>())
@@ -2811,7 +2811,7 @@
   return false;
 }
 
-/// \brief Substitute the explicitly-provided template arguments into the
+/// Substitute the explicitly-provided template arguments into the
 /// given function template according to C++ [temp.arg.explicit].
 ///
 /// \param FunctionTemplate the function template into which the explicit
@@ -3018,7 +3018,7 @@
   return TDK_Success;
 }
 
-/// \brief Check whether the deduced argument type for a call to a function
+/// Check whether the deduced argument type for a call to a function
 /// template matches the actual argument type per C++ [temp.deduct.call]p4.
 static Sema::TemplateDeductionResult
 CheckOriginalCallArgDeduction(Sema &S, TemplateDeductionInfo &Info,
@@ -3164,7 +3164,7 @@
   llvm_unreachable("parameter index would not be produced from template");
 }
 
-/// \brief Finish template argument deduction for a function template,
+/// Finish template argument deduction for a function template,
 /// checking the deduced template arguments for completeness and forming
 /// the function template specialization.
 ///
@@ -3436,7 +3436,7 @@
   return Match;
 }
 
-/// \brief Perform the adjustments to the parameter and argument types
+/// Perform the adjustments to the parameter and argument types
 /// described in C++ [temp.deduct.call].
 ///
 /// \returns true if the caller should not attempt to perform any template
@@ -3543,7 +3543,7 @@
     SmallVectorImpl<Sema::OriginalCallArg> &OriginalCallArgs,
     bool DecomposedParam, unsigned ArgIdx, unsigned TDF);
 
-/// \brief Attempt template argument deduction from an initializer list
+/// Attempt template argument deduction from an initializer list
 ///        deemed to be an argument in a function call.
 static Sema::TemplateDeductionResult DeduceFromInitializerList(
     Sema &S, TemplateParameterList *TemplateParams, QualType AdjustedParamType,
@@ -3604,7 +3604,7 @@
   return Sema::TDK_Success;
 }
 
-/// \brief Perform template argument deduction per [temp.deduct.call] for a
+/// Perform template argument deduction per [temp.deduct.call] for a
 ///        single parameter / argument pair.
 static Sema::TemplateDeductionResult DeduceTemplateArgumentsFromCallArgument(
     Sema &S, TemplateParameterList *TemplateParams, unsigned FirstInnerIndex,
@@ -3637,7 +3637,7 @@
                                             ArgType, Info, Deduced, TDF);
 }
 
-/// \brief Perform template argument deduction from a function call
+/// Perform template argument deduction from a function call
 /// (C++ [temp.deduct.call]).
 ///
 /// \param FunctionTemplate the function template for which we are performing
@@ -3848,7 +3848,7 @@
                                  ArgFunctionTypeP->getParamTypes(), EPI);
 }
 
-/// \brief Deduce template arguments when taking the address of a function
+/// Deduce template arguments when taking the address of a function
 /// template (C++ [temp.deduct.funcaddr]) or matching a specialization to
 /// a template.
 ///
@@ -3990,7 +3990,7 @@
   return TDK_Success;
 }
 
-/// \brief Deduce template arguments for a templated conversion
+/// Deduce template arguments for a templated conversion
 /// function (C++ [temp.deduct.conv]) and, if successful, produce a
 /// conversion function template specialization.
 Sema::TemplateDeductionResult
@@ -4100,7 +4100,7 @@
   return Result;
 }
 
-/// \brief Deduce template arguments for a function template when there is
+/// Deduce template arguments for a function template when there is
 /// nothing to deduce against (C++0x [temp.arg.explicit]p3).
 ///
 /// \param FunctionTemplate the function template for which we are performing
@@ -4239,7 +4239,7 @@
   }
 }
 
-/// \brief Deduce the type for an auto type-specifier (C++11 [dcl.spec.auto]p6)
+/// Deduce the type for an auto type-specifier (C++11 [dcl.spec.auto]p6)
 ///
 /// Note that this is done even if the initializer is dependent. (This is
 /// necessary to support partial ordering of templates using 'auto'.)
@@ -4498,7 +4498,7 @@
   return StillUndeduced;
 }
 
-/// \brief If this is a non-static member function,
+/// If this is a non-static member function,
 static void
 AddImplicitObjectParameterType(ASTContext &Context,
                                CXXMethodDecl *Method,
@@ -4520,7 +4520,7 @@
   ArgTypes.push_back(ArgTy);
 }
 
-/// \brief Determine whether the function template \p FT1 is at least as
+/// Determine whether the function template \p FT1 is at least as
 /// specialized as \p FT2.
 static bool isAtLeastAsSpecializedAs(Sema &S,
                                      SourceLocation Loc,
@@ -4671,7 +4671,7 @@
   return true;
 }
 
-/// \brief Determine whether this a function template whose parameter-type-list
+/// Determine whether this a function template whose parameter-type-list
 /// ends with a function parameter pack.
 static bool isVariadicFunctionTemplate(FunctionTemplateDecl *FunTmpl) {
   FunctionDecl *Function = FunTmpl->getTemplatedDecl();
@@ -4692,7 +4692,7 @@
   return true;
 }
 
-/// \brief Returns the more specialized function template according
+/// Returns the more specialized function template according
 /// to the rules of function template partial ordering (C++ [temp.func.order]).
 ///
 /// \param FT1 the first function template
@@ -4739,7 +4739,7 @@
   return nullptr;
 }
 
-/// \brief Determine if the two templates are equivalent.
+/// Determine if the two templates are equivalent.
 static bool isSameTemplate(TemplateDecl *T1, TemplateDecl *T2) {
   if (T1 == T2)
     return true;
@@ -4750,7 +4750,7 @@
   return T1->getCanonicalDecl() == T2->getCanonicalDecl();
 }
 
-/// \brief Retrieve the most specialized of the given function template
+/// Retrieve the most specialized of the given function template
 /// specializations.
 ///
 /// \param SpecBegin the start iterator of the function template
@@ -4909,7 +4909,7 @@
   return true;
 }
 
-/// \brief Returns the more specialized class template partial specialization
+/// Returns the more specialized class template partial specialization
 /// according to the rules of partial ordering of class template partial
 /// specializations (C++ [temp.class.order]).
 ///
@@ -5064,7 +5064,7 @@
   return isAtLeastAsSpecializedAs(*this, PType, AType, AArg, Info);
 }
 
-/// \brief Mark the template parameters that are used by the given
+/// Mark the template parameters that are used by the given
 /// expression.
 static void
 MarkUsedTemplateParameters(ASTContext &Ctx,
@@ -5108,7 +5108,7 @@
     MarkUsedTemplateParameters(Ctx, NTTP->getType(), OnlyDeduced, Depth, Used);
 }
 
-/// \brief Mark the template parameters that are used by the given
+/// Mark the template parameters that are used by the given
 /// nested name specifier.
 static void
 MarkUsedTemplateParameters(ASTContext &Ctx,
@@ -5125,7 +5125,7 @@
                              OnlyDeduced, Depth, Used);
 }
 
-/// \brief Mark the template parameters that are used by the given
+/// Mark the template parameters that are used by the given
 /// template name.
 static void
 MarkUsedTemplateParameters(ASTContext &Ctx,
@@ -5150,7 +5150,7 @@
                                Depth, Used);
 }
 
-/// \brief Mark the template parameters that are used by the given
+/// Mark the template parameters that are used by the given
 /// type.
 static void
 MarkUsedTemplateParameters(ASTContext &Ctx, QualType T,
@@ -5403,7 +5403,7 @@
   }
 }
 
-/// \brief Mark the template parameters that are used by this
+/// Mark the template parameters that are used by this
 /// template argument.
 static void
 MarkUsedTemplateParameters(ASTContext &Ctx,
@@ -5446,7 +5446,7 @@
   }
 }
 
-/// \brief Mark which template parameters can be deduced from a given
+/// Mark which template parameters can be deduced from a given
 /// template argument list.
 ///
 /// \param TemplateArgs the template argument list from which template
@@ -5472,7 +5472,7 @@
                                  Depth, Used);
 }
 
-/// \brief Marks all of the template parameters that will be deduced by a
+/// Marks all of the template parameters that will be deduced by a
 /// call to the given function template.
 void Sema::MarkDeducedTemplateParameters(
     ASTContext &Ctx, const FunctionTemplateDecl *FunctionTemplate,
Index: cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp
+++ cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp
@@ -34,7 +34,7 @@
 // Template Instantiation Support
 //===----------------------------------------------------------------------===/
 
-/// \brief Retrieve the template argument list(s) that should be used to
+/// Retrieve the template argument list(s) that should be used to
 /// instantiate the definition of the given declaration.
 ///
 /// \param D the declaration for which we are computing template instantiation
@@ -427,7 +427,7 @@
   return true;
 }
 
-/// \brief Prints the current instantiation stack through a series of
+/// Prints the current instantiation stack through a series of
 /// notes.
 void Sema::PrintInstantiationStack() {
   // Determine which template instantiations to skip, if any.
@@ -708,7 +708,7 @@
   return None;
 }
 
-/// \brief Retrieve the depth and index of a parameter pack.
+/// Retrieve the depth and index of a parameter pack.
 static std::pair<unsigned, unsigned> 
 getDepthAndIndex(NamedDecl *ND) {
   if (TemplateTypeParmDecl *TTP = dyn_cast<TemplateTypeParmDecl>(ND))
@@ -740,20 +740,20 @@
       : inherited(SemaRef), TemplateArgs(TemplateArgs), Loc(Loc),
         Entity(Entity) { }
 
-    /// \brief Determine whether the given type \p T has already been
+    /// Determine whether the given type \p T has already been
     /// transformed.
     ///
     /// For the purposes of template instantiation, a type has already been
     /// transformed if it is NULL or if it is not dependent.
     bool AlreadyTransformed(QualType T);
 
-    /// \brief Returns the location of the entity being instantiated, if known.
+    /// Returns the location of the entity being instantiated, if known.
     SourceLocation getBaseLocation() { return Loc; }
 
-    /// \brief Returns the name of the entity being instantiated, if any.
+    /// Returns the name of the entity being instantiated, if any.
     DeclarationName getBaseEntity() { return Entity; }
 
-    /// \brief Sets the "base" location and entity when that
+    /// Sets the "base" location and entity when that
     /// information is known based on another transformation.
     void setBase(SourceLocation Loc, DeclarationName Entity) {
       this->Loc = Loc;
@@ -808,7 +808,7 @@
       }
     }
 
-    /// \brief Transform the given declaration by instantiating a reference to
+    /// Transform the given declaration by instantiating a reference to
     /// this declaration.
     Decl *TransformDecl(SourceLocation Loc, Decl *D);
 
@@ -839,15 +839,15 @@
         SemaRef.PerformDependentDiagnostics(DC, TemplateArgs);
     }
     
-    /// \brief Transform the definition of the given declaration by
+    /// Transform the definition of the given declaration by
     /// instantiating it.
     Decl *TransformDefinition(SourceLocation Loc, Decl *D);
 
-    /// \brief Transform the first qualifier within a scope by instantiating the
+    /// Transform the first qualifier within a scope by instantiating the
     /// declaration.
     NamedDecl *TransformFirstQualifierInScope(NamedDecl *D, SourceLocation Loc);
       
-    /// \brief Rebuild the exception declaration and register the declaration
+    /// Rebuild the exception declaration and register the declaration
     /// as an instantiated local.
     VarDecl *RebuildExceptionDecl(VarDecl *ExceptionDecl, 
                                   TypeSourceInfo *Declarator,
@@ -855,12 +855,12 @@
                                   SourceLocation NameLoc,
                                   IdentifierInfo *Name);
 
-    /// \brief Rebuild the Objective-C exception declaration and register the 
+    /// Rebuild the Objective-C exception declaration and register the 
     /// declaration as an instantiated local.
     VarDecl *RebuildObjCExceptionDecl(VarDecl *ExceptionDecl, 
                                       TypeSourceInfo *TSInfo, QualType T);
       
-    /// \brief Check for tag mismatches when instantiating an
+    /// Check for tag mismatches when instantiating an
     /// elaborated type.
     QualType RebuildElaboratedType(SourceLocation KeywordLoc,
                                    ElaboratedTypeKeyword Keyword,
@@ -885,14 +885,14 @@
     ExprResult TransformSubstNonTypeTemplateParmPackExpr(
                                            SubstNonTypeTemplateParmPackExpr *E);
 
-    /// \brief Rebuild a DeclRefExpr for a ParmVarDecl reference.
+    /// Rebuild a DeclRefExpr for a ParmVarDecl reference.
     ExprResult RebuildParmVarDeclRefExpr(ParmVarDecl *PD, SourceLocation Loc);
 
-    /// \brief Transform a reference to a function parameter pack.
+    /// Transform a reference to a function parameter pack.
     ExprResult TransformFunctionParmPackRefExpr(DeclRefExpr *E,
                                                 ParmVarDecl *PD);
 
-    /// \brief Transform a FunctionParmPackExpr which was built when we couldn't
+    /// Transform a FunctionParmPackExpr which was built when we couldn't
     /// expand a function parameter pack reference which refers to an expanded
     /// pack.
     ExprResult TransformFunctionParmPackExpr(FunctionParmPackExpr *E);
@@ -915,12 +915,12 @@
                                             Optional<unsigned> NumExpansions,
                                             bool ExpectParameterPack);
 
-    /// \brief Transforms a template type parameter type by performing
+    /// Transforms a template type parameter type by performing
     /// substitution of the corresponding template type argument.
     QualType TransformTemplateTypeParmType(TypeLocBuilder &TLB,
                                            TemplateTypeParmTypeLoc TL);
 
-    /// \brief Transforms an already-substituted template type parameter pack
+    /// Transforms an already-substituted template type parameter pack
     /// into either itself (if we aren't substituting into its pack expansion)
     /// or the appropriate substituted argument.
     QualType TransformSubstTemplateTypeParmPackType(TypeLocBuilder &TLB,
@@ -1540,7 +1540,7 @@
   return Result;
 }
 
-/// \brief Perform substitution on the type T with a given set of template
+/// Perform substitution on the type T with a given set of template
 /// arguments.
 ///
 /// This routine substitutes the given template arguments into the
@@ -1835,7 +1835,7 @@
   return NewParm;  
 }
 
-/// \brief Substitute the given template arguments into the given set of
+/// Substitute the given template arguments into the given set of
 /// parameters, producing the set of parameter types that would be generated
 /// from such a substitution.
 bool Sema::SubstParmTypes(
@@ -1855,7 +1855,7 @@
       Loc, Params, nullptr, ExtParamInfos, ParamTypes, OutParams, ParamInfos);
 }
 
-/// \brief Perform substitution on the base class specifiers of the
+/// Perform substitution on the base class specifiers of the
 /// given class template specialization.
 ///
 /// Produces a diagnostic and returns true on error, returns false and
@@ -1975,7 +1975,7 @@
   }
 }
 
-/// \brief Instantiate the definition of a class from a given pattern.
+/// Instantiate the definition of a class from a given pattern.
 ///
 /// \param PointOfInstantiation The point of instantiation within the
 /// source code.
@@ -2011,7 +2011,7 @@
     return true;
   Pattern = PatternDef;
 
-  // \brief Record the point of instantiation.
+  // Record the point of instantiation.
   if (MemberSpecializationInfo *MSInfo 
         = Instantiation->getMemberSpecializationInfo()) {
     MSInfo->setTemplateSpecializationKind(TSK);
@@ -2215,7 +2215,7 @@
   return Instantiation->isInvalidDecl();
 }
 
-/// \brief Instantiate the definition of an enum from a given pattern.
+/// Instantiate the definition of an enum from a given pattern.
 ///
 /// \param PointOfInstantiation The point of instantiation within the
 ///        source code.
@@ -2281,7 +2281,7 @@
 }
 
 
-/// \brief Instantiate the definition of a field from the given pattern.
+/// Instantiate the definition of a field from the given pattern.
 ///
 /// \param PointOfInstantiation The point of instantiation within the
 ///        source code.
@@ -2359,7 +2359,7 @@
 }
 
 namespace {
-  /// \brief A partial specialization whose template arguments have matched
+  /// A partial specialization whose template arguments have matched
   /// a given template-id.
   struct PartialSpecMatchResult {
     ClassTemplatePartialSpecializationDecl *Partial;
@@ -2544,7 +2544,7 @@
                           Complain);
 }
 
-/// \brief Instantiates the definitions of all of the member
+/// Instantiates the definitions of all of the member
 /// of the given class, which is an instantiation of a class template
 /// or a member class of a template.
 void
@@ -2751,7 +2751,7 @@
   }
 }
 
-/// \brief Instantiate the definitions of all of the members of the
+/// Instantiate the definitions of all of the members of the
 /// given class template specialization, which was named as part of an
 /// explicit instantiation.
 void
@@ -2827,7 +2827,7 @@
   return Instantiator.TransformNestedNameSpecifierLoc(NNS);
 }
 
-/// \brief Do template substitution on declaration name info.
+/// Do template substitution on declaration name info.
 DeclarationNameInfo
 Sema::SubstDeclarationNameInfo(const DeclarationNameInfo &NameInfo,
                          const MultiLevelTemplateArgumentList &TemplateArgs) {
Index: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -1556,7 +1556,7 @@
   return Record;
 }
 
-/// \brief Adjust the given function type for an instantiation of the
+/// Adjust the given function type for an instantiation of the
 /// given declaration, to cope with modifications to the function's type that
 /// aren't reflected in the type-source information.
 ///
@@ -3086,7 +3086,7 @@
   return Instantiator.Visit(D);
 }
 
-/// \brief Instantiates a nested template parameter list in the current
+/// Instantiates a nested template parameter list in the current
 /// instantiation context.
 ///
 /// \param L The parameter list to instantiate
@@ -3129,7 +3129,7 @@
   return Instantiator.SubstTemplateParams(Params);
 }
 
-/// \brief Instantiate the declaration of a class template partial
+/// Instantiate the declaration of a class template partial
 /// specialization.
 ///
 /// \param ClassTemplate the (instantiated) class template that is partially
@@ -3263,7 +3263,7 @@
   return InstPartialSpec;
 }
 
-/// \brief Instantiate the declaration of a variable template partial
+/// Instantiate the declaration of a variable template partial
 /// specialization.
 ///
 /// \param VarTemplate the (instantiated) variable template that is partially
@@ -3605,7 +3605,7 @@
                      TemplateArgs);
 }
 
-/// \brief Initializes the common fields of an instantiation function
+/// Initializes the common fields of an instantiation function
 /// declaration (New) from the corresponding fields of its template (Tmpl).
 ///
 /// \returns true if there was an error
@@ -3693,7 +3693,7 @@
   return false;
 }
 
-/// \brief Initializes common fields of an instantiated method
+/// Initializes common fields of an instantiated method
 /// declaration (New) from the corresponding fields of its template
 /// (Tmpl).
 ///
@@ -3757,7 +3757,7 @@
   }
 }
 
-/// \brief Instantiate the definition of the given function from its
+/// Instantiate the definition of the given function from its
 /// template.
 ///
 /// \param PointOfInstantiation the point at which the instantiation was
@@ -4033,7 +4033,7 @@
           VarTemplate, FromVar, InsertPos, TemplateArgsInfo, Converted));
 }
 
-/// \brief Instantiates a variable template specialization by completing it
+/// Instantiates a variable template specialization by completing it
 /// with appropriate type information and initializer.
 VarTemplateSpecializationDecl *Sema::CompleteVarTemplateSpecializationDecl(
     VarTemplateSpecializationDecl *VarSpec, VarDecl *PatternDecl,
@@ -4157,7 +4157,7 @@
     DiagnoseUnusedDecl(NewVar);
 }
 
-/// \brief Instantiate the initializer of a variable.
+/// Instantiate the initializer of a variable.
 void Sema::InstantiateVariableInitializer(
     VarDecl *Var, VarDecl *OldVar,
     const MultiLevelTemplateArgumentList &TemplateArgs) {
@@ -4223,7 +4223,7 @@
   }
 }
 
-/// \brief Instantiate the definition of the given variable from its
+/// Instantiate the definition of the given variable from its
 /// template.
 ///
 /// \param PointOfInstantiation the point at which the instantiation was
@@ -4842,7 +4842,7 @@
   return nullptr;
 }
 
-/// \brief Finds the instantiation of the given declaration context
+/// Finds the instantiation of the given declaration context
 /// within the current instantiation.
 ///
 /// \returns NULL if there was an error
@@ -4854,7 +4854,7 @@
   } else return DC;
 }
 
-/// \brief Find the instantiation of the given declaration within the
+/// Find the instantiation of the given declaration within the
 /// current instantiation.
 ///
 /// This routine is intended to be used when \p D is a declaration
@@ -5167,7 +5167,7 @@
   return D;
 }
 
-/// \brief Performs template instantiation for all implicit template
+/// Performs template instantiation for all implicit template
 /// instantiations we have seen until this point.
 void Sema::PerformPendingInstantiations(bool LocalOnly) {
   while (!PendingLocalImplicitInstantiations.empty() ||
Index: cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp
+++ cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp
@@ -26,7 +26,7 @@
 // Visitor that collects unexpanded parameter packs
 //----------------------------------------------------------------------------
 
-/// \brief Retrieve the depth and index of a parameter pack.
+/// Retrieve the depth and index of a parameter pack.
 static std::pair<unsigned, unsigned> 
 getDepthAndIndex(NamedDecl *ND) {
   if (TemplateTypeParmDecl *TTP = dyn_cast<TemplateTypeParmDecl>(ND))
@@ -40,7 +40,7 @@
 }
 
 namespace {
-  /// \brief A class that collects unexpanded parameter packs.
+  /// A class that collects unexpanded parameter packs.
   class CollectUnexpandedParameterPacksVisitor :
     public RecursiveASTVisitor<CollectUnexpandedParameterPacksVisitor> 
   {
@@ -83,14 +83,14 @@
     // Recording occurrences of (unexpanded) parameter packs.
     //------------------------------------------------------------------------
 
-    /// \brief Record occurrences of template type parameter packs.
+    /// Record occurrences of template type parameter packs.
     bool VisitTemplateTypeParmTypeLoc(TemplateTypeParmTypeLoc TL) {
       if (TL.getTypePtr()->isParameterPack())
         addUnexpanded(TL.getTypePtr(), TL.getNameLoc());
       return true;
     }
 
-    /// \brief Record occurrences of template type parameter packs
+    /// Record occurrences of template type parameter packs
     /// when we don't have proper source-location information for
     /// them.
     ///
@@ -102,7 +102,7 @@
       return true;
     }
 
-    /// \brief Record occurrences of function and non-type template
+    /// Record occurrences of function and non-type template
     /// parameter packs in an expression.
     bool VisitDeclRefExpr(DeclRefExpr *E) {
       if (E->getDecl()->isParameterPack())
@@ -111,7 +111,7 @@
       return true;
     }
     
-    /// \brief Record occurrences of template template parameter packs.
+    /// Record occurrences of template template parameter packs.
     bool TraverseTemplateName(TemplateName Template) {
       if (auto *TTP = dyn_cast_or_null<TemplateTemplateParmDecl>(
               Template.getAsTemplateDecl())) {
@@ -122,7 +122,7 @@
       return inherited::TraverseTemplateName(Template);
     }
 
-    /// \brief Suppress traversal into Objective-C container literal
+    /// Suppress traversal into Objective-C container literal
     /// elements that are pack expansions.
     bool TraverseObjCDictionaryLiteral(ObjCDictionaryLiteral *E) {
       if (!E->containsUnexpandedParameterPack())
@@ -142,7 +142,7 @@
     // Pruning the search for unexpanded parameter packs.
     //------------------------------------------------------------------------
 
-    /// \brief Suppress traversal into statements and expressions that
+    /// Suppress traversal into statements and expressions that
     /// do not contain unexpanded parameter packs.
     bool TraverseStmt(Stmt *S) { 
       Expr *E = dyn_cast_or_null<Expr>(S);
@@ -152,7 +152,7 @@
       return true;
     }
 
-    /// \brief Suppress traversal into types that do not contain
+    /// Suppress traversal into types that do not contain
     /// unexpanded parameter packs.
     bool TraverseType(QualType T) {
       if ((!T.isNull() && T->containsUnexpandedParameterPack()) || InLambda)
@@ -161,7 +161,7 @@
       return true;
     }
 
-    /// \brief Suppress traversal into types with location information
+    /// Suppress traversal into types with location information
     /// that do not contain unexpanded parameter packs.
     bool TraverseTypeLoc(TypeLoc TL) {
       if ((!TL.getType().isNull() && 
@@ -172,7 +172,7 @@
       return true;
     }
 
-    /// \brief Suppress traversal of parameter packs.
+    /// Suppress traversal of parameter packs.
     bool TraverseDecl(Decl *D) { 
       // A function parameter pack is a pack expansion, so cannot contain
       // an unexpanded parameter pack. Likewise for a template parameter
@@ -183,7 +183,7 @@
       return inherited::TraverseDecl(D);
     }
 
-    /// \brief Suppress traversal of pack-expanded attributes.
+    /// Suppress traversal of pack-expanded attributes.
     bool TraverseAttr(Attr *A) {
       if (A->isPackExpansion())
         return true;
@@ -191,7 +191,7 @@
       return inherited::TraverseAttr(A);
     }
 
-    /// \brief Suppress traversal of pack expansion expressions and types.
+    /// Suppress traversal of pack expansion expressions and types.
     ///@{
     bool TraversePackExpansionType(PackExpansionType *T) { return true; }
     bool TraversePackExpansionTypeLoc(PackExpansionTypeLoc TL) { return true; }
@@ -200,7 +200,7 @@
 
     ///@}
 
-    /// \brief Suppress traversal of using-declaration pack expansion.
+    /// Suppress traversal of using-declaration pack expansion.
     bool TraverseUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) {
       if (D->isPackExpansion())
         return true;
@@ -208,7 +208,7 @@
       return inherited::TraverseUnresolvedUsingValueDecl(D);
     }
 
-    /// \brief Suppress traversal of using-declaration pack expansion.
+    /// Suppress traversal of using-declaration pack expansion.
     bool TraverseUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D) {
       if (D->isPackExpansion())
         return true;
@@ -216,7 +216,7 @@
       return inherited::TraverseUnresolvedUsingTypenameDecl(D);
     }
 
-    /// \brief Suppress traversal of template argument pack expansions.
+    /// Suppress traversal of template argument pack expansions.
     bool TraverseTemplateArgument(const TemplateArgument &Arg) {
       if (Arg.isPackExpansion())
         return true;
@@ -224,7 +224,7 @@
       return inherited::TraverseTemplateArgument(Arg);
     }
 
-    /// \brief Suppress traversal of template argument pack expansions.
+    /// Suppress traversal of template argument pack expansions.
     bool TraverseTemplateArgumentLoc(const TemplateArgumentLoc &ArgLoc) {
       if (ArgLoc.getArgument().isPackExpansion())
         return true;
@@ -232,7 +232,7 @@
       return inherited::TraverseTemplateArgumentLoc(ArgLoc);
     }
 
-    /// \brief Suppress traversal of base specifier pack expansions.
+    /// Suppress traversal of base specifier pack expansions.
     bool TraverseCXXBaseSpecifier(const CXXBaseSpecifier &Base) {
       if (Base.isPackExpansion())
         return true;
@@ -240,7 +240,7 @@
       return inherited::TraverseCXXBaseSpecifier(Base);
     }
 
-    /// \brief Suppress traversal of mem-initializer pack expansions.
+    /// Suppress traversal of mem-initializer pack expansions.
     bool TraverseConstructorInitializer(CXXCtorInitializer *Init) {
       if (Init->isPackExpansion())
         return true;
@@ -248,7 +248,7 @@
       return inherited::TraverseConstructorInitializer(Init);
     }
 
-    /// \brief Note whether we're traversing a lambda containing an unexpanded
+    /// Note whether we're traversing a lambda containing an unexpanded
     /// parameter pack. In this case, the unexpanded pack can occur anywhere,
     /// including all the places where we normally wouldn't look. Within a
     /// lambda, we don't propagate the 'contains unexpanded parameter pack' bit
@@ -284,7 +284,7 @@
   };
 }
 
-/// \brief Determine whether it's possible for an unexpanded parameter pack to
+/// Determine whether it's possible for an unexpanded parameter pack to
 /// be valid in this location. This only happens when we're in a declaration
 /// that is nested within an expression that could be expanded, such as a
 /// lambda-expression within a function call.
@@ -298,7 +298,7 @@
   return false;
 }
 
-/// \brief Diagnose all of the unexpanded parameter packs in the given
+/// Diagnose all of the unexpanded parameter packs in the given
 /// vector.
 bool
 Sema::DiagnoseUnexpandedParameterPacks(SourceLocation Loc,
@@ -917,7 +917,7 @@
 
 }
 
-/// \brief Called when an expression computing the size of a parameter pack
+/// Called when an expression computing the size of a parameter pack
 /// is parsed.
 ///
 /// \code
Index: cfe/trunk/lib/Sema/SemaType.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaType.cpp
+++ cfe/trunk/lib/Sema/SemaType.cpp
@@ -615,7 +615,7 @@
   state.addIgnoredTypeAttr(attr);
 }
 
-/// \brief Given that there are attributes written on the declarator
+/// Given that there are attributes written on the declarator
 /// itself, try to distribute any type attributes to the appropriate
 /// declarator chunk.
 ///
@@ -1225,7 +1225,7 @@
   return OpenCLAccessAttr::Keyword_read_only;
 }
 
-/// \brief Convert the specified declspec to the appropriate type
+/// Convert the specified declspec to the appropriate type
 /// object.
 /// \param state Specifies the declarator containing the declaration specifier
 /// to be converted, along with other associated processing state.
@@ -1755,7 +1755,7 @@
   return BuildQualifiedType(T, Loc, Q, DS);
 }
 
-/// \brief Build a paren type including \p T.
+/// Build a paren type including \p T.
 QualType Sema::BuildParenType(QualType T) {
   return Context.getParenType(T);
 }
@@ -1865,7 +1865,7 @@
   return true;
 }
 
-/// \brief Build a pointer type.
+/// Build a pointer type.
 ///
 /// \param T The type to which we'll be building a pointer.
 ///
@@ -1905,7 +1905,7 @@
   return Context.getPointerType(T);
 }
 
-/// \brief Build a reference type.
+/// Build a reference type.
 ///
 /// \param T The type to which we'll be building a reference.
 ///
@@ -1967,7 +1967,7 @@
   return Context.getRValueReferenceType(T);
 }
 
-/// \brief Build a Read-only Pipe type.
+/// Build a Read-only Pipe type.
 ///
 /// \param T The type to which we'll be building a Pipe.
 ///
@@ -1979,7 +1979,7 @@
   return Context.getReadPipeType(T);
 }
 
-/// \brief Build a Write-only Pipe type.
+/// Build a Write-only Pipe type.
 ///
 /// \param T The type to which we'll be building a Pipe.
 ///
@@ -2013,7 +2013,7 @@
                                            S.LangOpts.OpenCL).isInvalid();
 }
 
-/// \brief Build an array type.
+/// Build an array type.
 ///
 /// \param T The type of each element in the array.
 ///
@@ -2238,7 +2238,7 @@
   return T;
 }
 
-/// \brief Build an ext-vector type.
+/// Build an ext-vector type.
 ///
 /// Run the required checks for the extended vector type.
 QualType Sema::BuildExtVectorType(QualType T, Expr *ArraySize,
@@ -2409,7 +2409,7 @@
   return Context.getFunctionType(T, ParamTypes, EPI);
 }
 
-/// \brief Build a member pointer type \c T Class::*.
+/// Build a member pointer type \c T Class::*.
 ///
 /// \param T the type to which the member pointer refers.
 /// \param Class the class type into which the member pointer points.
@@ -2458,7 +2458,7 @@
   return Context.getMemberPointerType(T, Class.getTypePtr());
 }
 
-/// \brief Build a block pointer type.
+/// Build a block pointer type.
 ///
 /// \param T The type to which we'll be building a block pointer.
 ///
@@ -5064,7 +5064,7 @@
   // TODO: mark whether we did this inference?
 }
 
-/// \brief Used for transferring ownership in casts resulting in l-values.
+/// Used for transferring ownership in casts resulting in l-values.
 static void transferARCOwnership(TypeProcessingState &state,
                                  QualType &declSpecTy,
                                  Qualifiers::ObjCLifetime ownership) {
@@ -5571,7 +5571,7 @@
   DASTL.setAttrOperandParensRange(SourceRange());
 }
 
-/// \brief Create and instantiate a TypeSourceInfo with type source information.
+/// Create and instantiate a TypeSourceInfo with type source information.
 ///
 /// \param T QualType referring to the type as written in source code.
 ///
@@ -5633,7 +5633,7 @@
   return TInfo;
 }
 
-/// \brief Create a LocInfoType to hold the given QualType and TypeSourceInfo.
+/// Create a LocInfoType to hold the given QualType and TypeSourceInfo.
 ParsedType Sema::CreateParsedType(QualType T, TypeSourceInfo *TInfo) {
   // FIXME: LocInfoTypes are "transient", only needed for passing to/from Parser
   // and Sema during declaration parsing. Try deallocating/caching them when
@@ -6907,7 +6907,7 @@
                                     VectorType::GenericVector);
 }
 
-/// \brief Process the OpenCL-like ext_vector_type attribute when it occurs on
+/// Process the OpenCL-like ext_vector_type attribute when it occurs on
 /// a type.
 static void HandleExtVectorTypeAttr(QualType &CurType,
                                     const AttributeList &Attr,
@@ -7390,7 +7390,7 @@
   }
 }
 
-/// \brief Ensure that the type of the given expression is complete.
+/// Ensure that the type of the given expression is complete.
 ///
 /// This routine checks whether the expression \p E has a complete type. If the
 /// expression refers to an instantiable construct, that instantiation is
@@ -7427,7 +7427,7 @@
   return RequireCompleteExprType(E, Diagnoser);
 }
 
-/// @brief Ensure that the type T is a complete type.
+/// Ensure that the type T is a complete type.
 ///
 /// This routine checks whether the type @p T is complete in any
 /// context where a complete type is required. If @p T is a complete
@@ -7471,7 +7471,7 @@
   return Ctx.IsStructurallyEquivalent(D, Suggested);
 }
 
-/// \brief Determine whether there is any declaration of \p D that was ever a
+/// Determine whether there is any declaration of \p D that was ever a
 ///        definition (perhaps before module merging) and is currently visible.
 /// \param D The definition of the entity.
 /// \param Suggested Filled in with the declaration that should be made visible
@@ -7571,7 +7571,7 @@
   }
 }
 
-/// \brief The implementation of RequireCompleteType
+/// The implementation of RequireCompleteType
 bool Sema::RequireCompleteTypeImpl(SourceLocation Loc, QualType T,
                                    TypeDiagnoser *Diagnoser) {
   // FIXME: Add this assertion to make sure we always get instantiation points.
@@ -7750,7 +7750,7 @@
   return RequireCompleteType(Loc, T, Diagnoser);
 }
 
-/// \brief Get diagnostic %select index for tag kind for
+/// Get diagnostic %select index for tag kind for
 /// literal type diagnostic message.
 /// WARNING: Indexes apply to particular diagnostics only!
 ///
@@ -7764,7 +7764,7 @@
   }
 }
 
-/// @brief Ensure that the type T is a literal type.
+/// Ensure that the type T is a literal type.
 ///
 /// This routine checks whether the type @p T is a literal type. If @p T is an
 /// incomplete type, an attempt is made to complete it. If @p T is a literal
@@ -7863,7 +7863,7 @@
   return RequireLiteralType(Loc, T, Diagnoser);
 }
 
-/// \brief Retrieve a version of the type 'T' that is elaborated by Keyword
+/// Retrieve a version of the type 'T' that is elaborated by Keyword
 /// and qualified by the nested-name-specifier contained in SS.
 QualType Sema::getElaboratedType(ElaboratedTypeKeyword Keyword,
                                  const CXXScopeSpec &SS, QualType T) {
Index: cfe/trunk/lib/Sema/TreeTransform.h
===================================================================
--- cfe/trunk/lib/Sema/TreeTransform.h
+++ cfe/trunk/lib/Sema/TreeTransform.h
@@ -41,7 +41,7 @@
 namespace clang {
 using namespace sema;
 
-/// \brief A semantic tree transformation that allows one to transform one
+/// A semantic tree transformation that allows one to transform one
 /// abstract syntax tree into another.
 ///
 /// A new tree transformation is defined by creating a new subclass \c X of
@@ -94,7 +94,7 @@
 /// (\c getBaseLocation(), \c getBaseEntity()).
 template<typename Derived>
 class TreeTransform {
-  /// \brief Private RAII object that helps us forget and then re-remember
+  /// Private RAII object that helps us forget and then re-remember
   /// the template argument corresponding to a partially-substituted parameter
   /// pack.
   class ForgetPartiallySubstitutedPackRAII {
@@ -114,19 +114,19 @@
 protected:
   Sema &SemaRef;
 
-  /// \brief The set of local declarations that have been transformed, for
+  /// The set of local declarations that have been transformed, for
   /// cases where we are forced to build new declarations within the transformer
   /// rather than in the subclass (e.g., lambda closure types).
   llvm::DenseMap<Decl *, Decl *> TransformedLocalDecls;
 
 public:
-  /// \brief Initializes a new tree transformer.
+  /// Initializes a new tree transformer.
   TreeTransform(Sema &SemaRef) : SemaRef(SemaRef) { }
 
-  /// \brief Retrieves a reference to the derived class.
+  /// Retrieves a reference to the derived class.
   Derived &getDerived() { return static_cast<Derived&>(*this); }
 
-  /// \brief Retrieves a reference to the derived class.
+  /// Retrieves a reference to the derived class.
   const Derived &getDerived() const {
     return static_cast<const Derived&>(*this);
   }
@@ -134,11 +134,11 @@
   static inline ExprResult Owned(Expr *E) { return E; }
   static inline StmtResult Owned(Stmt *S) { return S; }
 
-  /// \brief Retrieves a reference to the semantic analysis object used for
+  /// Retrieves a reference to the semantic analysis object used for
   /// this tree transform.
   Sema &getSema() const { return SemaRef; }
 
-  /// \brief Whether the transformation should always rebuild AST nodes, even
+  /// Whether the transformation should always rebuild AST nodes, even
   /// if none of the children have changed.
   ///
   /// Subclasses may override this function to specify when the transformation
@@ -149,7 +149,7 @@
   /// statement node appears at most once in its containing declaration.
   bool AlwaysRebuild() { return SemaRef.ArgumentPackSubstitutionIndex != -1; }
 
-  /// \brief Returns the location of the entity being transformed, if that
+  /// Returns the location of the entity being transformed, if that
   /// information was not available elsewhere in the AST.
   ///
   /// By default, returns no source-location information. Subclasses can
@@ -157,21 +157,21 @@
   /// information.
   SourceLocation getBaseLocation() { return SourceLocation(); }
 
-  /// \brief Returns the name of the entity being transformed, if that
+  /// Returns the name of the entity being transformed, if that
   /// information was not available elsewhere in the AST.
   ///
   /// By default, returns an empty name. Subclasses can provide an alternative
   /// implementation with a more precise name.
   DeclarationName getBaseEntity() { return DeclarationName(); }
 
-  /// \brief Sets the "base" location and entity when that
+  /// Sets the "base" location and entity when that
   /// information is known based on another transformation.
   ///
   /// By default, the source location and entity are ignored. Subclasses can
   /// override this function to provide a customized implementation.
   void setBase(SourceLocation Loc, DeclarationName Entity) { }
 
-  /// \brief RAII object that temporarily sets the base location and entity
+  /// RAII object that temporarily sets the base location and entity
   /// used for reporting diagnostics in types.
   class TemporaryBase {
     TreeTransform &Self;
@@ -193,7 +193,7 @@
     }
   };
 
-  /// \brief Determine whether the given type \p T has already been
+  /// Determine whether the given type \p T has already been
   /// transformed.
   ///
   /// Subclasses can provide an alternative implementation of this routine
@@ -204,7 +204,7 @@
     return T.isNull();
   }
 
-  /// \brief Determine whether the given call argument should be dropped, e.g.,
+  /// Determine whether the given call argument should be dropped, e.g.,
   /// because it is a default argument.
   ///
   /// Subclasses can provide an alternative implementation of this routine to
@@ -214,7 +214,7 @@
     return E->isDefaultArgument();
   }
 
-  /// \brief Determine whether we should expand a pack expansion with the
+  /// Determine whether we should expand a pack expansion with the
   /// given set of parameter packs into separate arguments by repeatedly
   /// transforming the pattern.
   ///
@@ -261,7 +261,7 @@
     return false;
   }
 
-  /// \brief "Forget" about the partially-substituted pack template argument,
+  /// "Forget" about the partially-substituted pack template argument,
   /// when performing an instantiation that must preserve the parameter pack
   /// use.
   ///
@@ -270,18 +270,18 @@
     return TemplateArgument();
   }
 
-  /// \brief "Remember" the partially-substituted pack template argument
+  /// "Remember" the partially-substituted pack template argument
   /// after performing an instantiation that must preserve the parameter pack
   /// use.
   ///
   /// This routine is meant to be overridden by the template instantiator.
   void RememberPartiallySubstitutedPack(TemplateArgument Arg) { }
 
-  /// \brief Note to the derived class when a function parameter pack is
+  /// Note to the derived class when a function parameter pack is
   /// being expanded.
   void ExpandingFunctionParameterPack(ParmVarDecl *Pack) { }
 
-  /// \brief Transforms the given type into another type.
+  /// Transforms the given type into another type.
   ///
   /// By default, this routine transforms a type by creating a
   /// TypeSourceInfo for it and delegating to the appropriate
@@ -292,7 +292,7 @@
   /// \returns the transformed type.
   QualType TransformType(QualType T);
 
-  /// \brief Transforms the given type-with-location into a new
+  /// Transforms the given type-with-location into a new
   /// type-with-location.
   ///
   /// By default, this routine transforms a type by delegating to the
@@ -302,13 +302,13 @@
   /// to alter the transformation.
   TypeSourceInfo *TransformType(TypeSourceInfo *DI);
 
-  /// \brief Transform the given type-with-location into a new
+  /// Transform the given type-with-location into a new
   /// type, collecting location information in the given builder
   /// as necessary.
   ///
   QualType TransformType(TypeLocBuilder &TLB, TypeLoc TL);
 
-  /// \brief Transform a type that is permitted to produce a
+  /// Transform a type that is permitted to produce a
   /// DeducedTemplateSpecializationType.
   ///
   /// This is used in the (relatively rare) contexts where it is acceptable
@@ -319,7 +319,7 @@
   TypeSourceInfo *TransformTypeWithDeducedTST(TypeSourceInfo *DI);
   /// @}
 
-  /// \brief Transform the given statement.
+  /// Transform the given statement.
   ///
   /// By default, this routine transforms a statement by delegating to the
   /// appropriate TransformXXXStmt function to transform a specific kind of
@@ -330,7 +330,7 @@
   /// \returns the transformed statement.
   StmtResult TransformStmt(Stmt *S);
 
-  /// \brief Transform the given statement.
+  /// Transform the given statement.
   ///
   /// By default, this routine transforms a statement by delegating to the
   /// appropriate TransformOMPXXXClause function to transform a specific kind
@@ -340,7 +340,7 @@
   /// \returns the transformed OpenMP clause.
   OMPClause *TransformOMPClause(OMPClause *S);
 
-  /// \brief Transform the given attribute.
+  /// Transform the given attribute.
   ///
   /// By default, this routine transforms a statement by delegating to the
   /// appropriate TransformXXXAttr function to transform a specific kind
@@ -350,7 +350,7 @@
   /// \returns the transformed attribute
   const Attr *TransformAttr(const Attr *S);
 
-/// \brief Transform the specified attribute.
+/// Transform the specified attribute.
 ///
 /// Subclasses should override the transformation of attributes with a pragma
 /// spelling to transform expressions stored within the attribute.
@@ -361,7 +361,7 @@
   const X##Attr *Transform##X##Attr(const X##Attr *R) { return R; }
 #include "clang/Basic/AttrList.inc"
 
-  /// \brief Transform the given expression.
+  /// Transform the given expression.
   ///
   /// By default, this routine transforms an expression by delegating to the
   /// appropriate TransformXXXExpr function to build a new expression.
@@ -371,7 +371,7 @@
   /// \returns the transformed expression.
   ExprResult TransformExpr(Expr *E);
 
-  /// \brief Transform the given initializer.
+  /// Transform the given initializer.
   ///
   /// By default, this routine transforms an initializer by stripping off the
   /// semantic nodes added by initialization, then passing the result to
@@ -380,7 +380,7 @@
   /// \returns the transformed initializer.
   ExprResult TransformInitializer(Expr *Init, bool NotCopyInit);
 
-  /// \brief Transform the given list of expressions.
+  /// Transform the given list of expressions.
   ///
   /// This routine transforms a list of expressions by invoking
   /// \c TransformExpr() for each subexpression. However, it also provides
@@ -407,7 +407,7 @@
                       SmallVectorImpl<Expr *> &Outputs,
                       bool *ArgChanged = nullptr);
 
-  /// \brief Transform the given declaration, which is referenced from a type
+  /// Transform the given declaration, which is referenced from a type
   /// or expression.
   ///
   /// By default, acts as the identity function on declarations, unless the
@@ -422,7 +422,7 @@
     return D;
   }
 
-  /// \brief Transform the specified condition.
+  /// Transform the specified condition.
   ///
   /// By default, this transforms the variable and expression and rebuilds
   /// the condition.
@@ -430,14 +430,14 @@
                                            Expr *Expr,
                                            Sema::ConditionKind Kind);
 
-  /// \brief Transform the attributes associated with the given declaration and
+  /// Transform the attributes associated with the given declaration and
   /// place them on the new declaration.
   ///
   /// By default, this operation does nothing. Subclasses may override this
   /// behavior to transform attributes.
   void transformAttrs(Decl *Old, Decl *New) { }
 
-  /// \brief Note that a local declaration has been transformed by this
+  /// Note that a local declaration has been transformed by this
   /// transformer.
   ///
   /// Local declarations are typically transformed via a call to
@@ -448,7 +448,7 @@
     TransformedLocalDecls[Old] = New;
   }
 
-  /// \brief Transform the definition of the given declaration.
+  /// Transform the definition of the given declaration.
   ///
   /// By default, invokes TransformDecl() to transform the declaration.
   /// Subclasses may override this function to provide alternate behavior.
@@ -456,7 +456,7 @@
     return getDerived().TransformDecl(Loc, D);
   }
 
-  /// \brief Transform the given declaration, which was the first part of a
+  /// Transform the given declaration, which was the first part of a
   /// nested-name-specifier in a member access expression.
   ///
   /// This specific declaration transformation only applies to the first
@@ -473,7 +473,7 @@
   bool TransformOverloadExprDecls(OverloadExpr *Old, bool RequiresADL,
                                   LookupResult &R);
 
-  /// \brief Transform the given nested-name-specifier with source-location
+  /// Transform the given nested-name-specifier with source-location
   /// information.
   ///
   /// By default, transforms all of the types and declarations within the
@@ -484,7 +484,7 @@
                                   QualType ObjectType = QualType(),
                                   NamedDecl *FirstQualifierInScope = nullptr);
 
-  /// \brief Transform the given declaration name.
+  /// Transform the given declaration name.
   ///
   /// By default, transforms the types of conversion function, constructor,
   /// and destructor names and then (if needed) rebuilds the declaration name.
@@ -493,7 +493,7 @@
   DeclarationNameInfo
   TransformDeclarationNameInfo(const DeclarationNameInfo &NameInfo);
 
-  /// \brief Transform the given template name.
+  /// Transform the given template name.
   ///
   /// \param SS The nested-name-specifier that qualifies the template
   /// name. This nested-name-specifier must already have been transformed.
@@ -520,7 +520,7 @@
                         NamedDecl *FirstQualifierInScope = nullptr,
                         bool AllowInjectedClassName = false);
 
-  /// \brief Transform the given template argument.
+  /// Transform the given template argument.
   ///
   /// By default, this operation transforms the type, expression, or
   /// declaration stored within the template argument and constructs a
@@ -532,7 +532,7 @@
                                  TemplateArgumentLoc &Output,
                                  bool Uneval = false);
 
-  /// \brief Transform the given set of template arguments.
+  /// Transform the given set of template arguments.
   ///
   /// By default, this operation transforms all of the template arguments
   /// in the input set using \c TransformTemplateArgument(), and appends
@@ -558,7 +558,7 @@
                                       Uneval);
   }
 
-  /// \brief Transform the given set of template arguments.
+  /// Transform the given set of template arguments.
   ///
   /// By default, this operation transforms all of the template arguments
   /// in the input set using \c TransformTemplateArgument(), and appends
@@ -578,11 +578,11 @@
                                   TemplateArgumentListInfo &Outputs,
                                   bool Uneval = false);
 
-  /// \brief Fakes up a TemplateArgumentLoc for a given TemplateArgument.
+  /// Fakes up a TemplateArgumentLoc for a given TemplateArgument.
   void InventTemplateArgumentLoc(const TemplateArgument &Arg,
                                  TemplateArgumentLoc &ArgLoc);
 
-  /// \brief Fakes up a TypeSourceInfo for a type.
+  /// Fakes up a TypeSourceInfo for a type.
   TypeSourceInfo *InventTypeSourceInfo(QualType T) {
     return SemaRef.Context.getTrivialTypeSourceInfo(T,
                        getDerived().getBaseLocation());
@@ -622,7 +622,7 @@
       TypeLocBuilder &TLB, DependentTemplateSpecializationTypeLoc TL,
       NestedNameSpecifierLoc QualifierLoc);
 
-  /// \brief Transforms the parameters of a function type into the
+  /// Transforms the parameters of a function type into the
   /// given vectors.
   ///
   /// The result vectors should be kept in sync; null entries in the
@@ -636,7 +636,7 @@
       SmallVectorImpl<QualType> &PTypes, SmallVectorImpl<ParmVarDecl *> *PVars,
       Sema::ExtParameterInfoBuilder &PInfos);
 
-  /// \brief Transforms a single function-type parameter.  Return null
+  /// Transforms a single function-type parameter.  Return null
   /// on error.
   ///
   /// \param indexAdjustment - A number to add to the parameter's
@@ -684,7 +684,7 @@
   OMPClause *Transform ## Class(Class *S);
 #include "clang/Basic/OpenMPKinds.def"
 
-  /// \brief Build a new qualified type given its unqualified type and type
+  /// Build a new qualified type given its unqualified type and type
   /// qualifiers.
   ///
   /// By default, this routine adds type qualifiers only to types that can
@@ -694,19 +694,19 @@
   QualType RebuildQualifiedType(QualType T, SourceLocation Loc,
                                 Qualifiers Quals);
 
-  /// \brief Build a new pointer type given its pointee type.
+  /// Build a new pointer type given its pointee type.
   ///
   /// By default, performs semantic analysis when building the pointer type.
   /// Subclasses may override this routine to provide different behavior.
   QualType RebuildPointerType(QualType PointeeType, SourceLocation Sigil);
 
-  /// \brief Build a new block pointer type given its pointee type.
+  /// Build a new block pointer type given its pointee type.
   ///
   /// By default, performs semantic analysis when building the block pointer
   /// type. Subclasses may override this routine to provide different behavior.
   QualType RebuildBlockPointerType(QualType PointeeType, SourceLocation Sigil);
 
-  /// \brief Build a new reference type given the type it references.
+  /// Build a new reference type given the type it references.
   ///
   /// By default, performs semantic analysis when building the
   /// reference type. Subclasses may override this routine to provide
@@ -718,7 +718,7 @@
                                 bool LValue,
                                 SourceLocation Sigil);
 
-  /// \brief Build a new member pointer type given the pointee type and the
+  /// Build a new member pointer type given the pointee type and the
   /// class type it refers into.
   ///
   /// By default, performs semantic analysis when building the member pointer
@@ -732,7 +732,7 @@
                                     ArrayRef<SourceLocation> ProtocolLocs,
                                     SourceLocation ProtocolRAngleLoc);
 
-  /// \brief Build an Objective-C object type.
+  /// Build an Objective-C object type.
   ///
   /// By default, performs semantic analysis when building the object type.
   /// Subclasses may override this routine to provide different behavior.
@@ -746,14 +746,14 @@
                                  ArrayRef<SourceLocation> ProtocolLocs,
                                  SourceLocation ProtocolRAngleLoc);
 
-  /// \brief Build a new Objective-C object pointer type given the pointee type.
+  /// Build a new Objective-C object pointer type given the pointee type.
   ///
   /// By default, directly builds the pointer type, with no additional semantic
   /// analysis.
   QualType RebuildObjCObjectPointerType(QualType PointeeType,
                                         SourceLocation Star);
 
-  /// \brief Build a new array type given the element type, size
+  /// Build a new array type given the element type, size
   /// modifier, size of the array (if known), size expression, and index type
   /// qualifiers.
   ///
@@ -767,7 +767,7 @@
                             unsigned IndexTypeQuals,
                             SourceRange BracketsRange);
 
-  /// \brief Build a new constant array type given the element type, size
+  /// Build a new constant array type given the element type, size
   /// modifier, (known) size of the array, and index type qualifiers.
   ///
   /// By default, performs semantic analysis when building the array type.
@@ -778,7 +778,7 @@
                                     unsigned IndexTypeQuals,
                                     SourceRange BracketsRange);
 
-  /// \brief Build a new incomplete array type given the element type, size
+  /// Build a new incomplete array type given the element type, size
   /// modifier, and index type qualifiers.
   ///
   /// By default, performs semantic analysis when building the array type.
@@ -788,7 +788,7 @@
                                       unsigned IndexTypeQuals,
                                       SourceRange BracketsRange);
 
-  /// \brief Build a new variable-length array type given the element type,
+  /// Build a new variable-length array type given the element type,
   /// size modifier, size expression, and index type qualifiers.
   ///
   /// By default, performs semantic analysis when building the array type.
@@ -799,7 +799,7 @@
                                     unsigned IndexTypeQuals,
                                     SourceRange BracketsRange);
 
-  /// \brief Build a new dependent-sized array type given the element type,
+  /// Build a new dependent-sized array type given the element type,
   /// size modifier, size expression, and index type qualifiers.
   ///
   /// By default, performs semantic analysis when building the array type.
@@ -810,7 +810,7 @@
                                           unsigned IndexTypeQuals,
                                           SourceRange BracketsRange);
 
-  /// \brief Build a new vector type given the element type and
+  /// Build a new vector type given the element type and
   /// number of elements.
   ///
   /// By default, performs semantic analysis when building the vector type.
@@ -818,7 +818,7 @@
   QualType RebuildVectorType(QualType ElementType, unsigned NumElements,
                              VectorType::VectorKind VecKind);
 
-  /// \brief Build a new extended vector type given the element type and
+  /// Build a new extended vector type given the element type and
   /// number of elements.
   ///
   /// By default, performs semantic analysis when building the vector type.
@@ -826,7 +826,7 @@
   QualType RebuildExtVectorType(QualType ElementType, unsigned NumElements,
                                 SourceLocation AttributeLoc);
 
-  /// \brief Build a new potentially dependently-sized extended vector type
+  /// Build a new potentially dependently-sized extended vector type
   /// given the element type and number of elements.
   ///
   /// By default, performs semantic analysis when building the vector type.
@@ -835,7 +835,7 @@
                                               Expr *SizeExpr,
                                               SourceLocation AttributeLoc);
 
-  /// \brief Build a new DependentAddressSpaceType or return the pointee
+  /// Build a new DependentAddressSpaceType or return the pointee
   /// type variable with the correct address space (retrieved from
   /// AddrSpaceExpr) applied to it. The former will be returned in cases
   /// where the address space remains dependent.
@@ -847,7 +847,7 @@
                                             Expr *AddrSpaceExpr,
                                             SourceLocation AttributeLoc);
 
-  /// \brief Build a new function type.
+  /// Build a new function type.
   ///
   /// By default, performs semantic analysis when building the function type.
   /// Subclasses may override this routine to provide different behavior.
@@ -855,51 +855,51 @@
                                     MutableArrayRef<QualType> ParamTypes,
                                     const FunctionProtoType::ExtProtoInfo &EPI);
 
-  /// \brief Build a new unprototyped function type.
+  /// Build a new unprototyped function type.
   QualType RebuildFunctionNoProtoType(QualType ResultType);
 
-  /// \brief Rebuild an unresolved typename type, given the decl that
+  /// Rebuild an unresolved typename type, given the decl that
   /// the UnresolvedUsingTypenameDecl was transformed to.
   QualType RebuildUnresolvedUsingType(SourceLocation NameLoc, Decl *D);
 
-  /// \brief Build a new typedef type.
+  /// Build a new typedef type.
   QualType RebuildTypedefType(TypedefNameDecl *Typedef) {
     return SemaRef.Context.getTypeDeclType(Typedef);
   }
 
-  /// \brief Build a new class/struct/union type.
+  /// Build a new class/struct/union type.
   QualType RebuildRecordType(RecordDecl *Record) {
     return SemaRef.Context.getTypeDeclType(Record);
   }
 
-  /// \brief Build a new Enum type.
+  /// Build a new Enum type.
   QualType RebuildEnumType(EnumDecl *Enum) {
     return SemaRef.Context.getTypeDeclType(Enum);
   }
 
-  /// \brief Build a new typeof(expr) type.
+  /// Build a new typeof(expr) type.
   ///
   /// By default, performs semantic analysis when building the typeof type.
   /// Subclasses may override this routine to provide different behavior.
   QualType RebuildTypeOfExprType(Expr *Underlying, SourceLocation Loc);
 
-  /// \brief Build a new typeof(type) type.
+  /// Build a new typeof(type) type.
   ///
   /// By default, builds a new TypeOfType with the given underlying type.
   QualType RebuildTypeOfType(QualType Underlying);
 
-  /// \brief Build a new unary transform type.
+  /// Build a new unary transform type.
   QualType RebuildUnaryTransformType(QualType BaseType,
                                      UnaryTransformType::UTTKind UKind,
                                      SourceLocation Loc);
 
-  /// \brief Build a new C++11 decltype type.
+  /// Build a new C++11 decltype type.
   ///
   /// By default, performs semantic analysis when building the decltype type.
   /// Subclasses may override this routine to provide different behavior.
   QualType RebuildDecltypeType(Expr *Underlying, SourceLocation Loc);
 
-  /// \brief Build a new C++11 auto type.
+  /// Build a new C++11 auto type.
   ///
   /// By default, builds a new AutoType with the given deduced type.
   QualType RebuildAutoType(QualType Deduced, AutoTypeKeyword Keyword) {
@@ -918,7 +918,7 @@
         Template, Deduced, /*IsDependent*/ false);
   }
 
-  /// \brief Build a new template specialization type.
+  /// Build a new template specialization type.
   ///
   /// By default, performs semantic analysis when building the template
   /// specialization type. Subclasses may override this routine to provide
@@ -927,7 +927,7 @@
                                              SourceLocation TemplateLoc,
                                              TemplateArgumentListInfo &Args);
 
-  /// \brief Build a new parenthesized type.
+  /// Build a new parenthesized type.
   ///
   /// By default, builds a new ParenType type from the inner type.
   /// Subclasses may override this routine to provide different behavior.
@@ -935,7 +935,7 @@
     return SemaRef.BuildParenType(InnerType);
   }
 
-  /// \brief Build a new qualified name type.
+  /// Build a new qualified name type.
   ///
   /// By default, builds a new ElaboratedType type from the keyword,
   /// the nested-name-specifier and the named type.
@@ -949,7 +949,7 @@
                                              Named);
   }
 
-  /// \brief Build a new typename type that refers to a template-id.
+  /// Build a new typename type that refers to a template-id.
   ///
   /// By default, builds a new DependentNameType type from the
   /// nested-name-specifier and the given type. Subclasses may override
@@ -993,7 +993,7 @@
                                              T);
   }
 
-  /// \brief Build a new typename type that refers to an identifier.
+  /// Build a new typename type that refers to an identifier.
   ///
   /// By default, performs semantic analysis when building the typename type
   /// (or elaborated type). Subclasses may override this routine to provide
@@ -1106,7 +1106,7 @@
                                              T);
   }
 
-  /// \brief Build a new pack expansion type.
+  /// Build a new pack expansion type.
   ///
   /// By default, builds a new PackExpansionType type from the given pattern.
   /// Subclasses may override this routine to provide different behavior.
@@ -1118,17 +1118,17 @@
                                         NumExpansions);
   }
 
-  /// \brief Build a new atomic type given its value type.
+  /// Build a new atomic type given its value type.
   ///
   /// By default, performs semantic analysis when building the atomic type.
   /// Subclasses may override this routine to provide different behavior.
   QualType RebuildAtomicType(QualType ValueType, SourceLocation KWLoc);
 
-  /// \brief Build a new pipe type given its value type.
+  /// Build a new pipe type given its value type.
   QualType RebuildPipeType(QualType ValueType, SourceLocation KWLoc,
                            bool isReadPipe);
 
-  /// \brief Build a new template name given a nested name specifier, a flag
+  /// Build a new template name given a nested name specifier, a flag
   /// indicating whether the "template" keyword was provided, and the template
   /// that the template name refers to.
   ///
@@ -1138,7 +1138,7 @@
                                    bool TemplateKW,
                                    TemplateDecl *Template);
 
-  /// \brief Build a new template name given a nested name specifier and the
+  /// Build a new template name given a nested name specifier and the
   /// name that is referred to as a template.
   ///
   /// By default, performs semantic analysis to determine whether the name can
@@ -1152,7 +1152,7 @@
                                    NamedDecl *FirstQualifierInScope,
                                    bool AllowInjectedClassName);
 
-  /// \brief Build a new template name given a nested name specifier and the
+  /// Build a new template name given a nested name specifier and the
   /// overloaded operator name that is referred to as a template.
   ///
   /// By default, performs semantic analysis to determine whether the name can
@@ -1165,7 +1165,7 @@
                                    QualType ObjectType,
                                    bool AllowInjectedClassName);
 
-  /// \brief Build a new template name given a template template parameter pack
+  /// Build a new template name given a template template parameter pack
   /// and the
   ///
   /// By default, performs semantic analysis to determine whether the name can
@@ -1177,7 +1177,7 @@
     return getSema().Context.getSubstTemplateTemplateParmPack(Param, ArgPack);
   }
 
-  /// \brief Build a new compound statement.
+  /// Build a new compound statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1189,7 +1189,7 @@
                                        IsStmtExpr);
   }
 
-  /// \brief Build a new case statement.
+  /// Build a new case statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1202,7 +1202,7 @@
                                    ColonLoc);
   }
 
-  /// \brief Attach the body to a new case statement.
+  /// Attach the body to a new case statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1211,7 +1211,7 @@
     return S;
   }
 
-  /// \brief Build a new default statement.
+  /// Build a new default statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1222,7 +1222,7 @@
                                       /*CurScope=*/nullptr);
   }
 
-  /// \brief Build a new label statement.
+  /// Build a new label statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1231,7 +1231,7 @@
     return SemaRef.ActOnLabelStmt(IdentLoc, L, ColonLoc, SubStmt);
   }
 
-  /// \brief Build a new label statement.
+  /// Build a new label statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1241,7 +1241,7 @@
     return SemaRef.ActOnAttributedStmt(AttrLoc, Attrs, SubStmt);
   }
 
-  /// \brief Build a new "if" statement.
+  /// Build a new "if" statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1252,7 +1252,7 @@
                                  ElseLoc, Else);
   }
 
-  /// \brief Start building a new switch statement.
+  /// Start building a new switch statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1261,7 +1261,7 @@
     return getSema().ActOnStartOfSwitchStmt(SwitchLoc, Init, Cond);
   }
 
-  /// \brief Attach the body to the switch statement.
+  /// Attach the body to the switch statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1270,7 +1270,7 @@
     return getSema().ActOnFinishSwitchStmt(SwitchLoc, Switch, Body);
   }
 
-  /// \brief Build a new while statement.
+  /// Build a new while statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1279,7 +1279,7 @@
     return getSema().ActOnWhileStmt(WhileLoc, Cond, Body);
   }
 
-  /// \brief Build a new do-while statement.
+  /// Build a new do-while statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1290,7 +1290,7 @@
                                  Cond, RParenLoc);
   }
 
-  /// \brief Build a new for statement.
+  /// Build a new for statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1302,7 +1302,7 @@
                                   Inc, RParenLoc, Body);
   }
 
-  /// \brief Build a new goto statement.
+  /// Build a new goto statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1311,7 +1311,7 @@
     return getSema().ActOnGotoStmt(GotoLoc, LabelLoc, Label);
   }
 
-  /// \brief Build a new indirect goto statement.
+  /// Build a new indirect goto statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1321,7 +1321,7 @@
     return getSema().ActOnIndirectGotoStmt(GotoLoc, StarLoc, Target);
   }
 
-  /// \brief Build a new return statement.
+  /// Build a new return statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1329,7 +1329,7 @@
     return getSema().BuildReturnStmt(ReturnLoc, Result);
   }
 
-  /// \brief Build a new declaration statement.
+  /// Build a new declaration statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1339,7 +1339,7 @@
     return getSema().ActOnDeclStmt(DG, StartLoc, EndLoc);
   }
 
-  /// \brief Build a new inline asm statement.
+  /// Build a new inline asm statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1354,7 +1354,7 @@
                                      AsmString, Clobbers, RParenLoc);
   }
 
-  /// \brief Build a new MS style inline asm statement.
+  /// Build a new MS style inline asm statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1371,7 +1371,7 @@
                                     Constraints, Clobbers, Exprs, EndLoc);
   }
 
-  /// \brief Build a new co_return statement.
+  /// Build a new co_return statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1380,7 +1380,7 @@
     return getSema().BuildCoreturnStmt(CoreturnLoc, Result, IsImplicit);
   }
 
-  /// \brief Build a new co_await expression.
+  /// Build a new co_await expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -1389,7 +1389,7 @@
     return getSema().BuildResolvedCoawaitExpr(CoawaitLoc, Result, IsImplicit);
   }
 
-  /// \brief Build a new co_await expression.
+  /// Build a new co_await expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -1399,7 +1399,7 @@
     return getSema().BuildUnresolvedCoawaitExpr(CoawaitLoc, Result, Lookup);
   }
 
-  /// \brief Build a new co_yield expression.
+  /// Build a new co_yield expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -1411,7 +1411,7 @@
     return getSema().BuildCoroutineBodyStmt(Args);
   }
 
-  /// \brief Build a new Objective-C \@try statement.
+  /// Build a new Objective-C \@try statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1423,7 +1423,7 @@
                                         Finally);
   }
 
-  /// \brief Rebuild an Objective-C exception declaration.
+  /// Rebuild an Objective-C exception declaration.
   ///
   /// By default, performs semantic analysis to build the new declaration.
   /// Subclasses may override this routine to provide different behavior.
@@ -1435,7 +1435,7 @@
                                             ExceptionDecl->getIdentifier());
   }
 
-  /// \brief Build a new Objective-C \@catch statement.
+  /// Build a new Objective-C \@catch statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1447,7 +1447,7 @@
                                           Var, Body);
   }
 
-  /// \brief Build a new Objective-C \@finally statement.
+  /// Build a new Objective-C \@finally statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1456,7 +1456,7 @@
     return getSema().ActOnObjCAtFinallyStmt(AtLoc, Body);
   }
 
-  /// \brief Build a new Objective-C \@throw statement.
+  /// Build a new Objective-C \@throw statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1465,7 +1465,7 @@
     return getSema().BuildObjCAtThrowStmt(AtLoc, Operand);
   }
 
-  /// \brief Build a new OpenMP executable directive.
+  /// Build a new OpenMP executable directive.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1479,7 +1479,7 @@
         Kind, DirName, CancelRegion, Clauses, AStmt, StartLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'if' clause.
+  /// Build a new OpenMP 'if' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1494,7 +1494,7 @@
                                          EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'final' clause.
+  /// Build a new OpenMP 'final' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1505,7 +1505,7 @@
                                             EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'num_threads' clause.
+  /// Build a new OpenMP 'num_threads' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1517,7 +1517,7 @@
                                                  LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'safelen' clause.
+  /// Build a new OpenMP 'safelen' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1527,7 +1527,7 @@
     return getSema().ActOnOpenMPSafelenClause(Len, StartLoc, LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'simdlen' clause.
+  /// Build a new OpenMP 'simdlen' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1537,7 +1537,7 @@
     return getSema().ActOnOpenMPSimdlenClause(Len, StartLoc, LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'collapse' clause.
+  /// Build a new OpenMP 'collapse' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1548,7 +1548,7 @@
                                                EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'default' clause.
+  /// Build a new OpenMP 'default' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1561,7 +1561,7 @@
                                               StartLoc, LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'proc_bind' clause.
+  /// Build a new OpenMP 'proc_bind' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1574,7 +1574,7 @@
                                                StartLoc, LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'schedule' clause.
+  /// Build a new OpenMP 'schedule' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1588,7 +1588,7 @@
         CommaLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'ordered' clause.
+  /// Build a new OpenMP 'ordered' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1598,7 +1598,7 @@
     return getSema().ActOnOpenMPOrderedClause(StartLoc, EndLoc, LParenLoc, Num);
   }
 
-  /// \brief Build a new OpenMP 'private' clause.
+  /// Build a new OpenMP 'private' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1610,7 +1610,7 @@
                                               EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'firstprivate' clause.
+  /// Build a new OpenMP 'firstprivate' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1622,7 +1622,7 @@
                                                    EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'lastprivate' clause.
+  /// Build a new OpenMP 'lastprivate' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1634,7 +1634,7 @@
                                                   EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'shared' clause.
+  /// Build a new OpenMP 'shared' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1646,7 +1646,7 @@
                                              EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'reduction' clause.
+  /// Build a new OpenMP 'reduction' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1694,7 +1694,7 @@
         ReductionId, UnresolvedReductions);
   }
 
-  /// \brief Build a new OpenMP 'linear' clause.
+  /// Build a new OpenMP 'linear' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1710,7 +1710,7 @@
                                              EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'aligned' clause.
+  /// Build a new OpenMP 'aligned' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1723,7 +1723,7 @@
                                               LParenLoc, ColonLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'copyin' clause.
+  /// Build a new OpenMP 'copyin' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1735,7 +1735,7 @@
                                              EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'copyprivate' clause.
+  /// Build a new OpenMP 'copyprivate' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1747,7 +1747,7 @@
                                                   EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'flush' pseudo clause.
+  /// Build a new OpenMP 'flush' pseudo clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1759,7 +1759,7 @@
                                             EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'depend' pseudo clause.
+  /// Build a new OpenMP 'depend' pseudo clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1772,7 +1772,7 @@
                                              StartLoc, LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'device' clause.
+  /// Build a new OpenMP 'device' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1783,7 +1783,7 @@
                                              EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'map' clause.
+  /// Build a new OpenMP 'map' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1798,7 +1798,7 @@
                                           VarList, StartLoc, LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'num_teams' clause.
+  /// Build a new OpenMP 'num_teams' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1809,7 +1809,7 @@
                                                EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'thread_limit' clause.
+  /// Build a new OpenMP 'thread_limit' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1821,7 +1821,7 @@
                                                   LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'priority' clause.
+  /// Build a new OpenMP 'priority' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1832,7 +1832,7 @@
                                                EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'grainsize' clause.
+  /// Build a new OpenMP 'grainsize' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1843,7 +1843,7 @@
                                                 EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'num_tasks' clause.
+  /// Build a new OpenMP 'num_tasks' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1854,7 +1854,7 @@
                                                EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'hint' clause.
+  /// Build a new OpenMP 'hint' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1864,7 +1864,7 @@
     return getSema().ActOnOpenMPHintClause(Hint, StartLoc, LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'dist_schedule' clause.
+  /// Build a new OpenMP 'dist_schedule' clause.
   ///
   /// By default, performs semantic analysis to build the new OpenMP clause.
   /// Subclasses may override this routine to provide different behavior.
@@ -1877,7 +1877,7 @@
         Kind, ChunkSize, StartLoc, LParenLoc, KindLoc, CommaLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'to' clause.
+  /// Build a new OpenMP 'to' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1888,7 +1888,7 @@
     return getSema().ActOnOpenMPToClause(VarList, StartLoc, LParenLoc, EndLoc);
   }
 
-  /// \brief Build a new OpenMP 'from' clause.
+  /// Build a new OpenMP 'from' clause.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1924,7 +1924,7 @@
                                                   EndLoc);
   }
 
-  /// \brief Rebuild the operand to an Objective-C \@synchronized statement.
+  /// Rebuild the operand to an Objective-C \@synchronized statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1933,7 +1933,7 @@
     return getSema().ActOnObjCAtSynchronizedOperand(atLoc, object);
   }
 
-  /// \brief Build a new Objective-C \@synchronized statement.
+  /// Build a new Objective-C \@synchronized statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1942,7 +1942,7 @@
     return getSema().ActOnObjCAtSynchronizedStmt(AtLoc, Object, Body);
   }
 
-  /// \brief Build a new Objective-C \@autoreleasepool statement.
+  /// Build a new Objective-C \@autoreleasepool statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1951,7 +1951,7 @@
     return getSema().ActOnObjCAutoreleasePoolStmt(AtLoc, Body);
   }
 
-  /// \brief Build a new Objective-C fast enumeration statement.
+  /// Build a new Objective-C fast enumeration statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1970,7 +1970,7 @@
     return getSema().FinishObjCForCollectionStmt(ForEachStmt.get(), Body);
   }
 
-  /// \brief Build a new C++ exception declaration.
+  /// Build a new C++ exception declaration.
   ///
   /// By default, performs semantic analysis to build the new decaration.
   /// Subclasses may override this routine to provide different behavior.
@@ -1986,7 +1986,7 @@
     return Var;
   }
 
-  /// \brief Build a new C++ catch statement.
+  /// Build a new C++ catch statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -1997,7 +1997,7 @@
                                                       Handler));
   }
 
-  /// \brief Build a new C++ try statement.
+  /// Build a new C++ try statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -2006,7 +2006,7 @@
     return getSema().ActOnCXXTryBlock(TryLoc, TryBlock, Handlers);
   }
 
-  /// \brief Build a new C++0x range-based for statement.
+  /// Build a new C++0x range-based for statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -2040,7 +2040,7 @@
                                           Sema::BFRK_Rebuild);
   }
 
-  /// \brief Build a new C++0x range-based for statement.
+  /// Build a new C++0x range-based for statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -2053,7 +2053,7 @@
                                                 QualifierLoc, NameInfo, Nested);
   }
 
-  /// \brief Attach body to a C++0x range-based for statement.
+  /// Attach body to a C++0x range-based for statement.
   ///
   /// By default, performs semantic analysis to finish the new statement.
   /// Subclasses may override this routine to provide different behavior.
@@ -2075,7 +2075,7 @@
     return SEHFinallyStmt::Create(getSema().getASTContext(), Loc, Block);
   }
 
-  /// \brief Build a new predefined expression.
+  /// Build a new predefined expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2084,7 +2084,7 @@
     return getSema().BuildPredefinedExpr(Loc, IT);
   }
 
-  /// \brief Build a new expression that references a declaration.
+  /// Build a new expression that references a declaration.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2095,7 +2095,7 @@
   }
 
 
-  /// \brief Build a new expression that references a declaration.
+  /// Build a new expression that references a declaration.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2111,7 +2111,7 @@
     return getSema().BuildDeclarationNameExpr(SS, NameInfo, VD);
   }
 
-  /// \brief Build a new expression in parentheses.
+  /// Build a new expression in parentheses.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2120,7 +2120,7 @@
     return getSema().ActOnParenExpr(LParen, RParen, SubExpr);
   }
 
-  /// \brief Build a new pseudo-destructor expression.
+  /// Build a new pseudo-destructor expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2133,7 +2133,7 @@
                                             SourceLocation TildeLoc,
                                         PseudoDestructorTypeStorage Destroyed);
 
-  /// \brief Build a new unary operator expression.
+  /// Build a new unary operator expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2143,7 +2143,7 @@
     return getSema().BuildUnaryOp(/*Scope=*/nullptr, OpLoc, Opc, SubExpr);
   }
 
-  /// \brief Build a new builtin offsetof expression.
+  /// Build a new builtin offsetof expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2155,7 +2155,7 @@
                                           RParenLoc);
   }
 
-  /// \brief Build a new sizeof, alignof or vec_step expression with a
+  /// Build a new sizeof, alignof or vec_step expression with a
   /// type argument.
   ///
   /// By default, performs semantic analysis to build the new expression.
@@ -2167,7 +2167,7 @@
     return getSema().CreateUnaryExprOrTypeTraitExpr(TInfo, OpLoc, ExprKind, R);
   }
 
-  /// \brief Build a new sizeof, alignof or vec step expression with an
+  /// Build a new sizeof, alignof or vec step expression with an
   /// expression argument.
   ///
   /// By default, performs semantic analysis to build the new expression.
@@ -2183,7 +2183,7 @@
     return Result;
   }
 
-  /// \brief Build a new array subscript expression.
+  /// Build a new array subscript expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2196,7 +2196,7 @@
                                              RBracketLoc);
   }
 
-  /// \brief Build a new array section expression.
+  /// Build a new array section expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2208,7 +2208,7 @@
                                               ColonLoc, Length, RBracketLoc);
   }
 
-  /// \brief Build a new call expression.
+  /// Build a new call expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2220,7 +2220,7 @@
                                    Args, RParenLoc, ExecConfig);
   }
 
-  /// \brief Build a new member access expression.
+  /// Build a new member access expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2278,7 +2278,7 @@
                                               /*S*/nullptr);
   }
 
-  /// \brief Build a new binary operator expression.
+  /// Build a new binary operator expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2288,7 +2288,7 @@
     return getSema().BuildBinOp(/*Scope=*/nullptr, OpLoc, Opc, LHS, RHS);
   }
 
-  /// \brief Build a new conditional operator expression.
+  /// Build a new conditional operator expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2301,7 +2301,7 @@
                                         LHS, RHS);
   }
 
-  /// \brief Build a new C-style cast expression.
+  /// Build a new C-style cast expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2313,7 +2313,7 @@
                                          SubExpr);
   }
 
-  /// \brief Build a new compound literal expression.
+  /// Build a new compound literal expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2325,7 +2325,7 @@
                                               Init);
   }
 
-  /// \brief Build a new extended vector element access expression.
+  /// Build a new extended vector element access expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2345,7 +2345,7 @@
                                               /*S*/ nullptr);
   }
 
-  /// \brief Build a new initializer list expression.
+  /// Build a new initializer list expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2355,7 +2355,7 @@
     return SemaRef.ActOnInitList(LBraceLoc, Inits, RBraceLoc);
   }
 
-  /// \brief Build a new designated initializer expression.
+  /// Build a new designated initializer expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2373,7 +2373,7 @@
     return Result;
   }
 
-  /// \brief Build a new value-initialized expression.
+  /// Build a new value-initialized expression.
   ///
   /// By default, builds the implicit value initialization without performing
   /// any semantic analysis. Subclasses may override this routine to provide
@@ -2382,7 +2382,7 @@
     return new (SemaRef.Context) ImplicitValueInitExpr(T);
   }
 
-  /// \brief Build a new \c va_arg expression.
+  /// Build a new \c va_arg expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2394,7 +2394,7 @@
                                     RParenLoc);
   }
 
-  /// \brief Build a new expression list in parentheses.
+  /// Build a new expression list in parentheses.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2404,7 +2404,7 @@
     return getSema().ActOnParenListExpr(LParenLoc, RParenLoc, SubExprs);
   }
 
-  /// \brief Build a new address-of-label expression.
+  /// Build a new address-of-label expression.
   ///
   /// By default, performs semantic analysis, using the name of the label
   /// rather than attempting to map the label statement itself.
@@ -2414,7 +2414,7 @@
     return getSema().ActOnAddrLabel(AmpAmpLoc, LabelLoc, Label);
   }
 
-  /// \brief Build a new GNU statement expression.
+  /// Build a new GNU statement expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2424,7 +2424,7 @@
     return getSema().ActOnStmtExpr(LParenLoc, SubStmt, RParenLoc);
   }
 
-  /// \brief Build a new __builtin_choose_expr expression.
+  /// Build a new __builtin_choose_expr expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2436,7 +2436,7 @@
                                    RParenLoc);
   }
 
-  /// \brief Build a new generic selection expression.
+  /// Build a new generic selection expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2450,7 +2450,7 @@
                                                 ControllingExpr, Types, Exprs);
   }
 
-  /// \brief Build a new overloaded operator call expression.
+  /// Build a new overloaded operator call expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// The semantic analysis provides the behavior of template instantiation,
@@ -2464,7 +2464,7 @@
                                               Expr *First,
                                               Expr *Second);
 
-  /// \brief Build a new C++ "named" cast expression, such as static_cast or
+  /// Build a new C++ "named" cast expression, such as static_cast or
   /// reinterpret_cast.
   ///
   /// By default, this routine dispatches to one of the more-specific routines
@@ -2505,7 +2505,7 @@
     }
   }
 
-  /// \brief Build a new C++ static_cast expression.
+  /// Build a new C++ static_cast expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2522,7 +2522,7 @@
                                        SourceRange(LParenLoc, RParenLoc));
   }
 
-  /// \brief Build a new C++ dynamic_cast expression.
+  /// Build a new C++ dynamic_cast expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2539,7 +2539,7 @@
                                        SourceRange(LParenLoc, RParenLoc));
   }
 
-  /// \brief Build a new C++ reinterpret_cast expression.
+  /// Build a new C++ reinterpret_cast expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2556,7 +2556,7 @@
                                        SourceRange(LParenLoc, RParenLoc));
   }
 
-  /// \brief Build a new C++ const_cast expression.
+  /// Build a new C++ const_cast expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2573,7 +2573,7 @@
                                        SourceRange(LParenLoc, RParenLoc));
   }
 
-  /// \brief Build a new C++ functional-style cast expression.
+  /// Build a new C++ functional-style cast expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2587,7 +2587,7 @@
                                                ListInitialization);
   }
 
-  /// \brief Build a new C++ typeid(type) expression.
+  /// Build a new C++ typeid(type) expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2600,7 +2600,7 @@
   }
 
 
-  /// \brief Build a new C++ typeid(expr) expression.
+  /// Build a new C++ typeid(expr) expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2612,7 +2612,7 @@
                                     RParenLoc);
   }
 
-  /// \brief Build a new C++ __uuidof(type) expression.
+  /// Build a new C++ __uuidof(type) expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2624,7 +2624,7 @@
                                     RParenLoc);
   }
 
-  /// \brief Build a new C++ __uuidof(expr) expression.
+  /// Build a new C++ __uuidof(expr) expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2636,7 +2636,7 @@
                                     RParenLoc);
   }
 
-  /// \brief Build a new C++ "this" expression.
+  /// Build a new C++ "this" expression.
   ///
   /// By default, builds a new "this" expression without performing any
   /// semantic analysis. Subclasses may override this routine to provide
@@ -2648,7 +2648,7 @@
     return new (getSema().Context) CXXThisExpr(ThisLoc, ThisType, isImplicit);
   }
 
-  /// \brief Build a new C++ throw expression.
+  /// Build a new C++ throw expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2657,7 +2657,7 @@
     return getSema().BuildCXXThrow(ThrowLoc, Sub, IsThrownVariableInScope);
   }
 
-  /// \brief Build a new C++ default-argument expression.
+  /// Build a new C++ default-argument expression.
   ///
   /// By default, builds a new default-argument expression, which does not
   /// require any semantic analysis. Subclasses may override this routine to
@@ -2667,7 +2667,7 @@
     return CXXDefaultArgExpr::Create(getSema().Context, Loc, Param);
   }
 
-  /// \brief Build a new C++11 default-initialization expression.
+  /// Build a new C++11 default-initialization expression.
   ///
   /// By default, builds a new default field initialization expression, which
   /// does not require any semantic analysis. Subclasses may override this
@@ -2677,7 +2677,7 @@
     return CXXDefaultInitExpr::Create(getSema().Context, Loc, Field);
   }
 
-  /// \brief Build a new C++ zero-initialization expression.
+  /// Build a new C++ zero-initialization expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2688,7 +2688,7 @@
         TSInfo, LParenLoc, None, RParenLoc, /*ListInitialization=*/false);
   }
 
-  /// \brief Build a new C++ "new" expression.
+  /// Build a new C++ "new" expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2715,7 +2715,7 @@
                                  Initializer);
   }
 
-  /// \brief Build a new C++ "delete" expression.
+  /// Build a new C++ "delete" expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2727,7 +2727,7 @@
                                     Operand);
   }
 
-  /// \brief Build a new type trait expression.
+  /// Build a new type trait expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2738,7 +2738,7 @@
     return getSema().BuildTypeTrait(Trait, StartLoc, Args, RParenLoc);
   }
 
-  /// \brief Build a new array type trait expression.
+  /// Build a new array type trait expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2750,7 +2750,7 @@
     return getSema().BuildArrayTypeTrait(Trait, StartLoc, TSInfo, DimExpr, RParenLoc);
   }
 
-  /// \brief Build a new expression trait expression.
+  /// Build a new expression trait expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2761,7 +2761,7 @@
     return getSema().BuildExpressionTrait(Trait, StartLoc, Queried, RParenLoc);
   }
 
-  /// \brief Build a new (previously unresolved) declaration reference
+  /// Build a new (previously unresolved) declaration reference
   /// expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
@@ -2784,7 +2784,7 @@
         SS, NameInfo, IsAddressOfOperand, /*S*/nullptr, RecoveryTSI);
   }
 
-  /// \brief Build a new template-id expression.
+  /// Build a new template-id expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2797,7 +2797,7 @@
                                          TemplateArgs);
   }
 
-  /// \brief Build a new object-construction expression.
+  /// Build a new object-construction expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2827,7 +2827,7 @@
                                            ParenRange);
   }
 
-  /// \brief Build a new implicit construction via inherited constructor
+  /// Build a new implicit construction via inherited constructor
   /// expression.
   ExprResult RebuildCXXInheritedCtorInitExpr(QualType T, SourceLocation Loc,
                                              CXXConstructorDecl *Constructor,
@@ -2837,7 +2837,7 @@
         Loc, T, Constructor, ConstructsVBase, InheritedFromVBase);
   }
 
-  /// \brief Build a new object-construction expression.
+  /// Build a new object-construction expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2850,7 +2850,7 @@
         TSInfo, LParenOrBraceLoc, Args, RParenOrBraceLoc, ListInitialization);
   }
 
-  /// \brief Build a new object-construction expression.
+  /// Build a new object-construction expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2863,7 +2863,7 @@
                                                RParenLoc, ListInitialization);
   }
 
-  /// \brief Build a new member reference expression.
+  /// Build a new member reference expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2887,7 +2887,7 @@
                                             TemplateArgs, /*S*/nullptr);
   }
 
-  /// \brief Build a new member reference expression.
+  /// Build a new member reference expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2909,7 +2909,7 @@
                                             R, TemplateArgs, /*S*/nullptr);
   }
 
-  /// \brief Build a new noexcept expression.
+  /// Build a new noexcept expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2917,7 +2917,7 @@
     return SemaRef.BuildCXXNoexceptExpr(Range.getBegin(), Arg, Range.getEnd());
   }
 
-  /// \brief Build a new expression to compute the length of a parameter pack.
+  /// Build a new expression to compute the length of a parameter pack.
   ExprResult RebuildSizeOfPackExpr(SourceLocation OperatorLoc,
                                    NamedDecl *Pack,
                                    SourceLocation PackLoc,
@@ -2928,7 +2928,7 @@
                                   RParenLoc, Length, PartialArgs);
   }
 
-  /// \brief Build a new Objective-C boxed expression.
+  /// Build a new Objective-C boxed expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2936,7 +2936,7 @@
     return getSema().BuildObjCBoxedExpr(SR, ValueExpr);
   }
 
-  /// \brief Build a new Objective-C array literal.
+  /// Build a new Objective-C array literal.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2954,7 +2954,7 @@
                                                    getterMethod, setterMethod);
   }
 
-  /// \brief Build a new Objective-C dictionary literal.
+  /// Build a new Objective-C dictionary literal.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2963,7 +2963,7 @@
     return getSema().BuildObjCDictionaryLiteral(Range, Elements);
   }
 
-  /// \brief Build a new Objective-C \@encode expression.
+  /// Build a new Objective-C \@encode expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -2973,7 +2973,7 @@
     return SemaRef.BuildObjCEncodeExpression(AtLoc, EncodeTypeInfo, RParenLoc);
   }
 
-  /// \brief Build a new Objective-C class message.
+  /// Build a new Objective-C class message.
   ExprResult RebuildObjCMessageExpr(TypeSourceInfo *ReceiverTypeInfo,
                                           Selector Sel,
                                           ArrayRef<SourceLocation> SelectorLocs,
@@ -2988,7 +2988,7 @@
                                      RBracLoc, Args);
   }
 
-  /// \brief Build a new Objective-C instance message.
+  /// Build a new Objective-C instance message.
   ExprResult RebuildObjCMessageExpr(Expr *Receiver,
                                           Selector Sel,
                                           ArrayRef<SourceLocation> SelectorLocs,
@@ -3003,7 +3003,7 @@
                                         RBracLoc, Args);
   }
 
-  /// \brief Build a new Objective-C instance/class message to 'super'.
+  /// Build a new Objective-C instance/class message to 'super'.
   ExprResult RebuildObjCMessageExpr(SourceLocation SuperLoc,
                                     Selector Sel,
                                     ArrayRef<SourceLocation> SelectorLocs,
@@ -3026,7 +3026,7 @@
       
   }
 
-  /// \brief Build a new Objective-C ivar reference expression.
+  /// Build a new Objective-C ivar reference expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -3046,7 +3046,7 @@
     return Result;
   }
 
-  /// \brief Build a new Objective-C property reference expression.
+  /// Build a new Objective-C property reference expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -3065,7 +3065,7 @@
                                               /*S=*/nullptr);
   }
 
-  /// \brief Build a new Objective-C property reference expression.
+  /// Build a new Objective-C property reference expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -3081,7 +3081,7 @@
                                                   PropertyLoc, Base));
   }
 
-  /// \brief Build a new Objective-C "isa" expression.
+  /// Build a new Objective-C "isa" expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -3098,7 +3098,7 @@
                                               /*S=*/nullptr);
   }
 
-  /// \brief Build a new shuffle vector expression.
+  /// Build a new shuffle vector expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -3130,7 +3130,7 @@
     return SemaRef.SemaBuiltinShuffleVector(cast<CallExpr>(TheCall.get()));
   }
 
-  /// \brief Build a new convert vector expression.
+  /// Build a new convert vector expression.
   ExprResult RebuildConvertVectorExpr(SourceLocation BuiltinLoc,
                                       Expr *SrcExpr, TypeSourceInfo *DstTInfo,
                                       SourceLocation RParenLoc) {
@@ -3138,7 +3138,7 @@
                                          BuiltinLoc, RParenLoc);
   }
 
-  /// \brief Build a new template argument pack expansion.
+  /// Build a new template argument pack expansion.
   ///
   /// By default, performs semantic analysis to build a new pack expansion
   /// for a template argument. Subclasses may override this routine to provide
@@ -3186,7 +3186,7 @@
     return TemplateArgumentLoc();
   }
 
-  /// \brief Build a new expression pack expansion.
+  /// Build a new expression pack expansion.
   ///
   /// By default, performs semantic analysis to build a new pack expansion
   /// for an expression. Subclasses may override this routine to provide
@@ -3196,7 +3196,7 @@
     return getSema().CheckPackExpansion(Pattern, EllipsisLoc, NumExpansions);
   }
 
-  /// \brief Build a new C++1z fold-expression.
+  /// Build a new C++1z fold-expression.
   ///
   /// By default, performs semantic analysis in order to build a new fold
   /// expression.
@@ -3208,7 +3208,7 @@
                                       RHS, RParenLoc);
   }
 
-  /// \brief Build an empty C++1z fold-expression with the given operator.
+  /// Build an empty C++1z fold-expression with the given operator.
   ///
   /// By default, produces the fallback value for the fold-expression, or
   /// produce an error if there is no fallback value.
@@ -3217,7 +3217,7 @@
     return getSema().BuildEmptyCXXFoldExpr(EllipsisLoc, Operator);
   }
 
-  /// \brief Build a new atomic operation expression.
+  /// Build a new atomic operation expression.
   ///
   /// By default, performs semantic analysis to build the new expression.
   /// Subclasses may override this routine to provide different behavior.
@@ -3920,7 +3920,7 @@
   return true;
 }
 
-/// \brief Iterator adaptor that invents template argument location information
+/// Iterator adaptor that invents template argument location information
 /// for each of the template arguments in its underlying iterator.
 template<typename Derived, typename InputIterator>
 class TemplateArgumentLocInventIterator {
@@ -5758,7 +5758,7 @@
   return Result;
 }
 
-  /// \brief Simple iterator that traverses the template arguments in a
+  /// Simple iterator that traverses the template arguments in a
   /// container that provides a \c getArgLoc() member function.
   ///
   /// This iterator is intended to be used with the iterator form of
@@ -8962,7 +8962,7 @@
                                        E->getRParen());
 }
 
-/// \brief The operand of a unary address-of operator has special rules: it's
+/// The operand of a unary address-of operator has special rules: it's
 /// allowed to refer to a non-static member of a class even if there's no 'this'
 /// object available.
 template<typename Derived>
@@ -9661,7 +9661,7 @@
                                            E->getRParenLoc());
 }
 
-/// \brief Transform an address-of-label expression.
+/// Transform an address-of-label expression.
 ///
 /// By default, the transformation of an address-of-label expression always
 /// rebuilds the expression, so that the label identifier can be resolved to
@@ -10791,7 +10791,7 @@
       E->constructsVBase(), E->inheritedFromVBase());
 }
 
-/// \brief Transform a C++ temporary-binding expression.
+/// Transform a C++ temporary-binding expression.
 ///
 /// Since CXXBindTemporaryExpr nodes are implicitly generated, we just
 /// transform the subexpression and return that.
@@ -10801,7 +10801,7 @@
   return getDerived().TransformExpr(E->getSubExpr());
 }
 
-/// \brief Transform a C++ expression that contains cleanups that should
+/// Transform a C++ expression that contains cleanups that should
 /// be run after the expression is evaluated.
 ///
 /// Since ExprWithCleanups nodes are implicitly generated, we
Index: cfe/trunk/lib/Sema/TypeLocBuilder.h
===================================================================
--- cfe/trunk/lib/Sema/TypeLocBuilder.h
+++ cfe/trunk/lib/Sema/TypeLocBuilder.h
@@ -83,7 +83,7 @@
     NumBytesAtAlign4 = NumBytesAtAlign8 = 0;
   }  
 
-  /// \brief Tell the TypeLocBuilder that the type it is storing has been
+  /// Tell the TypeLocBuilder that the type it is storing has been
   /// modified in some safe way that doesn't affect type-location information.
   void TypeWasModifiedSafely(QualType T) {
 #ifndef NDEBUG
@@ -112,7 +112,7 @@
     return DI;
   }
 
-  /// \brief Copies the type-location information to the given AST context and 
+  /// Copies the type-location information to the given AST context and 
   /// returns a \c TypeLoc referring into the AST context.
   TypeLoc getTypeLocInContext(ASTContext &Context, QualType T) {
 #ifndef NDEBUG
@@ -132,7 +132,7 @@
   /// Grow to the given capacity.
   void grow(size_t NewCapacity);
 
-  /// \brief Retrieve a temporary TypeLoc that refers into this \c TypeLocBuilder
+  /// Retrieve a temporary TypeLoc that refers into this \c TypeLocBuilder
   /// object.
   ///
   /// The resulting \c TypeLoc should only be used so long as the 
Index: cfe/trunk/lib/Serialization/ASTCommon.h
===================================================================
--- cfe/trunk/lib/Serialization/ASTCommon.h
+++ cfe/trunk/lib/Serialization/ASTCommon.h
@@ -72,7 +72,7 @@
 
 unsigned ComputeHash(Selector Sel);
 
-/// \brief Retrieve the "definitive" declaration that provides all of the
+/// Retrieve the "definitive" declaration that provides all of the
 /// visible entries for the given declaration context, if there is one.
 ///
 /// The "definitive" declaration is the only place where we need to look to
@@ -84,14 +84,14 @@
 /// multiple definitions.
 const DeclContext *getDefinitiveDeclContext(const DeclContext *DC);
 
-/// \brief Determine whether the given declaration kind is redeclarable.
+/// Determine whether the given declaration kind is redeclarable.
 bool isRedeclarableDeclKind(unsigned Kind);
 
-/// \brief Determine whether the given declaration needs an anonymous
+/// Determine whether the given declaration needs an anonymous
 /// declaration number.
 bool needsAnonymousDeclarationNumber(const NamedDecl *D);
 
-/// \brief Visit each declaration within \c DC that needs an anonymous
+/// Visit each declaration within \c DC that needs an anonymous
 /// declaration number and call \p Visit with the declaration and its number.
 template<typename Fn> void numberAnonymousDeclsWithin(const DeclContext *DC,
                                                       Fn Visit) {
Index: cfe/trunk/lib/Serialization/ASTReader.cpp
===================================================================
--- cfe/trunk/lib/Serialization/ASTReader.cpp
+++ cfe/trunk/lib/Serialization/ASTReader.cpp
@@ -256,7 +256,7 @@
 
 ASTReaderListener::~ASTReaderListener() = default;
 
-/// \brief Compare the given set of language options against an existing set of
+/// Compare the given set of language options against an existing set of
 /// language options.
 ///
 /// \param Diags If non-NULL, diagnostics will be emitted via this engine.
@@ -360,7 +360,7 @@
   return false;
 }
 
-/// \brief Compare the given set of target options against an existing set of
+/// Compare the given set of target options against an existing set of
 /// target options.
 ///
 /// \param Diags If non-NULL, diagnostics will be emitted via this engine.
@@ -575,7 +575,7 @@
                                  Complain);
 }
 
-/// \brief Collect the macro definitions provided by the given preprocessor
+/// Collect the macro definitions provided by the given preprocessor
 /// options.
 static void
 collectMacroDefinitions(const PreprocessorOptions &PPOpts,
@@ -613,7 +613,7 @@
   }
 }
 
-/// \brief Check the preprocessor options deserialized from the control block
+/// Check the preprocessor options deserialized from the control block
 /// against the preprocessor options in an existing preprocessor.
 ///
 /// \param Diags If non-null, produce diagnostics for any mismatches incurred.
@@ -889,7 +889,7 @@
   return StringRef((const char*) d, n-1);
 }
 
-/// \brief Whether the given identifier is "interesting".
+/// Whether the given identifier is "interesting".
 static bool isInterestingIdentifier(ASTReader &Reader, IdentifierInfo &II,
                                     bool IsModule) {
   return II.hadMacroDefinition() ||
@@ -1212,7 +1212,7 @@
 // Source Manager Deserialization
 //===----------------------------------------------------------------------===//
 
-/// \brief Read the line table in the source manager block.
+/// Read the line table in the source manager block.
 /// \returns true if there was an error.
 bool ASTReader::ParseLineTable(ModuleFile &F,
                                const RecordData &Record) {
@@ -1258,7 +1258,7 @@
   return false;
 }
 
-/// \brief Read a source manager block
+/// Read a source manager block
 bool ASTReader::ReadSourceManagerBlock(ModuleFile &F) {
   using namespace SrcMgr;
 
@@ -1314,7 +1314,7 @@
   }
 }
 
-/// \brief If a header file is not found at the path that we expect it to be
+/// If a header file is not found at the path that we expect it to be
 /// and the PCH file was moved from its original location, try to resolve the
 /// file by assuming that header+PCH were moved together and the header is in
 /// the same place relative to the PCH.
@@ -1512,7 +1512,7 @@
   return std::make_pair(M->ImportLoc, StringRef(M->ModuleName));
 }
 
-/// \brief Find the location where the module F is imported.
+/// Find the location where the module F is imported.
 SourceLocation ASTReader::getImportLocation(ModuleFile *F) {
   if (F->ImportLoc.isValid())
     return F->ImportLoc;
@@ -1858,7 +1858,7 @@
 
 namespace {
 
-  /// \brief Visitor class used to look up identifirs in an AST file.
+  /// Visitor class used to look up identifirs in an AST file.
   class IdentifierLookupVisitor {
     StringRef Name;
     unsigned NameHash;
@@ -1902,7 +1902,7 @@
       return true;
     }
 
-    // \brief Retrieve the identifier info found within the module
+    // Retrieve the identifier info found within the module
     // files.
     IdentifierInfo *getIdentifierInfo() const { return Found; }
   };
@@ -2210,7 +2210,7 @@
   return IF;
 }
 
-/// \brief If we are loading a relocatable PCH or module file, and the filename
+/// If we are loading a relocatable PCH or module file, and the filename
 /// is not an absolute path, add the system or module root to the beginning of
 /// the file name.
 void ASTReader::ResolveImportedPath(ModuleFile &M, std::string &Filename) {
@@ -3668,7 +3668,7 @@
   return Success;
 }
 
-/// \brief Move the given method to the back of the global list of methods.
+/// Move the given method to the back of the global list of methods.
 static void moveMethodToBackOfGlobalList(Sema &S, ObjCMethodDecl *Method) {
   // Find the entry for this selector in the method pool.
   Sema::GlobalMethodPool::iterator Known
@@ -3821,7 +3821,7 @@
   OS.clear_error(); // Avoid triggering a fatal error.
 }
 
-/// \brief Given a cursor at the start of an AST file, scan ahead and drop the
+/// Given a cursor at the start of an AST file, scan ahead and drop the
 /// cursor into the start of the given block ID, returning false on success and
 /// true on failure.
 static bool SkipCursorToBlock(BitstreamCursor &Cursor, unsigned BlockID) {
@@ -4088,7 +4088,7 @@
 
 static ASTFileSignature readASTFileSignature(StringRef PCH);
 
-/// \brief Whether \p Stream starts with the AST/PCH file magic number 'CPCH'.
+/// Whether \p Stream starts with the AST/PCH file magic number 'CPCH'.
 static bool startsWithASTFileMagic(BitstreamCursor &Stream) {
   return Stream.canSkipToPos(4) &&
          Stream.Read(8) == 'C' &&
@@ -4579,7 +4579,7 @@
   // Nothing to do for now.
 }
 
-/// \brief Reads and return the signature record from \p PCH's control block, or
+/// Reads and return the signature record from \p PCH's control block, or
 /// else returns 0.
 static ASTFileSignature readASTFileSignature(StringRef PCH) {
   BitstreamCursor Stream(PCH);
@@ -4605,7 +4605,7 @@
   }
 }
 
-/// \brief Retrieve the name of the original source file name
+/// Retrieve the name of the original source file name
 /// directly from the AST file, without actually loading the AST
 /// file.
 std::string ASTReader::getOriginalSourceFile(
@@ -5213,7 +5213,7 @@
   }
 }
 
-/// \brief Parse the record that corresponds to a LangOptions data
+/// Parse the record that corresponds to a LangOptions data
 /// structure.
 ///
 /// This routine parses the language options from the AST file and then gives
@@ -5512,7 +5512,7 @@
   llvm_unreachable("Invalid PreprocessorDetailRecordTypes");
 }
 
-/// \brief Find the next module that contains entities and return the ID
+/// Find the next module that contains entities and return the ID
 /// of the first entry.
 ///
 /// \param SLocMapI points at a chunk of a module that contains no
@@ -5615,7 +5615,7 @@
   return M.BasePreprocessedEntityID + (PPI - pp_begin);
 }
 
-/// \brief Returns a pair of [Begin, End) indices of preallocated
+/// Returns a pair of [Begin, End) indices of preallocated
 /// preprocessed entities that \arg Range encompasses.
 std::pair<unsigned, unsigned>
     ASTReader::findPreprocessedEntitiesInRange(SourceRange Range) {
@@ -5629,7 +5629,7 @@
   return std::make_pair(BeginID, EndID);
 }
 
-/// \brief Optionally returns true or false if the preallocated preprocessed
+/// Optionally returns true or false if the preallocated preprocessed
 /// entity with index \arg Index came from file \arg FID.
 Optional<bool> ASTReader::isPreprocessedEntityInFileID(unsigned Index,
                                                              FileID FID) {
@@ -5653,7 +5653,7 @@
 
 namespace {
 
-  /// \brief Visitor used to search for information about a header file.
+  /// Visitor used to search for information about a header file.
   class HeaderFileInfoVisitor {
     const FileEntry *FE;
     Optional<HeaderFileInfo> HFI;
@@ -5833,7 +5833,7 @@
   }
 }
 
-/// \brief Get the correct cursor and offset for loading a type.
+/// Get the correct cursor and offset for loading a type.
 ASTReader::RecordLocation ASTReader::TypeCursorForIndex(unsigned Index) {
   GlobalTypeMapType::iterator I = GlobalTypeMap.find(Index);
   assert(I != GlobalTypeMap.end() && "Corrupted global type map");
@@ -5841,7 +5841,7 @@
   return RecordLocation(M, M->TypeOffsets[Index - M->BaseTypeIndex]);
 }
 
-/// \brief Read and return the type with the given index..
+/// Read and return the type with the given index..
 ///
 /// The index is the type ID, shifted and minus the number of predefs. This
 /// routine actually reads the record corresponding to the type at the given
@@ -7285,7 +7285,7 @@
   return getGlobalDeclID(F, Record[Idx++]);
 }
 
-/// \brief Resolve the offset of a statement into a statement.
+/// Resolve the offset of a statement into a statement.
 ///
 /// This operation will read a new statement from the external
 /// source each time it is called, and is meant to be used via a
@@ -7478,7 +7478,7 @@
   return I == Lookups.end() ? nullptr : &I->second;
 }
 
-/// \brief Under non-PCH compilation the consumer receives the objc methods
+/// Under non-PCH compilation the consumer receives the objc methods
 /// before receiving the implementation, and codegen depends on this.
 /// We simulate this by deserializing and passing to consumer the methods of the
 /// implementation before passing the deserialized implementation decl.
@@ -7781,25 +7781,25 @@
 
 namespace clang {
 
-  /// \brief An identifier-lookup iterator that enumerates all of the
+  /// An identifier-lookup iterator that enumerates all of the
   /// identifiers stored within a set of AST files.
   class ASTIdentifierIterator : public IdentifierIterator {
-    /// \brief The AST reader whose identifiers are being enumerated.
+    /// The AST reader whose identifiers are being enumerated.
     const ASTReader &Reader;
 
-    /// \brief The current index into the chain of AST files stored in
+    /// The current index into the chain of AST files stored in
     /// the AST reader.
     unsigned Index;
 
-    /// \brief The current position within the identifier lookup table
+    /// The current position within the identifier lookup table
     /// of the current AST file.
     ASTIdentifierLookupTable::key_iterator Current;
 
-    /// \brief The end position within the identifier lookup table of
+    /// The end position within the identifier lookup table of
     /// the current AST file.
     ASTIdentifierLookupTable::key_iterator End;
 
-    /// \brief Whether to skip any modules in the ASTReader.
+    /// Whether to skip any modules in the ASTReader.
     bool SkipModules;
 
   public:
@@ -7935,12 +7935,12 @@
       return true;
     }
 
-    /// \brief Retrieve the instance methods found by this visitor.
+    /// Retrieve the instance methods found by this visitor.
     ArrayRef<ObjCMethodDecl *> getInstanceMethods() const {
       return InstanceMethods;
     }
 
-    /// \brief Retrieve the instance methods found by this visitor.
+    /// Retrieve the instance methods found by this visitor.
     ArrayRef<ObjCMethodDecl *> getFactoryMethods() const {
       return FactoryMethods;
     }
@@ -7958,7 +7958,7 @@
 } // namespace serialization
 } // namespace clang
 
-/// \brief Add the given set of methods to the method list.
+/// Add the given set of methods to the method list.
 static void addMethodsToPool(Sema &S, ArrayRef<ObjCMethodDecl *> Methods,
                              ObjCMethodList &List) {
   for (unsigned I = 0, N = Methods.size(); I != N; ++I) {
@@ -8197,7 +8197,7 @@
     DeserializationListener->IdentifierRead(ID, II);
 }
 
-/// \brief Set the globally-visible declarations associated with the given
+/// Set the globally-visible declarations associated with the given
 /// identifier.
 ///
 /// If the AST reader is currently in a state where the given declaration IDs
@@ -8728,7 +8728,7 @@
     TemplArgs.push_back(ReadTemplateArgument(F, Record, Idx, Canonicalize));
 }
 
-/// \brief Read a UnresolvedSet structure.
+/// Read a UnresolvedSet structure.
 void ASTReader::ReadUnresolvedSet(ModuleFile &F, LazyASTUnresolvedSet &Set,
                                   const RecordData &Record, unsigned &Idx) {
   unsigned NumDecls = Record[Idx++];
@@ -8949,7 +8949,7 @@
   return SourceRange(beg, end);
 }
 
-/// \brief Read an integral value
+/// Read an integral value
 llvm::APInt ASTReader::ReadAPInt(const RecordData &Record, unsigned &Idx) {
   unsigned BitWidth = Record[Idx++];
   unsigned NumWords = llvm::APInt::getNumWords(BitWidth);
@@ -8958,20 +8958,20 @@
   return Result;
 }
 
-/// \brief Read a signed integral value
+/// Read a signed integral value
 llvm::APSInt ASTReader::ReadAPSInt(const RecordData &Record, unsigned &Idx) {
   bool isUnsigned = Record[Idx++];
   return llvm::APSInt(ReadAPInt(Record, Idx), isUnsigned);
 }
 
-/// \brief Read a floating-point value
+/// Read a floating-point value
 llvm::APFloat ASTReader::ReadAPFloat(const RecordData &Record,
                                      const llvm::fltSemantics &Sem,
                                      unsigned &Idx) {
   return llvm::APFloat(Sem, ReadAPInt(Record, Idx));
 }
 
-// \brief Read a string
+// Read a string
 std::string ASTReader::ReadString(const RecordData &Record, unsigned &Idx) {
   unsigned Len = Record[Idx++];
   std::string Result(Record.data() + Idx, Record.data() + Idx + Len);
@@ -9013,13 +9013,13 @@
   return Diags.Report(Loc, DiagID);
 }
 
-/// \brief Retrieve the identifier table associated with the
+/// Retrieve the identifier table associated with the
 /// preprocessor.
 IdentifierTable &ASTReader::getIdentifierTable() {
   return PP.getIdentifierTable();
 }
 
-/// \brief Record that the given ID maps to the given switch-case
+/// Record that the given ID maps to the given switch-case
 /// statement.
 void ASTReader::RecordSwitchCaseID(SwitchCase *SC, unsigned ID) {
   assert((*CurrSwitchCaseStmts)[ID] == nullptr &&
@@ -9027,7 +9027,7 @@
   (*CurrSwitchCaseStmts)[ID] = SC;
 }
 
-/// \brief Retrieve the switch-case statement with the given ID.
+/// Retrieve the switch-case statement with the given ID.
 SwitchCase *ASTReader::getSwitchCaseWithID(unsigned ID) {
   assert((*CurrSwitchCaseStmts)[ID] != nullptr && "No SwitchCase with this ID");
   return (*CurrSwitchCaseStmts)[ID];
Index: cfe/trunk/lib/Serialization/ASTReaderDecl.cpp
===================================================================
--- cfe/trunk/lib/Serialization/ASTReaderDecl.cpp
+++ cfe/trunk/lib/Serialization/ASTReaderDecl.cpp
@@ -94,7 +94,7 @@
 
     bool HasPendingBody = false;
 
-    ///\brief A flag to carry the information for a decl from the entity is
+    ///A flag to carry the information for a decl from the entity is
     /// used. We use it to delay the marking of the canonical decl as used until
     /// the entire declaration is deserialized and merged.
     bool IsDeclMarkedUsed = false;
@@ -193,18 +193,18 @@
       RedeclarableResult(Decl *MergeWith, GlobalDeclID FirstID, bool IsKeyDecl)
           : MergeWith(MergeWith), FirstID(FirstID), IsKeyDecl(IsKeyDecl) {}
 
-      /// \brief Retrieve the first ID.
+      /// Retrieve the first ID.
       GlobalDeclID getFirstID() const { return FirstID; }
 
-      /// \brief Is this declaration a key declaration?
+      /// Is this declaration a key declaration?
       bool isKeyDecl() const { return IsKeyDecl; }
 
-      /// \brief Get a known declaration that this should be merged with, if
+      /// Get a known declaration that this should be merged with, if
       /// any.
       Decl *getKnownMergeTarget() const { return MergeWith; }
     };
 
-    /// \brief Class used to capture the result of searching for an existing
+    /// Class used to capture the result of searching for an existing
     /// declaration of a specific kind and name, along with the ability
     /// to update the place where this result was found (the declaration
     /// chain hanging off an identifier or the DeclContext we searched in)
@@ -238,7 +238,7 @@
       FindExistingResult &operator=(FindExistingResult &&) = delete;
       ~FindExistingResult();
 
-      /// \brief Suppress the addition of this result into the known set of
+      /// Suppress the addition of this result into the known set of
       /// names.
       void suppress() { AddResult = false; }
 
@@ -305,7 +305,7 @@
     static void markIncompleteDeclChainImpl(Redeclarable<DeclT> *D);
     static void markIncompleteDeclChainImpl(...);
 
-    /// \brief Determine whether this declaration has a pending body.
+    /// Determine whether this declaration has a pending body.
     bool hasPendingBody() const { return HasPendingBody; }
 
     void ReadFunctionDefinition(FunctionDecl *FD);
@@ -2433,7 +2433,7 @@
   return RedeclarableResult(MergeWith, FirstDeclID, IsKeyDecl);
 }
 
-/// \brief Attempts to merge the given declaration (D) with another declaration
+/// Attempts to merge the given declaration (D) with another declaration
 /// of the same entity.
 template<typename T>
 void ASTDeclReader::mergeRedeclarable(Redeclarable<T> *DBase,
@@ -2457,7 +2457,7 @@
       mergeRedeclarable(D, Existing, Redecl, TemplatePatternID);
 }
 
-/// \brief "Cast" to type T, asserting if we don't have an implicit conversion.
+/// "Cast" to type T, asserting if we don't have an implicit conversion.
 /// We use this to put code in a template that will only be valid for certain
 /// instantiations.
 template<typename T> static T assert_cast(T t) { return t; }
@@ -2465,7 +2465,7 @@
   llvm_unreachable("bad assert_cast");
 }
 
-/// \brief Merge together the pattern declarations from two template
+/// Merge together the pattern declarations from two template
 /// declarations.
 void ASTDeclReader::mergeTemplatePattern(RedeclarableTemplateDecl *D,
                                          RedeclarableTemplateDecl *Existing,
@@ -2507,7 +2507,7 @@
   llvm_unreachable("merged an unknown kind of redeclarable template");
 }
 
-/// \brief Attempts to merge the given declaration (D) with another declaration
+/// Attempts to merge the given declaration (D) with another declaration
 /// of the same entity.
 template<typename T>
 void ASTDeclReader::mergeRedeclarable(Redeclarable<T> *DBase, T *Existing,
@@ -2561,7 +2561,7 @@
   return false;
 }
 
-/// \brief Attempts to merge the given declaration (D) with another declaration
+/// Attempts to merge the given declaration (D) with another declaration
 /// of the same entity, for the case where the entity is not actually
 /// redeclarable. This happens, for instance, when merging the fields of
 /// identical class definitions from two different modules.
@@ -2614,7 +2614,7 @@
 // Attribute Reading
 //===----------------------------------------------------------------------===//
 
-/// \brief Reads attributes from the current stream position.
+/// Reads attributes from the current stream position.
 void ASTReader::ReadAttributes(ASTRecordReader &Record, AttrVec &Attrs) {
   for (unsigned i = 0, e = Record.readInt(); i != e; ++i) {
     Attr *New = nullptr;
@@ -2633,7 +2633,7 @@
 // ASTReader Implementation
 //===----------------------------------------------------------------------===//
 
-/// \brief Note that we have loaded the declaration with the given
+/// Note that we have loaded the declaration with the given
 /// Index.
 ///
 /// This routine notes that this declaration has already been loaded,
@@ -2644,7 +2644,7 @@
   DeclsLoaded[Index] = D;
 }
 
-/// \brief Determine whether the consumer will be interested in seeing
+/// Determine whether the consumer will be interested in seeing
 /// this declaration (via HandleTopLevelDecl).
 ///
 /// This routine should return true for anything that might affect
@@ -2685,7 +2685,7 @@
   return false;
 }
 
-/// \brief Get the correct cursor and offset for loading a declaration.
+/// Get the correct cursor and offset for loading a declaration.
 ASTReader::RecordLocation
 ASTReader::DeclCursorForID(DeclID ID, SourceLocation &Loc) {
   GlobalDeclMapType::iterator I = GlobalDeclMap.find(ID);
@@ -2711,7 +2711,7 @@
 static bool isSameTemplateParameterList(const TemplateParameterList *X,
                                         const TemplateParameterList *Y);
 
-/// \brief Determine whether two template parameters are similar enough
+/// Determine whether two template parameters are similar enough
 /// that they may be used in declarations of the same template.
 static bool isSameTemplateParameter(const NamedDecl *X,
                                     const NamedDecl *Y) {
@@ -2783,7 +2783,7 @@
   return !PX && !PY;
 }
 
-/// \brief Determine whether two template parameter lists are similar enough
+/// Determine whether two template parameter lists are similar enough
 /// that they may be used in declarations of the same template.
 static bool isSameTemplateParameterList(const TemplateParameterList *X,
                                         const TemplateParameterList *Y) {
@@ -2836,7 +2836,7 @@
   return true;
 }
 
-/// \brief Determine whether the two declarations refer to the same entity.
+/// Determine whether the two declarations refer to the same entity.
 static bool isSameEntity(NamedDecl *X, NamedDecl *Y) {
   assert(X->getDeclName() == Y->getDeclName() && "Declaration name mismatch!");
 
@@ -3463,7 +3463,7 @@
   }
 }
 
-/// \brief Read the declaration at the given offset from the AST file.
+/// Read the declaration at the given offset from the AST file.
 Decl *ASTReader::ReadDeclRecord(DeclID ID) {
   unsigned Index = ID - NUM_PREDEF_DECL_IDS;
   SourceLocation DeclLoc;
@@ -3905,7 +3905,7 @@
 
 namespace {
 
-  /// \brief Given an ObjC interface, goes through the modules and links to the
+  /// Given an ObjC interface, goes through the modules and links to the
   /// interface all the categories for it.
   class ObjCCategoriesVisitor {
     ASTReader &Reader;
Index: cfe/trunk/lib/Serialization/ASTReaderInternals.h
===================================================================
--- cfe/trunk/lib/Serialization/ASTReaderInternals.h
+++ cfe/trunk/lib/Serialization/ASTReaderInternals.h
@@ -40,7 +40,7 @@
 
 namespace reader {
 
-/// \brief Class that performs name lookup into a DeclContext stored
+/// Class that performs name lookup into a DeclContext stored
 /// in an AST file.
 class ASTDeclContextNameLookupTrait {
   ASTReader &Reader;
@@ -121,7 +121,7 @@
   MultiOnDiskHashTable<ASTDeclContextNameLookupTrait> Table;
 };
 
-/// \brief Base class for the trait describing the on-disk hash table for the
+/// Base class for the trait describing the on-disk hash table for the
 /// identifiers in an AST file.
 ///
 /// This class is not useful by itself; rather, it provides common
@@ -156,7 +156,7 @@
   static internal_key_type ReadKey(const unsigned char* d, unsigned n); 
 };
 
-/// \brief Class that performs lookup for an identifier stored in an AST file.
+/// Class that performs lookup for an identifier stored in an AST file.
 class ASTIdentifierLookupTrait : public ASTIdentifierLookupTraitBase {
   ASTReader &Reader;
   ModuleFile &F;
@@ -182,12 +182,12 @@
   ASTReader &getReader() const { return Reader; }
 };
   
-/// \brief The on-disk hash table used to contain information about
+/// The on-disk hash table used to contain information about
 /// all of the identifiers in the program.
 using ASTIdentifierLookupTable =
     llvm::OnDiskIterableChainedHashTable<ASTIdentifierLookupTrait>;
 
-/// \brief Class that performs lookup for a selector's entries in the global
+/// Class that performs lookup for a selector's entries in the global
 /// method pool stored in an AST file.
 class ASTSelectorLookupTrait {
   ASTReader &Reader;
@@ -229,11 +229,11 @@
   data_type ReadData(Selector, const unsigned char* d, unsigned DataLen);
 };
   
-/// \brief The on-disk hash table used for the global method pool.
+/// The on-disk hash table used for the global method pool.
 using ASTSelectorLookupTable =
     llvm::OnDiskChainedHashTable<ASTSelectorLookupTrait>;
   
-/// \brief Trait class used to search the on-disk hash table containing all of
+/// Trait class used to search the on-disk hash table containing all of
 /// the header search information.
 ///
 /// The on-disk hash table contains a mapping from each header path to 
@@ -280,7 +280,7 @@
   data_type ReadData(internal_key_ref,const unsigned char *d, unsigned DataLen);
 };
 
-/// \brief The on-disk hash table used for known header files.
+/// The on-disk hash table used for known header files.
 using HeaderFileInfoLookupTable =
     llvm::OnDiskChainedHashTable<HeaderFileInfoTrait>;
   
Index: cfe/trunk/lib/Serialization/ASTReaderStmt.cpp
===================================================================
--- cfe/trunk/lib/Serialization/ASTReaderStmt.cpp
+++ cfe/trunk/lib/Serialization/ASTReaderStmt.cpp
@@ -110,20 +110,20 @@
     ASTStmtReader(ASTRecordReader &Record, llvm::BitstreamCursor &Cursor)
         : Record(Record), DeclsCursor(Cursor) {}
 
-    /// \brief The number of record fields required for the Stmt class
+    /// The number of record fields required for the Stmt class
     /// itself.
     static const unsigned NumStmtFields = 0;
 
-    /// \brief The number of record fields required for the Expr class
+    /// The number of record fields required for the Expr class
     /// itself.
     static const unsigned NumExprFields = NumStmtFields + 7;
 
-    /// \brief Read and initialize a ExplicitTemplateArgumentList structure.
+    /// Read and initialize a ExplicitTemplateArgumentList structure.
     void ReadTemplateKWAndArgsInfo(ASTTemplateKWAndArgsInfo &Args,
                                    TemplateArgumentLoc *ArgsLocArray,
                                    unsigned NumTemplateArgs);
 
-    /// \brief Read and initialize a ExplicitTemplateArgumentList structure.
+    /// Read and initialize a ExplicitTemplateArgumentList structure.
     void ReadExplicitTemplateArgumentList(ASTTemplateArgumentListInfo &ArgList,
                                           unsigned NumTemplateArgs);
 
Index: cfe/trunk/lib/Serialization/ASTWriter.cpp
===================================================================
--- cfe/trunk/lib/Serialization/ASTWriter.cpp
+++ cfe/trunk/lib/Serialization/ASTWriter.cpp
@@ -138,10 +138,10 @@
     ASTWriter &Writer;
     ASTRecordWriter Record;
 
-    /// \brief Type code that corresponds to the record generated.
+    /// Type code that corresponds to the record generated.
     TypeCode Code = static_cast<TypeCode>(0);
 
-    /// \brief Abbreviation to use for the record, if any.
+    /// Abbreviation to use for the record, if any.
     unsigned AbbrevToUse = 0;
 
   public:
@@ -1319,7 +1319,7 @@
   Stream.ExitBlock();
 }
 
-/// \brief Prepares a path for being written to an AST file by converting it
+/// Prepares a path for being written to an AST file by converting it
 /// to an absolute path and removing nested './'s.
 ///
 /// \return \c true if the path was changed.
@@ -1329,7 +1329,7 @@
   return Changed | llvm::sys::path::remove_dots(Path);
 }
 
-/// \brief Adjusts the given filename to only write out the portion of the
+/// Adjusts the given filename to only write out the portion of the
 /// filename that is not part of the system root directory.
 ///
 /// \param Filename the file name to adjust.
@@ -1439,7 +1439,7 @@
   return Signature;
 }
 
-/// \brief Write the control block.
+/// Write the control block.
 void ASTWriter::WriteControlBlock(Preprocessor &PP, ASTContext &Context,
                                   StringRef isysroot,
                                   const std::string &OutputFile) {
@@ -1735,7 +1735,7 @@
 
 namespace  {
 
-/// \brief An input file.
+/// An input file.
 struct InputFileEntry {
   const FileEntry *File;
   bool IsSystemFile;
@@ -1845,7 +1845,7 @@
 // Source Manager Serialization
 //===----------------------------------------------------------------------===//
 
-/// \brief Create an abbreviation for the SLocEntry that refers to a
+/// Create an abbreviation for the SLocEntry that refers to a
 /// file.
 static unsigned CreateSLocFileAbbrev(llvm::BitstreamWriter &Stream) {
   using namespace llvm;
@@ -1864,7 +1864,7 @@
   return Stream.EmitAbbrev(std::move(Abbrev));
 }
 
-/// \brief Create an abbreviation for the SLocEntry that refers to a
+/// Create an abbreviation for the SLocEntry that refers to a
 /// buffer.
 static unsigned CreateSLocBufferAbbrev(llvm::BitstreamWriter &Stream) {
   using namespace llvm;
@@ -1879,7 +1879,7 @@
   return Stream.EmitAbbrev(std::move(Abbrev));
 }
 
-/// \brief Create an abbreviation for the SLocEntry that refers to a
+/// Create an abbreviation for the SLocEntry that refers to a
 /// buffer's blob.
 static unsigned CreateSLocBufferBlobAbbrev(llvm::BitstreamWriter &Stream,
                                            bool Compressed) {
@@ -1894,7 +1894,7 @@
   return Stream.EmitAbbrev(std::move(Abbrev));
 }
 
-/// \brief Create an abbreviation for the SLocEntry that refers to a macro
+/// Create an abbreviation for the SLocEntry that refers to a macro
 /// expansion.
 static unsigned CreateSLocExpansionAbbrev(llvm::BitstreamWriter &Stream) {
   using namespace llvm;
@@ -2038,7 +2038,7 @@
 
 } // namespace
 
-/// \brief Write the header search block for the list of files that
+/// Write the header search block for the list of files that
 ///
 /// \param HS The header search structure to save.
 void ASTWriter::WriteHeaderSearch(const HeaderSearch &HS) {
@@ -2202,7 +2202,7 @@
   Stream.EmitRecordWithBlob(SLocBufferBlobAbbrv, Record, Blob);
 }
 
-/// \brief Writes the block containing the serialized form of the
+/// Writes the block containing the serialized form of the
 /// source manager.
 ///
 /// TODO: We should probably use an on-disk hash table (stored in a
@@ -2425,7 +2425,7 @@
   return false;
 }
 
-/// \brief Writes the block containing the serialized form of the
+/// Writes the block containing the serialized form of the
 /// preprocessor.
 void ASTWriter::WritePreprocessor(const Preprocessor &PP, bool IsModule) {
   PreprocessingRecord *PPRec = PP.getPreprocessingRecord();
@@ -2545,7 +2545,7 @@
     Record.clear();
   }
 
-  /// \brief Offsets of each of the macros into the bitstream, indexed by
+  /// Offsets of each of the macros into the bitstream, indexed by
   /// the local macro ID
   ///
   /// For each identifier that is associated with a macro, this map
@@ -2780,7 +2780,7 @@
   return ID;
 }
 
-/// \brief Compute the number of modules within the given tree (including the
+/// Compute the number of modules within the given tree (including the
 /// given module).
 static unsigned getNumberOfModules(Module *Mod) {
   unsigned ChildModules = 0;
@@ -3129,7 +3129,7 @@
 // Type Serialization
 //===----------------------------------------------------------------------===//
 
-/// \brief Write the representation of a type to the AST stream.
+/// Write the representation of a type to the AST stream.
 void ASTWriter::WriteType(QualType T) {
   TypeIdx &IdxRef = TypeIdxs[T];
   if (IdxRef.getIndex() == 0) // we haven't seen this type before.
@@ -3161,7 +3161,7 @@
 // Declaration Serialization
 //===----------------------------------------------------------------------===//
 
-/// \brief Write the block containing all of the declaration IDs
+/// Write the block containing all of the declaration IDs
 /// lexically declared within the given DeclContext.
 ///
 /// \returns the offset of the DECL_CONTEXT_LEXICAL block within the
@@ -3373,7 +3373,7 @@
 
 } // namespace
 
-/// \brief Write ObjC data: selectors and the method pool.
+/// Write ObjC data: selectors and the method pool.
 ///
 /// The method pool contains both instance and factory methods, stored
 /// in an on-disk hash table indexed by the selector. The hash table also
@@ -3477,7 +3477,7 @@
   }
 }
 
-/// \brief Write the selectors referenced in @selector expression into AST file.
+/// Write the selectors referenced in @selector expression into AST file.
 void ASTWriter::WriteReferencedSelectorsPool(Sema &SemaRef) {
   using namespace llvm;
 
@@ -3553,7 +3553,7 @@
   bool NeedDecls;
   ASTWriter::RecordData *InterestingIdentifierOffsets;
 
-  /// \brief Determines whether this is an "interesting" identifier that needs a
+  /// Determines whether this is an "interesting" identifier that needs a
   /// full IdentifierInfo structure written into the hash table. Notably, this
   /// doesn't check whether the name has macros defined; use PublicMacroIterator
   /// to check that.
@@ -3695,7 +3695,7 @@
 
 } // namespace
 
-/// \brief Write the identifier table into the AST file.
+/// Write the identifier table into the AST file.
 ///
 /// The identifier table consists of a blob containing string data
 /// (the actual identifiers themselves) and a separate "offsets" index
@@ -4126,7 +4126,7 @@
   Generator.emit(LookupTable, Trait, Lookups ? &Lookups->Table : nullptr);
 }
 
-/// \brief Write the block containing all of the declaration IDs
+/// Write the block containing all of the declaration IDs
 /// visible from the given DeclContext.
 ///
 /// \returns the offset of the DECL_CONTEXT_VISIBLE block within the
@@ -4216,7 +4216,7 @@
   return Offset;
 }
 
-/// \brief Write an UPDATE_VISIBLE block for the given context.
+/// Write an UPDATE_VISIBLE block for the given context.
 ///
 /// UPDATE_VISIBLE blocks contain the declarations that are added to an existing
 /// DeclContext in a dependent AST file. As such, they only exist for the TU
@@ -4241,13 +4241,13 @@
   Stream.EmitRecordWithBlob(UpdateVisibleAbbrev, Record, LookupTable);
 }
 
-/// \brief Write an FP_PRAGMA_OPTIONS block for the given FPOptions.
+/// Write an FP_PRAGMA_OPTIONS block for the given FPOptions.
 void ASTWriter::WriteFPPragmaOptions(const FPOptions &Opts) {
   RecordData::value_type Record[] = {Opts.getInt()};
   Stream.EmitRecord(FP_PRAGMA_OPTIONS, Record);
 }
 
-/// \brief Write an OPENCL_EXTENSIONS block for the given OpenCLOptions.
+/// Write an OPENCL_EXTENSIONS block for the given OpenCLOptions.
 void ASTWriter::WriteOpenCLExtensions(Sema &SemaRef) {
   if (!SemaRef.Context.getLangOpts().OpenCL)
     return;
@@ -4374,7 +4374,7 @@
   Stream.EmitRecord(LATE_PARSED_TEMPLATE, Record);
 }
 
-/// \brief Write the state of 'pragma clang optimize' at the end of the module.
+/// Write the state of 'pragma clang optimize' at the end of the module.
 void ASTWriter::WriteOptimizePragmaOptions(Sema &SemaRef) {
   RecordData Record;
   SourceLocation PragmaLoc = SemaRef.getOptimizeOffPragmaLocation();
@@ -4382,14 +4382,14 @@
   Stream.EmitRecord(OPTIMIZE_PRAGMA_OPTIONS, Record);
 }
 
-/// \brief Write the state of 'pragma ms_struct' at the end of the module.
+/// Write the state of 'pragma ms_struct' at the end of the module.
 void ASTWriter::WriteMSStructPragmaOptions(Sema &SemaRef) {
   RecordData Record;
   Record.push_back(SemaRef.MSStructPragmaOn ? PMSST_ON : PMSST_OFF);
   Stream.EmitRecord(MSSTRUCT_PRAGMA_OPTIONS, Record);
 }
 
-/// \brief Write the state of 'pragma pointers_to_members' at the end of the
+/// Write the state of 'pragma pointers_to_members' at the end of the
 //module.
 void ASTWriter::WriteMSPointersToMembersPragmaOptions(Sema &SemaRef) {
   RecordData Record;
@@ -4398,7 +4398,7 @@
   Stream.EmitRecord(POINTERS_TO_MEMBERS_PRAGMA_OPTIONS, Record);
 }
 
-/// \brief Write the state of 'pragma pack' at the end of the module.
+/// Write the state of 'pragma pack' at the end of the module.
 void ASTWriter::WritePackPragmaOptions(Sema &SemaRef) {
   // Don't serialize pragma pack state for modules, since it should only take
   // effect on a per-submodule basis.
@@ -4457,7 +4457,7 @@
 // General Serialization Routines
 //===----------------------------------------------------------------------===//
 
-/// \brief Emit the list of attributes to the specified record.
+/// Emit the list of attributes to the specified record.
 void ASTRecordWriter::AddAttributes(ArrayRef<const Attr *> Attrs) {
   auto &Record = *this;
   Record.push_back(Attrs.size());
@@ -4531,7 +4531,7 @@
     Record.push_back(0);
 }
 
-/// \brief Note that the identifier II occurs at the given offset
+/// Note that the identifier II occurs at the given offset
 /// within the identifier table.
 void ASTWriter::SetIdentifierOffset(const IdentifierInfo *II, uint32_t Offset) {
   IdentID ID = IdentifierIDs[II];
@@ -4541,7 +4541,7 @@
     IdentifierOffsets[ID - FirstIdentID] = Offset;
 }
 
-/// \brief Note that the selector Sel occurs at the given offset
+/// Note that the selector Sel occurs at the given offset
 /// within the method pool/selector table.
 void ASTWriter::SetSelectorOffset(Selector Sel, uint32_t Offset) {
   unsigned ID = SelectorIDs[Sel];
@@ -5889,7 +5889,7 @@
     AddDeclRef(P);
 }
 
-/// \brief Emit a template argument list.
+/// Emit a template argument list.
 void ASTRecordWriter::AddTemplateArgumentList(
     const TemplateArgumentList *TemplateArgs) {
   assert(TemplateArgs && "No TemplateArgs!");
Index: cfe/trunk/lib/Serialization/ASTWriterDecl.cpp
===================================================================
--- cfe/trunk/lib/Serialization/ASTWriterDecl.cpp
+++ cfe/trunk/lib/Serialization/ASTWriterDecl.cpp
@@ -1635,7 +1635,7 @@
   Code = serialization::DECL_STATIC_ASSERT;
 }
 
-/// \brief Emit the DeclContext part of a declaration context decl.
+/// Emit the DeclContext part of a declaration context decl.
 void ASTDeclWriter::VisitDeclContext(DeclContext *DC) {
   Record.AddOffset(Writer.WriteDeclContextLexicalBlock(Context, DC));
   Record.AddOffset(Writer.WriteDeclContextVisibleBlock(Context, DC));
Index: cfe/trunk/lib/Serialization/ASTWriterStmt.cpp
===================================================================
--- cfe/trunk/lib/Serialization/ASTWriterStmt.cpp
+++ cfe/trunk/lib/Serialization/ASTWriterStmt.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Implements serialization for Statements and Expressions.
+/// Implements serialization for Statements and Expressions.
 ///
 //===----------------------------------------------------------------------===//
 
@@ -2677,7 +2677,7 @@
   SwitchCaseIDs.clear();
 }
 
-/// \brief Write the given substatement or subexpression to the
+/// Write the given substatement or subexpression to the
 /// bitstream.
 void ASTWriter::WriteSubStmt(Stmt *S) {
   RecordData Record;
@@ -2721,7 +2721,7 @@
   SubStmtEntries[S] = Offset;
 }
 
-/// \brief Flush all of the statements that have been added to the
+/// Flush all of the statements that have been added to the
 /// queue via AddStmt().
 void ASTRecordWriter::FlushStmts() {
   // We expect to be the only consumer of the two temporary statement maps,
Index: cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp
===================================================================
--- cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp
+++ cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp
@@ -38,26 +38,26 @@
 //----------------------------------------------------------------------------//
 namespace {
   enum {
-    /// \brief The block containing the index.
+    /// The block containing the index.
     GLOBAL_INDEX_BLOCK_ID = llvm::bitc::FIRST_APPLICATION_BLOCKID
   };
 
-  /// \brief Describes the record types in the index.
+  /// Describes the record types in the index.
   enum IndexRecordTypes {
-    /// \brief Contains version information and potentially other metadata,
+    /// Contains version information and potentially other metadata,
     /// used to determine if we can read this global index file.
     INDEX_METADATA,
-    /// \brief Describes a module, including its file name and dependencies.
+    /// Describes a module, including its file name and dependencies.
     MODULE,
-    /// \brief The index for identifiers.
+    /// The index for identifiers.
     IDENTIFIER_INDEX
   };
 }
 
-/// \brief The name of the global index file.
+/// The name of the global index file.
 static const char * const IndexFileName = "modules.idx";
 
-/// \brief The global index file version.
+/// The global index file version.
 static const unsigned CurrentVersion = 1;
 
 //----------------------------------------------------------------------------//
@@ -66,7 +66,7 @@
 
 namespace {
 
-/// \brief Trait used to read the identifier index from the on-disk hash
+/// Trait used to read the identifier index from the on-disk hash
 /// table.
 class IdentifierIndexReaderTrait {
 public:
@@ -245,7 +245,7 @@
     return std::make_pair(nullptr, EC_NotFound);
   std::unique_ptr<llvm::MemoryBuffer> Buffer = std::move(BufferOrErr.get());
 
-  /// \brief The main bitstream cursor for the main block.
+  /// The main bitstream cursor for the main block.
   llvm::BitstreamCursor Cursor(*Buffer);
 
   // Sniff for the signature.
@@ -368,12 +368,12 @@
 //----------------------------------------------------------------------------//
 
 namespace {
-  /// \brief Provides information about a specific module file.
+  /// Provides information about a specific module file.
   struct ModuleFileInfo {
-    /// \brief The numberic ID for this module file.
+    /// The numberic ID for this module file.
     unsigned ID;
 
-    /// \brief The set of modules on which this module depends. Each entry is
+    /// The set of modules on which this module depends. Each entry is
     /// a module ID.
     SmallVector<unsigned, 4> Dependencies;
     ASTFileSignature Signature;
@@ -387,7 +387,7 @@
         : StoredSize(Size), StoredModTime(ModTime), StoredSignature(Sig) {}
   };
 
-  /// \brief Builder that generates the global module index file.
+  /// Builder that generates the global module index file.
   class GlobalModuleIndexBuilder {
     FileManager &FileMgr;
     const PCHContainerReader &PCHContainerRdr;
@@ -398,26 +398,26 @@
     /// Information about each of the known module files.
     ModuleFilesMap ModuleFiles;
 
-    /// \brief Mapping from the imported module file to the imported
+    /// Mapping from the imported module file to the imported
     /// information.
     typedef std::multimap<const FileEntry *, ImportedModuleFileInfo>
         ImportedModuleFilesMap;
 
-    /// \brief Information about each importing of a module file.
+    /// Information about each importing of a module file.
     ImportedModuleFilesMap ImportedModuleFiles;
 
-    /// \brief Mapping from identifiers to the list of module file IDs that
+    /// Mapping from identifiers to the list of module file IDs that
     /// consider this identifier to be interesting.
     typedef llvm::StringMap<SmallVector<unsigned, 2> > InterestingIdentifierMap;
 
-    /// \brief A mapping from all interesting identifiers to the set of module
+    /// A mapping from all interesting identifiers to the set of module
     /// files in which those identifiers are considered interesting.
     InterestingIdentifierMap InterestingIdentifiers;
 
-    /// \brief Write the block-info block for the global module index file.
+    /// Write the block-info block for the global module index file.
     void emitBlockInfoBlock(llvm::BitstreamWriter &Stream);
 
-    /// \brief Retrieve the module file information for the given file.
+    /// Retrieve the module file information for the given file.
     ModuleFileInfo &getModuleFileInfo(const FileEntry *File) {
       llvm::MapVector<const FileEntry *, ModuleFileInfo>::iterator Known
         = ModuleFiles.find(File);
@@ -435,12 +435,12 @@
         FileManager &FileMgr, const PCHContainerReader &PCHContainerRdr)
         : FileMgr(FileMgr), PCHContainerRdr(PCHContainerRdr) {}
 
-    /// \brief Load the contents of the given module file into the builder.
+    /// Load the contents of the given module file into the builder.
     ///
     /// \returns true if an error occurred, false otherwise.
     bool loadModuleFile(const FileEntry *File);
 
-    /// \brief Write the index to the given bitstream.
+    /// Write the index to the given bitstream.
     /// \returns true if an error occurred, false otherwise.
     bool writeIndex(llvm::BitstreamWriter &Stream);
   };
@@ -493,7 +493,7 @@
     : public serialization::reader::ASTIdentifierLookupTraitBase {
 
   public:
-    /// \brief The identifier and whether it is "interesting".
+    /// The identifier and whether it is "interesting".
     typedef std::pair<StringRef, bool> data_type;
 
     data_type ReadData(const internal_key_type& k,
@@ -685,7 +685,7 @@
 
 namespace {
 
-/// \brief Trait used to generate the identifier index as an on-disk hash
+/// Trait used to generate the identifier index as an on-disk hash
 /// table.
 class IdentifierIndexWriterTrait {
 public:
@@ -913,10 +913,10 @@
 
 namespace {
   class GlobalIndexIdentifierIterator : public IdentifierIterator {
-    /// \brief The current position within the identifier lookup table.
+    /// The current position within the identifier lookup table.
     IdentifierIndexTable::key_iterator Current;
 
-    /// \brief The end position within the identifier lookup table.
+    /// The end position within the identifier lookup table.
     IdentifierIndexTable::key_iterator End;
 
   public:
Index: cfe/trunk/lib/Serialization/MultiOnDiskHashTable.h
===================================================================
--- cfe/trunk/lib/Serialization/MultiOnDiskHashTable.h
+++ cfe/trunk/lib/Serialization/MultiOnDiskHashTable.h
@@ -37,7 +37,7 @@
 namespace clang {
 namespace serialization {
 
-/// \brief A collection of on-disk hash tables, merged when relevant for performance.
+/// A collection of on-disk hash tables, merged when relevant for performance.
 template<typename Info> class MultiOnDiskHashTable {
 public:
   /// A handle to a file, used when overriding tables.
@@ -57,7 +57,7 @@
   template<typename ReaderInfo, typename WriterInfo>
   friend class MultiOnDiskHashTableGenerator;
 
-  /// \brief A hash table stored on disk.
+  /// A hash table stored on disk.
   struct OnDiskTable {
     using HashTable = llvm::OnDiskIterableChainedHashTable<Info>;
 
@@ -79,14 +79,14 @@
   using Table = llvm::PointerUnion<OnDiskTable *, MergedTable *>;
   using TableVector = llvm::TinyPtrVector<void *>;
 
-  /// \brief The current set of on-disk and merged tables.
+  /// The current set of on-disk and merged tables.
   /// We manually store the opaque value of the Table because TinyPtrVector
   /// can't cope with holding a PointerUnion directly.
   /// There can be at most one MergedTable in this vector, and if present,
   /// it is the first table.
   TableVector Tables;
 
-  /// \brief Files corresponding to overridden tables that we've not yet
+  /// Files corresponding to overridden tables that we've not yet
   /// discarded.
   llvm::TinyPtrVector<file_type> PendingOverrides;
 
@@ -102,7 +102,7 @@
       llvm::mapped_iterator<TableVector::iterator, AsOnDiskTable>;
   using table_range = llvm::iterator_range<table_iterator>;
 
-  /// \brief The current set of on-disk tables.
+  /// The current set of on-disk tables.
   table_range tables() {
     auto Begin = Tables.begin(), End = Tables.end();
     if (getMergedTable())
@@ -117,7 +117,7 @@
                                           .template dyn_cast<MergedTable*>();
   }
 
-  /// \brief Delete all our current on-disk tables.
+  /// Delete all our current on-disk tables.
   void clear() {
     for (auto *T : tables())
       delete T;
@@ -194,7 +194,7 @@
 
   ~MultiOnDiskHashTable() { clear(); }
 
-  /// \brief Add the table \p Data loaded from file \p File.
+  /// Add the table \p Data loaded from file \p File.
   void add(file_type File, storage_type Data, Info InfoObj = Info()) {
     using namespace llvm::support;
 
@@ -225,7 +225,7 @@
     Tables.push_back(NewTable.getOpaqueValue());
   }
 
-  /// \brief Find and read the lookup results for \p EKey.
+  /// Find and read the lookup results for \p EKey.
   data_type find(const external_key_type &EKey) {
     data_type Result;
 
@@ -257,7 +257,7 @@
     return Result;
   }
 
-  /// \brief Read all the lookup results into a single value. This only makes
+  /// Read all the lookup results into a single value. This only makes
   /// sense if merging values across keys is meaningful.
   data_type findAll() {
     data_type Result;
@@ -288,7 +288,7 @@
   }
 };
 
-/// \brief Writer for the on-disk hash table.
+/// Writer for the on-disk hash table.
 template<typename ReaderInfo, typename WriterInfo>
 class MultiOnDiskHashTableGenerator {
   using BaseTable = MultiOnDiskHashTable<ReaderInfo>;
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/AllocationDiagnostics.h
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/AllocationDiagnostics.h
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/AllocationDiagnostics.h
@@ -18,7 +18,7 @@
 
 namespace clang { namespace ento {
 
-/// \brief Returns true if leak diagnostics should directly reference
+/// Returns true if leak diagnostics should directly reference
 /// the allocatin site (where possible).
 ///
 /// The default is false.
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
@@ -1164,7 +1164,7 @@
 
 namespace {
 /// \class ObjCNonNilReturnValueChecker
-/// \brief The checker restricts the return values of APIs known to
+/// The checker restricts the return values of APIs known to
 /// never (or almost never) return 'nil'.
 class ObjCNonNilReturnValueChecker
   : public Checker<check::PostObjCMessage,
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
@@ -59,7 +59,7 @@
                                        check::Event<ImplicitNullDerefEvent>,
                                        check::ASTDecl<FunctionDecl> > {
 public:
-  /// \brief Pre-visit the Statement.
+  /// Pre-visit the Statement.
   ///
   /// The method will be called before the analyzer core processes the
   /// statement. The notification is performed for every explored CFGElement,
@@ -72,7 +72,7 @@
   /// check::PreStmt<ReturnStmt>
   void checkPreStmt(const ReturnStmt *DS, CheckerContext &C) const {}
 
-  /// \brief Post-visit the Statement.
+  /// Post-visit the Statement.
   ///
   /// The method will be called after the analyzer core processes the
   /// statement. The notification is performed for every explored CFGElement,
@@ -82,7 +82,7 @@
   /// check::PostStmt<DeclStmt>
   void checkPostStmt(const DeclStmt *DS, CheckerContext &C) const;
 
-  /// \brief Pre-visit the Objective C message.
+  /// Pre-visit the Objective C message.
   ///
   /// This will be called before the analyzer core processes the method call.
   /// This is called for any action which produces an Objective-C message send,
@@ -91,13 +91,13 @@
   /// check::PreObjCMessage
   void checkPreObjCMessage(const ObjCMethodCall &M, CheckerContext &C) const {}
 
-  /// \brief Post-visit the Objective C message.
+  /// Post-visit the Objective C message.
   /// \sa checkPreObjCMessage()
   ///
   /// check::PostObjCMessage
   void checkPostObjCMessage(const ObjCMethodCall &M, CheckerContext &C) const {}
 
-  /// \brief Visit an Objective-C message whose receiver is nil.
+  /// Visit an Objective-C message whose receiver is nil.
   ///
   /// This will be called when the analyzer core processes a method call whose
   /// receiver is definitely nil. In this case, check{Pre/Post}ObjCMessage and
@@ -106,7 +106,7 @@
   /// check::ObjCMessageNil
   void checkObjCMessageNil(const ObjCMethodCall &M, CheckerContext &C) const {}
 
-  /// \brief Pre-visit an abstract "call" event.
+  /// Pre-visit an abstract "call" event.
   ///
   /// This is used for checkers that want to check arguments or attributed
   /// behavior for functions and methods no matter how they are being invoked.
@@ -118,16 +118,16 @@
   /// check::PreCall
   void checkPreCall(const CallEvent &Call, CheckerContext &C) const {}
 
-  /// \brief Post-visit an abstract "call" event.
+  /// Post-visit an abstract "call" event.
   /// \sa checkPreObjCMessage()
   ///
   /// check::PostCall
   void checkPostCall(const CallEvent &Call, CheckerContext &C) const {}
 
-  /// \brief Pre-visit of the condition statement of a branch (such as IfStmt).
+  /// Pre-visit of the condition statement of a branch (such as IfStmt).
   void checkBranchCondition(const Stmt *Condition, CheckerContext &Ctx) const {}
 
-  /// \brief Post-visit the C++ operator new's allocation call.
+  /// Post-visit the C++ operator new's allocation call.
   ///
   /// Execution of C++ operator new consists of the following phases: (1) call
   /// default or overridden operator new() to allocate memory (2) cast the
@@ -143,7 +143,7 @@
   void checkNewAllocator(const CXXNewExpr *NE, SVal Target,
                          CheckerContext &) const {}
 
-  /// \brief Called on a load from and a store to a location.
+  /// Called on a load from and a store to a location.
   ///
   /// The method will be called each time a location (pointer) value is
   /// accessed.
@@ -155,7 +155,7 @@
   void checkLocation(SVal Loc, bool IsLoad, const Stmt *S,
                      CheckerContext &) const {}
 
-  /// \brief Called on binding of a value to a location.
+  /// Called on binding of a value to a location.
   ///
   /// \param Loc The value of the location (pointer).
   /// \param Val The value which will be stored at the location Loc.
@@ -164,7 +164,7 @@
   /// check::Bind
   void checkBind(SVal Loc, SVal Val, const Stmt *S, CheckerContext &) const {}
 
-  /// \brief Called whenever a symbol becomes dead.
+  /// Called whenever a symbol becomes dead.
   ///
   /// This callback should be used by the checkers to aggressively clean
   /// up/reduce the checker state, which is important for reducing the overall
@@ -181,20 +181,20 @@
   void checkDeadSymbols(SymbolReaper &SR, CheckerContext &C) const {}
 
 
-  /// \brief Called when the analyzer core starts analyzing a function,
+  /// Called when the analyzer core starts analyzing a function,
   /// regardless of whether it is analyzed at the top level or is inlined.
   ///
   /// check::BeginFunction
   void checkBeginFunction(CheckerContext &Ctx) const {}
 
-  /// \brief Called when the analyzer core reaches the end of a
+  /// Called when the analyzer core reaches the end of a
   /// function being analyzed regardless of whether it is analyzed at the top
   /// level or is inlined.
   ///
   /// check::EndFunction
   void checkEndFunction(CheckerContext &Ctx) const {}
 
-  /// \brief Called after all the paths in the ExplodedGraph reach end of path
+  /// Called after all the paths in the ExplodedGraph reach end of path
   /// - the symbolic execution graph is fully explored.
   ///
   /// This callback should be used in cases when a checker needs to have a
@@ -207,14 +207,14 @@
                         BugReporter &BR,
                         ExprEngine &Eng) const {}
 
-  /// \brief Called after analysis of a TranslationUnit is complete.
+  /// Called after analysis of a TranslationUnit is complete.
   ///
   /// check::EndOfTranslationUnit
   void checkEndOfTranslationUnit(const TranslationUnitDecl *TU,
                                  AnalysisManager &Mgr,
                                  BugReporter &BR) const {}
 
-  /// \brief Evaluates function call.
+  /// Evaluates function call.
   ///
   /// The analysis core threats all function calls in the same way. However, some
   /// functions have special meaning, which should be reflected in the program
@@ -229,7 +229,7 @@
   /// eval::Call
   bool evalCall(const CallExpr *CE, CheckerContext &C) const { return true; }
 
-  /// \brief Handles assumptions on symbolic values.
+  /// Handles assumptions on symbolic values.
   ///
   /// This method is called when a symbolic expression is assumed to be true or
   /// false. For example, the assumptions are performed when evaluating a
@@ -248,7 +248,7 @@
   /// check::LiveSymbols
   void checkLiveSymbols(ProgramStateRef State, SymbolReaper &SR) const {}
 
-  /// \brief Called when the contents of one or more regions change.
+  /// Called when the contents of one or more regions change.
   ///
   /// This can occur in many different ways: an explicit bind, a blanket
   /// invalidation of the region contents, or by passing a region to a function
@@ -280,7 +280,7 @@
     return State;
   }
 
-  /// \brief Called when pointers escape.
+  /// Called when pointers escape.
   ///
   /// This notifies the checkers about pointer escape, which occurs whenever
   /// the analyzer cannot track the symbol any more. For example, as a
@@ -300,7 +300,7 @@
     return State;
   }
 
-  /// \brief Called when const pointers escape.
+  /// Called when const pointers escape.
   ///
   /// Note: in most cases checkPointerEscape callback is sufficient.
   /// \sa checkPointerEscape
@@ -314,7 +314,7 @@
   /// check::Event<ImplicitNullDerefEvent>
   void checkEvent(ImplicitNullDerefEvent Event) const {}
 
-  /// \brief Check every declaration in the AST.
+  /// Check every declaration in the AST.
   ///
   /// An AST traversal callback, which should only be used when the checker is
   /// not path sensitive. It will be called for every Declaration in the AST and
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp
@@ -59,7 +59,7 @@
   const ObjCObjectType *getObjectTypeForAllocAndNew(const ObjCMessageExpr *MsgE,
                                                     CheckerContext &C) const;
 
-  /// \brief Return a better dynamic type if one can be derived from the cast.
+  /// Return a better dynamic type if one can be derived from the cast.
   const ObjCObjectPointerType *getBetterObjCType(const Expr *CastE,
                                                  CheckerContext &C) const;
 
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
@@ -48,24 +48,24 @@
       BT.reset(new BugType(this, "Use of Untrusted Data", "Untrusted Data"));
   }
 
-  /// \brief Catch taint related bugs. Check if tainted data is passed to a
+  /// Catch taint related bugs. Check if tainted data is passed to a
   /// system call etc.
   bool checkPre(const CallExpr *CE, CheckerContext &C) const;
 
-  /// \brief Add taint sources on a pre-visit.
+  /// Add taint sources on a pre-visit.
   void addSourcesPre(const CallExpr *CE, CheckerContext &C) const;
 
-  /// \brief Propagate taint generated at pre-visit.
+  /// Propagate taint generated at pre-visit.
   bool propagateFromPre(const CallExpr *CE, CheckerContext &C) const;
 
-  /// \brief Add taint sources on a post visit.
+  /// Add taint sources on a post visit.
   void addSourcesPost(const CallExpr *CE, CheckerContext &C) const;
 
   /// Check if the region the expression evaluates to is the standard input,
   /// and thus, is tainted.
   static bool isStdin(const Expr *E, CheckerContext &C);
 
-  /// \brief Given a pointer argument, return the value it points to.
+  /// Given a pointer argument, return the value it points to.
   static Optional<SVal> getPointedToSVal(CheckerContext &C, const Expr *Arg);
 
   /// Functions defining the attack surface.
@@ -102,7 +102,7 @@
 
   typedef SmallVector<unsigned, 2> ArgVector;
 
-  /// \brief A struct used to specify taint propagation rules for a function.
+  /// A struct used to specify taint propagation rules for a function.
   ///
   /// If any of the possible taint source arguments is tainted, all of the
   /// destination arguments should also be tainted. Use InvalidArgIndex in the
@@ -166,7 +166,7 @@
       return (V && State->isTainted(*V));
     }
 
-    /// \brief Pre-process a function which propagates taint according to the
+    /// Pre-process a function which propagates taint according to the
     /// taint rule.
     ProgramStateRef process(const CallExpr *CE, CheckerContext &C) const;
 
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/IdenticalExprChecker.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/IdenticalExprChecker.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/IdenticalExprChecker.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This defines IdenticalExprChecker, a check that warns about
+/// This defines IdenticalExprChecker, a check that warns about
 /// unintended use of identical expressions.
 ///
 /// It checks for use of identical expressions with comparison operators and
@@ -296,7 +296,7 @@
   return true;
 }
 
-/// \brief Determines whether two statement trees are identical regarding
+/// Determines whether two statement trees are identical regarding
 /// operators and symbols.
 ///
 /// Exceptions: expressions containing macros or functions with possible side
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
@@ -134,10 +134,10 @@
 };
 
 /// \class ReallocPair
-/// \brief Stores information about the symbol being reallocated by a call to
+/// Stores information about the symbol being reallocated by a call to
 /// 'realloc' to allow modeling failed reallocation later in the path.
 struct ReallocPair {
-  // \brief The symbol which realloc reallocated.
+  // The symbol which realloc reallocated.
   SymbolRef ReallocatedSym;
   ReallocPairKind Kind;
 
@@ -256,20 +256,20 @@
 
   void initIdentifierInfo(ASTContext &C) const;
 
-  /// \brief Determine family of a deallocation expression.
+  /// Determine family of a deallocation expression.
   AllocationFamily getAllocationFamily(CheckerContext &C, const Stmt *S) const;
 
-  /// \brief Print names of allocators and deallocators.
+  /// Print names of allocators and deallocators.
   ///
   /// \returns true on success.
   bool printAllocDeallocName(raw_ostream &os, CheckerContext &C,
                              const Expr *E) const;
 
-  /// \brief Print expected name of an allocator based on the deallocator's
+  /// Print expected name of an allocator based on the deallocator's
   /// family derived from the DeallocExpr.
   void printExpectedAllocName(raw_ostream &os, CheckerContext &C,
                               const Expr *DeallocExpr) const;
-  /// \brief Print expected name of a deallocator based on the allocator's
+  /// Print expected name of a deallocator based on the allocator's
   /// family.
   void printExpectedDeallocName(raw_ostream &os, AllocationFamily Family) const;
 
@@ -284,12 +284,12 @@
   bool isStandardNewDelete(const FunctionDecl *FD, ASTContext &C) const;
   ///@}
 
-  /// \brief Process C++ operator new()'s allocation, which is the part of C++
+  /// Process C++ operator new()'s allocation, which is the part of C++
   /// new-expression that goes before the constructor.
   void processNewAllocation(const CXXNewExpr *NE, CheckerContext &C,
                             SVal Target) const;
 
-  /// \brief Perform a zero-allocation check.
+  /// Perform a zero-allocation check.
   /// The optional \p RetVal parameter specifies the newly allocated pointer
   /// value; if unspecified, the value of expression \p E is used.
   ProgramStateRef ProcessZeroAllocation(CheckerContext &C, const Expr *E,
@@ -351,7 +351,7 @@
   static ProgramStateRef CallocMem(CheckerContext &C, const CallExpr *CE,
                                    ProgramStateRef State);
 
-  ///\brief Check if the memory associated with this symbol was released.
+  ///Check if the memory associated with this symbol was released.
   bool isReleased(SymbolRef Sym, CheckerContext &C) const;
 
   bool checkUseAfterFree(SymbolRef Sym, CheckerContext &C, const Stmt *S) const;
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCMissingSuperCallChecker.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCMissingSuperCallChecker.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCMissingSuperCallChecker.cpp
@@ -81,7 +81,7 @@
 
 }
 
-/// \brief Determine whether the given class has a superclass that we want
+/// Determine whether the given class has a superclass that we want
 /// to check. The name of the found superclass is stored in SuperclassName.
 ///
 /// \param D The declaration to check for superclasses.
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp
@@ -86,11 +86,11 @@
 
 namespace {
 enum SelfFlagEnum {
-  /// \brief No flag set.
+  /// No flag set.
   SelfFlag_None = 0x0,
-  /// \brief Value came from 'self'.
+  /// Value came from 'self'.
   SelfFlag_Self    = 0x1,
-  /// \brief Value came from the result of an initializer (e.g. [super init]).
+  /// Value came from the result of an initializer (e.g. [super init]).
   SelfFlag_InitRes = 0x2
 };
 }
@@ -98,7 +98,7 @@
 REGISTER_MAP_WITH_PROGRAMSTATE(SelfFlag, SymbolRef, unsigned)
 REGISTER_TRAIT_WITH_PROGRAMSTATE(CalledInit, bool)
 
-/// \brief A call receiving a reference to 'self' invalidates the object that
+/// A call receiving a reference to 'self' invalidates the object that
 /// 'self' contains. This keeps the "self flags" assigned to the 'self'
 /// object before the call so we can assign them to the new object that 'self'
 /// points to after the call.
@@ -128,7 +128,7 @@
   return getSelfFlags(val, C) & flag;
 }
 
-/// \brief Returns true of the value of the expression is the object that 'self'
+/// Returns true of the value of the expression is the object that 'self'
 /// points to and is an object that did not come from the result of calling
 /// an initializer.
 static bool isInvalidSelf(const Expr *E, CheckerContext &C) {
@@ -407,7 +407,7 @@
   return ID != nullptr;
 }
 
-/// \brief Returns true if the location is 'self'.
+/// Returns true if the location is 'self'.
 static bool isSelfVar(SVal location, CheckerContext &C) {
   AnalysisDeclContext *analCtx = C.getCurrentAnalysisDeclContext();
   if (!analCtx->getSelfDecl())
Index: cfe/trunk/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
@@ -67,7 +67,7 @@
     visitor.TraverseDecl(const_cast<TranslationUnitDecl *>(TUD));
   }
 
-  /// \brief Look for records of overly padded types. If padding *
+  /// Look for records of overly padded types. If padding *
   /// PadMultiplier exceeds AllowedPad, then generate a report.
   /// PadMultiplier is used to share code with the array padding
   /// checker.
@@ -97,7 +97,7 @@
     reportRecord(RD, BaselinePad, OptimalPad, OptimalFieldsOrder);
   }
 
-  /// \brief Look for arrays of overly padded types. If the padding of the
+  /// Look for arrays of overly padded types. If the padding of the
   /// array type exceeds AllowedPad, then generate a report.
   void visitVariable(const VarDecl *VD) const {
     const ArrayType *ArrTy = VD->getType()->getAsArrayTypeUnsafe();
Index: cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
@@ -1636,7 +1636,7 @@
   return PDB.getBugReport()->isValid();
 }
 
-/// \brief Adds a sanitized control-flow diagnostic edge to a path.
+/// Adds a sanitized control-flow diagnostic edge to a path.
 static void addEdgeToPath(PathPieces &path,
                           PathDiagnosticLocation &PrevLoc,
                           PathDiagnosticLocation NewLoc,
@@ -2095,7 +2095,7 @@
   }
 }
 
-/// \brief Move edges from a branch condition to a branch target
+/// Move edges from a branch condition to a branch target
 ///        when the condition is simple.
 ///
 /// This restructures some of the work of addContextEdges.  That function
@@ -2281,7 +2281,7 @@
   }
 }
 
-/// \brief Return true if X is contained by Y.
+/// Return true if X is contained by Y.
 static bool lexicalContains(ParentMap &PM, const Stmt *X, const Stmt *Y) {
   while (X) {
     if (X == Y)
Index: cfe/trunk/lib/StaticAnalyzer/Core/CallEvent.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/CallEvent.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Core/CallEvent.cpp
@@ -166,7 +166,7 @@
   return CheckerContext::isCLibraryFunction(FD, FunctionName);
 }
 
-/// \brief Returns true if a type is a pointer-to-const or reference-to-const
+/// Returns true if a type is a pointer-to-const or reference-to-const
 /// with no further indirection.
 static bool isPointerToConst(QualType Ty) {
   QualType PointeeTy = Ty->getPointeeType();
Index: cfe/trunk/lib/StaticAnalyzer/Core/CheckerManager.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/CheckerManager.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Core/CheckerManager.cpp
@@ -170,7 +170,7 @@
 
 } // namespace
 
-/// \brief Run checkers for visiting Stmts.
+/// Run checkers for visiting Stmts.
 void CheckerManager::runCheckersForStmt(bool isPreVisit,
                                         ExplodedNodeSet &Dst,
                                         const ExplodedNodeSet &Src,
@@ -226,7 +226,7 @@
 
 } // namespace
 
-/// \brief Run checkers for visiting obj-c messages.
+/// Run checkers for visiting obj-c messages.
 void CheckerManager::runCheckersForObjCMessage(ObjCMessageVisitKind visitKind,
                                                ExplodedNodeSet &Dst,
                                                const ExplodedNodeSet &Src,
@@ -284,7 +284,7 @@
 
 } // namespace
 
-/// \brief Run checkers for visiting an abstract call event.
+/// Run checkers for visiting an abstract call event.
 void CheckerManager::runCheckersForCallEvent(bool isPreVisit,
                                              ExplodedNodeSet &Dst,
                                              const ExplodedNodeSet &Src,
@@ -335,7 +335,7 @@
 
 } // namespace
 
-/// \brief Run checkers for load/store of a location.
+/// Run checkers for load/store of a location.
 
 void CheckerManager::runCheckersForLocation(ExplodedNodeSet &Dst,
                                             const ExplodedNodeSet &Src,
@@ -379,7 +379,7 @@
 
 } // namespace
 
-/// \brief Run checkers for binding of a value to a location.
+/// Run checkers for binding of a value to a location.
 void CheckerManager::runCheckersForBind(ExplodedNodeSet &Dst,
                                         const ExplodedNodeSet &Src,
                                         SVal location, SVal val,
@@ -433,7 +433,7 @@
   expandGraphWithCheckers(C, Dst, Src);
 }
 
-/// \brief Run checkers for end of path.
+/// Run checkers for end of path.
 // Note, We do not chain the checker output (like in expandGraphWithCheckers)
 // for this callback since end of path nodes are expected to be final.
 void CheckerManager::runCheckersForEndFunction(NodeBuilderContext &BC,
@@ -480,7 +480,7 @@
 
 } // namespace
 
-/// \brief Run checkers for branch condition.
+/// Run checkers for branch condition.
 void CheckerManager::runCheckersForBranchCondition(const Stmt *Condition,
                                                    ExplodedNodeSet &Dst,
                                                    ExplodedNode *Pred,
@@ -529,7 +529,7 @@
   expandGraphWithCheckers(C, Dst, Src);
 }
 
-/// \brief Run checkers for live symbols.
+/// Run checkers for live symbols.
 void CheckerManager::runCheckersForLiveSymbols(ProgramStateRef state,
                                                SymbolReaper &SymReaper) {
   for (const auto LiveSymbolsChecker : LiveSymbolsCheckers)
@@ -570,7 +570,7 @@
 
 } // namespace
 
-/// \brief Run checkers for dead symbols.
+/// Run checkers for dead symbols.
 void CheckerManager::runCheckersForDeadSymbols(ExplodedNodeSet &Dst,
                                                const ExplodedNodeSet &Src,
                                                SymbolReaper &SymReaper,
@@ -581,7 +581,7 @@
   expandGraphWithCheckers(C, Dst, Src);
 }
 
-/// \brief Run checkers for region changes.
+/// Run checkers for region changes.
 ProgramStateRef
 CheckerManager::runCheckersForRegionChanges(ProgramStateRef state,
                                             const InvalidatedSymbols *invalidated,
@@ -600,7 +600,7 @@
   return state;
 }
 
-/// \brief Run checkers to process symbol escape event.
+/// Run checkers to process symbol escape event.
 ProgramStateRef
 CheckerManager::runCheckersForPointerEscape(ProgramStateRef State,
                                    const InvalidatedSymbols &Escaped,
@@ -621,7 +621,7 @@
   return State;
 }
 
-/// \brief Run checkers for handling assumptions on symbolic values.
+/// Run checkers for handling assumptions on symbolic values.
 ProgramStateRef
 CheckerManager::runCheckersForEvalAssume(ProgramStateRef state,
                                          SVal Cond, bool Assumption) {
@@ -635,7 +635,7 @@
   return state;
 }
 
-/// \brief Run checkers for evaluating a call.
+/// Run checkers for evaluating a call.
 /// Only one checker will evaluate the call.
 void CheckerManager::runCheckersForEvalCall(ExplodedNodeSet &Dst,
                                             const ExplodedNodeSet &Src,
@@ -680,7 +680,7 @@
   }
 }
 
-/// \brief Run checkers for the entire Translation Unit.
+/// Run checkers for the entire Translation Unit.
 void CheckerManager::runCheckersOnEndOfTranslationUnit(
                                                   const TranslationUnitDecl *TU,
                                                   AnalysisManager &mgr,
Index: cfe/trunk/lib/StaticAnalyzer/Core/ExprEngineC.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/ExprEngineC.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Core/ExprEngineC.cpp
@@ -20,7 +20,7 @@
 using namespace ento;
 using llvm::APSInt;
 
-/// \brief Optionally conjure and return a symbol for offset when processing
+/// Optionally conjure and return a symbol for offset when processing
 /// an expression \p Expression.
 /// If \p Other is a location, conjure a symbol for \p Symbol
 /// (offset) if it is unknown so that memory arithmetic always
Index: cfe/trunk/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
@@ -474,7 +474,7 @@
       --IntType.getZeroValue());
 }
 
-/// \brief Apply implicit constraints for bitwise OR- and AND-.
+/// Apply implicit constraints for bitwise OR- and AND-.
 /// For unsigned types, bitwise OR with a constant always returns
 /// a value greater-or-equal than the constant, and bitwise AND
 /// returns a value less-or-equal then the constant.
Index: cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp
@@ -333,7 +333,7 @@
   /// To disable all small-struct-dependent behavior, set the option to "0".
   unsigned SmallStructLimit;
 
-  /// \brief A helper used to populate the work list with the given set of
+  /// A helper used to populate the work list with the given set of
   /// regions.
   void populateWorkList(invalidateRegionsWorker &W,
                         ArrayRef<SVal> Values,
@@ -473,7 +473,7 @@
                                   const TypedRegion *R,
                                   SVal DefaultVal);
 
-  /// \brief Create a new store with the specified binding removed.
+  /// Create a new store with the specified binding removed.
   /// \param ST the original store, that is the basis for the new store.
   /// \param L the location whose binding should be removed.
   StoreRef killBinding(Store ST, Loc L) override;
@@ -491,7 +491,7 @@
 
   bool includedInBindings(Store store, const MemRegion *region) const override;
 
-  /// \brief Return the value bound to specified location in a given state.
+  /// Return the value bound to specified location in a given state.
   ///
   /// The high level logic for this method is this:
   /// getBinding (L)
Index: cfe/trunk/lib/StaticAnalyzer/Core/SVals.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/SVals.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Core/SVals.cpp
@@ -75,7 +75,7 @@
   return nullptr;
 }
 
-/// \brief If this SVal is a location (subclasses Loc) and wraps a symbol,
+/// If this SVal is a location (subclasses Loc) and wraps a symbol,
 /// return that SymbolRef.  Otherwise return 0.
 ///
 /// Implicit casts (ex: void* -> char*) can turn Symbolic region into Element
@@ -118,7 +118,7 @@
 
 // TODO: The next 3 functions have to be simplified.
 
-/// \brief If this SVal wraps a symbol return that SymbolRef.
+/// If this SVal wraps a symbol return that SymbolRef.
 /// Otherwise, return 0.
 ///
 /// Casts are ignored during lookup.
Index: cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
@@ -173,7 +173,7 @@
   CodeInjector *Injector;
   cross_tu::CrossTranslationUnitContext CTU;
 
-  /// \brief Stores the declarations from the local translation unit.
+  /// Stores the declarations from the local translation unit.
   /// Note, we pre-compute the local declarations at parse time as an
   /// optimization to make sure we do not deserialize everything from disk.
   /// The local declaration to all declarations ratio might be very small when
@@ -301,24 +301,24 @@
         CreateStoreMgr, CreateConstraintMgr, checkerMgr.get(), *Opts, Injector);
   }
 
-  /// \brief Store the top level decls in the set to be processed later on.
+  /// Store the top level decls in the set to be processed later on.
   /// (Doing this pre-processing avoids deserialization of data from PCH.)
   bool HandleTopLevelDecl(DeclGroupRef D) override;
   void HandleTopLevelDeclInObjCContainer(DeclGroupRef D) override;
 
   void HandleTranslationUnit(ASTContext &C) override;
 
-  /// \brief Determine which inlining mode should be used when this function is
+  /// Determine which inlining mode should be used when this function is
   /// analyzed. This allows to redefine the default inlining policies when
   /// analyzing a given function.
   ExprEngine::InliningModes
     getInliningModeForFunction(const Decl *D, const SetOfConstDecls &Visited);
 
-  /// \brief Build the call graph for all the top level decls of this TU and
+  /// Build the call graph for all the top level decls of this TU and
   /// use it to define the order in which the functions should be visited.
   void HandleDeclsCallGraph(const unsigned LocalTUDeclsSize);
 
-  /// \brief Run analyzes(syntax or path sensitive) on the given function.
+  /// Run analyzes(syntax or path sensitive) on the given function.
   /// \param Mode - determines if we are requesting syntax only or path
   /// sensitive only analysis.
   /// \param VisitedCallees - The output parameter, which is populated with the
@@ -389,7 +389,7 @@
   void storeTopLevelDecls(DeclGroupRef DG);
   std::string getFunctionName(const Decl *D);
 
-  /// \brief Check if we should skip (not analyze) the given function.
+  /// Check if we should skip (not analyze) the given function.
   AnalysisMode getModeForDecl(Decl *D, AnalysisMode Mode);
   void runAnalysisOnTranslationUnit(ASTContext &C);
 
Index: cfe/trunk/lib/StaticAnalyzer/Frontend/ModelConsumer.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Frontend/ModelConsumer.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Frontend/ModelConsumer.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements an ASTConsumer for consuming model files.
+/// This file implements an ASTConsumer for consuming model files.
 ///
 /// This ASTConsumer handles the AST of a parsed model file. All top level
 /// function definitions will be collected from that model file for later
Index: cfe/trunk/lib/StaticAnalyzer/Frontend/ModelInjector.h
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Frontend/ModelInjector.h
+++ cfe/trunk/lib/StaticAnalyzer/Frontend/ModelInjector.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file defines the clang::ento::ModelInjector class which implements the
+/// This file defines the clang::ento::ModelInjector class which implements the
 /// clang::CodeInjector interface. This class is responsible for injecting
 /// function definitions that were synthesized from model files.
 ///
@@ -43,7 +43,7 @@
   Stmt *getBody(const ObjCMethodDecl *D) override;
 
 private:
-  /// \brief Synthesize a body for a declaration
+  /// Synthesize a body for a declaration
   ///
   /// This method first looks up the appropriate model file based on the
   /// model-path configuration option and the name of the declaration that is
Index: cfe/trunk/lib/Tooling/CompilationDatabase.cpp
===================================================================
--- cfe/trunk/lib/Tooling/CompilationDatabase.cpp
+++ cfe/trunk/lib/Tooling/CompilationDatabase.cpp
@@ -220,7 +220,7 @@
 
 } // namespace
 
-/// \brief Strips any positional args and possible argv[0] from a command-line
+/// Strips any positional args and possible argv[0] from a command-line
 /// provided by the user to construct a FixedCompilationDatabase.
 ///
 /// FixedCompilationDatabase requires a command line to be in this format as it
Index: cfe/trunk/lib/Tooling/FileMatchTrie.cpp
===================================================================
--- cfe/trunk/lib/Tooling/FileMatchTrie.cpp
+++ cfe/trunk/lib/Tooling/FileMatchTrie.cpp
@@ -25,7 +25,7 @@
 
 namespace {
 
-/// \brief Default \c PathComparator using \c llvm::sys::fs::equivalent().
+/// Default \c PathComparator using \c llvm::sys::fs::equivalent().
 struct DefaultPathComparator : public PathComparator {
   bool equivalent(StringRef FileA, StringRef FileB) const override {
     return FileA == FileB || llvm::sys::fs::equivalent(FileA, FileB);
@@ -37,13 +37,13 @@
 namespace clang {
 namespace tooling {
 
-/// \brief A node of the \c FileMatchTrie.
+/// A node of the \c FileMatchTrie.
 ///
 /// Each node has storage for up to one path and a map mapping a path segment to
 /// child nodes. The trie starts with an empty root node.
 class FileMatchTrieNode {
 public:
-  /// \brief Inserts 'NewPath' into this trie. \c ConsumedLength denotes
+  /// Inserts 'NewPath' into this trie. \c ConsumedLength denotes
   /// the number of \c NewPath's trailing characters already consumed during
   /// recursion.
   ///
@@ -81,7 +81,7 @@
     Children[Element].insert(NewPath, ConsumedLength + Element.size() + 1);
   }
 
-  /// \brief Tries to find the node under this \c FileMatchTrieNode that best
+  /// Tries to find the node under this \c FileMatchTrieNode that best
   /// matches 'FileName'.
   ///
   /// If multiple paths fit 'FileName' equally well, \c IsAmbiguous is set to
@@ -139,7 +139,7 @@
   }
 
 private:
-  /// \brief Gets all paths under this FileMatchTrieNode.
+  /// Gets all paths under this FileMatchTrieNode.
   void getAll(std::vector<StringRef> &Results,
               llvm::StringMap<FileMatchTrieNode>::const_iterator Except) const {
     if (Path.empty())
Index: cfe/trunk/lib/Tooling/JSONCompilationDatabase.cpp
===================================================================
--- cfe/trunk/lib/Tooling/JSONCompilationDatabase.cpp
+++ cfe/trunk/lib/Tooling/JSONCompilationDatabase.cpp
@@ -43,7 +43,7 @@
 
 namespace {
 
-/// \brief A parser for escaped strings of command line arguments.
+/// A parser for escaped strings of command line arguments.
 ///
 /// Assumes \-escaping for quoted arguments (see the documentation of
 /// unescapeCommandLine(...)).
Index: cfe/trunk/lib/Tooling/Refactoring/AtomicChange.cpp
===================================================================
--- cfe/trunk/lib/Tooling/Refactoring/AtomicChange.cpp
+++ cfe/trunk/lib/Tooling/Refactoring/AtomicChange.cpp
@@ -15,7 +15,7 @@
 LLVM_YAML_IS_SEQUENCE_VECTOR(clang::tooling::AtomicChange)
 
 namespace {
-/// \brief Helper to (de)serialize an AtomicChange since we don't have direct
+/// Helper to (de)serialize an AtomicChange since we don't have direct
 /// access to its data members.
 /// Data members of a normalized AtomicChange can be directly mapped from/to
 /// YAML string.
@@ -50,7 +50,7 @@
 namespace llvm {
 namespace yaml {
 
-/// \brief Specialized MappingTraits to describe how an AtomicChange is
+/// Specialized MappingTraits to describe how an AtomicChange is
 /// (de)serialized.
 template <> struct MappingTraits<NormalizedAtomicChange> {
   static void mapping(IO &Io, NormalizedAtomicChange &Doc) {
@@ -63,7 +63,7 @@
   }
 };
 
-/// \brief Specialized MappingTraits to describe how an AtomicChange is
+/// Specialized MappingTraits to describe how an AtomicChange is
 /// (de)serialized.
 template <> struct MappingTraits<clang::tooling::AtomicChange> {
   static void mapping(IO &Io, clang::tooling::AtomicChange &Doc) {
Index: cfe/trunk/lib/Tooling/Refactoring/Extract/Extract.cpp
===================================================================
--- cfe/trunk/lib/Tooling/Refactoring/Extract/Extract.cpp
+++ cfe/trunk/lib/Tooling/Refactoring/Extract/Extract.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Implements the "extract" refactoring that can pull code into
+/// Implements the "extract" refactoring that can pull code into
 /// new functions, methods or declare new variables.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/lib/Tooling/Refactoring/Rename/RenamingAction.cpp
===================================================================
--- cfe/trunk/lib/Tooling/Refactoring/Rename/RenamingAction.cpp
+++ cfe/trunk/lib/Tooling/Refactoring/Rename/RenamingAction.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Provides an action to rename every symbol at a point.
+/// Provides an action to rename every symbol at a point.
 ///
 //===----------------------------------------------------------------------===//
 
Index: cfe/trunk/lib/Tooling/Refactoring/Rename/USRFinder.cpp
===================================================================
--- cfe/trunk/lib/Tooling/Refactoring/Rename/USRFinder.cpp
+++ cfe/trunk/lib/Tooling/Refactoring/Rename/USRFinder.cpp
@@ -32,7 +32,7 @@
 class NamedDeclOccurrenceFindingVisitor
     : public RecursiveSymbolVisitor<NamedDeclOccurrenceFindingVisitor> {
 public:
-  // \brief Finds the NamedDecl at a point in the source.
+  // Finds the NamedDecl at a point in the source.
   // \param Point the location in the source to search for the NamedDecl.
   explicit NamedDeclOccurrenceFindingVisitor(const SourceLocation Point,
                                              const ASTContext &Context)
@@ -58,7 +58,7 @@
   const NamedDecl *getNamedDecl() const { return Result; }
 
 private:
-  // \brief Determines if the Point is within Start and End.
+  // Determines if the Point is within Start and End.
   bool isPointWithin(const SourceLocation Start, const SourceLocation End) {
     // FIXME: Add tests for Point == End.
     return Point == Start || Point == End ||
Index: cfe/trunk/lib/Tooling/Refactoring/Rename/USRFindingAction.cpp
===================================================================
--- cfe/trunk/lib/Tooling/Refactoring/Rename/USRFindingAction.cpp
+++ cfe/trunk/lib/Tooling/Refactoring/Rename/USRFindingAction.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Provides an action to find USR for the symbol at <offset>, as well as
+/// Provides an action to find USR for the symbol at <offset>, as well as
 /// all additional USRs.
 ///
 //===----------------------------------------------------------------------===//
@@ -55,7 +55,7 @@
 }
 
 namespace {
-// \brief NamedDeclFindingConsumer should delegate finding USRs of given Decl to
+// NamedDeclFindingConsumer should delegate finding USRs of given Decl to
 // AdditionalUSRFinder. AdditionalUSRFinder adds USRs of ctor and dtor if given
 // Decl refers to class and adds USRs of all overridden methods if Decl refers
 // to virtual method.
Index: cfe/trunk/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp
===================================================================
--- cfe/trunk/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp
+++ cfe/trunk/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Methods for finding all instances of a USR. Our strategy is very
+/// Methods for finding all instances of a USR. Our strategy is very
 /// simple; we just compare the USR at every relevant AST node with the one
 /// provided.
 ///
@@ -50,7 +50,7 @@
   return SM.getFileEntryForID(FileIdAndOffset.first) != nullptr;
 }
 
-// \brief This visitor recursively searches for all instances of a USR in a
+// This visitor recursively searches for all instances of a USR in a
 // translation unit and stores them for later usage.
 class USRLocFindingASTVisitor
     : public RecursiveSymbolVisitor<USRLocFindingASTVisitor> {
@@ -80,7 +80,7 @@
 
   // Non-visitors:
 
-  /// \brief Returns a set of unique symbol occurrences. Duplicate or
+  /// Returns a set of unique symbol occurrences. Duplicate or
   /// overlapping occurrences are erroneous and should be reported!
   SymbolOccurrences takeOccurrences() { return std::move(Occurrences); }
 
Index: cfe/trunk/lib/Tooling/Tooling.cpp
===================================================================
--- cfe/trunk/lib/Tooling/Tooling.cpp
+++ cfe/trunk/lib/Tooling/Tooling.cpp
@@ -73,7 +73,7 @@
 // code that sets up a compiler to run tools on it, and we should refactor
 // it to be based on the same framework.
 
-/// \brief Builds a clang driver initialized for running clang tools.
+/// Builds a clang driver initialized for running clang tools.
 static driver::Driver *newDriver(
     DiagnosticsEngine *Diagnostics, const char *BinaryName,
     IntrusiveRefCntPtr<vfs::FileSystem> VFS) {
@@ -84,7 +84,7 @@
   return CompilerDriver;
 }
 
-/// \brief Retrieves the clang CC1 specific flags out of the compilation's jobs.
+/// Retrieves the clang CC1 specific flags out of the compilation's jobs.
 ///
 /// Returns nullptr on error.
 static const llvm::opt::ArgStringList *getCC1Arguments(
@@ -114,7 +114,7 @@
 namespace clang {
 namespace tooling {
 
-/// \brief Returns a clang build invocation initialized from the CC1 flags.
+/// Returns a clang build invocation initialized from the CC1 flags.
 CompilerInvocation *newInvocation(
     DiagnosticsEngine *Diagnostics, const llvm::opt::ArgStringList &CC1Args) {
   assert(!CC1Args.empty() && "Must at least contain the program name!");
Index: cfe/trunk/tools/c-index-test/c-index-test.c
===================================================================
--- cfe/trunk/tools/c-index-test/c-index-test.c
+++ cfe/trunk/tools/c-index-test/c-index-test.c
@@ -64,7 +64,7 @@
 extern char *dirname(char *);
 #endif
 
-/** \brief Return the default parsing options. */
+/** Return the default parsing options. */
 static unsigned getDefaultParsingOptions() {
   unsigned options = CXTranslationUnit_DetailedPreprocessingRecord;
 
@@ -149,7 +149,7 @@
   }
 }
 
-/** \brief Returns 0 in case of success, non-zero in case of a failure. */
+/** Returns 0 in case of success, non-zero in case of a failure. */
 static int checkForErrors(CXTranslationUnit TU);
 
 static void describeLibclangFailure(enum CXErrorCode Err) {
Index: cfe/trunk/tools/clang-check/ClangCheck.cpp
===================================================================
--- cfe/trunk/tools/clang-check/ClangCheck.cpp
+++ cfe/trunk/tools/clang-check/ClangCheck.cpp
@@ -103,7 +103,7 @@
   }
 };
 
-/// \brief Subclasses \c clang::FixItRewriter to not count fixed errors/warnings
+/// Subclasses \c clang::FixItRewriter to not count fixed errors/warnings
 /// in the final error counts.
 ///
 /// This has the side-effect that clang-check -fixit exits with code 0 on
@@ -120,7 +120,7 @@
   bool IncludeInDiagnosticCounts() const override { return false; }
 };
 
-/// \brief Subclasses \c clang::FixItAction so that we can install the custom
+/// Subclasses \c clang::FixItAction so that we can install the custom
 /// \c FixItRewriter.
 class FixItAction : public clang::FixItAction {
 public:
Index: cfe/trunk/tools/clang-format/ClangFormat.cpp
===================================================================
--- cfe/trunk/tools/clang-format/ClangFormat.cpp
+++ cfe/trunk/tools/clang-format/ClangFormat.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a clang-format tool that automatically formats
+/// This file implements a clang-format tool that automatically formats
 /// (fragments of) C++ code.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/tools/clang-format/fuzzer/ClangFormatFuzzer.cpp
===================================================================
--- cfe/trunk/tools/clang-format/fuzzer/ClangFormatFuzzer.cpp
+++ cfe/trunk/tools/clang-format/fuzzer/ClangFormatFuzzer.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a function that runs Clang format on a single
+/// This file implements a function that runs Clang format on a single
 ///  input. This function is then linked into the Fuzzer library.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/tools/clang-fuzzer/ClangFuzzer.cpp
===================================================================
--- cfe/trunk/tools/clang-fuzzer/ClangFuzzer.cpp
+++ cfe/trunk/tools/clang-fuzzer/ClangFuzzer.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a function that runs Clang on a single
+/// This file implements a function that runs Clang on a single
 ///  input. This function is then linked into the Fuzzer library.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/tools/clang-fuzzer/ExampleClangProtoFuzzer.cpp
===================================================================
--- cfe/trunk/tools/clang-fuzzer/ExampleClangProtoFuzzer.cpp
+++ cfe/trunk/tools/clang-fuzzer/ExampleClangProtoFuzzer.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a function that runs Clang on a single
+/// This file implements a function that runs Clang on a single
 ///  input and uses libprotobuf-mutator to find new inputs. This function is
 ///  then linked into the Fuzzer library.
 ///
Index: cfe/trunk/tools/clang-fuzzer/cxx_proto.proto
===================================================================
--- cfe/trunk/tools/clang-fuzzer/cxx_proto.proto
+++ cfe/trunk/tools/clang-fuzzer/cxx_proto.proto
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file describes a subset of C++ as a protobuf.  It is used to
+/// This file describes a subset of C++ as a protobuf.  It is used to
 ///  more easily find interesting inputs for fuzzing Clang.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp
===================================================================
--- cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp
+++ cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a clang-offload-bundler that bundles different
+/// This file implements a clang-offload-bundler that bundles different
 /// files that relate with the same source code but different targets into a
 /// single one. Also the implements the opposite functionality, i.e. unbundle
 /// files previous created by this tool.
Index: cfe/trunk/tools/clang-refactor/ClangRefactor.cpp
===================================================================
--- cfe/trunk/tools/clang-refactor/ClangRefactor.cpp
+++ cfe/trunk/tools/clang-refactor/ClangRefactor.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a clang-refactor tool that performs various
+/// This file implements a clang-refactor tool that performs various
 /// source transformations.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/tools/clang-refactor/TestSupport.h
===================================================================
--- cfe/trunk/tools/clang-refactor/TestSupport.h
+++ cfe/trunk/tools/clang-refactor/TestSupport.h
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief Declares datatypes and routines that are used by test-specific code
+/// Declares datatypes and routines that are used by test-specific code
 /// in clang-refactor.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/tools/clang-refactor/TestSupport.cpp
===================================================================
--- cfe/trunk/tools/clang-refactor/TestSupport.cpp
+++ cfe/trunk/tools/clang-refactor/TestSupport.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements routines that provide refactoring testing
+/// This file implements routines that provide refactoring testing
 /// utilities.
 ///
 //===----------------------------------------------------------------------===//
Index: cfe/trunk/tools/clang-rename/ClangRename.cpp
===================================================================
--- cfe/trunk/tools/clang-rename/ClangRename.cpp
+++ cfe/trunk/tools/clang-rename/ClangRename.cpp
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// \brief This file implements a clang-rename tool that automatically finds and
+/// This file implements a clang-rename tool that automatically finds and
 /// renames symbols in C++ code.
 ///
 //===----------------------------------------------------------------------===//
@@ -39,7 +39,7 @@
 using namespace llvm;
 using namespace clang;
 
-/// \brief An oldname -> newname rename.
+/// An oldname -> newname rename.
 struct RenameAllInfo {
   unsigned Offset = 0;
   std::string QualifiedName;
@@ -51,7 +51,7 @@
 namespace llvm {
 namespace yaml {
 
-/// \brief Specialized MappingTraits to describe how a RenameAllInfo is
+/// Specialized MappingTraits to describe how a RenameAllInfo is
 /// (de)serialized.
 template <> struct MappingTraits<RenameAllInfo> {
   static void mapping(IO &IO, RenameAllInfo &Info) {
Index: cfe/trunk/tools/diagtool/DiagnosticNames.h
===================================================================
--- cfe/trunk/tools/diagtool/DiagnosticNames.h
+++ cfe/trunk/tools/diagtool/DiagnosticNames.h
@@ -30,10 +30,10 @@
     }
   };
 
-  /// \brief Get every diagnostic in the system, sorted by name.
+  /// Get every diagnostic in the system, sorted by name.
   llvm::ArrayRef<DiagnosticRecord> getBuiltinDiagnosticsByName();
 
-  /// \brief Get a diagnostic by its ID.
+  /// Get a diagnostic by its ID.
   const DiagnosticRecord &getDiagnosticForID(short DiagID);
 
 
@@ -101,7 +101,7 @@
     }
   };
 
-  /// \brief Get every diagnostic group in the system, sorted by name.
+  /// Get every diagnostic group in the system, sorted by name.
   llvm::ArrayRef<GroupRecord> getDiagnosticGroups();
 
   template<>
Index: cfe/trunk/tools/driver/cc1as_main.cpp
===================================================================
--- cfe/trunk/tools/driver/cc1as_main.cpp
+++ cfe/trunk/tools/driver/cc1as_main.cpp
@@ -61,7 +61,7 @@
 
 namespace {
 
-/// \brief Helper class for representing a single invocation of the assembler.
+/// Helper class for representing a single invocation of the assembler.
 struct AssemblerInvocation {
   /// @name Target Options
   /// @{
Index: cfe/trunk/tools/libclang/CIndex.cpp
===================================================================
--- cfe/trunk/tools/libclang/CIndex.cpp
+++ cfe/trunk/tools/libclang/CIndex.cpp
@@ -103,7 +103,7 @@
     clang_disposeTranslationUnit(TU);
 }
 
-/// \brief Compare two source ranges to determine their relative position in
+/// Compare two source ranges to determine their relative position in
 /// the translation unit.
 static RangeComparisonResult RangeCompare(SourceManager &SM,
                                           SourceRange R1,
@@ -119,7 +119,7 @@
   return RangeOverlap;
 }
 
-/// \brief Determine if a source location falls within, before, or after a
+/// Determine if a source location falls within, before, or after a
 ///   a given source range.
 static RangeComparisonResult LocationCompare(SourceManager &SM,
                                              SourceLocation L, SourceRange R) {
@@ -134,7 +134,7 @@
   return RangeOverlap;
 }
 
-/// \brief Translate a Clang source range into a CIndex source range.
+/// Translate a Clang source range into a CIndex source range.
 ///
 /// Clang internally represents ranges where the end location points to the
 /// start of the token at the end. However, for external clients it is more
@@ -178,7 +178,7 @@
   return RangeCompare(AU->getSourceManager(), R, RegionOfInterest);
 }
 
-/// \brief Visit the given cursor and, if requested by the visitor,
+/// Visit the given cursor and, if requested by the visitor,
 /// its children.
 ///
 /// \param Cursor the cursor to visit.
@@ -482,7 +482,7 @@
   return false;
 }
 
-/// \brief Visit the children of the given cursor.
+/// Visit the children of the given cursor.
 /// 
 /// \returns true if the visitation should be aborted, false if it
 /// should continue.
@@ -799,7 +799,7 @@
   return false;
 }
 
-/// \brief Compare two base or member initializers based on their source order.
+/// Compare two base or member initializers based on their source order.
 static int CompareCXXCtorInitializers(CXXCtorInitializer *const *X,
                                       CXXCtorInitializer *const *Y) {
   return (*X)->getSourceOrder() - (*Y)->getSourceOrder();
@@ -2119,7 +2119,7 @@
 namespace {
 class OMPClauseEnqueue : public ConstOMPClauseVisitor<OMPClauseEnqueue> {
   EnqueueVisitor *Visitor;
-  /// \brief Process clauses with list of variables.
+  /// Process clauses with list of variables.
   template <typename T>
   void VisitOMPClauseList(T *Node);
 public:
@@ -5953,7 +5953,7 @@
   return SourceRange();
 }
 
-/// \brief Retrieves the "raw" cursor extent, which is then extended to include
+/// Retrieves the "raw" cursor extent, which is then extended to include
 /// the decl-specifier-seq for declarations.
 static SourceRange getFullCursorExtent(CXCursor C, SourceManager &SrcMgr) {
   if (clang_isDeclaration(C.kind)) {
@@ -6763,7 +6763,7 @@
   bool postVisitChildren(CXCursor cursor);
   void AnnotateTokens();
   
-  /// \brief Determine whether the annotator saw any cursors that have 
+  /// Determine whether the annotator saw any cursors that have 
   /// context-sensitive keywords.
   bool hasContextSensitiveKeywords() const {
     return HasContextSensitiveKeywords;
@@ -6788,7 +6788,7 @@
   Cursor = updateC;
 }
 
-/// \brief It annotates and advances tokens with a cursor until the comparison
+/// It annotates and advances tokens with a cursor until the comparison
 //// between the cursor location and the source range is the same as
 /// \arg compResult.
 ///
@@ -6813,7 +6813,7 @@
   }
 }
 
-/// \brief Special annotation handling for macro argument tokens.
+/// Special annotation handling for macro argument tokens.
 /// \returns true if it advanced beyond all macro tokens, false otherwise.
 bool AnnotateTokensWorker::annotateAndAdvanceFunctionMacroTokens(
                                                CXCursor updateC,
@@ -7057,7 +7057,7 @@
 
 namespace {
 
-/// \brief Uses the macro expansions in the preprocessing record to find
+/// Uses the macro expansions in the preprocessing record to find
 /// and mark tokens that are macro arguments. This info is used by the
 /// AnnotateTokensWorker.
 class MarkMacroArgTokensVisitor {
@@ -7132,7 +7132,7 @@
                                                                      parent);
 }
 
-/// \brief Used by \c annotatePreprocessorTokens.
+/// Used by \c annotatePreprocessorTokens.
 /// \returns true if lexing was finished, false otherwise.
 static bool lexNext(Lexer &Lex, Token &Tok,
                    unsigned &NextIdx, unsigned NumTokens) {
@@ -7706,7 +7706,7 @@
   return CXTLS_None;
 }
 
- /// \brief If the given cursor is the "templated" declaration
+ /// If the given cursor is the "templated" declaration
  /// describing a class or function template, return the class or
  /// function template.
 static const Decl *maybeGetTemplateCursor(const Decl *D) {
Index: cfe/trunk/tools/libclang/CIndexCodeCompletion.cpp
===================================================================
--- cfe/trunk/tools/libclang/CIndexCodeCompletion.cpp
+++ cfe/trunk/tools/libclang/CIndexCodeCompletion.cpp
@@ -240,7 +240,7 @@
 
 namespace {
 
-/// \brief The CXCodeCompleteResults structure we allocate internally;
+/// The CXCodeCompleteResults structure we allocate internally;
 /// the client only sees the initial CXCodeCompleteResults structure.
 ///
 /// Normally, clients of CXString shouldn't care whether or not a CXString is
@@ -251,62 +251,62 @@
   AllocatedCXCodeCompleteResults(IntrusiveRefCntPtr<FileManager> FileMgr);
   ~AllocatedCXCodeCompleteResults();
   
-  /// \brief Diagnostics produced while performing code completion.
+  /// Diagnostics produced while performing code completion.
   SmallVector<StoredDiagnostic, 8> Diagnostics;
 
-  /// \brief Allocated API-exposed wrappters for Diagnostics.
+  /// Allocated API-exposed wrappters for Diagnostics.
   SmallVector<CXStoredDiagnostic *, 8> DiagnosticsWrappers;
 
   IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
   
-  /// \brief Diag object
+  /// Diag object
   IntrusiveRefCntPtr<DiagnosticsEngine> Diag;
   
-  /// \brief Language options used to adjust source locations.
+  /// Language options used to adjust source locations.
   LangOptions LangOpts;
 
-  /// \brief File manager, used for diagnostics.
+  /// File manager, used for diagnostics.
   IntrusiveRefCntPtr<FileManager> FileMgr;
 
-  /// \brief Source manager, used for diagnostics.
+  /// Source manager, used for diagnostics.
   IntrusiveRefCntPtr<SourceManager> SourceMgr;
   
-  /// \brief Temporary buffers that will be deleted once we have finished with
+  /// Temporary buffers that will be deleted once we have finished with
   /// the code-completion results.
   SmallVector<const llvm::MemoryBuffer *, 1> TemporaryBuffers;
   
-  /// \brief Allocator used to store globally cached code-completion results.
+  /// Allocator used to store globally cached code-completion results.
   std::shared_ptr<clang::GlobalCodeCompletionAllocator>
       CachedCompletionAllocator;
 
-  /// \brief Allocator used to store code completion results.
+  /// Allocator used to store code completion results.
   std::shared_ptr<clang::GlobalCodeCompletionAllocator> CodeCompletionAllocator;
 
-  /// \brief Context under which completion occurred.
+  /// Context under which completion occurred.
   enum clang::CodeCompletionContext::Kind ContextKind;
   
-  /// \brief A bitfield representing the acceptable completions for the
+  /// A bitfield representing the acceptable completions for the
   /// current context.
   unsigned long long Contexts;
   
-  /// \brief The kind of the container for the current context for completions.
+  /// The kind of the container for the current context for completions.
   enum CXCursorKind ContainerKind;
 
-  /// \brief The USR of the container for the current context for completions.
+  /// The USR of the container for the current context for completions.
   std::string ContainerUSR;
 
-  /// \brief a boolean value indicating whether there is complete information
+  /// a boolean value indicating whether there is complete information
   /// about the container
   unsigned ContainerIsIncomplete;
   
-  /// \brief A string containing the Objective-C selector entered thus far for a
+  /// A string containing the Objective-C selector entered thus far for a
   /// message send.
   std::string Selector;
 };
 
 } // end anonymous namespace
 
-/// \brief Tracks the number of code-completion result objects that are 
+/// Tracks the number of code-completion result objects that are 
 /// currently active.
 ///
 /// Used for debugging purposes only.
@@ -913,7 +913,7 @@
   return cxstring::createDup(Results->Selector);
 }
   
-/// \brief Simple utility function that appends a \p New string to the given
+/// Simple utility function that appends a \p New string to the given
 /// \p Old string, using the \p Buffer for storage.
 ///
 /// \param Old The string to which we are appending. This parameter will be
@@ -937,7 +937,7 @@
   Old = Buffer.str();
 }
 
-/// \brief Get the typed-text blocks from the given code-completion string
+/// Get the typed-text blocks from the given code-completion string
 /// and return them as a single string.
 ///
 /// \param String The code-completion string whose typed-text blocks will be
Index: cfe/trunk/tools/libclang/CIndexDiagnostic.h
===================================================================
--- cfe/trunk/tools/libclang/CIndexDiagnostic.h
+++ cfe/trunk/tools/libclang/CIndexDiagnostic.h
@@ -58,34 +58,34 @@
   
   virtual ~CXDiagnosticImpl();
   
-  /// \brief Return the severity of the diagnostic.
+  /// Return the severity of the diagnostic.
   virtual CXDiagnosticSeverity getSeverity() const = 0;
   
-  /// \brief Return the location of the diagnostic.
+  /// Return the location of the diagnostic.
   virtual CXSourceLocation getLocation() const = 0;
 
-  /// \brief Return the spelling of the diagnostic.
+  /// Return the spelling of the diagnostic.
   virtual CXString getSpelling() const = 0;
 
-  /// \brief Return the text for the diagnostic option.
+  /// Return the text for the diagnostic option.
   virtual CXString getDiagnosticOption(CXString *Disable) const = 0;
   
-  /// \brief Return the category of the diagnostic.
+  /// Return the category of the diagnostic.
   virtual unsigned getCategory() const = 0;
 
-  /// \brief Return the category string of the diagnostic.
+  /// Return the category string of the diagnostic.
   virtual CXString getCategoryText() const = 0;
 
-  /// \brief Return the number of source ranges for the diagnostic.
+  /// Return the number of source ranges for the diagnostic.
   virtual unsigned getNumRanges() const = 0;
   
-  /// \brief Return the source ranges for the diagnostic.
+  /// Return the source ranges for the diagnostic.
   virtual CXSourceRange getRange(unsigned Range) const = 0;
 
-  /// \brief Return the number of FixIts.
+  /// Return the number of FixIts.
   virtual unsigned getNumFixIts() const = 0;
 
-  /// \brief Return the FixIt information (source range and inserted text).
+  /// Return the FixIt information (source range and inserted text).
   virtual CXString getFixIt(unsigned FixIt,
                             CXSourceRange *ReplacementRange) const = 0;
 
@@ -107,7 +107,7 @@
   Kind K;
 };
   
-/// \brief The storage behind a CXDiagnostic
+/// The storage behind a CXDiagnostic
 struct CXStoredDiagnostic : public CXDiagnosticImpl {
   const StoredDiagnostic &Diag;
   const LangOptions &LangOpts;
@@ -119,34 +119,34 @@
 
   ~CXStoredDiagnostic() override {}
 
-  /// \brief Return the severity of the diagnostic.
+  /// Return the severity of the diagnostic.
   CXDiagnosticSeverity getSeverity() const override;
 
-  /// \brief Return the location of the diagnostic.
+  /// Return the location of the diagnostic.
   CXSourceLocation getLocation() const override;
 
-  /// \brief Return the spelling of the diagnostic.
+  /// Return the spelling of the diagnostic.
   CXString getSpelling() const override;
 
-  /// \brief Return the text for the diagnostic option.
+  /// Return the text for the diagnostic option.
   CXString getDiagnosticOption(CXString *Disable) const override;
 
-  /// \brief Return the category of the diagnostic.
+  /// Return the category of the diagnostic.
   unsigned getCategory() const override;
 
-  /// \brief Return the category string of the diagnostic.
+  /// Return the category string of the diagnostic.
   CXString getCategoryText() const override;
 
-  /// \brief Return the number of source ranges for the diagnostic.
+  /// Return the number of source ranges for the diagnostic.
   unsigned getNumRanges() const override;
 
-  /// \brief Return the source ranges for the diagnostic.
+  /// Return the source ranges for the diagnostic.
   CXSourceRange getRange(unsigned Range) const override;
 
-  /// \brief Return the number of FixIts.
+  /// Return the number of FixIts.
   unsigned getNumFixIts() const override;
 
-  /// \brief Return the FixIt information (source range and inserted text).
+  /// Return the FixIt information (source range and inserted text).
   CXString getFixIt(unsigned FixIt,
                     CXSourceRange *ReplacementRange) const override;
 
Index: cfe/trunk/tools/libclang/CIndexHigh.cpp
===================================================================
--- cfe/trunk/tools/libclang/CIndexHigh.cpp
+++ cfe/trunk/tools/libclang/CIndexHigh.cpp
@@ -65,7 +65,7 @@
     return cxtu::getASTUnit(TU)->getASTContext();
   }
 
-  /// \brief We are looking to find all semantically relevant identifiers,
+  /// We are looking to find all semantically relevant identifiers,
   /// so the definition of "canonical" here is different than in the AST, e.g.
   ///
   /// \code
@@ -129,7 +129,7 @@
 
 } // end anonymous namespace.
 
-/// \brief For a macro \arg Loc, returns the file spelling location and sets
+/// For a macro \arg Loc, returns the file spelling location and sets
 /// to \arg isMacroArg whether the spelling resides inside a macro definition or
 /// a macro argument.
 static SourceLocation getFileSpellingLoc(SourceManager &SM,
Index: cfe/trunk/tools/libclang/CIndexer.h
===================================================================
--- cfe/trunk/tools/libclang/CIndexer.h
+++ cfe/trunk/tools/libclang/CIndexer.h
@@ -52,7 +52,7 @@
         Options(CXGlobalOpt_None), PCHContainerOps(std::move(PCHContainerOps)) {
   }
 
-  /// \brief Whether we only want to see "local" declarations (that did not
+  /// Whether we only want to see "local" declarations (that did not
   /// come from a previous precompiled header). If false, we want to see all
   /// declarations.
   bool getOnlyLocalDecls() const { return OnlyLocalDecls; }
@@ -74,7 +74,7 @@
     return Options & opt;
   }
 
-  /// \brief Get the path of the clang resource files.
+  /// Get the path of the clang resource files.
   const std::string &getClangResourcesPath();
 
   StringRef getClangToolchainPath();
@@ -103,47 +103,47 @@
   std::string File;
 };
 
-  /// \brief Return the current size to request for "safety".
+  /// Return the current size to request for "safety".
   unsigned GetSafetyThreadStackSize();
 
-  /// \brief Set the current size to request for "safety" (or 0, if safety
+  /// Set the current size to request for "safety" (or 0, if safety
   /// threads should not be used).
   void SetSafetyThreadStackSize(unsigned Value);
 
-  /// \brief Execution the given code "safely", using crash recovery or safety
+  /// Execution the given code "safely", using crash recovery or safety
   /// threads when possible.
   ///
   /// \return False if a crash was detected.
   bool RunSafely(llvm::CrashRecoveryContext &CRC, llvm::function_ref<void()> Fn,
                  unsigned Size = 0);
 
-  /// \brief Set the thread priority to background.
+  /// Set the thread priority to background.
   /// FIXME: Move to llvm/Support.
   void setThreadBackgroundPriority();
 
-  /// \brief Print libclang's resource usage to standard error.
+  /// Print libclang's resource usage to standard error.
   void PrintLibclangResourceUsage(CXTranslationUnit TU);
 
   namespace cxindex {
     void printDiagsToStderr(ASTUnit *Unit);
 
-    /// \brief If \c MacroDefLoc points at a macro definition with \c II as
+    /// If \c MacroDefLoc points at a macro definition with \c II as
     /// its name, this retrieves its MacroInfo.
     MacroInfo *getMacroInfo(const IdentifierInfo &II,
                             SourceLocation MacroDefLoc, CXTranslationUnit TU);
 
-    /// \brief Retrieves the corresponding MacroInfo of a MacroDefinitionRecord.
+    /// Retrieves the corresponding MacroInfo of a MacroDefinitionRecord.
     const MacroInfo *getMacroInfo(const MacroDefinitionRecord *MacroDef,
                                   CXTranslationUnit TU);
 
-    /// \brief If \c Loc resides inside the definition of \c MI and it points at
+    /// If \c Loc resides inside the definition of \c MI and it points at
     /// an identifier that has ever been a macro name, this returns the latest
     /// MacroDefinitionRecord for that name, otherwise it returns NULL.
     MacroDefinitionRecord *checkForMacroInMacroDefinition(const MacroInfo *MI,
                                                           SourceLocation Loc,
                                                           CXTranslationUnit TU);
 
-    /// \brief If \c Tok resides inside the definition of \c MI and it points at
+    /// If \c Tok resides inside the definition of \c MI and it points at
     /// an identifier that has ever been a macro name, this returns the latest
     /// MacroDefinitionRecord for that name, otherwise it returns NULL.
     MacroDefinitionRecord *checkForMacroInMacroDefinition(const MacroInfo *MI,
Index: cfe/trunk/tools/libclang/CLog.h
===================================================================
--- cfe/trunk/tools/libclang/CLog.h
+++ cfe/trunk/tools/libclang/CLog.h
@@ -31,7 +31,7 @@
 class Logger;
 typedef IntrusiveRefCntPtr<Logger> LogRef;
 
-/// \brief Collects logging output and writes it to stderr when it's destructed.
+/// Collects logging output and writes it to stderr when it's destructed.
 /// Common use case:
 /// \code
 ///   if (LogRef Log = Logger::make(__func__)) {
@@ -90,7 +90,7 @@
 }
 }
 
-/// \brief Macros to automate common uses of Logger. Like this:
+/// Macros to automate common uses of Logger. Like this:
 /// \code
 ///   LOG_FUNC_SECTION {
 ///     *Log << "blah";
Index: cfe/trunk/tools/libclang/CXCursor.h
===================================================================
--- cfe/trunk/tools/libclang/CXCursor.h
+++ cfe/trunk/tools/libclang/CXCursor.h
@@ -58,109 +58,109 @@
                       SourceRange RegionOfInterest = SourceRange());
 CXCursor MakeCXCursorInvalid(CXCursorKind K, CXTranslationUnit TU = nullptr);
 
-/// \brief Create an Objective-C superclass reference at the given location.
+/// Create an Objective-C superclass reference at the given location.
 CXCursor MakeCursorObjCSuperClassRef(ObjCInterfaceDecl *Super, 
                                      SourceLocation Loc, 
                                      CXTranslationUnit TU);
 
-/// \brief Unpack an ObjCSuperClassRef cursor into the interface it references
+/// Unpack an ObjCSuperClassRef cursor into the interface it references
 /// and optionally the location where the reference occurred.
 std::pair<const ObjCInterfaceDecl *, SourceLocation>
   getCursorObjCSuperClassRef(CXCursor C);
 
-/// \brief Create an Objective-C protocol reference at the given location.
+/// Create an Objective-C protocol reference at the given location.
 CXCursor MakeCursorObjCProtocolRef(const ObjCProtocolDecl *Proto,
                                    SourceLocation Loc, 
                                    CXTranslationUnit TU);
 
-/// \brief Unpack an ObjCProtocolRef cursor into the protocol it references
+/// Unpack an ObjCProtocolRef cursor into the protocol it references
 /// and optionally the location where the reference occurred.
 std::pair<const ObjCProtocolDecl *, SourceLocation>
   getCursorObjCProtocolRef(CXCursor C);
 
-/// \brief Create an Objective-C class reference at the given location.
+/// Create an Objective-C class reference at the given location.
 CXCursor MakeCursorObjCClassRef(const ObjCInterfaceDecl *Class,
                                 SourceLocation Loc, 
                                 CXTranslationUnit TU);
 
-/// \brief Unpack an ObjCClassRef cursor into the class it references
+/// Unpack an ObjCClassRef cursor into the class it references
 /// and optionally the location where the reference occurred.
 std::pair<const ObjCInterfaceDecl *, SourceLocation>
   getCursorObjCClassRef(CXCursor C);
 
-/// \brief Create a type reference at the given location.
+/// Create a type reference at the given location.
 CXCursor MakeCursorTypeRef(const TypeDecl *Type, SourceLocation Loc,
                            CXTranslationUnit TU);
                                
-/// \brief Unpack a TypeRef cursor into the class it references
+/// Unpack a TypeRef cursor into the class it references
 /// and optionally the location where the reference occurred.
 std::pair<const TypeDecl *, SourceLocation> getCursorTypeRef(CXCursor C);
 
-/// \brief Create a reference to a template at the given location.
+/// Create a reference to a template at the given location.
 CXCursor MakeCursorTemplateRef(const TemplateDecl *Template, SourceLocation Loc,
                                CXTranslationUnit TU);
 
-/// \brief Unpack a TemplateRef cursor into the template it references and
+/// Unpack a TemplateRef cursor into the template it references and
 /// the location where the reference occurred.
 std::pair<const TemplateDecl *, SourceLocation>
   getCursorTemplateRef(CXCursor C);
 
-/// \brief Create a reference to a namespace or namespace alias at the given 
+/// Create a reference to a namespace or namespace alias at the given 
 /// location.
 CXCursor MakeCursorNamespaceRef(const NamedDecl *NS, SourceLocation Loc,
                                 CXTranslationUnit TU);
 
-/// \brief Unpack a NamespaceRef cursor into the namespace or namespace alias
+/// Unpack a NamespaceRef cursor into the namespace or namespace alias
 /// it references and the location where the reference occurred.
 std::pair<const NamedDecl *, SourceLocation> getCursorNamespaceRef(CXCursor C);
 
-/// \brief Create a reference to a variable at the given location.
+/// Create a reference to a variable at the given location.
 CXCursor MakeCursorVariableRef(const VarDecl *Var, SourceLocation Loc, 
                                CXTranslationUnit TU);
 
-/// \brief Unpack a VariableRef cursor into the variable it references and the
+/// Unpack a VariableRef cursor into the variable it references and the
 /// location where the where the reference occurred.
 std::pair<const VarDecl *, SourceLocation> getCursorVariableRef(CXCursor C);
 
-/// \brief Create a reference to a field at the given location.
+/// Create a reference to a field at the given location.
 CXCursor MakeCursorMemberRef(const FieldDecl *Field, SourceLocation Loc, 
                              CXTranslationUnit TU);
   
-/// \brief Unpack a MemberRef cursor into the field it references and the 
+/// Unpack a MemberRef cursor into the field it references and the 
 /// location where the reference occurred.
 std::pair<const FieldDecl *, SourceLocation> getCursorMemberRef(CXCursor C);
 
-/// \brief Create a CXX base specifier cursor.
+/// Create a CXX base specifier cursor.
 CXCursor MakeCursorCXXBaseSpecifier(const CXXBaseSpecifier *B,
                                     CXTranslationUnit TU);
 
-/// \brief Unpack a CXXBaseSpecifier cursor into a CXXBaseSpecifier.
+/// Unpack a CXXBaseSpecifier cursor into a CXXBaseSpecifier.
 const CXXBaseSpecifier *getCursorCXXBaseSpecifier(CXCursor C);
 
-/// \brief Create a preprocessing directive cursor.
+/// Create a preprocessing directive cursor.
 CXCursor MakePreprocessingDirectiveCursor(SourceRange Range,
                                           CXTranslationUnit TU);
 
-/// \brief Unpack a given preprocessing directive to retrieve its source range.
+/// Unpack a given preprocessing directive to retrieve its source range.
 SourceRange getCursorPreprocessingDirective(CXCursor C);
 
-/// \brief Create a macro definition cursor.
+/// Create a macro definition cursor.
 CXCursor MakeMacroDefinitionCursor(const MacroDefinitionRecord *,
                                    CXTranslationUnit TU);
 
-/// \brief Unpack a given macro definition cursor to retrieve its
+/// Unpack a given macro definition cursor to retrieve its
 /// source range.
 const MacroDefinitionRecord *getCursorMacroDefinition(CXCursor C);
 
-/// \brief Create a macro expansion cursor.
+/// Create a macro expansion cursor.
 CXCursor MakeMacroExpansionCursor(MacroExpansion *, CXTranslationUnit TU);
 
-/// \brief Create a "pseudo" macro expansion cursor, using a macro definition
+/// Create a "pseudo" macro expansion cursor, using a macro definition
 /// and a source location.
 CXCursor MakeMacroExpansionCursor(MacroDefinitionRecord *, SourceLocation Loc,
                                   CXTranslationUnit TU);
 
-/// \brief Wraps a macro expansion cursor and provides a common interface
+/// Wraps a macro expansion cursor and provides a common interface
 /// for a normal macro expansion cursor or a "pseudo" one.
 ///
 /// "Pseudo" macro expansion cursors (essentially a macro definition along with
@@ -194,46 +194,46 @@
   SourceRange getSourceRange() const;
 };
 
-/// \brief Unpack a given macro expansion cursor to retrieve its info.
+/// Unpack a given macro expansion cursor to retrieve its info.
 static inline MacroExpansionCursor getCursorMacroExpansion(CXCursor C) {
   return C;
 }
 
-/// \brief Create an inclusion directive cursor.
+/// Create an inclusion directive cursor.
 CXCursor MakeInclusionDirectiveCursor(InclusionDirective *,
                                       CXTranslationUnit TU);
 
-/// \brief Unpack a given inclusion directive cursor to retrieve its
+/// Unpack a given inclusion directive cursor to retrieve its
 /// source range.
 const InclusionDirective *getCursorInclusionDirective(CXCursor C);
 
-/// \brief Create a label reference at the given location.
+/// Create a label reference at the given location.
 CXCursor MakeCursorLabelRef(LabelStmt *Label, SourceLocation Loc,
                             CXTranslationUnit TU);
 
-/// \brief Unpack a label reference into the label statement it refers to and
+/// Unpack a label reference into the label statement it refers to and
 /// the location of the reference.
 std::pair<const LabelStmt *, SourceLocation> getCursorLabelRef(CXCursor C);
 
-/// \brief Create a overloaded declaration reference cursor for an expression.
+/// Create a overloaded declaration reference cursor for an expression.
 CXCursor MakeCursorOverloadedDeclRef(const OverloadExpr *E,
                                      CXTranslationUnit TU);
 
-/// \brief Create a overloaded declaration reference cursor for a declaration.
+/// Create a overloaded declaration reference cursor for a declaration.
 CXCursor MakeCursorOverloadedDeclRef(const Decl *D, SourceLocation Location,
                                      CXTranslationUnit TU);
 
-/// \brief Create a overloaded declaration reference cursor for a template name.
+/// Create a overloaded declaration reference cursor for a template name.
 CXCursor MakeCursorOverloadedDeclRef(TemplateName Template, 
                                      SourceLocation Location,
                                      CXTranslationUnit TU);
 
-/// \brief Internal storage for an overloaded declaration reference cursor;
+/// Internal storage for an overloaded declaration reference cursor;
 typedef llvm::PointerUnion3<const OverloadExpr *, const Decl *,
                             OverloadedTemplateStorage *>
   OverloadedDeclRefStorage;
   
-/// \brief Unpack an overloaded declaration reference into an expression,
+/// Unpack an overloaded declaration reference into an expression,
 /// declaration, or template name along with the source location.
 std::pair<OverloadedDeclRefStorage, SourceLocation>
   getCursorOverloadedDeclRef(CXCursor C);
@@ -251,14 +251,14 @@
 void getOverriddenCursors(CXCursor cursor,
                           SmallVectorImpl<CXCursor> &overridden);
   
-/// \brief Create an opaque pool used for fast generation of overridden
+/// Create an opaque pool used for fast generation of overridden
 /// CXCursor arrays.
 void *createOverridenCXCursorsPool();
 
-/// \brief Dispose of the overridden CXCursors pool.
+/// Dispose of the overridden CXCursors pool.
 void disposeOverridenCXCursorsPool(void *pool);
   
-/// \brief Returns a index/location pair for a selector identifier if the cursor
+/// Returns a index/location pair for a selector identifier if the cursor
 /// points to one.
 std::pair<int, SourceLocation> getSelectorIdentifierIndexAndLoc(CXCursor);
 static inline int getSelectorIdentifierIndex(CXCursor cursor) {
@@ -279,7 +279,7 @@
 
 CXCursor getTypeRefCursor(CXCursor cursor);
 
-/// \brief Generate a USR for \arg D and put it in \arg Buf.
+/// Generate a USR for \arg D and put it in \arg Buf.
 /// \returns true if no USR was computed or the result should be ignored,
 /// false otherwise.
 bool getDeclCursorUSR(const Decl *D, SmallVectorImpl<char> &Buf);
@@ -290,7 +290,7 @@
   return !(X == Y);
 }
 
-/// \brief Return true if the cursor represents a declaration that is the
+/// Return true if the cursor represents a declaration that is the
 /// first in a declaration group.
 bool isFirstInDeclGroup(CXCursor C);
 
Index: cfe/trunk/tools/libclang/CXCursor.cpp
===================================================================
--- cfe/trunk/tools/libclang/CXCursor.cpp
+++ cfe/trunk/tools/libclang/CXCursor.cpp
@@ -1196,19 +1196,19 @@
 }
 
 enum CXGetTemplateArgumentStatus {
-  /** \brief The operation completed successfully */
+  /** The operation completed successfully */
   CXGetTemplateArgumentStatus_Success = 0,
 
-  /** \brief The specified cursor did not represent a FunctionDecl. */
+  /** The specified cursor did not represent a FunctionDecl. */
   CXGetTemplateArgumentStatus_CursorNotFunctionDecl = -1,
 
-  /** \brief The specified cursor was not castable to a FunctionDecl. */
+  /** The specified cursor was not castable to a FunctionDecl. */
   CXGetTemplateArgumentStatus_BadFunctionDeclCast = -2,
 
-  /** \brief A NULL FunctionTemplateSpecializationInfo was retrieved. */
+  /** A NULL FunctionTemplateSpecializationInfo was retrieved. */
   CXGetTemplateArgumentStatus_NullTemplSpecInfo = -3,
 
-  /** \brief An invalid (OOB) argument index was specified */
+  /** An invalid (OOB) argument index was specified */
   CXGetTemplateArgumentStatus_InvalidIndex = -4
 };
 
Index: cfe/trunk/tools/libclang/CXIndexDataConsumer.h
===================================================================
--- cfe/trunk/tools/libclang/CXIndexDataConsumer.h
+++ cfe/trunk/tools/libclang/CXIndexDataConsumer.h
@@ -260,7 +260,7 @@
   }
   unsigned getNumAttrs() const { return (unsigned)CXAttrs.size(); }
 
-  /// \brief Retain/Release only useful when we allocate a AttrListInfo from the
+  /// Retain/Release only useful when we allocate a AttrListInfo from the
   /// BumpPtrAllocator, and not from the stack; so that we keep a pointer
   // in the EntityInfo
   void Retain() { ++ref_cnt; }
Index: cfe/trunk/tools/libclang/CXLoadedDiagnostic.h
===================================================================
--- cfe/trunk/tools/libclang/CXLoadedDiagnostic.h
+++ cfe/trunk/tools/libclang/CXLoadedDiagnostic.h
@@ -27,34 +27,34 @@
 
   ~CXLoadedDiagnostic() override;
 
-  /// \brief Return the severity of the diagnostic.
+  /// Return the severity of the diagnostic.
   CXDiagnosticSeverity getSeverity() const override;
 
-  /// \brief Return the location of the diagnostic.
+  /// Return the location of the diagnostic.
   CXSourceLocation getLocation() const override;
 
-  /// \brief Return the spelling of the diagnostic.
+  /// Return the spelling of the diagnostic.
   CXString getSpelling() const override;
 
-  /// \brief Return the text for the diagnostic option.
+  /// Return the text for the diagnostic option.
   CXString getDiagnosticOption(CXString *Disable) const override;
 
-  /// \brief Return the category of the diagnostic.
+  /// Return the category of the diagnostic.
   unsigned getCategory() const override;
 
-  /// \brief Return the category string of the diagnostic.
+  /// Return the category string of the diagnostic.
   CXString getCategoryText() const override;
 
-  /// \brief Return the number of source ranges for the diagnostic.
+  /// Return the number of source ranges for the diagnostic.
   unsigned getNumRanges() const override;
 
-  /// \brief Return the source ranges for the diagnostic.
+  /// Return the source ranges for the diagnostic.
   CXSourceRange getRange(unsigned Range) const override;
 
-  /// \brief Return the number of FixIts.
+  /// Return the number of FixIts.
   unsigned getNumFixIts() const override;
 
-  /// \brief Return the FixIt information (source range and inserted text).
+  /// Return the FixIt information (source range and inserted text).
   CXString getFixIt(unsigned FixIt,
                     CXSourceRange *ReplacementRange) const override;
 
@@ -62,7 +62,7 @@
     return D->getKind() == LoadedDiagnosticKind;
   }
   
-  /// \brief Decode the CXSourceLocation into file, line, column, and offset.
+  /// Decode the CXSourceLocation into file, line, column, and offset.
   static void decodeLocation(CXSourceLocation location,
                              CXFile *file,
                              unsigned *line,
Index: cfe/trunk/tools/libclang/CXLoadedDiagnostic.cpp
===================================================================
--- cfe/trunk/tools/libclang/CXLoadedDiagnostic.cpp
+++ cfe/trunk/tools/libclang/CXLoadedDiagnostic.cpp
@@ -47,7 +47,7 @@
   FileManager FakeFiles;
   llvm::DenseMap<unsigned, const FileEntry *> Files;
 
-  /// \brief Copy the string into our own allocator.
+  /// Copy the string into our own allocator.
   const char *copyString(StringRef Blob) {
     char *mem = Alloc.Allocate<char>(Blob.size() + 1);
     memcpy(mem, Blob.data(), Blob.size());
Index: cfe/trunk/tools/libclang/CXSourceLocation.h
===================================================================
--- cfe/trunk/tools/libclang/CXSourceLocation.h
+++ cfe/trunk/tools/libclang/CXSourceLocation.h
@@ -25,7 +25,7 @@
 
 namespace cxloc {
 
-/// \brief Translate a Clang source location into a CIndex source location.
+/// Translate a Clang source location into a CIndex source location.
 static inline CXSourceLocation 
 translateSourceLocation(const SourceManager &SM, const LangOptions &LangOpts,
                         SourceLocation Loc) {
@@ -37,7 +37,7 @@
   return Result;
 }
   
-/// \brief Translate a Clang source location into a CIndex source location.
+/// Translate a Clang source location into a CIndex source location.
 static inline CXSourceLocation translateSourceLocation(ASTContext &Context,
                                                        SourceLocation Loc) {
   return translateSourceLocation(Context.getSourceManager(),
@@ -45,7 +45,7 @@
                                  Loc);
 }
 
-/// \brief Translate a Clang source range into a CIndex source range.
+/// Translate a Clang source range into a CIndex source range.
 ///
 /// Clang internally represents ranges where the end location points to the
 /// start of the token at the end. However, for external clients it is more
@@ -55,7 +55,7 @@
                                    const LangOptions &LangOpts,
                                    const CharSourceRange &R);
   
-/// \brief Translate a Clang source range into a CIndex source range.
+/// Translate a Clang source range into a CIndex source range.
 static inline CXSourceRange translateSourceRange(ASTContext &Context,
                                                  SourceRange R) {
   return translateSourceRange(Context.getSourceManager(),
Index: cfe/trunk/tools/libclang/CXString.h
===================================================================
--- cfe/trunk/tools/libclang/CXString.h
+++ cfe/trunk/tools/libclang/CXString.h
@@ -27,33 +27,33 @@
 
 struct CXStringBuf;
 
-/// \brief Create a CXString object for an empty "" string.
+/// Create a CXString object for an empty "" string.
 CXString createEmpty();
 
-/// \brief Create a CXString object for an NULL string.
+/// Create a CXString object for an NULL string.
 ///
 /// A NULL string should be used as an "invalid" value in case of errors.
 CXString createNull();
 
-/// \brief Create a CXString object from a nul-terminated C string.  New
+/// Create a CXString object from a nul-terminated C string.  New
 /// CXString may contain a pointer to \p String.
 ///
 /// \p String should not be changed by the caller afterwards.
 CXString createRef(const char *String);
 
-/// \brief Create a CXString object from a nul-terminated C string.  New
+/// Create a CXString object from a nul-terminated C string.  New
 /// CXString will contain a copy of \p String.
 ///
 /// \p String can be changed or freed by the caller.
 CXString createDup(const char *String);
 
-/// \brief Create a CXString object from a StringRef.  New CXString may
+/// Create a CXString object from a StringRef.  New CXString may
 /// contain a pointer to the undrelying data of \p String.
 ///
 /// \p String should not be changed by the caller afterwards.
 CXString createRef(StringRef String);
 
-/// \brief Create a CXString object from a StringRef.  New CXString will
+/// Create a CXString object from a StringRef.  New CXString will
 /// contain a copy of \p String.
 ///
 /// \p String can be changed or freed by the caller.
@@ -65,12 +65,12 @@
 // If you need to make a copy, call \c createDup(StringRef(String)).
 CXString createRef(std::string String) = delete;
 
-/// \brief Create a CXString object that is backed by a string buffer.
+/// Create a CXString object that is backed by a string buffer.
 CXString createCXString(CXStringBuf *buf);
 
 CXStringSet *createSet(const std::vector<std::string> &Strings);
 
-/// \brief A string pool used for fast allocation/deallocation of strings.
+/// A string pool used for fast allocation/deallocation of strings.
 class CXStringPool {
 public:
   ~CXStringPool();
@@ -89,13 +89,13 @@
 
   CXStringBuf(CXTranslationUnit TU) : TU(TU) {}
 
-  /// \brief Return this buffer to the pool.
+  /// Return this buffer to the pool.
   void dispose();
 };
 
 CXStringBuf *getCXStringBuf(CXTranslationUnit TU);
 
-/// \brief Returns true if the CXString data is managed by a pool.
+/// Returns true if the CXString data is managed by a pool.
 bool isManagedByPool(CXString str);
 
 }
Index: cfe/trunk/tools/libclang/CursorVisitor.h
===================================================================
--- cfe/trunk/tools/libclang/CursorVisitor.h
+++ cfe/trunk/tools/libclang/CursorVisitor.h
@@ -55,44 +55,44 @@
                       public TypeLocVisitor<CursorVisitor, bool>
 {
 public:
-  /// \brief Callback called after child nodes of a cursor have been visited.
+  /// Callback called after child nodes of a cursor have been visited.
   /// Return true to break visitation or false to continue.
   typedef bool (*PostChildrenVisitorTy)(CXCursor cursor,
                                         CXClientData client_data);
 
 private:
-  /// \brief The translation unit we are traversing.
+  /// The translation unit we are traversing.
   CXTranslationUnit TU;
   ASTUnit *AU;
 
-  /// \brief The parent cursor whose children we are traversing.
+  /// The parent cursor whose children we are traversing.
   CXCursor Parent;
 
-  /// \brief The declaration that serves at the parent of any statement or
+  /// The declaration that serves at the parent of any statement or
   /// expression nodes.
   const Decl *StmtParent;
 
-  /// \brief The visitor function.
+  /// The visitor function.
   CXCursorVisitor Visitor;
 
   PostChildrenVisitorTy PostChildrenVisitor;
 
-  /// \brief The opaque client data, to be passed along to the visitor.
+  /// The opaque client data, to be passed along to the visitor.
   CXClientData ClientData;
 
-  /// \brief Whether we should visit the preprocessing record entries last, 
+  /// Whether we should visit the preprocessing record entries last, 
   /// after visiting other declarations.
   bool VisitPreprocessorLast;
 
-  /// \brief Whether we should visit declarations or preprocessing record
+  /// Whether we should visit declarations or preprocessing record
   /// entries that are #included inside the \arg RegionOfInterest.
   bool VisitIncludedEntities;
   
-  /// \brief When valid, a source range to which the cursor should restrict
+  /// When valid, a source range to which the cursor should restrict
   /// its search.
   SourceRange RegionOfInterest;
 
-  /// \brief Whether we should only visit declarations and not preprocessing
+  /// Whether we should only visit declarations and not preprocessing
   /// record entries.
   bool VisitDeclsOnly;
 
@@ -110,7 +110,7 @@
   using DeclVisitor<CursorVisitor, bool>::Visit;
   using TypeLocVisitor<CursorVisitor, bool>::Visit;
 
-  /// \brief Determine whether this particular source range comes before, comes
+  /// Determine whether this particular source range comes before, comes
   /// after, or overlaps the region of interest.
   ///
   /// \param R a half-open source range retrieved from the abstract syntax tree.
@@ -177,7 +177,7 @@
 
   bool Visit(CXCursor Cursor, bool CheckedRegionOfInterest = false);
 
-  /// \brief Visit declarations and preprocessed entities for the file region
+  /// Visit declarations and preprocessed entities for the file region
   /// designated by \see RegionOfInterest.
   bool visitFileRegion();
   
Index: cfe/trunk/tools/libclang/Index_Internal.h
===================================================================
--- cfe/trunk/tools/libclang/Index_Internal.h
+++ cfe/trunk/tools/libclang/Index_Internal.h
@@ -40,15 +40,15 @@
 
 #endif // !__has_feature(blocks)
 
-/// \brief The result of comparing two source ranges.
+/// The result of comparing two source ranges.
 enum RangeComparisonResult {
-  /// \brief Either the ranges overlap or one of the ranges is invalid.
+  /// Either the ranges overlap or one of the ranges is invalid.
   RangeOverlap,
 
-  /// \brief The first range ends before the second range starts.
+  /// The first range ends before the second range starts.
   RangeBefore,
 
-  /// \brief The first range starts after the second range ends.
+  /// The first range starts after the second range ends.
   RangeAfter
 };
 
Index: cfe/trunk/tools/libclang/Indexing.cpp
===================================================================
--- cfe/trunk/tools/libclang/Indexing.cpp
+++ cfe/trunk/tools/libclang/Indexing.cpp
@@ -45,7 +45,7 @@
 // Skip Parsed Bodies
 //===----------------------------------------------------------------------===//
 
-/// \brief A "region" in source code identified by the file/offset of the
+/// A "region" in source code identified by the file/offset of the
 /// preprocessor conditional directive that it belongs to.
 /// Multiple, non-consecutive ranges can be parts of the same region.
 ///
Index: cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp
===================================================================
--- cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp
+++ cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp
@@ -1507,7 +1507,7 @@
   OS << "}\n\n";
 }
 
-/// \brief Return the index of a spelling in a spelling list.
+/// Return the index of a spelling in a spelling list.
 static unsigned
 getSpellingListIndex(const std::vector<FlattenedSpelling> &SpellingList,
                      const FlattenedSpelling &Spelling) {
@@ -2056,7 +2056,7 @@
   }
 }
 
-/// \brief Emits the first-argument-is-type property for attributes.
+/// Emits the first-argument-is-type property for attributes.
 static void emitClangAttrTypeArgList(RecordKeeper &Records, raw_ostream &OS) {
   OS << "#if defined(CLANG_ATTR_TYPE_ARG_LIST)\n";
   std::vector<Record *> Attrs = Records.getAllDerivedDefinitions("Attr");
@@ -2078,7 +2078,7 @@
   OS << "#endif // CLANG_ATTR_TYPE_ARG_LIST\n\n";
 }
 
-/// \brief Emits the parse-arguments-in-unevaluated-context property for
+/// Emits the parse-arguments-in-unevaluated-context property for
 /// attributes.
 static void emitClangAttrArgContextList(RecordKeeper &Records, raw_ostream &OS) {
   OS << "#if defined(CLANG_ATTR_ARG_CONTEXT_LIST)\n";
Index: cfe/trunk/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp
===================================================================
--- cfe/trunk/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp
+++ cfe/trunk/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp
@@ -22,7 +22,7 @@
 
 using namespace llvm;
 
-/// \brief Convert a code point to the corresponding UTF-8 sequence represented
+/// Convert a code point to the corresponding UTF-8 sequence represented
 /// as a C string literal.
 ///
 /// \returns true on success.
Index: cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
===================================================================
--- cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
+++ cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
@@ -154,7 +154,7 @@
                            RHS->DiagsInGroup.front());
 }
 
-/// \brief Invert the 1-[0/1] mapping of diags to group into a one to many
+/// Invert the 1-[0/1] mapping of diags to group into a one to many
 /// mapping of groups to diags in the group.
 static void groupDiagnostics(const std::vector<Record*> &Diags,
                              const std::vector<Record*> &DiagGroups,
@@ -572,7 +572,7 @@
   return enumName.str();
 }
 
-/// \brief Emit the array of diagnostic subgroups.
+/// Emit the array of diagnostic subgroups.
 ///
 /// The array of diagnostic subgroups contains for each group a list of its
 /// subgroups. The individual lists are separated by '-1'. Groups with no
@@ -619,7 +619,7 @@
   OS << "};\n\n";
 }
 
-/// \brief Emit the list of diagnostic arrays.
+/// Emit the list of diagnostic arrays.
 ///
 /// This data structure is a large array that contains itself arrays of varying
 /// size. Each array represents a list of diagnostics. The different arrays are
@@ -660,7 +660,7 @@
   OS << "};\n\n";
 }
 
-/// \brief Emit a list of group names.
+/// Emit a list of group names.
 ///
 /// This creates a long string which by itself contains a list of pascal style
 /// strings, which consist of a length byte directly followed by the string.
@@ -677,7 +677,7 @@
   OS << "};\n\n";
 }
 
-/// \brief Emit diagnostic arrays and related data structures.
+/// Emit diagnostic arrays and related data structures.
 ///
 /// This creates the actual diagnostic array, an array of diagnostic subgroups
 /// and an array of subgroup names.
@@ -701,7 +701,7 @@
   OS << "#endif // GET_DIAG_ARRAYS\n\n";
 }
 
-/// \brief Emit diagnostic table.
+/// Emit diagnostic table.
 ///
 /// The table is sorted by the name of the diagnostic group. Each element
 /// consists of the name of the diagnostic group (given as offset in the
@@ -776,7 +776,7 @@
   OS << "#endif // GET_DIAG_TABLE\n\n";
 }
 
-/// \brief Emit the table of diagnostic categories.
+/// Emit the table of diagnostic categories.
 ///
 /// The table has the form of macro calls that have two parameters. The
 /// category's name as well as an enum that represents the category. The
Index: cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp
===================================================================
--- cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp
+++ cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp
@@ -23,7 +23,7 @@
 // Static Analyzer Checkers Tables generation
 //===----------------------------------------------------------------------===//
 
-/// \brief True if it is specified hidden or a parent package is specified
+/// True if it is specified hidden or a parent package is specified
 /// as hidden, otherwise false.
 static bool isHidden(const Record &R) {
   if (R.getValueAsBit("Hidden"))