Jordy Rose
45d8c12b68
[analyzer] Change large if body to early return. No functionality change.
...
llvm-svn: 132956
2011-06-14 01:26:48 +00:00
Jordy Rose
d359289669
[analyzer] Fix modeling of strnlen to be more conservative. Move tests we can't properly model (yet?) to string-fail.c.
...
llvm-svn: 132955
2011-06-14 01:15:31 +00:00
Eli Friedman
51dd0185d6
Make __gnu_inline__ functions in gnu99 mode work the same way as inline functions in gnu89 mode in terms of redefinitions.
...
rdar://9559708 .
llvm-svn: 132953
2011-06-13 23:56:42 +00:00
Devang Patel
297207f813
Put local variables in appropriate debug info scope.
...
This fixes radar 8757124.
llvm-svn: 132949
2011-06-13 23:15:32 +00:00
Devang Patel
b4956a7fac
Remote this unreliable test case because it did not do its job.
...
llvm-svn: 132948
2011-06-13 23:14:35 +00:00
Eli Friedman
97f3d1a5ee
Update extensions section of the docs to account for wacky gcc stuff we did end up implementing.
...
llvm-svn: 132947
2011-06-13 23:12:01 +00:00
Eli Friedman
a526f275e3
Whack a bunch of tests in CodeGenCXX to work on ARM (using ARM ABI). Batch 1 of 3 or so.
...
llvm-svn: 132945
2011-06-13 22:51:21 +00:00
Benjamin Kramer
dc0a46d29a
Put classes into anonymous namespaces.
...
llvm-svn: 132924
2011-06-13 18:38:45 +00:00
Douglas Gregor
c9224d6714
Eliminate the -f[no]objc-infer-related-result-type flags; there's no
...
reason to allow the user to control these semantics through a flag.
llvm-svn: 132919
2011-06-13 16:42:53 +00:00
Fariborz Jahanian
bf31c4e4ca
Update Indexer test for new 'atomic' keyword.
...
llvm-svn: 132918
2011-06-13 16:42:02 +00:00
Douglas Gregor
c0629e031c
Document CheckObjCMethodOverrides
...
llvm-svn: 132917
2011-06-13 16:07:18 +00:00
David Majnemer
254a5c07e7
Give a diagnostic when using non-POD types in a va_arg
...
llvm-svn: 132905
2011-06-13 06:37:03 +00:00
David Majnemer
0ac67fa22f
Improve the diagnostics generated for switch statements missing expressions
...
- Move the diagnostic to the case statement instead of at the end of the switch
- Add a fix-it hint as to how to fix the compilation error
llvm-svn: 132903
2011-06-13 05:50:12 +00:00
Chandler Carruth
ff455bbc3c
Fix a broken index left over from before this function was converted to
...
handle memcpy and memmove. Spotted by Nico.
llvm-svn: 132902
2011-06-13 05:00:35 +00:00
David Majnemer
bffdbd288a
Correct the spelling of instantiation
...
llvm-svn: 132901
2011-06-13 04:29:15 +00:00
Benjamin Kramer
ec33d0cc1b
My calendar says it's 2011.
...
llvm-svn: 132894
2011-06-12 15:26:54 +00:00
Richard Smith
4a4beec7b0
Don't assert on initialized typedef declarations in classes:
...
struct {
typedef int A = 0;
};
According to the C++11 standard, this is not ill-formed, but does not have any ascribed meaning. We can't reasonably accept it, so treat it as ill-formed.
Also switch C++ from an incorrect 'fields can only be initialized in constructors' diagnostic for this case to C's 'illegal initializer (only variables can be initialized)'
llvm-svn: 132890
2011-06-12 11:43:46 +00:00
Richard Smith
e4073e0ae1
Test for C++11 [class]p6 (trivial classes).
...
llvm-svn: 132889
2011-06-12 09:24:32 +00:00
Fariborz Jahanian
8086dfc7d4
Added 'atomic' for objc properties.
...
llvm-svn: 132879
2011-06-11 17:37:19 +00:00
Richard Smith
938f40b5aa
Implement support for C++11 in-class initialization of non-static data members.
...
llvm-svn: 132878
2011-06-11 17:19:42 +00:00
Fariborz Jahanian
1c2d29e3c3
Add code completetion code for the new 'atomic' attribute
...
keyword in objc property decl.
llvm-svn: 132877
2011-06-11 17:14:27 +00:00
Douglas Gregor
53cad081e3
Extra test for related result type inference
...
llvm-svn: 132874
2011-06-11 04:42:58 +00:00
Douglas Gregor
2720dc656b
Fix order of operands for the warning about incompatible Objective-C
...
pointer assignment in C++. This was a longstanding problem spotted by
Jordy Rose.
llvm-svn: 132873
2011-06-11 04:42:12 +00:00
Douglas Gregor
33823727c8
Implement Objective-C Related Result Type semantics.
...
Related result types apply Cocoa conventions to the type of message
sends and property accesses to Objective-C methods that are known to
always return objects whose type is the same as the type of the
receiving class (or a subclass thereof), such as +alloc and
-init. This tightens up static type safety for Objective-C, so that we
now diagnose mistakes like this:
t.m:4:10: warning: incompatible pointer types initializing 'NSSet *'
with an
expression of type 'NSArray *' [-Wincompatible-pointer-types]
NSSet *array = [[NSArray alloc] init];
^ ~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:72:1:
note:
instance method 'init' is assumed to return an instance of its
receiver
type ('NSArray *')
- (id)init;
^
It also means that we get decent type inference when writing code in
Objective-C++0x:
auto array = [[NSMutableArray alloc] initWithObjects:@"one", @"two",nil];
// ^ now infers NSMutableArray* rather than id
llvm-svn: 132868
2011-06-11 01:09:30 +00:00
Fariborz Jahanian
c3bcde088f
Restore 'atomic' as an attribute of objc
...
properties.
llvm-svn: 132866
2011-06-11 00:45:12 +00:00
Eli Friedman
300f55dcad
PR10120: Make CodeGenModule::getVTableLinkage use NamedDecl::getLinkage to determine whether the vtable should be externally visible, instead of a rough approximation of it which messes up with templates.
...
While I'm here, zap the other user of isInAnonymousNamespace outside of Decl.cpp.
llvm-svn: 132861
2011-06-10 21:53:06 +00:00
Nick Lewycky
cd4cfb3e29
__OBJC__ is also a standard predefined macro.
...
llvm-svn: 132855
2011-06-10 20:56:43 +00:00
Alexis Hunt
b1b368f36d
This change is breaking selfhost. Revert it until I have more time
...
to study it.
llvm-svn: 132843
2011-06-10 12:07:09 +00:00
Alexis Hunt
387e6d5dc6
Uncomment this testcase now that we pass it.
...
llvm-svn: 132842
2011-06-10 09:32:33 +00:00
Alexis Hunt
ff0ff6549d
Implement caching of copy assignment operator lookup.
...
I believe, upon, careful review, that this code causes us to incorrectly
handle exception specifications of copy assignment operators in C++03
mode. However, we currently do not seem to properly implement the subtle
distinction between copying of members and bases made by implicit copy
constructors and assignment operators in C++03 - namely that they are
limited in their overload selection - in all cases. As such, I feel that
committing this code is correct pending a careful review of our
implementation of these semantics.
llvm-svn: 132841
2011-06-10 09:24:41 +00:00
Jordy Rose
1734737d9f
[analyzer] PR8962 again. Ban ParenExprs (and friends) from block-level expressions (by calling IgnoreParens before adding expressions to blocks). Undo 132769 (LiveVariables' local IgnoreParens), since it's no longer necessary.
...
Also, have Environment stop looking through NoOp casts; it didn't match the behavior of LiveVariables. And once that's gone, the whole cast block of that switch is unnecessary.
llvm-svn: 132840
2011-06-10 08:49:37 +00:00
Alexis Hunt
899bd447cf
Implement caching for copy constructors in similar situations.
...
llvm-svn: 132835
2011-06-10 04:44:37 +00:00
Alexis Hunt
eef8ee0c8d
Implement caching of default constructors on the resolution table. This
...
isn't yet used for the less controlled environments of initialization.
Also a few random text fixups.
llvm-svn: 132833
2011-06-10 03:50:41 +00:00
Richard Trieu
caa33d36fb
Made changes to how 'struct'/'class' mismatches are handled in -Wmismatched-tags.
...
- Removed fix-it hints from template instaniations since changes to the
templates are rarely helpful.
- Changed the caret in template instaniations from the class/struct name to the
class/struct keyword, matching the other warnings.
- Do not offer fix-it hints when multiple declarations disagree. Warnings are
still given.
- Once a definition is found, offer a fix-it hint to all previous declarations
with wrong tag.
- Declarations that disagree with a previous definition will get a fix-it hint
to change the declaration.
llvm-svn: 132831
2011-06-10 03:11:26 +00:00
Fariborz Jahanian
113a518631
Add few missing files in AST directory to xcode project.
...
llvm-svn: 132812
2011-06-09 22:34:17 +00:00
Fariborz Jahanian
624b299685
Don't add objc method name mangling to locally declared function.
...
// rdar://9566314
llvm-svn: 132791
2011-06-09 19:25:01 +00:00
Hans Wennborg
de2e67e546
Handle overloaded operators in ?: precedence warning
...
This is a follow-up to r132565, and should address the rest of PR9969:
Warn about cases such as
int foo(A a, bool b) {
return a + b ? 1 : 2; // user probably meant a + (b ? 1 : 2);
}
also when + is an overloaded operator call.
llvm-svn: 132784
2011-06-09 17:06:51 +00:00
Bob Wilson
8b51f19ec1
Add isVCVT_N flag to identify Neon VCVT_N intrinsics, which require special
...
range checking for immediate operands. Radar 9558930.
llvm-svn: 132783
2011-06-09 17:03:27 +00:00
Jordy Rose
891d613289
[analyzer] Ignore parentheses around block-level expressions when computing liveness. Fixes the other half of PR8962.
...
llvm-svn: 132769
2011-06-09 05:44:04 +00:00
Jordy Rose
ab8a668849
[analyzer] Look through __extension__ expressions in a GRState's Environment. Fixes PR8962.
...
llvm-svn: 132762
2011-06-08 22:47:39 +00:00
Ted Kremenek
ef644c56a2
Remove stale reference to libIndex.
...
llvm-svn: 132757
2011-06-08 19:52:31 +00:00
Fariborz Jahanian
5d5cf1905c
Remove 'atomic' as a property attribute keyword.
...
It is not a sanctioned keyword and is assumed as default.
// rdar://8790791
llvm-svn: 132753
2011-06-08 16:40:09 +00:00
Stuart Hastings
5b7b11cedb
Followup to 132737; make two-character string explicit, add some
...
comments. rdar://problem/9037836
llvm-svn: 132752
2011-06-08 16:06:31 +00:00
Peter Collingbourne
23f1bee3c0
Modify a diagnostic introduced in r132612 to emit QualTypes directly
...
This fixes a memory error on FreeBSD (and is the right thing to do
in any case).
llvm-svn: 132750
2011-06-08 15:15:17 +00:00
Chandler Carruth
e6c881843d
Fix a bunch more notes that were emitted even when the diagnostic they
...
were intended for was suppressed.
llvm-svn: 132746
2011-06-08 10:26:03 +00:00
Chandler Carruth
2561f09c9b
Revert "hack in my new variables for GCC"
...
Very sorry for the accidental commit of WIP code.
llvm-svn: 132745
2011-06-08 10:14:38 +00:00
Chandler Carruth
d54186ac33
Fix a regression in the two-phase lookup diagnostics that switching the
...
namespace set algorithm (re-)introduced. We may not have seen the 'std'
namespace, but we should still suggested associated namespaces. Easy
fix, but a bit annoying to test.
llvm-svn: 132744
2011-06-08 10:13:17 +00:00
Chandler Carruth
0169ec0988
hack in my new variables for GCC
...
llvm-svn: 132743
2011-06-08 10:13:14 +00:00
Stuart Hastings
7fdc6707ac
Clang support for ARM Uv/Uy/Uq inline-asm constraints.
...
rdar://problem/9037836
llvm-svn: 132737
2011-06-07 23:45:05 +00:00
Joerg Sonnenberger
87717773e2
Sort -lgcc after -lgcc_s for NetBSD, otherwise shared libraries on i386
...
may pick it up. This would create bad text relocations.
llvm-svn: 132736
2011-06-07 23:39:17 +00:00
Fariborz Jahanian
c32830cd64
More coherent diagnostic when a stack variable is
...
declared __weak objc-gc mode. // rdar://9666091.
llvm-svn: 132731
2011-06-07 20:15:46 +00:00
Nick Lewycky
a6820332b3
The macros defined by the language standard are still available even when the
...
-undef flag is passed in. Also __ASSEMBLER__ with -x assembler-with-cpp. (Don't
ask.)
llvm-svn: 132708
2011-06-07 06:07:12 +00:00
Douglas Gregor
8a6d0e091b
Downgrade the warning about the use of typedefs for class template
...
specializations within an explicit instantiation to default to off
(enabled by -pedantic). Nobody else seem to implement C++
[temp.explicit]p3. Fixes PR10093.
llvm-svn: 132704
2011-06-07 02:21:18 +00:00
Alexis Hunt
ba8e18d9ae
Catch the memory leak in a bucket
...
llvm-svn: 132700
2011-06-07 00:11:58 +00:00
Eli Friedman
6b3411b2fd
Second try at fixing this test, this time without breaking 32-bit Darwin builders.
...
llvm-svn: 132694
2011-06-06 22:25:48 +00:00
Eli Friedman
9ed3cde1fa
Start fixing up clang tests to work on the clang-native-arm-cortex-a9 builder.
...
llvm-svn: 132691
2011-06-06 21:23:05 +00:00
Alexis Hunt
6fad3b9314
Don't put a note in the DiagGroup
...
llvm-svn: 132687
2011-06-06 20:30:15 +00:00
Jonathan D. Turner
780a6bf05b
Touchup to comments that weren't quite in sync with code
...
llvm-svn: 132679
2011-06-06 16:22:39 +00:00
Douglas Gregor
522d5eb7c3
Diagnose the condition in C++ [temp.expl.spec]p16 that prohibits
...
specializing a member of an unspecialized template, and recover from
such errors without crashing. Fixes PR10024 / <rdar://problem/9509761>.
llvm-svn: 132677
2011-06-06 15:22:55 +00:00
Francois Pichet
7df6805d76
ok now, let's fix that MSVC warning for real.
...
llvm-svn: 132675
2011-06-06 02:57:59 +00:00
Francois Pichet
a5276ec598
Fix MSVC warning:
...
"unsafe mix of type 'int' and type 'bool' in operation"
llvm-svn: 132674
2011-06-06 02:42:06 +00:00
Chandler Carruth
d50f169098
Richard Smith was correct about how the sets should be computed for
...
this. My suggestion assumed a viable erase method for iterators on
SmallPtrSet.
This patch restores his original pattern.
llvm-svn: 132673
2011-06-05 23:36:55 +00:00
Richard Smith
998a591e32
Fix PR10053: Improve diagnostics and error recovery for code which some compilers incorrectly accept due to a lack of proper support for two-phase name lookup.
...
llvm-svn: 132672
2011-06-05 22:42:48 +00:00
Benjamin Kramer
f90b5de834
Toolchain support for Ubuntu Oneiric. Patch by Michael Wild!
...
llvm-svn: 132669
2011-06-05 16:08:59 +00:00
Sebastian Redl
d201edf1fc
Drop most of InitializationSequence::SequenceKind's values. They didn't really contain any information that the step array didn't contain too. This makes debugging dumps a bit less informative, but probably not significantly so. The advantage is that the redundancy is gone, so the code is easier to understand.
...
ReferenceBinding is still there, because it is used in some unclear code.
llvm-svn: 132667
2011-06-05 13:59:11 +00:00
Sebastian Redl
724bfe18b7
Remove more references to FailedSequence.
...
llvm-svn: 132666
2011-06-05 13:59:05 +00:00
Sebastian Redl
c7ca587512
Remove all references to InitializationSequence::FailedSequence from outside SemaInit.cpp. Replace them with the boolean conversion or the new Failed() function. This is a first step towards removing InitializationSequence::SequenceKind. No functionality change.
...
llvm-svn: 132664
2011-06-05 12:23:28 +00:00
Sebastian Redl
f08872fb29
More std::initializer_list tests.
...
llvm-svn: 132663
2011-06-05 12:23:21 +00:00
Sebastian Redl
3da3489e49
Parse C++0x generalized initializers.
...
llvm-svn: 132662
2011-06-05 12:23:16 +00:00
Sebastian Redl
144857f4cc
Expand on braced init list tests.
...
llvm-svn: 132661
2011-06-05 12:23:08 +00:00
Douglas Gregor
377c109f21
Identity and non-identity standard conversion sequences can be
...
compared even when one is a reference binding and the other is not
(<rdar://problem/9173984>), but the definition of an identity sequence
does not involve lvalue-to-rvalue adjustments (PR9507). Fix both
inter-related issues.
llvm-svn: 132660
2011-06-05 06:15:20 +00:00
Douglas Gregor
c507db4f70
Add name mangling for expr .* expr. Fixes PR9983 / <rdar://problem/9486332>.
...
llvm-svn: 132659
2011-06-05 05:27:58 +00:00
Douglas Gregor
7f139d8103
Allow block returns in C++ with the form
...
return <expression> ;
in blocks with a 'void' result type, so long as <expression> has type
'void'. This follows the rules for C++ functions.
llvm-svn: 132658
2011-06-05 05:14:41 +00:00
Douglas Gregor
0aa91e0a66
When inferring the result type of a block based on a return statement
...
with a type-dependent expression, infer the placeholder type
'Context.DependentTy' to indicate that this is just a
placeholder. Fixes PR9982 / <rdar://problem/9486685>.
llvm-svn: 132657
2011-06-05 05:04:23 +00:00
Rafael Espindola
d1ca71a294
Fix cmake build.
...
llvm-svn: 132653
2011-06-04 23:22:38 +00:00
Richard Smith
c2ed270c0f
Remove the old implementation of -verify, which has been dead code since r88750.
...
llvm-svn: 132651
2011-06-04 21:35:57 +00:00
Nick Lewycky
7574774874
Revert r132630. GCC passes everything down, we aren't trying to replicate that.
...
llvm-svn: 132637
2011-06-04 09:06:25 +00:00
Roman Divacky
5e300b82e2
Adjust the linker for PowerPC64/-m32 on FreeBSD too.
...
llvm-svn: 132635
2011-06-04 07:40:24 +00:00
Roman Divacky
00859c29bf
Make -m32 work on FreeBSD/PowerPC64.
...
llvm-svn: 132634
2011-06-04 07:37:31 +00:00
Nick Lewycky
6d92b72e70
GCC passes -z foo directly through to the linker (and yes -z=foo becomes
...
"-z =foo"). Do the same thing in clang.
llvm-svn: 132630
2011-06-04 06:48:26 +00:00
Nick Lewycky
97864dac76
On linux, -nostdlib was causing a --start-group with no --end-group to be passed
...
to the linker.
llvm-svn: 132629
2011-06-04 06:27:06 +00:00
Nick Lewycky
62188bbb90
Identifiers with _CapitalLetter are reserved, so don't use them. Prefer the
...
common C++ pattern of using the same name for the constructor argument as you
do for the member. Noticed by inspection.
llvm-svn: 132626
2011-06-04 05:19:42 +00:00
Galina Kistanova
a6faf8e28b
These tests require particular registered targets. Declared as such.
...
llvm-svn: 132623
2011-06-04 04:38:16 +00:00
Alexis Hunt
4ac55e33be
Reimplement r132572 on top of a FoldingSet, thus hopefully solving both
...
the self-host failures and Chandler's concerns.
llvm-svn: 132622
2011-06-04 04:32:43 +00:00
Nick Lewycky
c101ebfc8f
Remove extraneous "virtual" keyword and non-virtual destructor. Caught by
...
-Wnon-virtual-dtor!
llvm-svn: 132619
2011-06-04 02:04:22 +00:00
Jordy Rose
fb5e8c2814
[analyzer] Change an indent-if to an early return. No functionality change.
...
llvm-svn: 132618
2011-06-04 01:50:25 +00:00
Jordy Rose
097c5397a8
[analyzer] Don't crash when copying an unknown number of bytes with memcpy(). Also handle all memcpy-family return values in evalCopyCommon(), rather than having some outside and some inside.
...
llvm-svn: 132617
2011-06-04 01:47:27 +00:00
Jordy Rose
64ae92e5c5
[analyzer] Remove extra assignment that actually lost a few of the assumptions.
...
llvm-svn: 132614
2011-06-04 01:22:21 +00:00
Tanya Lattner
55808c1026
Add support for builtin astype:
...
__builtin_astype(): Used to reinterpreted as another data type of the same size using for both scalar and vector data types.
Added test case.
llvm-svn: 132612
2011-06-04 00:47:47 +00:00
Devang Patel
1b291b22d0
Rework r132576.
...
Emit debug info only if there is an insertion point. The debug info should not force an insertion point. Codegen may later on decide to not emit code for some reason, see extensive comment in CodeGenFunction::EmitStmt(), and debug info should not get in the way.
llvm-svn: 132610
2011-06-04 00:38:02 +00:00
Jordy Rose
4451cd4511
[analyzer] Fix comment for (still-disabled) evalStrncpy
...
llvm-svn: 132608
2011-06-04 00:05:23 +00:00
Jordy Rose
63b84be6cb
[analyzer] Fix handling of "copy zero bytes" for memcpy and friends.
...
llvm-svn: 132607
2011-06-04 00:04:22 +00:00
Jordy Rose
aee7fb9e64
[analyzer] __mempcpy_chk is the same as mempcpy (at least to CStringChecker)
...
llvm-svn: 132605
2011-06-03 23:42:56 +00:00
Jonathan D. Turner
205c7d559f
Improvements to abbreviations for PCH which add support for EnumDecl, ObjCIvarDecl, TypedefDecl, VarDecl and FieldDecl and improve support for ParmVarDecl.
...
llvm-svn: 132604
2011-06-03 23:11:16 +00:00
Douglas Gregor
4cd65962dc
Expose @synthesize and @dynamic via their own cursor kinds in
...
libclang. Fixes <rdar://problem/9537904>.
llvm-svn: 132603
2011-06-03 23:08:58 +00:00
Galina Kistanova
f56b4f6fdd
These tests require particular registered targets. Declared as such.
...
llvm-svn: 132600
2011-06-03 22:24:54 +00:00
Jonathan D. Turner
d09655fce5
Test of commit access.
...
llvm-svn: 132596
2011-06-03 21:46:44 +00:00
Alexis Hunt
967ea7ca6b
Revert r132572 to figure out why it broke selfhost and clean it up as
...
suggested by Chandler.
llvm-svn: 132593
2011-06-03 21:10:40 +00:00
Devang Patel
887e215e64
Emit debug info only if there is an insertion point. The debug info should not force an insertion point. Codegen may later on decide to not emit code for some reason, see extensive comment in CodeGenFunction::EmitStmt(), and debug info should not get in the way.
...
llvm-svn: 132576
2011-06-03 19:21:47 +00:00
Alexis Hunt
1b02ed8c7c
Begin implementing a cache of special member lookups. Currently only
...
destructors are implemented but other special members are on the way,
which is where the real benefits of this will be visible.
llvm-svn: 132572
2011-06-03 18:36:49 +00:00