Commit Graph

26561 Commits

Author SHA1 Message Date
John McCall 6bde954f47 Extract procedures to do scalar-to-memory and memory-to-scalar conversions
in IR gen, and use those to fix a correctness issue with bool atomic
intrinsics.  rdar://problem/8461234

llvm-svn: 117403
2010-10-26 22:09:15 +00:00
Douglas Gregor bb55f6bd23 Sign
llvm-svn: 117400
2010-10-26 21:25:18 +00:00
Dan Gohman 52765215d0 Simplify this code: don't check for the same error two
different ways. Check once, and use an assert to handle
consistency checking.

llvm-svn: 117397
2010-10-26 21:13:51 +00:00
Dan Gohman 5d223dcb2f getOrCreateContentCache never returns null, so overrideFileContents
doesn't need its return value.

llvm-svn: 117393
2010-10-26 20:47:28 +00:00
Douglas Gregor 9c0672f40a I hate this test
llvm-svn: 117390
2010-10-26 19:36:20 +00:00
Dan Gohman 8fc50c296a Factor out the code for emitting code to load vtable pointer members
so that it's done in one place.

llvm-svn: 117386
2010-10-26 18:44:08 +00:00
Douglas Gregor fc0862da95 Something is seriously wonky with this test
llvm-svn: 117381
2010-10-26 18:25:19 +00:00
Douglas Gregor 415ce06ebb Fix silly typo
llvm-svn: 117373
2010-10-26 17:32:59 +00:00
Douglas Gregor 2a1d72d078 Teach typo correction not to return the same keyword that matches a
typo. This can happen with context-sensitive keywords like "super",
when typo correction didn't know that "super" wasn't permitted in this
context.

llvm-svn: 117372
2010-10-26 17:18:00 +00:00
John McCall 925b16629d Optimize field space usage in CompoundStmt, LabelStmt, Expr, and CastExpr.
There's probably still significant padding waste on x86-64 UNIXen, but
the difference in 32-bit compiles should be significant.

There are a lot of Expr nodes left that could lose a word this way.

llvm-svn: 117359
2010-10-26 08:39:16 +00:00
John McCall c3007a2145 No really, we don't have a retain/release system for statements/expressions
anymore.

llvm-svn: 117357
2010-10-26 07:05:15 +00:00
John McCall edba521a03 Cookie crumbs.
llvm-svn: 117356
2010-10-26 06:41:10 +00:00
John McCall 75851b1a7f Actually, that doesn't really work, and anyway we should choose
conversion to id over conversion to void*.

llvm-svn: 117355
2010-10-26 06:40:27 +00:00
John McCall f28e83a73a Consider conversions of Objective-C pointers to 'id' to be basically of
the same rank as conversions of normal pointers to 'void*'.

Also, resurrect a test case.

Fixes rdar://problem/8592139

llvm-svn: 117354
2010-10-26 06:23:29 +00:00
Douglas Gregor 8302541401 Delay complete-type checking for arguments to no-prototype functions
until after we've checked/promoted the argument. Hopefully fixes the
Emacs regression due to my recent change that expanded type-checking
in the presence of K&R function definitions.

llvm-svn: 117353
2010-10-26 05:45:40 +00:00
John McCall 5fe84129e2 A couple of tweaks to the visibility rules:
- tags with C linkage should ignore visibility=hidden
  - functions and variables with explicit visibility attributes should
    ignore the linkage of their types
Either of these should be sufficient to fix PR8457.

Also, FileCheck-ize a test case.

llvm-svn: 117351
2010-10-26 04:59:26 +00:00
John McCall 710d2a831c Pending further discussion, re-enable warnings for Objective C
covariant/contravariant overrides and implementations, but do so under
control of a new flag (-Wno-objc-covariant-overrides, which yes does cover
contravariance too).

*At least* the covariance cases will probably be enabled by default shortly,
but that's not totally uncontroversial.

llvm-svn: 117346
2010-10-26 00:53:53 +00:00
Douglas Gregor f86c939bff When de-serializing a type that is supposed to be canonical, call
getCanonicalType() to make sure that the type we got back is actually
canonical. This is the case for most types, which always build a
canonical type when given canonical components. However, some types that
involve expressions in their canonicalization (e.g., array types with
dependent sizes) don't always build canonical types from canonical
components, because there is no such thing as a "canonical"
expression. Therefore, we do this extra mapping to ensure that the
canonical types we store are actually canonical.

llvm-svn: 117344
2010-10-26 00:51:02 +00:00
Ted Kremenek 6348dac7a0 Fix lazy symbolication bug in RegionStore involving fields of global variables. When invalidated, the entire
globals memory space gets assigned a symbolic value, but that value was not being used for lazy symbolication
of fields of globals.  This could result in cases where bogus null dereferences were being reported.

Fixes PR 8440.

llvm-svn: 117336
2010-10-26 00:06:17 +00:00
Ted Kremenek f59449e790 Move 'includeGlobals' as a field into ClusterAnalysis.
llvm-svn: 117335
2010-10-26 00:06:15 +00:00
Ted Kremenek 731310e13e Tweak null dereference checker to give better diagnostics for null dereferences resulting from array accesses.
llvm-svn: 117334
2010-10-26 00:06:13 +00:00
Dan Gohman dc2c4db598 Add infrastructure for emitting TBAA metadata with the "constant" flag.
llvm-svn: 117328
2010-10-25 23:51:23 +00:00
Fariborz Jahanian 56143ae715 Patch for mis-compile of statement expressions with
non-trivial copy constructors. // rdar: //8540501.
A test will be added to llvm nightly tests.

llvm-svn: 117324
2010-10-25 23:27:26 +00:00
Dan Gohman d831356635 Trim an unnecessary #include.
llvm-svn: 117321
2010-10-25 21:59:29 +00:00
Dan Gohman 7dfd13c167 Factor out the code for creating the Root and Char nodes, so that
they can be used outside of the main getTBAAInfo function.

