Commit Graph

30750 Commits

Author SHA1 Message Date
Chris Lattner e67977214f mention new VLA behavior in gnu* vs c* mode dox.
llvm-svn: 133030
2011-06-15 00:41:40 +00:00
Douglas Gregor a860e6aebc Introduce a -cc1-level option to turn off related result type
inference, to be used (only) by the Objective-C rewriter.

llvm-svn: 133025
2011-06-14 23:20:43 +00:00
Ted Kremenek 192ed0b7ee [format strings] correctly suggest correct type for '%@' specifiers. Fixes <rdar://problem/9607158>.
llvm-svn: 133024
2011-06-14 22:56:51 +00:00
Fariborz Jahanian d53eca68f0 Bad table discription of fromat-y2k causes
no-format-y2k turn off -Wformat altogether. 
// rdar://9504680

llvm-svn: 133015
2011-06-14 21:54:00 +00:00
Blaine Garst f562bf239c fix example as per rdar://problem/9461587
llvm-svn: 133012
2011-06-14 21:41:00 +00:00
Eli Friedman 50ed150632 Whack a bunch of tests in CodeGenCXX to work on ARM (using ARM ABI). Batch 2 of 3.
llvm-svn: 133011
2011-06-14 21:20:53 +00:00
Chris Lattner 848fa212e8 revert r133003 and fix the bug properly: the issue was that ## in a token
lexer is not a paste operator, it is a normal token.  This fixes a conformance
issue shown here:
http://p99.gforge.inria.fr/c99-conformance/c99-conformance-clang-2.9.html

and it defines away the crash from before.

llvm-svn: 133005
2011-06-14 18:19:37 +00:00
Chris Lattner 07efdfdafa Fix a crash on the testcase in PR9981 / rdar://9486765.
llvm-svn: 133003
2011-06-14 18:12:03 +00:00
Douglas Gregor d1cff77200 When profiling FunctionProtoTypes, don't canonicalize the expression
in a noexcept exception specification because it isn't part of the
canonical type. This ensures that we keep the exact expression written
in the noexcept exception specification, rather than accidentally
"adopting" a previously-written and canonically "equivalent" function
prototype. Fixes PR10087.

llvm-svn: 132998
2011-06-14 16:42:44 +00:00
Nico Weber c5e7386983 Warn on memset(ptr, 0, sizeof(ptr)). Diagnostic wording by Jordy Rose.
llvm-svn: 132996
2011-06-14 16:14:58 +00:00
David Majnemer c6a998712d Remove the Fix-it for missing statement in switches
llvm-svn: 132994
2011-06-14 15:24:38 +00:00
Benjamin Kramer 648788e722 StaticDiagNameIndex is never written to, place it into .rodata.
llvm-svn: 132990
2011-06-14 13:15:38 +00:00
Jay Foad 0b16695d93 Hyphenate "argument-dependent".
llvm-svn: 132989
2011-06-14 12:59:25 +00:00
Chris Lattner f35de48c90 when compiling in a GNU mode (e.g. gnu99) treat VLAs with a size that can be folded to a constant
as constant size arrays.  This has slightly different semantics in some insane cases, but allows
us to accept some constructs that GCC does.  Continue to be pedantic in -std=c99 and other
modes.  This addressed rdar://8733881 - error "variable-sized object may not be initialized"; g++ accepts same code

llvm-svn: 132983
2011-06-14 06:38:10 +00:00
Chris Lattner 9925ec8bf4 fix rdar://9204520 - Accept int(0.85 * 10) as an initializer in a class member
as an extension.

llvm-svn: 132980
2011-06-14 05:46:29 +00:00
David Majnemer c75d1a1098 Properly diagnose using abstract and incomplete types in va_arg
- Move a test from test/SemaTemplate/instantiate-expr-3.cpp, it did not belong there
- Incomplete and abstract types are considered hard errors

llvm-svn: 132979
2011-06-14 05:17:32 +00:00
Bruno Cardoso Lopes 3b0297a98c Update the prefetch intrinsic usage. Now the last argument tells codegen
whether it's a data or instruction cache access.

