<div class="gmail_quote">On Thu, Jul 14, 2011 at 3:53 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="gmail_quote"><div class="im">On Thu, Jul 14, 2011 at 3:35 PM, Richard Trieu <span dir="ltr"><<a href="mailto:rtrieu@google.com" target="_blank">rtrieu@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Currently, -Wsign-compare will warn if conditional operands differ in signedness. This patch will move this warning to -Wmixed-sign-conditional </blockquote><div><br></div></div><div>Why not -Wsign-conversion ? Just wondering why we need a separate flag here.</div>

</div>
</blockquote></div>-Wsign-conversion has a separate warning that will override this one.  Essentially, the conditional statement can have only have one type, so if the operands are of different signs, one will be forced to convert, which throws the warning.  Here's an example:<div>
<br></div><div><div>void f(unsigned int u, int i) {</div><div>  (void) (true ? u : i);</div><div>}</div></div><div><br></div><div>clang -Wsign-conversion</div><div><div>warning: operand of ? changes signedness: 'int' to 'unsigned int'</div>
<div>      [-Wsign-conversion]</div><div>  (void) (true ? u : i);</div><div>               ~     ^</div></div><div><br></div><div>clang -Wmixed-sign-conditional</div><div><div>warning: operands of ? are integers of different signs:</div>
<div>      'unsigned int' and 'int' [-Wmixed-sign-conditional]</div><div>  (void) (true ? u : i);</div><div>               ^ ~   ~</div></div><div><br></div>