llvm-svn: 117320
2010-10-25 21:48:30 +00:00
Eric Christopher 55f21aae85 Add and describe a quick script to migrate gcc builtins that clang doesn't
know about to the default APIs for x86 vector operations.

llvm-svn: 117313
2010-10-25 21:17:59 +00:00
Douglas Gregor 59f16ed082 Look through the address-of operator to find the function being
called. Fixes another aspect of PR8314.

llvm-svn: 117308
2010-10-25 20:48:33 +00:00
Douglas Gregor 8e09a72f13 When we're calling a function that we know based on its K&R-style
function definition, we should still use a prototype to type-check and
convert the function arguments, if such a prototype exists. Fixes
PR8314.

llvm-svn: 117305
2010-10-25 20:39:23 +00:00
Ted Kremenek c07d8353e1 Add check for UnknownVals for mutexes in ObjCAtSyncChecker. Fixes crash reported in PR 8458.
llvm-svn: 117300
2010-10-25 20:20:56 +00:00
David Chisnall b62d15c24e Only warn for mismatched types in Objective-C methods when they are incompatible, not when they are simply different. Now we test whether the difference in types breaks the principle of substitutability, rather than whether they are different.
A common idiom in Objective-C is to provide a definition of a method in a subclass that returns a more-specified version of an object than the superclass.  This does not violate the principle of substitutability, because you can always use the object returned by the subclass anywhere that you could use the type returned by the superclass.  It was, however, generating warnings with clang, leading people to believe that semantically correct code was incorrect and requiring less accurate type specification and explicit down-casts (neither of which is a good thing to encourage).

This change ensures that any method definition has parameter and return types that make it accept anything that something conforming to the declaration may pass and return something that the caller will expect, but allows stricter definitions.  

llvm-svn: 117271
2010-10-25 17:23:52 +00:00
Chandler Carruth 0171815ae1 Improve the tracking of source locations for parentheses in constructor calls.
This adds them where missing, and traces them through PCH. We fix at least one
bug in the extents found by the Index library, and make a lot of refactoring
tools which care about the exact formulation of a constructor call easier to
write. Also some minor cleanups to more consistently follow the friend pattern
instead of the setter pattern when rebuilding a serialized AST.

Patch originally by Samuel Benzaquen.

llvm-svn: 117254
2010-10-25 08:47:36 +00:00
Marcin Swiderski 01769904d3 Added generation of destructors for member constant size arrays.
There's only one destructor call generated for each not empty array (at least for now this should be enough).

llvm-svn: 117252
2010-10-25 07:05:54 +00:00
Marcin Swiderski 52e4bc1fed Added generation of destructors for constant size arrays.
There's only one destructor call generated for each not empty array (at least for now this should be enough).

llvm-svn: 117251
2010-10-25 07:00:40 +00:00
Peter Collingbourne a99fdcf93e Implement GNU C extension: two types are compatible if they appear
as a function argument, one of the types is a transparent union type
and the other type is compatible with a union member

llvm-svn: 117243
2010-10-24 18:30:18 +00:00
Argyrios Kyrtzidis e16a5300ba Keep track in chained PCH of implicit members that were added after the definition was completed.
llvm-svn: 117240
2010-10-24 17:26:54 +00:00
Argyrios Kyrtzidis d170d844c4 Start fleshing out ASTMutationListener; notify when a tag definition is completed.
In that case a chained PCH will record the updates to the DefinitionData pointer of forward references.
If a forward reference mutated into a definition re-write it into the chained PCH, this is too big of a change.

llvm-svn: 117239
2010-10-24 17:26:50 +00:00
Argyrios Kyrtzidis 3ba70b89cf Introduce a DeclsToRewrite field in ASTWrite, used for collecting the decls that will be replaced in the chained PCH.
llvm-svn: 117238
2010-10-24 17:26:46 +00:00
Argyrios Kyrtzidis 97bfda9b9b Some method renaming, no functionality change.
llvm-svn: 117237
2010-10-24 17:26:43 +00:00
Argyrios Kyrtzidis eb39d9a9ec Refactoring.
- Pass around RecordDataImpl instead of the concrete RecordData so that any SmallVector can be used.
- Move ASTDeclWriter::WriteCXXDefinitionData to ASTWriter::AddCXXDefinitionData.

llvm-svn: 117236
2010-10-24 17:26:40 +00:00
Argyrios Kyrtzidis 65ad5691fd Put the mechanism in place to track modifications in an AST entity that were committed after
its initial creation/deserialization and store the changes in a chained PCH.

The idea is that the AST entities call methods on the ASTMutationListener to give notifications
of changes; the PCHWriter implements the ASTMutationListener interface and stores the incremental changes
of the updated entity. WIP

llvm-svn: 117235
2010-10-24 17:26:36 +00:00
Argyrios Kyrtzidis ad5f95cc4b Simplify and "robust-ify" the way that CXXRecord references point to the definition data when loaded from PCH.
Temporary disable 'test/PCH/chain-cxx.cpp' until a better way to fix it is in place.

llvm-svn: 117234
2010-10-24 17:26:31 +00:00
Argyrios Kyrtzidis 8b200a5ef1 Minor refactoring; Pull reading/writing DefinitionData out into a function.
llvm-svn: 117233
2010-10-24 17:26:27 +00:00
Anders Carlsson c532c8b106 Fix tyop.
llvm-svn: 117225
2010-10-24 12:51:00 +00:00
Marcin Swiderski 772324971d - Fixed subexpressions evaluation order for binary operators to match order in code generated with the compiler,
- Fixed test cases for unreachable code warnings produced by Sema.

llvm-svn: 117220
2010-10-24 08:21:40 +00:00
Anders Carlsson cdbd70ac69 Move the "used but marked unused" warning behind a special warning flag for now.
llvm-svn: 117219
2010-10-24 04:28:00 +00:00
Douglas Gregor e63d087bcb C++ [basic.scope.hiding] allows an ordinary name to hide a non-tag
name *in the same scope*, but not across scopes. Implement the
highlighted condition.

