[LLVMbugs] [Bug 18903] New: No warning on passing a parameter with register storage to va_start, which is undefined behavior
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed Feb 19 14:03:25 PST 2014
http://llvm.org/bugs/show_bug.cgi?id=18903
Bug ID: 18903
Summary: No warning on passing a parameter with register
storage to va_start, which is undefined behavior
Product: clang
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: Frontend
Assignee: unassignedclangbugs at nondot.org
Reporter: chengniansun at gmail.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Based on the C11 standard, (section 7.16.1.4)
The parameter parmN is the identifier of the rightmost parameter in the
variable
parameter list in the function definition (the one just before the , ...). If
the parameter parmN is declared with the register storage class, with a
function or array type, or with a type that is not compatible with the type
that results after application of the default argument promotions, the behavior
is undefined.
Currently clang does not warn on this behavior. I think it would be interesting
to add this support.
$: cat s.c
#include <stdarg.h>
void f(register int x, ...) {
va_list ap;
va_start(ap, x);
va_end(ap);
}
$: clang-trunk -Wvarargs -c s.c
$: gcc-trunk -Wvarargs -c s.c
s.c: In function ‘f’:
s.c:4:3: warning: undefined behaviour when second parameter of ‘va_start’ is
declared with ‘register’ storage [-Wvarargs]
va_start(ap, x);
^
$: clang-trunk --version
clang version 3.5 (trunk 201498)
Target: x86_64-unknown-linux-gnu
Thread model: posix
$:
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140219/5f1b44ce/attachment.html>
More information about the llvm-bugs
mailing list