<html><head><style id="-x-evo-quote-style" type="text/css">.-x-evo-quoted { -webkit-user-select: none; }</style><style id="-x-evo-a-color-style" type="text/css">a { color: #2a76c6; }</style><style id="-x-evo-a-color-style-visited" type="text/css">a.-x-evo-visited-link { color: #2e3436; }</style><style id="-x-evo-composer-sheet" media="screen" type="text/css">body {
font-family: 'Monospace';
font-size: 10pt;
font-weight: 400;
font-style: normal;
-webkit-line-break: after-white-space;
-webkit-font-smoothing: antialiased;
}
pre,code,.pre {
font-family: 'Monospace';
font-size: 10pt;
font-weight: 400;
font-style: normal;
}p,pre,code,address {
margin: 0;
}
h1,h2,h3,h4,h5,h6 {
margin-top: 0.2em;
margin-bottom: 0.2em;
}
td:before {
content: "";}
img {
height: inherit;
width: inherit;
}
span.-x-evo-resizable-wrapper:hover {
outline: 1px dashed red;
resize: both;
overflow: hidden;
display: inline-block;
}
td:hover {
outline: 1px dotted red;
}
body[data-evo-plain-text] {
font-family: Monospace;
}
body[data-evo-plain-text] img.-x-evo-smiley-img, body:not([data-evo-plain-text]) span.-x-evo-smiley-text {
display: none
}
[data-evo-paragraph] {
white-space: pre-wrap;
}
body[data-evo-plain-text] [data-evo-paragraph] {
word-wrap: break-word;
word-break: break-word;
}
.-x-evo-plaintext-table {
border-collapse: collapse;
width: 78ch;
}
.-x-evo-plaintext-table td {
vertical-align: top;
}
td > * {
display : inline-block;
}
body[data-evo-plain-text] ul {
list-style: outside none;
-webkit-padding-start: 3ch;
}
body[data-evo-plain-text] ul > li {
list-style-position: outside;
text-indent: -2ch;
}
body[data-evo-plain-text] ul > li::before {
content: "* ";
}
body[data-evo-plain-text] ul.-x-evo-indented {
-webkit-padding-start: 3ch;
}
body:not([data-evo-plain-text]) ul > li.-x-evo-align-center,ol > li.-x-evo-align-center {
list-style-position: inside;
}
body:not([data-evo-plain-text]) ul > li.-x-evo-align-right, ol > li.-x-evo-align-right {
list-style-position: inside;
}
ol {
-webkit-padding-start: 6ch;
}
ol.-x-evo-indented {
-webkit-padding-start: 3ch;
}
.-x-evo-align-left {
text-align: left;
}
.-x-evo-align-center {
text-align: center;
}
.-x-evo-align-right {
text-align: right;
}
ol,ul {
-webkit-margin-before: 0em;
-webkit-margin-after: 0em;
}
blockquote {
-webkit-margin-before: 0em;
-webkit-margin-after: 0em;
}
a {
word-wrap: break-word;
word-break: break-all;
}
blockquote[type=cite] {
padding: 0.0ex 0ex;
margin: 0ex;
-webkit-margin-start: 0em;
-webkit-margin-end : 0em;
color: #737373 !important;
}
.-x-evo-quote-character {
color: rgb(114,159,207);
}
.-x-evo-quote-character+.-x-evo-quote-character{
color: rgb(173,127,168);
}
.-x-evo-quote-character+.-x-evo-quote-character+.-x-evo-quote-character{
color: rgb(138,226,52);
}
.-x-evo-quote-character+.-x-evo-quote-character+.-x-evo-quote-character+.-x-evo-quote-character{
color: rgb(252,175,62);
}
.-x-evo-quote-character+.-x-evo-quote-character+.-x-evo-quote-character+.-x-evo-quote-character+.-x-evo-quote-character{
color: rgb(233,185,110);
}
body:not([data-evo-plain-text]) blockquote[type=cite] {
padding: 0ch 1ch 0ch 1ch;
margin: 0ch;
border-width: 0px 2px 0px 2px;
border-style: none solid none solid;
border-radius: 2px;
}
body:not([data-evo-plain-text]) blockquote[type=cite] {
border-color: rgb(114,159,207);
}
body:not([data-evo-plain-text]) blockquote[type=cite] blockquote[type=cite] {
border-color: rgb(173,127,168);
}
body:not([data-evo-plain-text]) blockquote[type=cite] blockquote[type=cite] blockquote[type=cite] {
border-color: rgb(138,226,52);
}
body:not([data-evo-plain-text]) blockquote[type=cite] blockquote[type=cite] blockquote[type=cite] blockquote[type=cite] {
border-color: rgb(252,175,62);
}
body:not([data-evo-plain-text]) blockquote[type=cite] blockquote[type=cite] blockquote[type=cite] blockquote[type=cite] blockquote[type=cite] {
border-color: rgb(233,185,110);
}
</style></head><body data-converted="" data-evo-plain-text="" bgcolor="#ffffff" text="#2e3436" link="#2a76c6" vlink="#2e3436" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" data-evo-draft=""><div data-evo-paragraph="" class="" style="width: 78ch;">I have an update on this, but I forgot to post it here.</div><div data-evo-paragraph="" class="" style="width: 78ch;"><br></div><div data-evo-paragraph="" class="" style="width: 78ch;">The fix turned out to be simple. Given that the attribute subject in the Attr.td file is</div><div data-evo-paragraph="" class="" style="width: 78ch;"> let Subjects = SubjectsList<[Function]></div><div data-evo-paragraph="" class="" style="width: 78ch;"><br></div><div data-evo-paragraph="" class="" style="width: 78ch;">The only thing to do is to move the type attribute to the attribute list of the declarator. That is accomplished by the following lines:</div><div data-evo-paragraph="" class="" style="width: 78ch;"><br></div><div data-evo-paragraph="" class="" style="width: 78ch;">In lib/Sema/SemaType.cpp, function processTypeAttrs():</div><div data-evo-paragraph="" class="" style="width: 78ch;"><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span id="-x-evo-selection-start-marker" data-anchor=""></span><span id="-x-evo-selection-end-marker"></span> case AttributeList::AT_TheAttribute:</div><div data-evo-paragraph="" class="" style="width: 78ch;"> moveAttrFromListToList(attr, state.getCurrentAttrListRef(),</div><div data-evo-paragraph="" class="" style="width: 78ch;"> state.getDeclarator().getAttrListRef());</div><div data-evo-paragraph="" class="" style="width: 78ch;"> break;</div><div data-evo-paragraph="" class="" style="width: 78ch;"><br></div><div data-evo-paragraph="" class="" style="width: 78ch;">Regards.</div><div data-evo-paragraph="" class="" style="width: 78ch;"><br></div><div data-evo-paragraph="" class="" style="width: 78ch;">El vie, 20-10-2017 a las 13:25 +0200, Javier López escribió:</div><blockquote type="cite"><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span></span>El mar, 10-10-2017 a las 22:48 -0600, Eric Fiselier escribió:</div><blockquote type="cite"><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>On Mon, Oct 9, 2017 at 7:47 PM, Richard Smith via cfe-dev <cfe-dev@lists.l<br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>lvm.org> wrote:</div><blockquote type="cite"><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>On 6 October 2017 at 07:36, Javier López Gómez via cfe-dev <cfe-dev@list<br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>s.llvm.org> wrote:</div><blockquote type="cite"><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>Hi,</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>I'm new to Clang hacking. Recently -prior to addition of a new<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>attribute-, I tried adding a C++11 spelling of the DiagnoseIf<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>attribute in the file</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>`tools/clang/include/clang/Basic/Attr.td':</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span> let Spellings = [GNU<"diagnose_if">,</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span> CXX11<"", "diagnose_if", 201603>];</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>but the parser complains if the expression contains references to</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>function arguments, even if `LateParsed = 1' is specified, i.e. this</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>works</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span> int foo(int arg) __attribute__((diagnose_if(arg == 0, "text",</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>"warning")));</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>but this will not:</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span> [[diagnose_if(arg == 0, "text", "warning")]] int foo(int arg);</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>Am I missing something? Any help will be much appreciated.</div></blockquote><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>There is nowhere that a C++11-syntax attribute can be written where it<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>appertains to the function entity and the function parameter names are<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>in scope. The two locations where attributes can be applied to a name<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>introduced by a declarator are:</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span> [[here]] int f [[and_here]] (int x);</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>... and neither of them follows the "x" parameter's declaration. After<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>some discussion with Aaron, we think the best way forward is to recast<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>such attributes as attributes on the function *type* (that perhaps don't<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>change the canonical type, but do affect how the function declarator is<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>interpreted as forming a function in some way). That'd mean you'd put<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>the attributes:</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span> int f(int x) [[here]];</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>... which conveniently is a place where the function parameters are in<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>scope. The downside is that we don't have parsing support for attributes<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>that appertain to function types yet. That would need to be added.</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div></blockquote><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>I've been working on a fix for this; But if you want to hack on this, I'm<span data-hidden-space=""></span><br class="-x-evo-wrap-br"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>happy to yield.</div></blockquote><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span></span>Yes, I will be working on this for the next days. Thanks.</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span></span><br></div><blockquote type="cite"><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span> </div><blockquote type="cite"><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>_______________________________________________</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span>cfe-dev mailing list</div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span><span class="-x-evo-quote-character">> </span></span><br></div></blockquote></blockquote><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span></span><br></div><div data-evo-paragraph="" class="" style="width: 78ch;"><span class="-x-evo-quoted"><span class="-x-evo-quote-character">> </span></span><br></div></blockquote><div class="-x-evo-signature-wrapper"><span class="-x-evo-signature" id="1507199704.9681.1@gorrion"><pre>-- <br></pre><div data-evo-paragraph="" class="">Javier López</div><div data-evo-paragraph="" class="">2.2.B.08 ARCOS lab, Computer Architecture Group</div><div data-evo-paragraph="" class="">University Carlos III of Madrid</div><div data-evo-paragraph="" class="">e-mail: <a href="mailto:jalopezg@inf.uc3m.es">jalopezg@inf.uc3m.es</a></div></span></div></body></html>