Aaron Ballman
6c93b3e29c
Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression context, such as sizeof(), or decltype(). Also adds a similar warning when the expression passed to typeid() *is* evaluated, since it is equally likely that the user would expect the expression operand to be unevaluated in that case.
...
llvm-svn: 224465
2014-12-17 21:57:17 +00:00
Benjamin Kramer
054faa5a48
Sema: Warn on sizeof on binary ops on decayed arrays.
...
The array will decay into a pointer, creating an unexpected result.
sizeof(array + int) is an easy to make typo for sizeof(array) + int.
This was motivated by a NetBSD security bug, used sizeof(key - r) instead of
sizeof(key) - r, reducing entropy in a random number generator.
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/kern/subr_cprng.c.diff?r1=1.14&r2=1.15&only_with_tag=MAIN&f=h
Differential Revision: http://llvm-reviews.chandlerc.com/D571
llvm-svn: 178371
2013-03-29 21:43:21 +00:00
Andy Gibbs
c6e68daac0
Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive.
...
llvm-svn: 166280
2012-10-19 12:44:48 +00:00
Douglas Gregor
cb2b662283
Make the "unused result" warning a warning about run-time behavior, so
...
that we don't warn when there isn't going to be any computation anyway.
llvm-svn: 108442
2010-07-15 18:47:04 +00:00
Argyrios Kyrtzidis
639ffb0c07
Fix rdar://8139785 "implement warning on dead expression in comma operator"
...
As a bonus, fix the warning for || and && operators; it was emitted even if one of the operands had side effects, e.g:
x || test_logical_foo1();
emitted a bogus "expression result unused" for 'x'.
llvm-svn: 107274
2010-06-30 10:53:14 +00:00
Daniel Dunbar
8fbe78f6fc
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.
...
- This is designed to make it obvious that %clang_cc1 is a "test variable"
which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it
can be useful to redefine what gets run as 'clang -cc1' (for example, to set
a default target).
llvm-svn: 91446
2009-12-15 20:14:24 +00:00
Daniel Dunbar
633d5b3ee2
Use clang to run tests which include headers from the system.
...
llvm-svn: 89085
2009-11-17 10:14:55 +00:00
Daniel Dunbar
a45cf5b6b0
Rename clang to clang-cc.
...
Tests and drivers updated, still need to shuffle dirs.
llvm-svn: 67602
2009-03-24 02:24:46 +00:00
Chris Lattner
61f60a05b2
c89 does not perform array -> pointer promotion unless the array is an lvalue. This
...
is different than C99. This fixes the rest of rdar://6095180.
llvm-svn: 54064
2008-07-25 21:33:13 +00:00
Chris Lattner
f6e1e309c7
In c99 mode, comma does do function/array promotion even though
...
it does not do unary promotions (like short->int).
llvm-svn: 54058
2008-07-25 20:54:07 +00:00
Chris Lattner
e174acc910
Comma does not perform unary promotions, rdar://6095180
...
llvm-svn: 54045
2008-07-25 20:02:29 +00:00