[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