llvm-svn: 132977
2011-06-14 05:00:30 +00:00
Chris Lattner ee7286f02d fix rdar://9546171 - -Wshorten-64-to-32 shouldn't warn on vector bitcasts.
llvm-svn: 132975
2011-06-14 04:51:15 +00:00
Peter Collingbourne ee781d586e Move GlobalDecl to AST
llvm-svn: 132973
2011-06-14 04:02:39 +00:00
Jordy Rose bc7483f505 [analyzer] CStringChecker checks functions in the C standard library, not C++. Its external name is now unix.experimental.CString.
llvm-svn: 132958
2011-06-14 01:40:43 +00:00
Eli Friedman eb7fab61bd The LLVM IR representation of byval arguments has a rather strange property: if the alignment of an argument to a call is less than the specified byval alignment for that argument, there is no way to specify the alignment of the implied copy. Therefore, we must ensure that the alignment of the argument is at least the byval alignment. To do this, we have to mess with the alignment of relevant alloca's in some cases, and insert a copy that conceptually shouldn't be necessary in some cases.
This patch tries relatively hard to avoid creating an extra copy if it can be avoided (see test3 in the included testcase), but it is not possible to avoid in some cases (like test2 in the included testcase).

rdar://9483886

llvm-svn: 132957
2011-06-14 01:37:52 +00:00
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
Galina Kistanova b38fd263bd Added registered targets for in-test dependency declarations.
llvm-svn: 132571
2011-06-03 18:36:30 +00:00
Matt Beaumont-Gay aef8c72255 Don't warn about -Wno-foo where foo is an unknown warning option. Explicitly
passing -Wunknown-warning-option will re-enable warnings about -Wno-foo.

llvm-svn: 132570
2011-06-03 18:30:50 +00:00
Alexis Hunt 6fc542c49b I've had too much to drink, apparently.
llvm-svn: 132566
2011-06-03 18:05:29 +00:00
Hans Wennborg cf9bac4bc9 Warn about missing parentheses for conditional operator.
Warn in cases such as "x + someCondition ? 42 : 0;",
where the condition expression looks arithmetic, and has
a right-hand side that looks boolean.

This (partly) addresses http://llvm.org/bugs/show_bug.cgi?id=9969

llvm-svn: 132565
2011-06-03 18:00:36 +00:00
Alexis Hunt ea31988f63 Implement a warning flag for the warning about default arguments making
special member functions.

llvm-svn: 132564
2011-06-03 17:55:52 +00:00
Hans Wennborg 0bb0df5839 Make -Wignored-qualifiers point to the first ignored qualifier.
In code such as "char* volatile const j()", Clang warns that "volatile
const" will be ignored. Make it point to the first ignored qualifier,
and simplify the code a bit.

llvm-svn: 132563
2011-06-03 17:37:26 +00:00
Devang Patel f1e2a7f0f0 Simplify.
llvm-svn: 132560
2011-06-03 17:23:47 +00:00
Devang Patel 597a730cb8 Fix typedef's context.
llvm-svn: 132557
2011-06-03 17:05:26 +00:00
Rafael Espindola 304902141e We were looking at /usr/lib only if the distro had multilib. This is bogus:
we look in /usr/lib to find crt1.o, and that depends only on where libc
is installed.

This fixes the case of using a different gcc installation in a distro
without multilib.

llvm-svn: 132551
2011-06-03 15:39:42 +00:00
Rafael Espindola d8f92c8dcc Add support for centos.
llvm-svn: 132550
2011-06-03 15:23:24 +00:00
Eric Christopher e97fee6c86 80-column cleanup.
llvm-svn: 132548
2011-06-03 14:52:25 +00:00
Douglas Gregor 28de7a9a1e Improve the instantiation of static data members in
Sema::RequireCompleteExprType() a bit more, setting the point of
instantiation if needed, and skipping explicit specializations entirely.

llvm-svn: 132547
2011-06-03 14:28:43 +00:00
Francois Pichet b503705e0d Revert r132544. Accidental commit. I got confused with the Tortoise SVN menu.
llvm-svn: 132546
2011-06-03 13:59:45 +00:00
Francois Pichet d4de06861d (no commit message)
llvm-svn: 132544
2011-06-03 13:51:55 +00:00
Eric Christopher 55d4989304 80-col cleanup.
llvm-svn: 132543
2011-06-03 13:28:31 +00:00
Eric Christopher 12d48f7cf1 Separate out these paths a bit by architecture. There are likely other
places this is a problem.

llvm-svn: 132542
2011-06-03 13:24:15 +00:00
Eric Christopher 43a517c7ac Add multi-arch include support for Ubuntu 11.11 with gcc 4.6.0.
Patch by Tobias Hunger!

Fixes PR10008

llvm-svn: 132541
2011-06-03 13:06:30 +00:00
Benjamin Kramer 38bcb72ee0 Copy IsWarnIfUnused too when making a copy of a MacroInfo.
Found by valgrind.