llvm-svn: 117212
2010-10-23 16:06:17 +00:00
Chandler Carruth c3ce5840af Update remaining attribute macros to new style.
llvm-svn: 117204
2010-10-23 08:44:57 +00:00
Chandler Carruth b7967b91c9 Update to use 'LLVM_*' macro names for attributes.
llvm-svn: 117201
2010-10-23 08:21:37 +00:00
Anders Carlsson 73067a02db Warn if a variable marked with the "unused" attribute is used. Patch by Darin Adler!
llvm-svn: 117184
2010-10-22 23:37:08 +00:00
John McCall 811a0f5578 Parse attributes on enumerators and instantiate attributes on enum decls.
llvm-svn: 117182
2010-10-22 23:36:17 +00:00
Anders Carlsson 21836f726b Minor tweak so that fixit-errors.c is never compiled; it crashes and pops up a crash dialog on my system.
llvm-svn: 117181
2010-10-22 23:35:40 +00:00
Fariborz Jahanian 2b427c7fb0 Update compatibility page for objective-c.
llvm-svn: 117168
2010-10-22 22:35:51 +00:00
Douglas Gregor 263803a6cd Teach clang_getCursorReferenced() and friends about BlockDeclRefExprs.
llvm-svn: 117167
2010-10-22 22:24:08 +00:00
Douglas Gregor c0d2490ac4 In the presence of using declarations, we can find the same class
members in class subobjects of different types. So long as the
underlying declaration sets are the same, and the declaration sets
involve non-instance members, this is not an ambiguity.

llvm-svn: 117163
2010-10-22 22:08:47 +00:00
Ted Kremenek 5c97605c1d Fix a horrible bug in all dataflow analyses that use CFGRecStmtVisitor (including live variables analysis).
We shouldn't recurse into CompoundStmts since they are already inlined in the CFG.  This could result in
bogus dead stores warnings (among other things).

llvm-svn: 117162
2010-10-22 22:08:32 +00:00
Ted Kremenek 7043fba7fa Fix '-analyzer-display-progress' for Objective-C methods. Also remove obsolete code.
llvm-svn: 117161
2010-10-22 22:08:29 +00:00
Fariborz Jahanian 059fe5ba09 Test emoved.
llvm-svn: 117160
2010-10-22 22:05:40 +00:00
Fariborz Jahanian c123623d28 After discussion with Doug and John, I am reverting
the patch. 

llvm-svn: 117159
2010-10-22 22:05:03 +00:00
Dale Johannesen 70f564e0e8 Change handling of inline asm 'p' constraint to match llvm-gcc.
llvm-svn: 117149
2010-10-22 21:07:10 +00:00
John McCall 457a04e3ce Substantially revise how clang computes the visibility of a declaration to
more closely parallel the computation of linkage.  This gets us to a state
much closer to what gcc emits, modulo bugs, which will undoubtedly arise in
abundance.

llvm-svn: 117147
2010-10-22 21:05:15 +00:00
Fariborz Jahanian 0196aa28ec Patch fixes miscompile with non-trivial copy constructors and
statement expressions, //rdar: //8540501

llvm-svn: 117146
2010-10-22 21:01:02 +00:00
Devang Patel 401c916c8a Delay record type's debug info emission, in -flimit-debug-info mode, if member expression's base is call expr.
llvm-svn: 117127
2010-10-22 18:56:27 +00:00
Devang Patel db3910000a Revert unintentional check-in.
llvm-svn: 117120
2010-10-22 18:31:12 +00:00
Douglas Gregor bde20c0342 When we perform name lookup for a template, we may end up finding an
ambiguous name where none of the declarations found are actually
templates. In this case, make sure we clear out the ambiguous-path
data when recomputing the lookup result kind. Fixes PR8439.

llvm-svn: 117112
2010-10-22 17:36:51 +00:00
Oscar Fuentes ac1a614079 Don't try to guess svn version when current path is a symlink.
See PR 8473.

llvm-svn: 117110
2010-10-22 17:16:39 +00:00
Devang Patel f79199d140 Tidy up MIPS_linkage name. Provide it only if it does not match regular name, otherwise it confuses debugger.
This is tested by local.C in llvmgcc testsuite.

llvm-svn: 117107
2010-10-22 17:11:50 +00:00
Benjamin Kramer fb5e584151 More class anonymization.
llvm-svn: 117106
2010-10-22 16:48:22 +00:00
Benjamin Kramer 2fc373e155 Move classes into anonymous namespaces.
llvm-svn: 117104
2010-10-22 16:33:16 +00:00
Douglas Gregor 412c362d9e When performing name lookup for a namespace definition, only look into
the current context's redeclaration context, ignoring using
directives. Fixes PR8430.

llvm-svn: 117097
2010-10-22 15:24:46 +00:00
Douglas Gregor 06e41ae5c7 Teach the C++ simple-type-specifier parser and tentative parses about
protocol-qualified types such as id<Protocol>.

llvm-svn: 117081
2010-10-21 23:17:00 +00:00
Douglas Gregor 12a6c9e441 Update clang_getCursor() test to check searches on include directives
llvm-svn: 117063
2010-10-21 20:55:34 +00:00
Dan Gohman 2bb62c3d2b Rename clang's TBAA tree root from "experimental" to "simple".
llvm-svn: 117046
2010-10-21 18:50:04 +00:00
Ted Kremenek 5ef9ad9907 Tweak diagnostics for redeclaration of a @property in a class extension where the redelcaration and original
declaration have the 'readwrite' attribute.  This is a common case, and we can issue a more lucid diagnostic.

Fixes <rdar://problem/7629420>.

llvm-svn: 117045
2010-10-21 18:49:42 +00:00
Ted Kremenek 22813f4077 Tidy up comment (remove extraneous text).
llvm-svn: 117044
2010-10-21 18:49:36 +00:00
Dan Gohman 5419ce6827 Add some more comments.
llvm-svn: 117043
2010-10-21 18:49:12 +00:00
Douglas Gregor cd1d0b4f98 Implement the integral promotion rules for the C++0x char16_t and
char32_t character types and enable built-in overloaded operator
candidates for these types. Fixes PR8432.

