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
John McCall
32f5fe1467
Add explicit attributes to mark functions as having had their
...
CoreFoundation object-transfer properties audited, and add a #pragma
to cause them to be automatically applied to functions in a particular
span of code. This has to be implemented largely in the preprocessor
because of the requirement that the region be entirely contained in
a single file; that's hard to impose from the parser without registering
for a ton of callbacks.
llvm-svn: 140846
2011-09-30 05:12:12 +00:00
Eli Friedman
a4b02c30de
Some fixes for MS-style asm parsing: specifically, add some error checking, and handle asm comments using semicolons correctly. (The comments are actually surprisingly tricky.)
...
llvm-svn: 140837
2011-09-30 01:13:51 +00:00
Fariborz Jahanian
d71061298c
c - Enumerators may inherit the deprecated/unavailable
...
attributes from the enumeration type.
// rdar://10201690
llvm-svn: 140800
2011-09-29 18:40:01 +00:00
Peter Collingbourne
2f3cf4b158
Add support for alignment-specifiers in C1X and C++11, remove
...
support for the C++0x draft [[align]] attribute and add the C1X
standard header file stdalign.h
llvm-svn: 140796
2011-09-29 18:04:28 +00:00
Ted Kremenek
6e302b2e6e
Do not warn about empty format strings when there are no data arguments. Fixes <rdar://problem/9473155>.
...
llvm-svn: 140777
2011-09-29 05:52:16 +00:00
Eli Friedman
9ab36372db
PR11002: Make sure we emit sentinel warnings with a valid source location. (Ideally, we want to use the location returned by getLocForEndOfToken, but that is not always successful.)
...
llvm-svn: 140658
2011-09-27 23:46:37 +00:00
Eli Friedman
84d2d3a90e
Some changes to improve compatibility for MSVC-style C++ struct layout. Patch from r4start at gmail.com (with some minor modifications by me).
...
llvm-svn: 140623
2011-09-27 19:12:27 +00:00
Eli Friedman
d8d7a37437
CheckStringInit has side effects; make sure we don't run it in VerifyOnly mode, at least for the moment. <rdar://problem/10185490>.
...
Sebastian, please take a look at this; I'm not entirely sure it is the right thing to do.
llvm-svn: 140552
2011-09-26 19:09:09 +00:00