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

    <tr>
        <th>Summary</th>
        <td>
            Dumping variables declared as __attribute__((unused)) are dumped incorrectly.
        </td>
    </tr>

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

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

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

<pre>
    Given the following code:

```
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Tooling/Tooling.h"

using namespace clang;
using namespace llvm;

std::string Output_AST(ASTUnit *ast)
{
  std::string ret;
  raw_string_ostream ostream(ret);

  for (auto it = ast->top_level_begin(); it != ast->top_level_end(); ++it) {
    Decl *decl = *it;
    decl->print(ostream, PrintingPolicy(LangOptions()));
 }

  return ret;
}

static const char *const code =
"int main() {\n"
"    int x __attribute__((unused)) = 0;\n"
" return 0;\n"
"}\n";

int main(int argc, char **argv)
{
 std::unique_ptr<ASTUnit> ast = tooling::buildASTFromCode(code);

 std::string output = Output_AST(ast.get());

  if (output != code) {
    llvm::outs() << "Code output by Output_AST:" << '\n'
 << output;
    return 1;
  }

  return 0;
}
```

The correct output would be exactly what `code` variable described, instead of having as output in Output_AST
```
 int x = 0 __attribute__((unused));
```
which clang parser rejects.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVV2v4jYQ_TXmZbQo2DeQPOSBC0tVqdKudG-fkRMPiSvHTv0By7-v7CQsUNqVkJPY83HmzBnDnZOtRqxI_k7y_YIH3xlbtTIoybWpUUkdbRa1EdfqN3lGDb5DOBmlzEXqFhojkLAtyfYkm9d1Nv3GT8qkblQQCITSRnHdEno4WKM9akHoYWf6QSq0v2vnuW5w2RFK_8_30xgl79_uPdIaXMSmeY9u4A3C6MneX58qde5vh-PqvIhVsa3zNhp_C34I_rj9-CS02H58_qmlB0K33HlCy8lzM4UAeHa36G8JACy_HMeDo3HeIu9hehJaRFNaPsEBOBkLhBY8eAMxNdsDd_4LYV-9GY4Kz6iONbZSE1qM_smMrl5aJuJnO0LfCX2XMS3c1QCwx0bFIkV6sn18l_eFAMSjGHqwUntCi1sdO_get6RuvxslmyuhxR9ct98GL412U_Lxd4tHNvvHoi36YPUDe082znMvG2iMdh6ajkeSttOXiaphszmlUnvo-cxQKjXf6Tut0VhRtPoBxyP33so6eDwek0MRdHAoRsyJjSyCeo4wQX51FqFPW4_dvQMWX7ltm0jgXE6UmW3PL3R2k1nQ8u-Ax8FbwnaTPAn7GhufoPppYpJxHaQS24_PgzX9Lo4vLdIU_1t1zzI2aQpSxIeB4M4v26jb4qmlcyPlKYp3dh9FOeV8lNw4ijGlCd7NnWI7wnbxBohwZxT19R4ES-zfLDcj05tZWeP-6Pkg4Klfq7vN_5Jh9kKET1ddWj87hMZYi42fsV5MUAJqBPzBG6-ucOm4B7LOEgnrDM7cSl4rBIGusbKOQtuB1M4jF2BO0PFz7AB3c0ip78t_hWaScpLqrwT9s7THGJdONt14fcLArUMLFv_CxrvlQlRMlKzkC6xW6w3L81WWrxddJTZZcXo7YVGu-algAjdlXlImBHvL1ljUC1nRjLJstaKrcrVh62V-QpqXKHKaiVO2yshbhj2XahnlsDS2XUjnAlZ5WW7YQvEalUt_WZRqvEA6jGOV7xe2ij5f6tA68pYp6bz7GcVLr7Dah36IXM6cu3SLcYsi0vuryecWQYR-QAFST21W1-UiWFV13g8uSfFA6KGVvgv1sjE9oYck7PHxZbAmUkjoISF3hB5SZf8EAAD__wLOOFg">