llvm-svn: 117038
2010-10-21 18:04:08 +00:00
Douglas Gregor a02bb37a8c Diagnose the declaration of template template parameters that
themselves have no template parameters. This is actually a restriction
due to the grammar of template template parameters, but we choose to
diagnose it in Sema to provide better recovery.

llvm-svn: 117032
2010-10-21 17:26:49 +00:00
Douglas Gregor bff6203152 Always treat 'main' as an extern "C" function, so that we detect
redeclarations of main appropriately rather than allowing it to be
overloaded. Also, disallowing declaring main as a template.

Fixes GCC DejaGNU g++.old-deja/g++.other/main1.C.

llvm-svn: 117029
2010-10-21 16:57:46 +00:00
Douglas Gregor 270b2ef0e7 When checking whether a return statement returns a stack-local
variable, handle conditional operators involving a
throw-expression. Fixes GCC DejaGNU's g++.dg/template/cond4.C.

llvm-svn: 117027
2010-10-21 16:21:08 +00:00
Francois Pichet ebdb43d54d Revert r117005, WIN32 is not predefined after all.
llvm-svn: 117026
2010-10-21 16:14:56 +00:00
Ted Kremenek c5644e1b97 Tweak the ObjCAtSyncChecker to assume that a mutex is non-nil after checking that it is
nil.  Otherwise we can get false paths where a second @synchronized using the mutex
can have a bogus warning.  Fixes <rdar://problem/8578650>.

llvm-svn: 117016
2010-10-21 15:38:55 +00:00
Francois Pichet 1ef4eb196d MSVC defines WIN32 as a predefined macro.
llvm-svn: 117005
2010-10-21 09:39:28 +00:00
Michael J. Spencer 54bf3c3cfb Targets: Fix MinGW and VisualStudio predefined macros.
llvm-svn: 117003
2010-10-21 08:22:51 +00:00
Douglas Gregor adfdccf1f3 Improve the implementation of libclang's token-annotation logic for
entities in the preprocessing record. Previously, we would only end up
getting the first token of a preprocessing record annotated
correctly. For example, given

  #include "foo.h"

we would only get the '#' annotated as an inclusion directive; the
'include' and '"foo.h"' tokens would be given the general 'processing
directive' annotation.

Now, we get proper annotations for entities in the preprocessing
record.

llvm-svn: 117001
2010-10-21 06:10:04 +00:00
Michael J. Spencer cac9df3bf6 Add test for Windows predefined macros.
llvm-svn: 117000
2010-10-21 05:23:48 +00:00
Michael J. Spencer 4992ca4b17 Reorganize predefined macros for all Windows targets.
This adds an option to set the _MSC_VER macro without
recompiling. This is very useful when testing compatibility
with the Windows SDK and c++stdlib headers.

-fmsc-version=<version> (defaults to VS2003 (1300))

llvm-svn: 116999
2010-10-21 05:21:48 +00:00
Ted Kremenek 12a37de003 Previously, the printf warnings would say your arguments type was 'int' when it was really a 'char'
or a 'short'. This fixes that and allows the hints to suggest 'h' modifiers for small ints.

Patch by Justin Bogner!

llvm-svn: 116996
2010-10-21 04:00:58 +00:00
Ted Kremenek 6377965efb Remove unused variable.
llvm-svn: 116995
2010-10-21 04:00:51 +00:00
Andrew Trick 9642cc6a9d putback r116782, it's a safe fix and should not break windows
llvm-svn: 116994
2010-10-21 03:59:06 +00:00
Michael J. Spencer 4c0ffa823f Fix Whitespace.
llvm-svn: 116990
2010-10-21 03:16:25 +00:00
Michael J. Spencer 7b726c3fc8 Revert "Cleanup and fix predefined macros for windows."
Didn't realize this was on my branch ;/.

llvm-svn: 116989
2010-10-21 03:14:35 +00:00
Michael J. Spencer 2fb548cc05 Cleanup and fix predefined macros for windows.
llvm-svn: 116988
2010-10-21 03:13:04 +00:00
Craig Silverstein af8808dd28 Pass TInfo to CXXDestructorDecl::Create(), just like we do for other
function decls.

Reviewed by rjmccall and nlewycky.

llvm-svn: 116979
2010-10-21 00:44:50 +00:00
Andrew Trick 8cdb3f7d13 revert r116782 & r116793 to fix msvc9 buildbots
llvm-svn: 116976
2010-10-20 23:52:37 +00:00
Argyrios Kyrtzidis 00f5266dbf When implicit members are added to a C++ record, notify the serializer so that a chained PCH writes the definition again.
Thanks to Doug for the hint!

llvm-svn: 116975
2010-10-20 23:48:42 +00:00
Argyrios Kyrtzidis 54b88e72d0 Modify the assumptions of an assert; the updated latest redeclaration can have the same location
if it's a template specialization pointing at the template.

llvm-svn: 116974
2010-10-20 23:48:40 +00:00
Ted Kremenek 982b32b1b6 Remove obsolete GRAuditor and GRSimpleAPICheck, which have been completely subsumed by the Checker interface.
llvm-svn: 116973
2010-10-20 23:48:34 +00:00
Ted Kremenek bd2c800882 Convert GRSimpleAPIChecks in BasicObjCFoundationChecks to be Checkers.
llvm-svn: 116971
2010-10-20 23:38:56 +00:00
Douglas Gregor 796d76a663 Extend the preprocessing record and libclang with support for
inclusion directives, keeping track of every #include, #import,
etc. in the translation unit. We keep track of the source location and
kind of the inclusion, how the file name was spelled, and the
underlying file to which the inclusion resolved.

