<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/83981>83981</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Doxygen parsing does not recognize upper case HTML tags
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          tcottin
      </td>
    </tr>
</table>

<pre>
    Usually HTML tags are treated case insensitive.
But the Clang doxygen parsing does not treat HTML tags case insensitive.

This can be seen when activating -Wdocumentation and providing malformed HTML.

For example:

```C
// func.h

/// <b>
void func(void);
```

Running `clang -fsyntax-only -Wdocumentation func.h` gives the warning:

```
warning: HTML tag 'b' requires an end tag [-Wdocumentation-html]
    1 | /// <b>
      |     ~^~
1 warning generated.
```

Changing the tag to upper case:

```C
// func.h

/// <B>
void func(void);
```

does not give the warning.

I am using:

```
> clang --version
Ubuntu clang version 17.0.6 (++20231209124227+6009708b4367-1~exp1~20231209124336.77)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```

For my use case I fixed this by adapting the TableGen generated functions from `clang/utils/TableGen/ClangCommentHTMLTagsEmitter.cpp` to compare the passed tag names using lower casing.

I could push this upstream if the community is interested.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU1v4zYQ_TX0ZSCBomx9HHRYO3G7QHspsuixGEljiQVFqvxw7B7y2wtKzsbZRbZAUSGILb_R43y8N0Ln5KCJGrbbs93DBoMfjW18Z7yXetOa_tp8cQGVusLPT7_-Ah4HB2gJvCX01EOHjkBqR9pJL8-UMv7A-Kd98OBHgoNCPUBvLteBNMxonVzuyYE2fmW5Y_6Abf3_NMoYoaElcEQankfSgJ2XZ_SRNvm9N12YSHv00mhA3cNszVn2EZ1QnYydqF_Oe8d8NBbogtOsiOWf7hFW8PXvcLsXRyaOcAq6S8d3gQsQMZYfWpY_rj-fjeyXaCaq-J2JmuX7b7jveX4LWsdsWcG7pXfJyV21x0titLp-V-ItkYLDIM_klp4_o40UH1Wy3r4FfW0_MFG2TJRg6a8gLTlADaT7Fdvtvzk7Gf2k2O5h5QMAyICVB_igE7BcMSBeL2z3-LIC2WvCMJAmG1WV_qBBhxH1EKNjqTEzbyDMM9lFPP_L-Pb_fXxflR3HcT-Nd3r7DDhBcP86JJY_wk0FyZmsk0avwJc2aB9u2A2BrEx5WgATFRN7JvaCizwTvM7EVoiSiX3BeV3yqt3mRZlkL3SZs5e7oDwv0rKMJa52QzuQjwK5VMUfxTaZu0RJHS7JoMOrIy1hD5PpScXA2Th5uZWonUelqH-QNkJMHIOzTBxbqX_Qv-jE6QrB0boLPsNJXqgHH73fXgF7nP3r9J-wVfQT6TfhLLOK4nRwsmb66qJ4upfKMXF8fYiJ47KcDmaKko4meMLBPU7Se7JpN8_RVd5AZ6Z52XgjwYzO0WoIjRO5dYigzPOqv-8H3ZmgepiDG9cawuzi0ptAnhbGzkxT0NJfQTqQ2pMlFx2w6Zu8r_MaN9RkJa-LPMsF34zNbpsJzDnV4lS2hBWeqqLou5aqHjte00Y2gostz_mO1_lO8LTY5RVtc-S8Qzy1yLacJpQqVeo8pcYOG-lcoKbK6yrbKGxJueWFIISmZ1hAJkR8P9gmPpO0YXBsy5V03r2xeOkVNQ8f7XpLnRm0_Jvu7Pq2-jfBqmb0fnbREosVB-nH0KadmZg4xlNuH8lszZ_UeSaOS25xqkvu_wQAAP__mIgQ4w">