llvm-svn: 132540
2011-06-03 10:33:36 +00:00
Francois Pichet dd04c69a13 My testing shows that function stat has no problem with trailing separators. (tested on Windows and Darwin).
This fixes a bug on Windows:
clang c:\test.cpp

Here the call stat("c:") is not recognized as a directory (must be "c:\").

llvm-svn: 132539
2011-06-03 09:44:29 +00:00
Francois Pichet 21cd5db7bd Correctly revert r131347: function explicit specialization at class scope.
I'll try to implement this functionality again soon.

llvm-svn: 132536
2011-06-03 07:35:49 +00:00
Chandler Carruth ac6872655b Clean up the "non-POD memaccess" stuff some. This adds a properly named
diagnostic group to cover the cases where we have definitively bad
behavior: dynamic classes.

It also rips out the existing support for POD-based checking. This
didn't work well, and triggered too many false positives. I'm looking
into a possibly more principled way to warn on the fundamental buggy
construct here. POD-ness isn't the critical aspect anyways, so a clean
slate is better. This also removes some silliness from the code until
the new checks arrive.

llvm-svn: 132534
2011-06-03 06:23:57 +00:00
NAKAMURA Takumi 8b73b3e981 Untabify and fix whitespace.
llvm-svn: 132531
2011-06-03 03:49:51 +00:00
Douglas Gregor 57d4f972b7 When performing template argument deduction given a function argument
of incomplete array type, attempt to complete the array type. This was
made much easier by Chandler's addition of RequireCompleteExprType(),
which I've tweaked (slightly) to improve the consistency of the
DeclRefExpr. Fixes PR7985.

llvm-svn: 132530
2011-06-03 03:35:07 +00:00
Douglas Gregor 2f157c9ae2 When checking the instantiation of a default template argument against
the template parameter, perform the checking as a "specified" template
argument rather than a "deduced" template argument; the latter implies
stricter type checking that is not permitted for default template
arguments.

Also, cleanup our handling of substitution of explicit template
arguments for a function template. We were actually performing some
substitution of default arguments at this point!

Fixes PR10069.

llvm-svn: 132529
2011-06-03 02:59:40 +00:00
Douglas Gregor 03412ba003 Introduce additional abbreviations into the AST writer for
DeclRefExprs, IntegerLiterals, and others, reducing Cocoa PCH size by
~1% and C++ header size by ~2.5%. From Jonathan Turner!

llvm-svn: 132528
2011-06-03 02:27:19 +00:00
Eli Friedman 1ddf91621e Fix the Windows buildbots, now that I can actually see what was going wrong with this test.
llvm-svn: 132521
2011-06-03 00:54:56 +00:00
John McCall 77bdccd9bc Test case for some AVX builtins. Patch by Syoyo Fujita!
llvm-svn: 132518
2011-06-03 00:02:45 +00:00
Rafael Espindola 0ddfbe230f We already have support for using c++ headers from a custom location.
Before this patch we would still link with the system libstdc++. It worked
fine most of the time, but would break if the used headers were a lot newer
than the system libraries.

This patch changes the driver to use the libraries corresponding to the
headers the user selected.

This fixes, for example, using 4.5 headers in a system with gcc 4.1.

llvm-svn: 132497
2011-06-02 22:18:46 +00:00
Eli Friedman 8c5014dc5e Switch a ridiculous grep over to FileCheck.
llvm-svn: 132496
2011-06-02 22:16:39 +00:00
Galina Kistanova 123363cf10 Reverted r132330, r132321, r132320, r132319 as per discussion. Will try in-test requirement declarations instead.
llvm-svn: 132491
2011-06-02 21:55:39 +00:00
Eli Friedman f7600949f4 Add Debian wheezy/sid to ToolChains.cpp. Patch by Michael Wild. PR10064.
llvm-svn: 132489
2011-06-02 21:36:53 +00:00
Argyrios Kyrtzidis 92dd466a1a [PCH] Store the offsets of source location file entries and go through them
in ASTReader::validateFileEntries().

This avoids going through all source location entries and fixes the performance regression.
Many thanks to Doug for the hint!
(rdar://9530587)

llvm-svn: 132481
2011-06-02 20:01:46 +00:00
Rafael Espindola 9d4a8cf481 Change how we link libprofile_rt.a. While at it, refactor the code a bit.
llvm-svn: 132474
2011-06-02 18:58:46 +00:00
Rafael Espindola 922a624144 Add -fno-gnu89-inline.
llvm-svn: 132468
2011-06-02 17:30:53 +00:00
Manuel Klimek 8a160cc42b Reverts the Tooling changes as requested by Chris.
llvm-svn: 132462
2011-06-02 16:58:33 +00:00
Rafael Espindola fb2af643e4 Implement -fgnu89-inline. Fixes PR10041.
llvm-svn: 132460
2011-06-02 16:13:27 +00:00
Douglas Gregor 857bcdaf03 Tweak code completions for Objective-C Key-Value Observing. The
+keyPathsForValuesAffecting<Key> completion was mislabeled as an
instance method, and +automaticallyNotifiesObserversOf<Key> was
missing entirely. Fixes <rdar://problem/9516762>.

llvm-svn: 132452
2011-06-02 04:02:27 +00:00
Francois Pichet fbf7e173d2 Fix 80-column violation.
llvm-svn: 132447
2011-06-02 00:47:27 +00:00
Eli Friedman 4e2cefffd5 Revert r132426; this test passes more often than not, and we don't have a way to mark tests as intermittently failing at the moment.
llvm-svn: 132446
2011-06-02 00:42:47 +00:00
Akira Hatanaka b579fe5f15 Add stuff for o32 ABI conformance.
llvm-svn: 132443
2011-06-02 00:09:17 +00:00
Douglas Gregor 7e51117db2 Improve the readability of the "Expressive Diagnostics" page, from Dave Yost!
llvm-svn: 132432
2011-06-01 22:45:49 +00:00
Douglas Gregor b32e825ae4 Fix an incorrect warning about explicit template specializations for
nested types, from Michael Han!

llvm-svn: 132431
2011-06-01 22:37:07 +00:00
Argyrios Kyrtzidis 7e48d8ff0c XFAIL the test on windows.
llvm-svn: 132426
2011-06-01 21:52:17 +00:00
Rafael Espindola 341d9b41d4 Add the necessary -L option for finding libprofile_rt.a. It might be a good
idea at some point to split out the directories where we install our runtime
libraries.

llvm-svn: 132425
2011-06-01 21:37:00 +00:00
Ted Kremenek fb43639926 Rename -Wunknown-attributes to -Wattributes to match GCC.
llvm-svn: 132422
2011-06-01 20:09:40 +00:00
Ted Kremenek 8c66ae7ddc Remove derelict documentation.
llvm-svn: 132407
2011-06-01 17:45:02 +00:00
Eli Friedman ede23f760b Don't use stdint.h; including it directly is not allowed from LLVM code because it doesn't exist on MSVC.
llvm-svn: 132403
2011-06-01 16:57:54 +00:00
Douglas Gregor 981e37d727 The expression in a noexcept exception-specification is a
constant-expression, and, therefore, an unevaluated operand. Make it
so.

llvm-svn: 132400
2011-06-01 15:55:51 +00:00
Douglas Gregor 39e9fa938c Implement comparisons between nullptr and Objective-C object
pointers. Fixes PR10052.

llvm-svn: 132397
2011-06-01 15:12:24 +00:00
Benjamin Kramer 9ed423b504 Remove pointless assert, N is unsigned.
llvm-svn: 132392
2011-06-01 08:57:04 +00:00
Benjamin Kramer ded902f4d3 Change a name for consistency and hopefully unbreak builds with gcc 4.6.
llvm-svn: 132391
2011-06-01 08:56:20 +00:00
Nick Lewycky 1be750abc6 Even a return statement of an expression with a dependent type in a void
function might need to clean up its temporaries. Fixes PR10057.

llvm-svn: 132390
2011-06-01 07:44:31 +00:00
Argyrios Kyrtzidis 460132d35c [PCH] Be conservative and check all the files the PCH references to see if
a file was modified since the time the PCH was created.

The parser is not fit to deal with stale PCHs, too many invariants do not hold up. rdar://9530587.

llvm-svn: 132389
2011-06-01 05:43:53 +00:00
Francois Pichet e37eebabe7 Microsoft friend acting as a forward declaration; try#2. Now only 2 lines.
llvm-svn: 132387
2011-06-01 04:14:20 +00:00
Manuel Klimek bc68d09abb Fix broken test on windows. To get operator new working, we need size_t, for which we need to figure out a way to resolve standard include paths in the test.
llvm-svn: 132386
2011-06-01 03:59:13 +00:00
Manuel Klimek 9978c4f730 Fixes Makefile based build for examples/Tooling.
llvm-svn: 132380
2011-06-01 01:21:01 +00:00
Nick Lewycky 15cf577ff9 Put Parse before Sema on the link line since parse depends on sema.
Also reflow these lines to fit in 80-col.

llvm-svn: 132379
2011-06-01 00:59:36 +00:00
Manuel Klimek 6fad7119b9 Fix test breakage due to example not being built.
llvm-svn: 132376
2011-06-01 00:18:08 +00:00
Manuel Klimek 0cfc6a045c This patch implements an AST matching framework that allows to write
tools that match on the C++ ASTs. The main interface is in ASTMatchers.h,
an example implementation of a tool that removes redundant .c_str() calls
is in the example RemoveCStrCalls.cpp.

Various contributions:
Zhanyong Wan, Chandler Carruth, Marcin Kowalczyk, Wei Xu, James Dennett.

llvm-svn: 132374
2011-05-31 23:49:32 +00:00
Devang Patel 72140d553a Fix test, check for stable strings in the output.
llvm-svn: 132370
2011-05-31 22:37:03 +00:00
Francois Pichet a9f436b064 Revert 132332 (Microsoft friend as a forward declaration), John McCall pointed out a better/simpler way to do it.
llvm-svn: 132369
2011-05-31 22:36:05 +00:00
Devang Patel 5c71c2154b Robustify objc method type description (subroutine type) by walking parameters directly.
llvm-svn: 132368
2011-05-31 22:21:11 +00:00
Devang Patel 7ce99c3637 List objective-c ineterfaces as public types in dwarf debug info output.
llvm-svn: 132361
2011-05-31 21:18:50 +00:00
Devang Patel 2780e4545a List c++ class type as public type in dwarf debug info output.
llvm-svn: 132357
2011-05-31 20:46:46 +00:00
Alexis Hunt 414e3e3c2d Ensure we enter an unevaluated context when instantiating a noexcept
expression. Fixes bug raised by hhinnant to cfe-dev

llvm-svn: 132350
2011-05-31 19:54:49 +00:00
Daniel Dunbar 116b305d31 Driver/Clang: Simplify code to use arch enumerations.
llvm-svn: 132338
2011-05-31 15:58:55 +00:00
Francois Pichet bcaf0816a5 Recreate the DeclContext before adding the implicit friend forward declaration. This should fix the asserting buildbot.
llvm-svn: 132333
2011-05-31 12:44:46 +00:00
Francois Pichet 3fd47df366 For compatibility with MSVC, a friend declaration also act as a forward declaration if the tag name is not already declared. The tag name is declared in the next outermost non record scope.
Example:

class A {
  friend class B;
  B* b;
};
B* global_b;

llvm-svn: 132332
2011-05-31 11:44:00 +00:00
Nick Lewycky 67c4d0f336 Whenever we instantiate a static data member, make sure to define any new
vtables! Fixes PR10020

This also allows us to revert the part of r130023 which added a big loop around
the template instantiation.

llvm-svn: 132331
2011-05-31 07:58:42 +00:00
Galina Kistanova 920f852759 Now with the right line endings.
llvm-svn: 132330
2011-05-31 07:19:08 +00:00
Zhongxing Xu e6a2028fe1 Fix linking of clang-wpa.
llvm-svn: 132329
2011-05-31 07:13:36 +00:00
Chandler Carruth e54ff6cc3e Expand the coverage of the warning for constants on the RHS of logical operands:
return f() || -1;

where the user meant to write '|'.

This bootstraps without any additional warnings.

Patch by Richard Trieu.

llvm-svn: 132327
2011-05-31 05:41:42 +00:00
Argyrios Kyrtzidis b3483b3d91 Utilize PackedVector, introduced with llvm commit r132325.
llvm-svn: 132326
2011-05-31 03:56:09 +00:00
Galina Kistanova 4503e20ae6 Just one for now to see how it will fly.
llvm-svn: 132321
2011-05-31 00:34:37 +00:00
Galina Kistanova ded0b598b6 Preparations for separating target-specific clang tests.
llvm-svn: 132319
2011-05-31 00:29:49 +00:00
David Chisnall fcb37e944f Fix another incorrect type bug.
llvm-svn: 132311
2011-05-30 12:00:26 +00:00
Richard Trieu beaf34531e Add a new warning on NULL pointer constant to integer conversion.
This path was reviewed by Chandler Carruth at http://codereview.appspot.com/4538074/

llvm-svn: 132297
2011-05-29 19:59:02 +00:00
Chandler Carruth a923fb2b3b Fix a regression in the source locations for unary trait expressions.
I tried to use an assert to prove that I could remove each of the
arguments I did, but ended up writing my assert with inverted logic.
Doh! Reported by Xi Wang on cfe-dev. I have manually verified the source
locations and ranges for these using -ast-dump. I tried writing a test
case that would catch these, but these expressions aren't exposed in the
c-index-test's token annotation utility.

llvm-svn: 132284
2011-05-29 07:32:14 +00:00
John McCall 9b382dde92 Convert Clang over to resuming from landing pads with llvm.eh.resume.
It's quite likely that this will explode, but I need to know how. :)

llvm-svn: 132269
2011-05-28 21:13:02 +00:00
Chris Lattner 4b799d4e0c make this a bit less confusing
llvm-svn: 132262
2011-05-28 17:53:17 +00:00
Benjamin Kramer df1fb13a5c Eliminate temporary argument vectors.
llvm-svn: 132260
2011-05-28 14:26:31 +00:00
David Chisnall 7441d8823f Fix another type mismatch.
llvm-svn: 132259
2011-05-28 14:23:43 +00:00
David Chisnall 8a42d19b33 Fix missing cast.
llvm-svn: 132258
2011-05-28 14:09:01 +00:00
Bruno Cardoso Lopes fe73374d7a Add support for ARM ldrexd/strexd builtins
llvm-svn: 132249
2011-05-28 04:11:33 +00:00
Argyrios Kyrtzidis 814b2a6d6b Add a couple of helper methods in the SourceManager API, isAtStartOfMacroInstantiation/isAtEndOfMacroInstantiation
useful only for source locations that point at a macro token.

llvm-svn: 132247
2011-05-28 03:56:11 +00:00
Douglas Gregor e3ba404560 Clean up a C++0x/C++03 conditional check.
llvm-svn: 132229
2011-05-27 23:15:17 +00:00
Eli Friedman b857842c48 Add unnamed_addr to internal globals which are only used as an operand to memcpy. (Spotted by looking at IR.)
llvm-svn: 132226
2011-05-27 22:32:55 +00:00
Eli Friedman 6ffb623a52 Match llvm-gcc's string literals alignment by forcing alignment on string literals to 1. This can significantly impact the size of the string data, and as far as I know, the alignment doesn't help performance. rdar://9078969 .
llvm-svn: 132223
2011-05-27 22:13:20 +00:00
Eli Friedman 380b8dad6b Back out r132209; it's breaking nightly tests.
llvm-svn: 132219
2011-05-27 21:32:17 +00:00
Douglas Gregor 22ae696be7 Clean up my changes to jump-diagnostic handling for local variables of
class type (or array thereof), eliminating some redundant checks
(thanks Eli!) and adding some tests where the behavior differs in
C++98/03 vs. C++0x.

llvm-svn: 132218
2011-05-27 21:28:00 +00:00
John McCall 63fb333fa4 Implement a new, much improved version of the cleanup hack. We just need
to be careful to emit landing pads that are always prepared to handle a
cleanup path.  This is correct mostly because of the fix to the LLVM
inliner, r132200.

llvm-svn: 132209
2011-05-27 20:01:14 +00:00
Alexis Hunt 23f6b83d6f Add assertions to verify that we are not trying to instantiate a
nontemplate in Sema::InstantiateTemplateDecl.

This should make the issue in PR10026 more visible, although it's not
going to fix it because something is violating this precondition.

llvm-svn: 132208
2011-05-27 20:00:14 +00:00
Douglas Gregor 27d0c44524 Update the jump-scope checker for local variables with initializers,
so that it looks at the initializer of a local variable of class type
(or array thereof) to determine whether it's just an implicit
invocation of the trivial default constructor. Fixes PR10034.

llvm-svn: 132191
2011-05-27 16:05:29 +00:00
Richard Trieu 0cbb131d8b Add an additional check for null pointer before accessing PatternDecl.
llvm-svn: 132175
2011-05-27 02:08:53 +00:00
Chandler Carruth 7c430c0ec2 Enhance Clang to start instantiating static data member definitions
within class templates when they are necessary to complete the type of
the member. The canonical example is code like:

  template <typename T> struct S {
    static const int arr[];
    static const int x;
    static int f();
  };

  template <typename T> const int S<T>::arr[] = { 1, 2, 3 };
  template <typename T> const int S<T>::x = sizeof(arr) / sizeof(arr[0]);
  template <typename T> int S<T>::f() { return x; }

  int x = S<int>::f();

We need to instantiate S<T>::arr's definition to pick up its initializer
and complete the array type. This involves new code to specially handle
completing the type of an expression where the type alone is
insufficient. It also requires *updating* the expression with the newly
completed type. Fortunately, all the other infrastructure is already in
Clang to do the instantiation, do the completion, and prune out the
unused bits of code that result from this instantiation.

This addresses the initial bug in PR10001, and will be a step to
fleshing out other cases where we need to work harder to complete an
expression's type. Who knew we still had missing C++03 "features"?

llvm-svn: 132172
2011-05-27 01:33:31 +00:00
Douglas Gregor a9d8493310 Objective-C doesn't consider the use of incomplete types as method
parameter types to be ill-formed. However, it relies on the
completeness of method parameter types when producing metadata, e.g.,
for a protocol, leading IR generating to crash in such cases.

Since there's no real way to tighten down the semantics of Objective-C
here without breaking existing code, do something safe but lame:
suppress the generation of metadata when this happens.

Fixes <rdar://problem/9123036>.

llvm-svn: 132171
2011-05-27 01:19:52 +00:00
Benjamin Kramer f546f411b0 Silence sign compare warning.
llvm-svn: 132146
2011-05-26 21:32:30 +00:00
Richard Trieu 17afcbe5de Change the include stack of "instantiated from" notes to fall under the control of f/fno-diagnostics-show-note-include-stack flags. This should help with reducing diagnostic spew from macros instantiations.
llvm-svn: 132143
2011-05-26 20:49:16 +00:00
Richard Trieu 61384cb8bd Add a fix-it and better error recovery for improperly nested namespaces. This will give a better error message for cases such as "namespace foo::bar::baz {}" and a suggested fix-it of "namespace foo { namespace bar { namespace baz {} } }"
llvm-svn: 132138
2011-05-26 20:11:09 +00:00
Ted Kremenek f230198f15 Tighen analyzer diagnostics w.r.t ObjC/CF leaks.
llvm-svn: 132130
2011-05-26 18:45:44 +00:00
Chandler Carruth cea1aacf40 Extract two more methods from the unary type trait checking. These
provide re-usable forms of the rest of the custom validation done here.
Still no functionality changed here.

With this it should be possible to have an expression-centric code path
and a type-centric code path which don't duplicate logic.

llvm-svn: 132118
2011-05-26 08:53:16 +00:00
Chandler Carruth 98e017b5df Remove a no longer relevant comment. It was just repeating the
information in the previous comment which was preserved and moved with
the vec_step implementation code.

llvm-svn: 132117
2011-05-26 08:53:14 +00:00
Chandler Carruth 62da79c9ce Extract the vec_step trait operand checking to a stand alone function.
It has little overlap with other traits' requirements, so the resulting
code is actually simpler.

llvm-svn: 132116
2011-05-26 08:53:12 +00:00
Chandler Carruth 14502c26fe Add a convenience interface for checking expression arguments to unary
traits which uses the information embedded in the expression. Use this
to simplify several interfaces which repeated information embedded in
the expression through explicit arguments. I added an assertion that the
only extra piece of data to come in from the parser matches what is
stored in the expression. No functionality change intended here.

Also cleaned up the doxygen comments for some of these methods and some
formatting oddities.

llvm-svn: 132115
2011-05-26 08:53:10 +00:00
Alexis Hunt d051b87160 Implement a new warning for when adding a default argument to a method
makes it into a special member function. This is very bad and can lead
to all sorts of nastiness including implicit member functions violating
the One Definition Rule. This should probably be made ill-formed in a
later version of the standard, but for now we'll just warn.

llvm-svn: 132104
2011-05-26 01:26:05 +00:00
Eli Friedman df96819daf Skip extra copy from aggregate where it isn't necessary; rdar://problem/8139919 . This shouldn't make much of a difference at -O3, but should substantially reduce the number of generated memcpy's at -O0.
Originally r130717, but was backed out due to an ObjC regression.

llvm-svn: 132102
2011-05-26 00:10:27 +00:00
Ted Kremenek 4c5d2888f4 static analyzer: when conservatively evaluating functions, don't invalidate the values of globals when the called function is strlen.
llvm-svn: 132100
2011-05-25 23:57:29 +00:00
Alexis Hunt 119c10ef23 Update our diagnostics to properly account for move operations.
llvm-svn: 132096
2011-05-25 23:16:36 +00:00
Alexis Hunt 92a0adf05f Fix a minor thinko that leads to a crash if PatternDecl is null but
Pattern is not. Thanks Nick for catching this!

llvm-svn: 132089
2011-05-25 22:02:25 +00:00
Alexis Hunt fcaeae4929 Implement a little bit of cleanup and a lot more of the base work
behind implicit moves. We now correctly identify move constructors and
assignment operators and update bits on the record correctly. Generation
of implicit moves (declarations or definitions) is not yet supported.

llvm-svn: 132080
2011-05-25 20:50:04 +00:00
David Chisnall e4e5c0f219 Remove bitcast to incorrect type.
llvm-svn: 132077
2011-05-25 20:33:17 +00:00
Douglas Gregor 6c6e6761b2 Properly align UnaryTransformType when allocating it
llvm-svn: 132064
2011-05-25 17:51:54 +00:00
Ted Kremenek 848c3ab60a Update checker build to checker-257.
llvm-svn: 132060
2011-05-25 16:30:14 +00:00
Francois Pichet 2e11f5df3d Disable MSVC warning about runtime stack overflow for DebugOverflowStack.
llvm-svn: 132059
2011-05-25 16:15:03 +00:00
Francois Pichet 7e401dbe03 Fix MSVC warning: <unsafe use of type 'bool' in operation>
llvm-svn: 132058
2011-05-25 16:07:10 +00:00
Francois Pichet 8f981d5964 Add support for Microsoft __if_exists, __if_not_exists extension at class scope.
Example:

typedef int TYPE;
class C {
  __if_exists(TYPE) {
     TYPE a;
  }
  __if_not_exists(TYPE) {
     this will never be parsed.
  }
};

llvm-svn: 132052
2011-05-25 10:19:49 +00:00
Ted Kremenek 86d49ce20c Teach analyzer about cf_returns_not_retained for C functions.
llvm-svn: 132049
2011-05-25 06:29:39 +00:00
Ted Kremenek 8e2c9b0180 Enhance retain/release checker to flag warnings when functions returning CG types do not follow the Core Foundation naming conventions.
llvm-svn: 132048
2011-05-25 06:19:45 +00:00
Argyrios Kyrtzidis 0e37afa15e A StringRef-ication of the DiagnosticIDs API and internals.
Patch by Matthieu Monrocq with tweaks by me to avoid StringRefs in the static
diagnostic data structures, which resulted in a huge global-var-init function.

Depends on llvm commit r132046.

llvm-svn: 132047
2011-05-25 05:05:01 +00:00
Rafael Espindola c1ee12c952 Update for llvm api change.
llvm-svn: 132034
2011-05-25 03:44:55 +00:00
Daniel Dunbar 6ed262def7 Driver: Don't warn about unused PIE arguments.
llvm-svn: 132020
2011-05-24 23:05:49 +00:00
Alexis Hunt e852b100e2 Implement a new type node, UnaryTransformType, designed to represent a
type that turns one type into another. This is used as the basis to
implement __underlying_type properly - with TypeSourceInfo and proper
behavior in the face of templates.

llvm-svn: 132017
2011-05-24 22:41:36 +00:00
Nick Lewycky 8a54c3d4ce Fix Darwin test for r132006.
llvm-svn: 132013
2011-05-24 22:18:08 +00:00
Nick Lewycky 82fe5f43d9 When given one of the applicable coverage flags, try to link against
libprofile_rt.a. On Darwin, don't try to link -lgcov.

llvm-svn: 132006
2011-05-24 21:54:59 +00:00
Ted Kremenek 3a60114085 Add explicit CFG support for ignoring static_asserts.
llvm-svn: 132001
2011-05-24 20:41:31 +00:00
Roman Divacky fcae03245d Let amd64 be used in target triple instead of x86_64 on FreeBSD.
Patch by Dimitry Andric!

llvm-svn: 131990
2011-05-24 19:54:09 +00:00
Argyrios Kyrtzidis 8bd428574c Add new warning that warns when invoking 'delete' on a polymorphic, non-final, class without a virtual destructor.
Patch by Matthieu Monrocq!

llvm-svn: 131989
2011-05-24 19:53:26 +00:00
Douglas Gregor fcafc6e3de Implement the initial part of C++0x [expr.const]p2, which specifies
that the unevaluated subexpressions of &&, ||, and ? : are not
considered when determining whether the expression is a constant
expression. Also, turn the "used in its own initializer" warning into
a runtime-behavior warning, so that it doesn't fire when a variable is
used as part of an unevaluated subexpression of its own initializer.

Fixes PR9999.

llvm-svn: 131968
2011-05-24 16:02:01 +00:00
Jim Grosbach 7c2c664500 For non-Darwin, a plain 'char' type is unsigned.
llvm-svn: 131967
2011-05-24 15:40:46 +00:00