llvm-svn: 116952
2010-10-20 22:00:55 +00:00
Ted Kremenek 983fb5de5f Call clang_disposeTokens() when we are done with the set of tokens.
llvm-svn: 116946
2010-10-20 21:22:15 +00:00
Craig Silverstein 7d8fdef78d Get FunctionDecl to recurse on FunctionTypeLoc rather than
FunctionType!  I didn't realize it was available, until rjmccall
pointed out that DeclaratorDecl made the typeloc available.  This
makes FunctionDecl recursion *much* easier, because the typeloc can
take care of default parameters, so we no longer have to do that
separately, which means we can just do a normal type traversal instead
of this special-case WalkUp stuff we did before.

The only downside -- and it's minor -- is that because the TypeLoc
handles both the return type and the argument types, we can't recurse
on the explicit template args in the right place (which would be
between them).  I do it beforehand instead.  So for
   int MyFunc<float>(char x);
we get callbacks in the order: float, int, char.

Reviewed by chandlerc

llvm-svn: 116945
2010-10-20 21:13:35 +00:00
Argyrios Kyrtzidis 3317d985fe Fix chained PCH issue; make sure all visible decls that will be put into a UPDATE_VISIBLE block were recorded beforehand.
llvm-svn: 116931
2010-10-20 16:22:56 +00:00
Argyrios Kyrtzidis afd639501d Minor optimization; Try to iterator over redeclarations only when necessary.
llvm-svn: 116930
2010-10-20 16:22:49 +00:00
Fariborz Jahanian bb40ea42e3 Fixes a potential crash in rewriter when sending message
to 'super'.

llvm-svn: 116928
2010-10-20 16:07:20 +00:00
Chandler Carruth c7b34694ff Try again to pacify the build bots. =/ I'm getting a Darwin machine to test on.
llvm-svn: 116918
2010-10-20 08:24:03 +00:00
Duncan Sands 3a02f3eeff GCC 4.4 warns that Receiver may be used uninitialized in this function.
As far as I can see, gcc is right to think this!  The following change
will cause a nice segfault rather than undefined behaviour if this case
occurs.  Someone who understands what this code is supposed to do should
probably take a proper look.

llvm-svn: 116917
2010-10-20 08:21:16 +00:00
John McCall f551acaaf5 Access control polish: drop the note on the original declaration and
say 'implicitly' when it was implicit.  Resolves PR 7930 and my peace of mind.

llvm-svn: 116916
2010-10-20 08:15:06 +00:00
Chandler Carruth 4baa6ef5ec Remove a modern bash-ism and use simpler shell redirects. Hopefully will fix
build bots.

llvm-svn: 116914
2010-10-20 07:16:18 +00:00
Chandler Carruth 24e17e175d Add support for the '--sysroot' flag, and an accompanying test of its
interactions with -isysroot and other driver commands.

llvm-svn: 116912
2010-10-20 07:00:47 +00:00
John McCall a020a0159f When matching template parameter lists to template-ids in a scope specifier
on a friend declaration, skip template-ids which do not depend on the
current parameter list.

llvm-svn: 116911
2010-10-20 05:44:58 +00:00
Douglas Gregor d507d77432 Fix handling of property and ivar lookup in typo correction; the two
kinds of lookup into Objective-C classes were tangled together, a
situation that was compounded by automatically synthesized ivars.

llvm-svn: 116907
2010-10-20 03:06:34 +00:00
Anders Carlsson 274a70ed7f Add a __has_attribute macro that works much like __has_feature and __has_builtin.
llvm-svn: 116906
2010-10-20 02:31:43 +00:00
Douglas Gregor 9b2f537f69 Disable this test while I track down the platform-specific issue
llvm-svn: 116904
2010-10-20 01:46:04 +00:00
Douglas Gregor 87074f19e8 Introduce a simple cache for unqualified typo corrections, so that we
don't repeatedly loop through identifiers, correcting the same typo'd
identifier over and over again. 

We still bail out after 20 typo corrections, but this should help
improve performance in the common case where we're typo-correcting
because the user forgot to include a header.

