[LLVMbugs] [Bug 11313] New: warning with conditional operator and printf

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Nov 4 11:15:38 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=11313

             Bug #: 11313
           Summary: warning with conditional operator and printf
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: FreeBSD
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Frontend
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: loox at e-shell.net
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


The is a false positive in the format checker, when using conditional operator
and parameters get promoted.

There is more info in this thread:

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-November/018464.html

--

clang -Wall -o ntohs2 ntohs2.c 
ntohs2.c:10:12: warning: conversion specifies type 'unsigned short' but the 
argument has type
      'int' [-Wformat]
        printf("%hu\n", x < 0 ? x : y);
                ~~^     ~~~~~~~~~~~~~
                %d                                                              
1 warning generated.

--

#include <stdio.h>
#include <netinet/in.h>

int main()
{
    uint16_t x = htons(80);
    uint16_t y = ntohs(80);
    x = x < 0 ? x : y;
    printf("%hu\n", y);
    printf("%hu\n", x < 0 ? x : y);
    return (0);
}

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list