<div dir="ltr">This seems a bit problematic, though - self assignment should be valid in C++, if we're optimizing it to a memcpy without a check for non-equality of location, isn't that a bug in the compiler we need to fix?</div><br><div class="gmail_quote"><div dir="ltr">On Thu, Oct 27, 2016 at 7:57 AM Bjorn Pettersson via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: bjope<br class="gmail_msg">
Date: Thu Oct 27 09:48:09 2016<br class="gmail_msg">
New Revision: 285298<br class="gmail_msg">
<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=285298&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=285298&view=rev</a><br class="gmail_msg">
Log:<br class="gmail_msg">
Fix memory issue in AttrBuilder::removeAttribute uses.<br class="gmail_msg">
<br class="gmail_msg">
Summary:<br class="gmail_msg">
Found when running Valgrind.<br class="gmail_msg">
<br class="gmail_msg">
This removes two unnecessary assignments when using<br class="gmail_msg">
AttrBuilder::removeAttribute.<br class="gmail_msg">
<br class="gmail_msg">
AttrBuilder::removeAttribute returns a reference to the object.<br class="gmail_msg">
As the LHSes were the same as the callees, the assignments<br class="gmail_msg">
resulted in memcpy calls where dst = src.<br class="gmail_msg">
<br class="gmail_msg">
Commited on behalf-of: dstenb (David Stenberg)<br class="gmail_msg">
<br class="gmail_msg">
Reviewers: mkuper, rnk<br class="gmail_msg">
<br class="gmail_msg">
Subscribers: llvm-commits<br class="gmail_msg">
<br class="gmail_msg">
Differential Revision: <a href="https://reviews.llvm.org/D25460" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D25460</a><br class="gmail_msg">
<br class="gmail_msg">
Modified:<br class="gmail_msg">
    llvm/trunk/lib/CodeGen/Analysis.cpp<br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/lib/CodeGen/Analysis.cpp<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/Analysis.cpp?rev=285298&r1=285297&r2=285298&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/Analysis.cpp?rev=285298&r1=285297&r2=285298&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/lib/CodeGen/Analysis.cpp (original)<br class="gmail_msg">
+++ llvm/trunk/lib/CodeGen/Analysis.cpp Thu Oct 27 09:48:09 2016<br class="gmail_msg">
@@ -541,8 +541,8 @@ bool llvm::attributesPermitTailCall(cons<br class="gmail_msg">
<br class="gmail_msg">
   // Noalias is completely benign as far as calling convention goes, it<br class="gmail_msg">
   // shouldn't affect whether the call is a tail call.<br class="gmail_msg">
-  CallerAttrs = CallerAttrs.removeAttribute(Attribute::NoAlias);<br class="gmail_msg">
-  CalleeAttrs = CalleeAttrs.removeAttribute(Attribute::NoAlias);<br class="gmail_msg">
+  CallerAttrs.removeAttribute(Attribute::NoAlias);<br class="gmail_msg">
+  CalleeAttrs.removeAttribute(Attribute::NoAlias);<br class="gmail_msg">
<br class="gmail_msg">
   if (CallerAttrs.contains(Attribute::ZExt)) {<br class="gmail_msg">
     if (!CalleeAttrs.contains(Attribute::ZExt))<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
llvm-commits mailing list<br class="gmail_msg">
<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div>