<div dir="ltr"><p class="MsoNormal">Hi All,</p><p class="MsoNormal"><br></p><p class="MsoNormal">Sorry for my previous email: there was some issue with my email system.</p><p class="MsoNormal">Hope you don't have any problems with reading my message now.</p><p class="MsoNormal"><br></p><p class="MsoNormal">Aaron,</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Not long ago I met a problem related to clang attributes
implementation. I tried to add a new CXX11 attribute with separated namespace
like here:</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">def FooAligned : InheritableAttr {</p>

<p class="MsoNormal">  let Spellings = [CXX11<"_Foo_attrs",
"aligned">];</p>

<p class="MsoNormal">  ….</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">But I was not able to do it because name “aligned” was used
in another well-known attribute. After some research I found that the problem
was in file “AttrParserStringSwitches.inc” generated by TableGen. Its content
was unaware about namespaces. As result my new “aligned” attribute was
mentioned like here:</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">#if defined(CLANG_ATTR_IDENTIFIER_ARG_LIST)</p>

<p class="MsoNormal">….</p>

<p class="MsoNormal">.Case("aligned", true)</p>

<p class="MsoNormal">….</p>

<p class="MsoNormal">#endif // CLANG_ATTR_IDENTIFIER_ARG_LIST</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">and there was real ambiguity in selection of proper
attribute: GNU::aligned, CXX11::aligned or CXX11:: _Foo_attrs::aligned.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">The simplest way to resolve the issue is to change the new
attribute name but why should I do it if I use the unique namespace?</p>

<p class="MsoNormal">In my case I created a special patch allowing me to generate
full qualified names of attributes inside CLANG_ATTR_IDENTIFIER_ARG_LIST
section:</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">#if defined(CLANG_ATTR_IDENTIFIER_ARG_LIST)</p>

<p class="MsoNormal">….</p>

<p class="MsoNormal">.Case("CXX11:: _Foo_attrs::aligned", true)</p>

<p class="MsoNormal">….</p>

<p class="MsoNormal">#endif // CLANG_ATTR_IDENTIFIER_ARG_LIST</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">My problem was resolved with this patch.</p>

<p class="MsoNormal">Is it interesting for anybody?</p>

<p class="MsoNormal">Should I create the corresponding bug record in Bugzilla?</p>

<p class="MsoNormal">Do you like to review my patch?</p>

<p class="MsoNormal">What about other sections inside
“AttrParserStringSwitches.inc” using unqualified attribute names?</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Andrew V. Tischenko</p>

<p class="MsoNormal"> </p></div>