<div dir="ltr">Making no claims about this:<br><div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Consider expression "0.0 - X" as the negation of X if<br>
  - this expression is explicitly marked no-signed-zero, or<br>
  - no-signed-zero of this expression can be derived from some context.<br><br></blockquote><div><br></div><div style>since I haven't reviewed that part. However,</div><div style> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
+  /// Return true if the value is negative zero or null value.<br>
+  bool isZeroValue() const;<br>
+<br></blockquote><div><br></div><div style>The naming of this routine is really odd given the function just above it in the file and</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+bool Constant::isZeroValue() const {<br>
+  // Floating point values have an explicit -0.0 value.<br>
+  if (const ConstantFP *CFP = dyn_cast<ConstantFP>(this))<br>
+    return CFP->isZero();<br>
+<br>
+  // Otherwise, just use +0.0.<br>
+  return isNullValue();<br>
+}<br>
+<br></blockquote><div><br></div><div style>and the implementation. Can you explain a bit more?</div><div style><br></div><div style>-eric </div></div></div></div>