[cfe-commits] [Patch] Remove checking signs of operands of conditional operator from -Wsign-compare

Richard Trieu rtrieu at google.com
Thu Jul 14 16:01:45 PDT 2011


On Thu, Jul 14, 2011 at 3:53 PM, Chandler Carruth <chandlerc at google.com>wrote:

> On Thu, Jul 14, 2011 at 3:35 PM, Richard Trieu <rtrieu at google.com> wrote:
>
>> Currently, -Wsign-compare will warn if conditional operands differ in
>> signedness. This patch will move this warning to -Wmixed-sign-conditional
>
>
> Why not -Wsign-conversion ? Just wondering why we need a separate flag
> here.
>
-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:

void f(unsigned int u, int i) {
  (void) (true ? u : i);
}

clang -Wsign-conversion
warning: operand of ? changes signedness: 'int' to 'unsigned int'
      [-Wsign-conversion]
  (void) (true ? u : i);
               ~     ^

clang -Wmixed-sign-conditional
warning: operands of ? are integers of different signs:
      'unsigned int' and 'int' [-Wmixed-sign-conditional]
  (void) (true ? u : i);
               ^ ~   ~
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20110714/6b6ed782/attachment.html>


More information about the cfe-commits mailing list