llvm-svn: 116901
2010-10-20 01:32:02 +00:00
Douglas Gregor 30bb275b6b Bah, incompetence
llvm-svn: 116898
2010-10-20 01:16:12 +00:00
Douglas Gregor 1f32ebe892 Eliminate another ordering dependency in typo correction. Re-enable typo.m, which seems to be working properly.
llvm-svn: 116894
2010-10-20 01:01:57 +00:00
Craig Silverstein 3b9936f0b7 Had the wrong type for ArgType. :-( Fixed.
llvm-svn: 116893
2010-10-20 00:56:01 +00:00
Craig Silverstein 20f7ab72b1 The type-to-delete may not be a pointer if it's a dependent type.
Here's example code:
---
template<class T> class MyClass {
  struct S { };
  S* NewS() { return new S; }
  void DeleteS() { delete NewS(); }
};
---
CXXDeleteExpr::getDestroyedType() on the 'delete NewS()' expression
would crash before this change.  Now it returns a dependent type
object.  Solution suggested by dgregor.

llvm-svn: 116891
2010-10-20 00:38:15 +00:00
Bill Wendling 67c5621742 Linux still needs these hacks.
llvm-svn: 116888
2010-10-20 00:12:59 +00:00
Argyrios Kyrtzidis a41f66064f Fix issue with chained PCH where forward references did not pick up later definition in the chained PCH.
llvm-svn: 116887
2010-10-20 00:11:15 +00:00
Fariborz Jahanian 7c299bc6fa Do not rewrite new accessor if user has defined accessors.
Fixes //rdar: // 8570020.

llvm-svn: 116882
2010-10-19 23:47:54 +00:00
Ted Kremenek c81155eef7 Silence uninitialized value warning.
llvm-svn: 116877
2010-10-19 23:10:22 +00:00
Ted Kremenek c8456f8c59 Really^2 fix <rdar://problem/8361834>, this time without crashing.
Now MICache is a linked list (per the FIXME), where we tradeoff between MacroInfo objects being in MICache
and MIChainHead.  MacroInfo objects in the MICache chain are already "Destroy()'ed", so they can be reused.  When
inserting into MICache, we need to remove them from the regular linked list so that they aren't destroyed more than
once.

llvm-svn: 116869
2010-10-19 22:15:20 +00:00
Douglas Gregor c1fb15ea8f Provide an upper bound to the edit-distance algorithm when performing
typo correction, to allow early exits.

llvm-svn: 116868
2010-10-19 22:14:33 +00:00
Andrew Trick ba266eec79 Putting back safe fixes 116836,116837,116838
llvm-svn: 116866
2010-10-19 21:54:32 +00:00
Ted Kremenek 60ba93cd62 Revert most of r116862. It isn't quite the right fix for a memory leak in Preprocessor.
llvm-svn: 116864
2010-10-19 21:40:34 +00:00
Ted Kremenek e75b876fb9 Really fix: <rdar://problem/8361834> MacroInfo::AddTokenToBody() leaks memory
The problem was not the management of MacroInfo objects, but that when we recycle them
via the MICache the memory of the underlying SmallVector (within MacroInfo) was not getting
released.  This is because objects stashed into MICache simply are reused with a placement
new, and never have their destructor called.

llvm-svn: 116862
2010-10-19 21:30:15 +00:00
Ted Kremenek b865f7e025 Simplify loop. No functionality change.
llvm-svn: 116861
2010-10-19 21:30:11 +00:00
Andrew Trick b20ed574ab Reverting 116836,116837,116838 until we resolve the getLangStandardForKind failures.
llvm-svn: 116859
2010-10-19 21:14:46 +00:00
Bill Wendling 2bb7c59356 Now that mm_malloc.h was rewritten to *not* include errno.h (see
http://llvm.org/viewvc/llvm-project?rev=116771&view=rev) we can get rid of these
hacks.

llvm-svn: 116853
2010-10-19 20:08:12 +00:00
Douglas Gregor 93910a5a59 Improve the performance of typo correction, by using a simple
computation to compute the lower bound of the edit distance, so that
we can avoid computing the edit distance for names that will clearly
be rejected later. Since edit distance is such an expensive algorithm
(M x N), this leads to a 7.5x speedup when correcting NSstring ->
NSString in the presence of a Cocoa PCH.

llvm-svn: 116849
2010-10-19 19:39:10 +00:00
Fariborz Jahanian bfcbc85fea Fixes a bug in ivar lookup in the new objc's default
property synthesis mode, when dealing with legacy code.
Fixes //rdar: //8565343.

llvm-svn: 116846
2010-10-19 19:08:23 +00:00
John McCall 32723e9198 Tag references shouldn't ever get template parameter lists.
Fixes rdar://problem/8568507

llvm-svn: 116843
2010-10-19 18:40:57 +00:00
Ted Kremenek 1f1e4bdbf7 Simplify lifetime management of MacroInfo objects in Preprocessor by having the Preprocessor maintain them in a linked
list of allocated MacroInfos.  This requires only 1 extra pointer per MacroInfo object, and allows us to blow them
away in one place.  This fixes an elusive memory leak with MacroInfos (whose exact location I couldn't still figure
out despite substantial digging).

Fixes <rdar://problem/8361834>.

llvm-svn: 116842
2010-10-19 18:16:54 +00:00
Argyrios Kyrtzidis 48ffd760a7 Fix up the comments for creating ParmVarDeclAbbrev to reflect reality.
llvm-svn: 116838
2010-10-19 18:06:49 +00:00
Argyrios Kyrtzidis 54e6197d5a Minor optimization; if we have a CXXRecordDecl we can get the definition decl directly without iterating over the redeclarations.
llvm-svn: 116837
2010-10-19 18:06:47 +00:00
Argyrios Kyrtzidis 40338af47d Merge headers into test/PCH/chain-cxx.cpp for convenience.
llvm-svn: 116836
2010-10-19 18:06:43 +00:00
Douglas Gregor c4a821860c Fix CMake installation of arm_neon.h
llvm-svn: 116835
2010-10-19 18:06:10 +00:00
Ted Kremenek 2c8028bcf4 In ~Preprocessor(), also cleanup the MacroInfo objects left-over from stray "#pragma push_macro" uses. This
fixes a potential memory leak.

llvm-svn: 116826
2010-10-19 17:40:53 +00:00
Ted Kremenek 6339f1ce2f Fix typo in comment.
llvm-svn: 116825
2010-10-19 17:40:50 +00:00
Fariborz Jahanian 50c925fe96 This patch implements Next's IRGen for -fconstant-string-class=class-name.
PR6056, //rdar: //8564463

llvm-svn: 116819
2010-10-19 17:19:29 +00:00
Douglas Gregor f0873f4c85 When marking declarations referenced within an expression (e.g.,
within a default argument), recurse into default arguments. Fixes
PR8401, a regression I introduced in r113700 while refactoring our
handling of "used" declarations in default arguments.

llvm-svn: 116817
2010-10-19 17:17:35 +00:00
Chandler Carruth 06067c556a Use CLANG_RESOURCE_DIR define if one is provided, otherwise use the default of
'../lib/clang/<version>'. Actually use '..' rather than removing the trailing
component to correctly handle paths containing '.' or symlinks in the presence
of -no-canonical-prefixes, etc. This shouldn't change any existing behavior.

llvm-svn: 116803
2010-10-19 08:47:51 +00:00
Michael J. Spencer 8d3f5db7e5 test: FileCheck'ize and document test.
llvm-svn: 116799
2010-10-19 06:39:49 +00:00
Michael J. Spencer f5a1fbcdf3 Fix Whitespace.
llvm-svn: 116798
2010-10-19 06:39:39 +00:00
John McCall 46a04f86df MSVC space optimization.
llvm-svn: 116797
2010-10-19 05:43:52 +00:00
John McCall be19d72e6d Petty space optimizations in ElaboratedType and DependentNameType.
Petty time optimization in TemplateTypeParmType.

llvm-svn: 116796
2010-10-19 05:23:37 +00:00
John McCall 1a1b53e9ad When instantiating a dependently-scoped friend function declaration,
we may need to complete the type before looking into it.

llvm-svn: 116795
2010-10-19 05:01:53 +00:00
NAKAMURA Takumi a8792e514a lib/Headers/stddef.h: wint_t should be defined whenever <stddef.h> is included with __need_wint_t.
llvm-svn: 116794
2010-10-19 03:42:41 +00:00
NAKAMURA Takumi 1984479896 test/Coverage/html-diagnostics.c: Use find(1) to glob wildcards.
MSYS cat(1) does not expand wildcards.

llvm-svn: 116793
2010-10-19 03:38:22 +00:00
John McCall d0e23ecdc2 Instantiate enclosing template parameter lists when instantiating friends.
llvm-svn: 116789
2010-10-19 02:26:41 +00:00
John McCall e3df2638ce Uncomputable contexts are always records but can exist.
llvm-svn: 116787
2010-10-19 01:54:45 +00:00
John McCall ace48cd872 Redirect templated friend class decls to a new Sema callback and
construct an unsupported friend when there's a friend with a templated
scope specifier.  Fixes a consistency crash, rdar://problem/8540527

llvm-svn: 116786
2010-10-19 01:40:49 +00:00
NAKAMURA Takumi 5a391c97b5 test/Sema/return.c: Cygwin does not have _longjmp().
Although Cygwin-1.7 has _longjmp(), it would not be essential for this
to distinguish Cygwin's version with <cygwin/version.h>.

llvm-svn: 116783
2010-10-19 01:17:08 +00:00
NAKAMURA Takumi 3ad833be0e test/Coverage/html-diagnostics.c: Do not make hit "CHECK: Dereference of null pointer" to the output itself!
llvm-svn: 116782
2010-10-19 01:11:16 +00:00
Douglas Gregor 0787b3224d Tweak code-completion result priorities, so that exact and similar
type matches have a bigger impact. The impetus for this change was
that, when initializing an enumeration value, we want enumerators of
that enumeration type to have a higher priority than, e.g., unrelated
local variables.

llvm-svn: 116774
2010-10-19 00:03:23 +00:00
Bill Wendling 9987c0ea42 We shouldn't keep track of MMX registers "needed" separately from the SSE
registers needed.

llvm-svn: 116772
2010-10-18 23:51:38 +00:00
Eric Christopher 8a8673ea39 From scratch rewrite of mm_malloc.h.
Patch by Matthew Beaumont-Gay!

llvm-svn: 116771
2010-10-18 23:38:51 +00:00
Daniel Dunbar cb79c22678 tests: Force triple to avoid limited precision warning on win32.
llvm-svn: 116770
2010-10-18 23:37:08 +00:00
Ted Kremenek da8a79ac8d "Fix" bogus idempotent operations warning due to loop unrolling not unrolling enough loops to show that an invariant
doesn't hold.  This fix is to increase the loop unrolling count to 4, which experiments show doesn't typically impact
analysis time.  The real fix is to modify the IdempotentOperationsChecker to suppress warnings where an analysis point
could be preceded by a point where we gave up due to loop unrolling.

llvm-svn: 116769
2010-10-18 23:36:05 +00:00
Daniel Dunbar 473f8a6f88 Driver: Reject -fasm-blocks except on X86 (where we just ignore it, since
passing it is very prevalent in some circles).

llvm-svn: 116761
2010-10-18 22:49:46 +00:00
Daniel Dunbar 2b4de14b1d Driver/IA: Accept and ignore -force_cpusubtype_ALL, as in 'clang -c
-Wa,-force_cpusubtype_ALL t.c'.
 - Tweaks -Wa, and -Xassembler handling to only accept an explicit short list of
   arguments and give an obvious unsupported error on others.

llvm-svn: 116759
2010-10-18 22:36:15 +00:00
Daniel Dunbar 767bbabb24 Driver/Darwin: Forward -ObjC when linking, which may be needed when using static
libraries with Objective-C code.

llvm-svn: 116758
2010-10-18 22:08:36 +00:00
Douglas Gregor c769d6e007 Fix the translation of the PCC_ForInit code-completion context for
C++/C99/Objective-C, so that we properly include types. This fix
affects global caching of code-completion results; without caching,
the behavior was already correct.

llvm-svn: 116757
2010-10-18 22:01:46 +00:00
Douglas Gregor 643c330b91 Provide code completion for types after the '^' that starts a block
literal. 

llvm-svn: 116754
2010-10-18 21:34:55 +00:00
John McCall 18e4edae82 Fix some bugs in local class mangling brought up in PR8355.
Patch by Richard Smith!

llvm-svn: 116752
2010-10-18 21:28:44 +00:00
Douglas Gregor 8e3e8743fb Introduce code completion results for Objective-C methods, both when
declaring methods and when sending messages to them, by bringing all
of the selector into TypedCheck chunks in the completion result. This
way, we can improve the sorting of these results to account for the
full selector name rather than just the first chunk.

llvm-svn: 116746
2010-10-18 21:05:04 +00:00
Argyrios Kyrtzidis 9beef8e53d Read/write declaration attributes from/to PCH properly. Embed them in the declaration block instead of trying to create another block.
The new block was messing with the assumption that after decls block comes the stmts block.
Fixes http://llvm.org/PR8406

llvm-svn: 116737
2010-10-18 19:20:11 +00:00
Argyrios Kyrtzidis 754fb5ffb3 Merge header & cpp for test/PCH/attrs.c - more convenient to keep the tests in one source file.
llvm-svn: 116736
2010-10-18 19:20:05 +00:00
Douglas Gregor 1b035bbe3a When providing code completions of Objective-C method declarations
(after - or +), always traverse superclasses and all categories. The
programmer may want to complete a method from *anywhere*.

llvm-svn: 116723
2010-10-18 18:21:28 +00:00
Fariborz Jahanian f34011e4ca patch fixes class names missing from method names in debug information for
synthesized property. // rdar: //8498026

llvm-svn: 116717
2010-10-18 17:51:06 +00:00
Anders Carlsson 778ca32c88 Implement the first half of [dcl.attr.override]p6.
llvm-svn: 116709
2010-10-18 16:24:27 +00:00
Francois Pichet a310806ae5 Microsoft enum extensions. 2 things will change on -fms-extensions:
1. enum underlying type is int by default.
2. Error "enumerator value is not representable in the underlying type"is a ExtWarning

llvm-svn: 116704
2010-10-18 15:01:13 +00:00
Douglas Gregor 6769922d8c Add iteration over the preprocessor conditional stack to PreprocessorLexer
llvm-svn: 116703
2010-10-18 14:43:21 +00:00
Douglas Gregor 70d80598c5 Add declarations nested in a linkage specification to the output of
-ast-print-xml, from Martin Vejnar!

llvm-svn: 116702
2010-10-18 14:35:28 +00:00
Michael J. Spencer a9e009e5bd CodeGen: Fix long double on Windows using MSVC runtime.
llvm-svn: 116700
2010-10-18 07:11:10 +00:00
Michael J. Spencer feb799c14b Fix Whitespace.
llvm-svn: 116699
2010-10-18 07:10:59 +00:00
Bill Wendling 5cd41c4b13 Reapply r116684 with fixes. The test cases needed to be updated.
llvm-svn: 116696
2010-10-18 03:41:31 +00:00
Oscar Fuentes 16d73f9216 Do not use absolute path on the clang++ symlink.
Based on a patch by Ryuta Suzuki!

llvm-svn: 116695
2010-10-18 02:25:54 +00:00
Anders Carlsson 0ea1047d51 Implement [dcl.attr.override]p2 and add tests for p1 and p2.
llvm-svn: 116692
2010-10-17 23:36:12 +00:00
Anders Carlsson fa9de26518 Add test for [dcl.attr.final]p4.
llvm-svn: 116691
2010-10-17 22:47:44 +00:00
Oscar Fuentes 95b6f045f1 Use a script for creating the clang++ executable.
The previous method used the DESTDIR environment variable at configure
time, but sometimes it is only available at install time. See PR8397.

llvm-svn: 116689
2010-10-17 16:10:32 +00:00
Bill Wendling c7c9be661f Temporarily revert r116684. It was causing failures with
Clang :: CodeGen/x86_32-arguments-darwin.c
    Clang :: CodeGen/x86_32-arguments-linux.c

llvm-svn: 116687
2010-10-17 07:58:46 +00:00
Bill Wendling 812f4b123e The "gcc.dg/compat/vector-1 -m32" test was broken after the MMX rewrite. The
function parameters weren't converted to use the correct type (x86_mmx). Add a
check, similar to the one in llvm-gcc, to see if we need the x86_mmx type for
that function parameter. If so, it coerces the type to be that.

llvm-svn: 116684
2010-10-17 07:38:01 +00:00
Argyrios Kyrtzidis cd86570b93 Xcode keeps modifying the project file and I don't know how to ignore the change; just commit it.
llvm-svn: 116673
2010-10-16 17:18:07 +00:00
John McCall d509182336 Coding by inspection has its problems.
llvm-svn: 116672
2010-10-16 16:34:08 +00:00
Gabor Greif 6a46da277f validator
llvm-svn: 116668
2010-10-16 09:40:21 +00:00
Gabor Greif 4b50bd8a2e these items are done, afaik
llvm-svn: 116667
2010-10-16 09:29:38 +00:00
John McCall 17afe45a87 objc_exception_rethrow does not take an exception argument.
rdar://problem/8535238

llvm-svn: 116663
2010-10-16 08:21:07 +00:00
John McCall c9739e30c6 Reformatting.
llvm-svn: 116662
2010-10-16 07:23:36 +00:00
John McCall 2c2eb12d9c White-listing templated-scope friend decls is a good idea, but doing it
by marking the decl invalid isn't.  Make some steps towards supporting these
and then hastily shut them down at the last second by marking them as
unsupported.

llvm-svn: 116661
2010-10-16 06:59:13 +00:00
Daniel Dunbar 622581b73b Revert r116656, "IRgen/Obj-C/NeXT: Fix the IR signature for
objc_exception_rethrow, so we don't...", since something is actually trying to
call this with the wrong signature (!). Unfortunately I don't understand the new
EH infrastructure well enough to fix it immediately.

llvm-svn: 116660
2010-10-16 05:04:10 +00:00
Daniel Dunbar b4ece9cf2f Add an empty robots.txt, mostly just to reduce errors in HTTP log.
llvm-svn: 116658
2010-10-16 04:10:37 +00:00
Daniel Dunbar cc5b831149 Add a favicon.ico, mostly just to reduce errors in HTTP log.
llvm-svn: 116657
2010-10-16 04:08:19 +00:00
Daniel Dunbar 90bb5c2315 IRgen/Obj-C/NeXT: Fix the IR signature for objc_exception_rethrow, so we don't
generate unnecessary %al clear on x86_64.

llvm-svn: 116656
2010-10-16 04:08:16 +00:00
Fariborz Jahanian 1cee0adea3 Fix a rewriting bug of rewriting properties declared in
protocols. // rdar: //8558702

llvm-svn: 116652
2010-10-16 00:29:27 +00:00
Ted Kremenek 51651089ab Tweak scan-build to work with naked clang commands.
llvm-svn: 116651
2010-10-16 00:29:16 +00:00
Chandler Carruth dc689c4156 Not really sure how this worked, but it seems like a clear typo. =]
llvm-svn: 116650
2010-10-16 00:24:52 +00:00
Douglas Gregor 1f81ced14c Allow list-initialization of a local variable of class type with a
flexible array member, so long as the flexibility array member is
either not initialized or is initialized with an empty initializer
list. Fixes <rdar://problem/8540437>.

llvm-svn: 116647
2010-10-15 23:53:28 +00:00
Douglas Gregor bafff22b91 Disable this test again, which naturally fails on every platform except the one I'm building with
llvm-svn: 116642
2010-10-15 23:23:05 +00:00