Eli Friedman
83a1258342
Fix MSVC class layout for empty classes. Patch by Dmitry Sokolov.
...
llvm-svn: 145544
2011-12-01 00:37:01 +00:00
Fariborz Jahanian
25d09c2209
pinpoint name/location of deprecated/unavailable enumerator
...
whose enum has been made deprecated/unavailable in the warning.
// rdar://10201690
llvm-svn: 145264
2011-11-28 19:45:58 +00:00
Richard Smith
10f4d06b81
PR11391: Don't try to evaluate the LHS of a _Complex assignment as an rvalue.
...
llvm-svn: 144799
2011-11-16 17:22:48 +00:00
Richard Smith
cf74da76db
Fix PR11385: A pointer constant expression which has been cast via an integer is
...
not safely derived. Don't allow lvalue-to-rvalue conversions on the result of
dereferencing such a pointer.
llvm-svn: 144783
2011-11-16 07:18:12 +00:00
Eli Friedman
47133bed4a
Add missing casts to AST.
...
llvm-svn: 144455
2011-11-12 03:56:23 +00:00
Eli Friedman
4f64e1819b
Make sure that restrict-qualifying an array actually adds a restrict qualifier. PR11354. (operator bool() is evil!)
...
llvm-svn: 144355
2011-11-11 02:00:42 +00:00
Bob Wilson
e4d7723b87
Check pointer types for arguments of Neon load/store macros. rdar://9958031
...
The Neon load/store intrinsics need to be implemented as macros to avoid
hiding alignment attributes on the pointer arguments, and the macros can
only evaluate those pointer arguments once (in case they have side effects),
so it has been hard to get the right type checking for those pointers.
I tried various alternatives in the arm_neon.h header, but it's much more
straightforward to just check directly in Sema.
llvm-svn: 144075
2011-11-08 05:04:11 +00:00
John McCall
0153cd3027
Fix the layout of vb-tables and vf-tables in the MS C++ ABI.
...
Based on work by Dmitry Sokolov!
llvm-svn: 144072
2011-11-08 04:01:03 +00:00
Bob Wilson
c9b97cc1da
Fix vector macros to correctly check argument types. <rdar://problem/10261670>
...
llvm-svn: 143792
2011-11-05 06:08:06 +00:00
Richard Smith
e9e20dd302
Constant expression evaluation: although we don't know whether a literal will
...
be at the same address as another object, we do know it won't alias a null
pointer.
llvm-svn: 143674
2011-11-04 01:10:57 +00:00
Eli Friedman
055c970839
Add an option to emulate the strange Apple gcc behavior of #pragma pack.
...
<rdar://problem/10374763>
llvm-svn: 143527
2011-11-02 01:53:16 +00:00
Richard Smith
cecf184e64
When constant-folding, don't look at the initializer of a global const variable
...
if it's marked as weak: that definition may not end up being used.
llvm-svn: 143496
2011-11-01 21:06:14 +00:00
Richard Smith
dd78544d44
Refactoring and test for r143360. Support for array rvalue to pointer decay is
...
needed for C++11, and will follow later.
llvm-svn: 143363
2011-10-31 20:57:44 +00:00
Richard Smith
390cd49906
Fix assert on constant expression evaluation of floating point increment.
...
llvm-svn: 143320
2011-10-30 23:17:09 +00:00
Richard Smith
9c8d1c5c64
Don't crash if a GCC binary conditional is used in a constant expression on an
...
integer-cast pointer value.
llvm-svn: 143299
2011-10-29 22:55:55 +00:00
Richard Smith
472d495372
Fix assertion in constant expression evaluation. The LHS of a floating-point
...
binary operator isn't an rvalue if it's an assignment operator.
llvm-svn: 143250
2011-10-28 23:26:52 +00:00
Richard Trieu
03cf7b70e0
Fix for PR9751 to change the behavior of -Wformat warnings. If the format
...
string is part of the function call, then there is no difference. If the
format string is not, the warning will point to the call site and a note
will point to where the format string is.
Fix-it hints for strings are moved to the note if a note is emitted. This will
prevent changes to format strings that may be used in multiple places.
llvm-svn: 143168
2011-10-28 00:41:25 +00:00
Hans Wennborg
27541dbe1a
Teach format string analysis that "%zu" means size_t.
...
The code had it backwards, thinking size_t was signed, and using that for "%zd".
Also let the analysis get the types for (u)intmax_t while we are at it.
llvm-svn: 143099
2011-10-27 08:29:09 +00:00
Fariborz Jahanian
3249a1e862
Do not warn when weak-import attribute is applied to enum
...
decl. in Darwin due to certain projects requirement.
// rdar://10277579
llvm-svn: 143082
2011-10-26 23:59:12 +00:00
Ted Kremenek
74e82bd190
Tweak printf format string parsing to accept 'hh' conversion specifier to accept any char, not just signed char. Fixes <rdar://problem/10303638>.
...
llvm-svn: 142908
2011-10-25 04:20:41 +00:00
Richard Smith
c3e31e7bb2
In accordance with the C89, C99 and C++98 standards, ICEs can only contain
...
floating-point literals if they are the immediate operands of casts.
ImplicitCastExpr is not a cast in the language-standards sense.
llvm-svn: 142832
2011-10-24 18:26:35 +00:00
Ted Kremenek
33ba99566f
Only emit implicit constant conversion truncation warnings in reachable code. Apparently this is what GCC does, and some code depends on this. Fixes <rdar://problem/10321089>.
...
llvm-svn: 142716
2011-10-22 02:37:33 +00:00
Eli Friedman
faaf2731f6
Add tests for CodeGen types in MS ABI. Based on patch by r4start.
...
llvm-svn: 142697
2011-10-21 23:03:08 +00:00
Eli Friedman
43114f9084
More ASTRecordLayout changes for MS ABI; based on patch by r4start.
...
llvm-svn: 142694
2011-10-21 22:49:56 +00:00
Douglas Gregor
60060d6f8f
Treat the Microsoft/Borland keyword "__except" as a context-sensitive
...
keyword, because both libstdc++ and libc++ use "__except" as an
identifier. Fixes <rdar://problem/10322555>.
llvm-svn: 142636
2011-10-21 03:57:52 +00:00
Matt Beaumont-Gay
4b489fa629
Only warn at self-initialization if some later use is always uninitialized.
...
llvm-svn: 142538
2011-10-19 18:53:03 +00:00
Hans Wennborg
cc8ce7b1d7
Break out ssize_t test from Sema/format-strings-fixit.c
...
Move to a separate test that sets a specific target triple
so that the type of ssize_t is known.
llvm-svn: 142481
2011-10-19 07:55:50 +00:00
Hans Wennborg
a5d653c7dd
Another attempt at fixing format-strings-fixit.c.
...
Use "%f" as format string to make sure it doesn't match size_t, etc.
whatever they might be typedeffed to, so that the fixit always applies.
llvm-svn: 142348
2011-10-18 09:30:37 +00:00
Hans Wennborg
95c49c6c32
Disable the ssize_t test in format-strings-fixit.c.
...
Turns out this part of the test from r142342 wasn't portable.
The errors on the bots look like this:
E:\bb-win7\cmake-clang-i686-msys\build\tools\clang\test\Sema\Output\format-strings-fixit.c.tmp:58:13: error: conversion specifies type 'unsigned int' but the argument has type 'ssize_t' (aka 'long')
printf("%zd", (ssize_t) 42);
~~^ ~~~~~~~~~~~~
%zd
Obviously we can't typedef ssize_t to someting that doesn't have the same size as size_t and expect it to work.
But it's also weird that the format string "%zd" gets interpreted as "unsigned int" when it should clearly be signed.
llvm-svn: 142345
2011-10-18 08:58:16 +00:00
Hans Wennborg
f99d04f841
Suggest %zu for size_t args to printf.
...
For PR11152. Make PrintSpecifier::fixType() suggest "%zu" for size_t, etc.
rather than looking at the underlying type and suggesting "%llu" or other
platform-specific length modifiers. Applies to C99 and C++11.
llvm-svn: 142342
2011-10-18 08:10:06 +00:00
Eli Friedman
5e9534b0ae
Rewrite parts of MS ABI C++ layout. Based on work by r4start; I ended up doing this while I was trying to review his patch.
...
llvm-svn: 142325
2011-10-18 00:55:28 +00:00
Tanya Lattner
49b3841398
The comparison of two vectors should return a signed result. hasIntegerRepresentation() used to always return false for vectors, but since it was changed, it also
...
changed the return type of a compare of two unsigned vectors to be unsigned. This patch removes the check for hasIntegerRepresentation since its not needed and returns the appropriate signed type.
I added a new test case and updated exisiting test cases that assumed an unsigned result.
llvm-svn: 142250
2011-10-17 21:00:38 +00:00
Richard Smith
eda61288ad
Perform an lvalue-to-rvalue conversion on an array index in a __builtin_offsetof expression.
...
llvm-svn: 142179
2011-10-17 05:48:07 +00:00
Peter Collingbourne
5aa6ecb619
Add sema checks for calls to functions taking static array parameters
...
llvm-svn: 142157
2011-10-16 21:17:32 +00:00
Anton Korobeynikov
f82017f3fe
Missed tests for half FP support
...
llvm-svn: 142017
2011-10-14 23:32:50 +00:00
Matt Beaumont-Gay
c622163b0f
Only warn in -Wliteral-conversion if the conversion loses information
...
llvm-svn: 141955
2011-10-14 15:36:25 +00:00
Ted Kremenek
596fa16dd3
Tweak -Wuninitialized's handling of 'int x = x' to report that as the root cause of an uninitialized variable IFF there are other uses of that uninitialized variable. Fixes <rdar://problem/9259237>.
...
llvm-svn: 141881
2011-10-13 18:50:06 +00:00
Bob Wilson
73a4deb33d
Change __extension__ to disable only diagnostics controlled by -pedantic.
...
This changes clang to match GCC's behavior for __extension__, which temporarily
disables the -pedantic flag. Warnings that are enabled without -pedantic
are not affected. Besides the general goodness of matching GCC's precedent,
my motivation for this is that macros in the arm_neon.h header need to use
__extension__ to avoid pedantic complaints about their use of statement
expressions, yet we still want to warn about incompatible pointer arguments
for those macros.
llvm-svn: 141804
2011-10-12 19:55:31 +00:00
Rafael Espindola
2d21ab024e
Add returns_twice to functions that are known to return twice. This implements
...
the same behavior of gcc by keeping the attribute out of the function type.
llvm-svn: 141803
2011-10-12 19:51:18 +00:00
Daniel Dunbar
b25bfde52d
Frontend: Replace -nostdinc by -nostdsysteminc (which is just system include
...
paths). The -nostdinc behavior is now -nostdsysteminc + -nobuiltininc.
llvm-svn: 141691
2011-10-11 18:20:10 +00:00
Eli Friedman
df14b3a837
Initial implementation of __atomic_* (everything except __atomic_is_lock_free).
...
llvm-svn: 141632
2011-10-11 02:20:01 +00:00
Chandler Carruth
08d0491006
Hack in a workaround for PR11082 until we have a proper fix. This
...
un-breaks every glib-dependent compile with Clang.
I'm not sure this is even the best workaround, so suggestions welcome.
llvm-svn: 141381
2011-10-07 18:40:27 +00:00
Ted Kremenek
171969c8c2
r141345 also fixed a -Wuninitialized bug where loop conditions were not always flagged as being uninitialized. Addresses <rdar://problem/9432305>.
...
llvm-svn: 141346
2011-10-07 00:52:56 +00:00
Ted Kremenek
f8fd4d4962
Fix infinite loop in -Wuninitialized reported in PR 11069.
...
llvm-svn: 141345
2011-10-07 00:42:48 +00:00
Eli Friedman
0dfb889575
Support for C1x _Atomic specifier (see testcase). This is primarily being committed at the moment to help support C++0x <atomic>, but it should be a solid base for implementing the full specification of C1x _Atomic.
...
Thanks to Jeffrey Yasskin for the thorough review!
llvm-svn: 141330
2011-10-06 23:00:33 +00:00
Ted Kremenek
540017e54e
Use a sidetable in ASTContext for ParmVarDecls whose index exceeds the 8 bits reserved for that value in VarDecl. Fixes PR 10538.
...
llvm-svn: 141273
2011-10-06 05:00:56 +00:00
Daniel Dunbar
096ed290a1
Driver & AST: Implement support for -fpack-struct and -fpack-struct= command
...
line options.
- <rdar://problem/10120602>, PR9631
llvm-svn: 141211
2011-10-05 21:04:55 +00:00
Fariborz Jahanian
48c69106e4
c: assignment/init of a function pointer whose function(s)
...
return to one which does not return (has noreturn attribute)
should warn as it is an unsafe assignment. // rdar://10095762
c++ already handles this. This is the c version.
llvm-svn: 141141
2011-10-05 00:05:34 +00:00
John McCall
42856de542
Hey, maybe we shouldn't silently ignore decl attributes
...
on declarators written as types.
llvm-svn: 140931
2011-10-01 05:17:03 +00:00
Eli Friedman
271002fc99
Support dllimport and dllexport on x86-64 Windows. PR10978. Patch by Ruben Van Boxem.
...
llvm-svn: 140871
2011-09-30 18:53:25 +00:00