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

           Summary: false unused variable warning when variable
                    exclusively used within sizeof
           Product: clang
           Version: 2.8
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Static Analyzer
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


// Compile with :
// clang -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement
-Wstrict-prototypes -Wtype-limits -Wwrite-strings -Wpointer-arith test.c

#include <stdio.h>
static const char *blah[] = {"foo"};
#define foobar sizeof(blah)

int main(void)
{
    printf("hello world, %lu", foobar);
    return 0;
}

Originally noticed when compiling Wine's regedit:
clang -m32 -c -I. -I. -I../../include -I../../include -I../../include/msvcrt
-DWINE_STRICT_PROTOTYPES -DNO_LIBWINE_PORT -D_REENTRANT -fPIC -Wall -pipe
-fno-strict-aliasing -Wdeclaration-after-statement -Wstrict-prototypes
-Wtype-limits -Wwrite-strings -Wpointer-arith  -g -O2 -fno-builtin -o regproc.o
regproc.c
regproc.c:40:20: warning: unused variable 'reg_class_names' [-Wunused-variable]
static const CHAR *reg_class_names[] = {
                   ^
1 warning generated.

relevant code:
static const CHAR *reg_class_names[] = { "HKEY_LOCAL_MACHINE", "HKEY_USERS",
"HKEY_CLASSES_ROOT","HKEY_CURRENT_CONFIG", "HKEY_CURRENT_USER",
"HKEY_DYN_DATA"};

#define REG_CLASS_NUMBER (sizeof(reg_class_names) / sizeof(reg_class_names[0]))

austin@midna:~$ clang --version
clang version 2.8 (branches/release_28)
Target: x86_64-pc-linux-gnu
Thread model: posix

-- 
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to