http://llvm.org/bugs/show_bug.cgi?id=11641
Bug #: 11641
Summary: preprocessor with -O2 generates incorrect warnings
Product: clang
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: Frontend
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Classification: Unclassified
Created attachment 7795
--> http://llvm.org/bugs/attachment.cgi?id=7795
unoptimized preprocessor output
Running just the prepocessor with and without -O2 generates different
output files. The -O2 file then generates incorrect warnings.
shell log follows:
bluishred:~/work 754 ? clang -O2 -fpic -Wno-format-security -E minigzip.c >
preprocessed_O2.c
bluishred:~/work 755 ? clang -fpic -Wno-format-security -E minigzip.c >
preprocessed.c
bluishred:~/work 756 ? clang -fpic -Wno-format-security -c preprocessed.c
bluishred:~/work 757 ? clang -O2 -fpic -Wno-format-security -c
preprocessed_O2.c
In file included from minigzip.c:1:
minigzip.c:283:2075: warning: array index 3 is past the end of the array (which
contains 3 elements) [-Warray-bounds]
...- ((__const unsigned char *) (__const char *) ("-d"))[2]); if (__s2_len >
2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const
char *) ("-d"))[3]); } } __result; }))) : __builtin_strcmp (*argv, "-d")))); })
== 0)
^ ~
minigzip.c:285:2080: warning: array index 3 is past the end of the array (which
contains 3 elements) [-Warray-bounds]
...- ((__const unsigned char *) (__const char *) ("-f"))[2]); if (__s2_len >
2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const
char *) ("-f"))[3]); } } __result; }))) : __builtin_strcmp (*argv, "-f")))); })
== 0)
^ ~
minigzip.c:287:2080: warning: array index 3 is past the end of the array (which
contains 3 elements) [-Warray-bounds]
...- ((__const unsigned char *) (__const char *) ("-h"))[2]); if (__s2_len >
2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const
char *) ("-h"))[3]); } } __result; }))) : __builtin_strcmp (*argv, "-h")))); })
== 0)
^ ~
minigzip.c:289:2080: warning: array index 3 is past the end of the array (which
contains 3 elements) [-Warray-bounds]
...- ((__const unsigned char *) (__const char *) ("-r"))[2]); if (__s2_len >
2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const
char *) ("-r"))[3]); } } __result; }))) : __builtin_strcmp (*argv, "-r")))); })
== 0)
^ ~
4 warnings generated.
bluishred:~/work 758 ? clang -v
clang version 3.1 (trunk 147153)
Target: x86_64-unknown-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