Hi, <br><br>Sorry for reply late.  Attached is the modified patch. It's now just for NoAlias attribute and more safe for just eliminating bitcast that losing attribute case. Thanks for reviewing in advance.<br><br>Sheng.
<br><br>
<div><span class="gmail_quote">2007/11/9, Duncan Sands <<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:baldrick@free.fr" target="_blank">baldrick@free.fr</a>>:</span> 
<div><span class="e" id="q_116423c267fb715a_1">
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">Hi,<br><br>> This patch is for PR1582. As recent discuss on that pr, the C++ FE doesn't
<br>> track the restrict qualifier in the function declaration at all. When<br>> llvm-gcc handling CALL_EXPR and emiting callInst instruction, it can't get <br>> the "NoAlias" attribute, and hence insert a BitCast in CallInst. This patch
<br>> is to eliminate this bitcast.<br><br>what if one is varargs but not the other?  Also, your patch is quite general<br>in that it ignores *any* parameter attributes, not just restrict.  I think this <br>is basically ok (though it should presumably also ignore return attributes).
<br>That said, it could instead form the union of the previous attributes and any new ones.<br>But I think the safest approach is to assert that any new attributes include the old <br>ones, meaning that attributes can only be added, and no attributes removed,
<br>when going from the old to the new functions.<br><br>Ciao,<br><br>Duncan.<br></blockquote></span></div></div><br><br clear="all">