summaryrefslogtreecommitdiffstats
path: root/clang/test/Sema
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-07-11 21:45:59 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-07-11 21:45:59 +0000
commit6290ae476ee6baf93ca607c8bf0fb993de42c06c (patch)
tree8b1efbc76da7daf8459568aeb08944990862b0ba /clang/test/Sema
parent8532db2ec4671486adf44cfb97f76d008eecb2cc (diff)
downloadbcm5719-llvm-6290ae476ee6baf93ca607c8bf0fb993de42c06c.tar.gz
bcm5719-llvm-6290ae476ee6baf93ca607c8bf0fb993de42c06c.zip
Add diagnostic for constructs like "va_arg(l, float)" which have undefined behavior. PR10201.
llvm-svn: 134926
Diffstat (limited to 'clang/test/Sema')
-rw-r--r--clang/test/Sema/varargs.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/test/Sema/varargs.c b/clang/test/Sema/varargs.c
index 820567777c5..07081edd1d9 100644
--- a/clang/test/Sema/varargs.c
+++ b/clang/test/Sema/varargs.c
@@ -67,3 +67,12 @@ void f8(int a, ...) {
(void)__builtin_va_arg(ap, void); // expected-error {{second argument to 'va_arg' is of incomplete type 'void'}}
__builtin_va_end(ap);
}
+
+enum E { x = -1, y = 2, z = 10000 };
+void f9(__builtin_va_list args)
+{
+ (void)__builtin_va_arg(args, float); // expected-warning {{second argument to 'va_arg' is of promotable type 'float'}}
+ (void)__builtin_va_arg(args, enum E); // Don't warn here in C
+ (void)__builtin_va_arg(args, short); // expected-warning {{second argument to 'va_arg' is of promotable type 'short'}}
+ (void)__builtin_va_arg(args, char); // expected-warning {{second argument to 'va_arg' is of promotable type 'char'}}
+}
OpenPOWER on IntegriCloud