<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">