summaryrefslogtreecommitdiffstats
path: root/clang/lib
Commit message (Collapse)AuthorAgeFilesLines
* Driver: Move some argument lookup utilities into driver::ArgList.Daniel Dunbar2010-05-202-72/+70
| | | | llvm-svn: 104237
* Copy construction of non-trivial properties must notFariborz Jahanian2010-05-202-8/+4
| | | | | | be turned into a setter call (fixes radar 8008649). llvm-svn: 104235
* Picky, pickyDouglas Gregor2010-05-201-1/+1
| | | | llvm-svn: 104230
* Fix a thinkoDouglas Gregor2010-05-201-1/+1
| | | | llvm-svn: 104229
* Assert that we do not try to memcpy a non-POD class type in C++. ThisDouglas Gregor2010-05-201-1/+7
| | | | | | | | | | | | | | particular issue was the cause of the Boost.Interprocess failures, and in general will lead to horrendous, hard-to-diagnose miscompiles. The assertion itself has survives self-host and a full Boost build, so we are close to eradicating this problem in C++. Note that the assertion is *not* turned on for Objective-C++, where we still have problems with introducing memcpy's of non-POD class types. That part of the assertion will go away as soon as we fix the known issues in Objective-C++. llvm-svn: 104227
* Added TemplateArgumentListInfo to FunctionTemplateSpecializationInfo.Abramo Bagnara2010-05-202-25/+31
| | | | llvm-svn: 104226
* Fix my inability to spell 'continue' and a case where message sends ↵David Chisnall2010-05-201-4/+7
| | | | | | returning non-pointer-sized things were generating invalid IR inside @try blocks. llvm-svn: 104222
* Renamed misleading getSourceRange -> getLocalSourceRange and ↵Abramo Bagnara2010-05-2014-27/+27
| | | | | | getFullSourceRange -> getSourceRange for TypeLoc. llvm-svn: 104220
* Rework our handling of binding a reference to a temporaryDouglas Gregor2010-05-201-18/+100
| | | | | | | | | | | | | | | | | | | | subobject. Previously, we could only properly bind to a base class subobject while extending the lifetime of the complete object (of a derived type); for non-static data member subobjects, we could memcpy (!) the result and bind to that, which is rather broken. Now, we pull apart the expression that we're binding to, to figure out which subobject we're accessing, then construct the temporary object (adding a destruction if needed) and, finally, dig out the subobject we actually meant to access. This fixes yet another instance where we were memcpy'ing rather than doing the right thing. However, note the FIXME in references.cpp: there's more work to be done for binding to subobjects, since the AST is incorrectly modeling some member accesses in base classes as lvalues when they are really rvalues. llvm-svn: 104219
* Whoops.John McCall2010-05-201-1/+1
| | | | llvm-svn: 104218
* Don't try to check jump scopes in invalid functions. FixesJohn McCall2010-05-201-1/+3
| | | | | | <rdar://problem/7995494>. llvm-svn: 104217
* When creating a this-adjustment thunk where the return value is of C++Douglas Gregor2010-05-201-2/+9
| | | | | | | | | class type (that uses a return slot), pass the return slot to the callee directly rather than allocating new storage and trying to copy the object. This appears to have been the cause of the remaining two Boost.Interprocess failures. llvm-svn: 104215
* Remove accidental commitDouglas Gregor2010-05-201-8/+2
| | | | llvm-svn: 104207
* Various small fixes for construction/destruction of Objective-C++Douglas Gregor2010-05-203-5/+28
| | | | | | | | | | instance variables: - Use isRecordType() rather than isa<RecordType>(), so that we see through typedefs in ivar types. - Mark the destructor as referenced - Perform C++ access control on the destructor llvm-svn: 104206
* Expose -fobjc-nonfragile-abi2 as a top-level clang driver option. Fixes ↵Ted Kremenek2010-05-201-0/+5
| | | | | | <rdar://problem/8007063>. llvm-svn: 104205
* Support implicitly closing on 'this' in a block. Fixed PR7165.John McCall2010-05-207-163/+248
| | | | | | (the codegen works here, too, but that's annoying to test without execution) llvm-svn: 104202
* just add a fixme for the StructuredArgs leak, it shouldn't affectChris Lattner2010-05-201-0/+1
| | | | | | c++'03 code and variadic support "needs work". llvm-svn: 104195
* switch TemplateArgumentListBuilder to hold its flat argument list in a ↵Chris Lattner2010-05-201-15/+8
| | | | | | | | | | | | | | | | | | | | | smallvector instead of new[]'d. This greatly reduces the number of new[]'s, and guess what, they were all leaked. This adds a fixme in this hunk: unsigned NumPackArgs = NumFlatArgs - PackBeginIndex; + // FIXME: NumPackArgs shouldn't be negative here??? if (NumPackArgs) - PackArgs = &FlatArgs[PackBeginIndex]; + PackArgs = FlatArgs.data()+PackBeginIndex; where test/SemaTemplate/variadic-class-template-2.cpp is accessing the vector out of range and NumPackArgs is negative. I assume variadic template args are completely hosed. llvm-svn: 104194
* fix the TemplateArgumentList copy constructor to notChris Lattner2010-05-202-6/+10
| | | | | | | be a copy constructor (since it isn't one semantically) and fix the ownership bits it sets to be correct! llvm-svn: 104192
* Clarify TemplateArgumentList ownership over its "flat" and Chris Lattner2010-05-201-12/+20
| | | | | | | "structure" arg lists, the first step to fixing some massive memory leaks. llvm-svn: 104191
* tweak to (hopefully) fix darwin[89] buildbots. Thanks to Doug for the ↵Jim Grosbach2010-05-191-1/+1
| | | | | | suggested modification. llvm-svn: 104188
* When a conditional operator is an rvalue of class type, we need toDouglas Gregor2010-05-191-2/+25
| | | | | | | | | | create a temporary copy of both the "true" and "false" results. Fixes the Boost.Interprocess failures. Daniel did all the hard work of tracking down the issue, I get to type up the trivial fix for this horrible miscompile. llvm-svn: 104184
* Added basic source locations to Elaborated and DependentName types.Abramo Bagnara2010-05-1910-64/+185
| | | | llvm-svn: 104169
* Adds support for ObjC++'s GC attribute on declaration ofFariborz Jahanian2010-05-192-3/+95
| | | | | | object variables and functions returning such objects. llvm-svn: 104168
* Revert r104117, "Provide a naming class for UnresolvedLookupExprs, even whenDaniel Dunbar2010-05-192-10/+12
| | | | | | | occuring on..." which breaks some Objective-C code. Working on getting a test case... llvm-svn: 104150
* Fill in some silly defaults to silence a GCC warningDouglas Gregor2010-05-191-2/+2
| | | | llvm-svn: 104140
* Cache the linkage of a type within its canonical type, eliminatingDouglas Gregor2010-05-192-16/+39
| | | | | | | some seriously non-linear performance with deeply nested template instantiations, as shown in PR6998. llvm-svn: 104139
* Add clang support for IBOutletCollection.Ted Kremenek2010-05-197-3/+45
| | | | llvm-svn: 104135
* Revert r104106; it's breaking linking of Boost.Serialization.Douglas Gregor2010-05-192-39/+9
| | | | llvm-svn: 104121
* Implement codegen for __builtin_isnormal.Benjamin Kramer2010-05-191-5/+19
| | | | llvm-svn: 104118
* Provide a naming class for UnresolvedLookupExprs, even when occuring onChandler Carruth2010-05-192-12/+10
| | | | | | | | | | | template names. We were completely missing naming classes for many unqualified lookups, but this didn't trigger code paths that need it. This removes part of an optimization that re-uses the template name lookup done by the parser to determine if explicit template arguments actually form a template-id. Unfortunately the technique for avoiding the duplicate lookup lost needed data such as the class context in which the lookup succeeded. llvm-svn: 104117
* Profile type-dependent uses of overloaded operators in C++ the sameDouglas Gregor2010-05-191-0/+208
| | | | | | | way regardless of whether some overloaded operator functions were found by name lookup within the template. Fixes PR6851. llvm-svn: 104107
* Teach clang to instantiate attributes on more declarations. Fixes PR7102.Douglas Gregor2010-05-192-9/+39
| | | | llvm-svn: 104106
* Implement C++ builtin operator candidates for vector types.Douglas Gregor2010-05-192-18/+91
| | | | llvm-svn: 104105
* Fix a GCC warning about inline functions not being defined. Until r104081, onlyChandler Carruth2010-05-191-3/+3
| | | | | | | | | the same .cpp file as provided the definitions referenced these functions, hiding the issue. However, they are clearly no longer inline. Let me know if there is a reason to move their definitions to the header and make them truly inline. llvm-svn: 104104
* Fix an obvious goof that rjmccall found by inspection. No testcase, suggestionsChandler Carruth2010-05-191-1/+1
| | | | | | welcome for one. llvm-svn: 104101
* Misc. fixes to bring Objetive-C++'s handling ofFariborz Jahanian2010-05-182-2/+12
| | | | | | | gc attributes to be inline with Objective-C (for radar 7925141). llvm-svn: 104084
* Protect isIntegerConstantExpr from seeing type- or value-dependentDouglas Gregor2010-05-183-16/+32
| | | | | | expressions in attributes, pragmas. llvm-svn: 104083
* Implement C++ support for vector and extended vector types. ThisDouglas Gregor2010-05-183-8/+79
| | | | | | | | | | involves extending implicit conversion sequences to model vector conversions and vector splats, along with teaching the C++ conditional operator-checking code about vector types. Fixes <rdar://problem/7983501>. llvm-svn: 104081
* Teach CursorVisitor about duplicate ObjCPropertyDecls that can arise because ↵Ted Kremenek2010-05-182-4/+18
| | | | | | | | | | of a current design limitation in how we handle Objective-C class extensions. This was causing the CursorVisitor to essentially visit an @property twice (once in the @interface, the other in the class extension). Fixes <rdar://problem/7410145>. llvm-svn: 104055
* Add support for Microsoft's __thiscall, from Steven Watanabe!Douglas Gregor2010-05-1810-4/+30
| | | | llvm-svn: 104026
* Correctly initialize bases with member pointers. This should fix PR6441 but ↵Anders Carlsson2010-05-182-14/+139
| | | | | | that test case is a bit weird and I'd like to investigate further before closing that bug. llvm-svn: 104025
* Give a slight edge to the context-sensitive keyword 'super' overDouglas Gregor2010-05-181-1/+20
| | | | | | | | | non-function-local declarations with names similar to what the user typed. For example, this allows us to correct 'supper' to 'super' in an Objective-C message send, even though the C function 'isupper' has the same edit distance. llvm-svn: 104023
* Tweak typo-correction logic a bit regarding "super", so that weDouglas Gregor2010-05-184-5/+12
| | | | | | | | | consider "super" as a candidate whenever we're parsing an expression within an Objective-C method in an interface that has a superclass. At some point, we'd like to give "super" a little edge over non-local names; that will come later. llvm-svn: 104022
* Permit Objective C object pointers to be const_casted.John McCall2010-05-182-1/+13
| | | | llvm-svn: 104019
* Switch over the tablegen to use much prettier range technologyAlexis Hunt2010-05-182-4/+4
| | | | | | | Also rename ABSTRACT to ABSTRACT_STMT, in keeping with the other .def files llvm-svn: 104017
* "The attached patch allows clang to find the headersDouglas Gregor2010-05-181-9/+33
| | | | | | | for Visual Studio 2010. It also adds a registry search for the Express edition,", from Steven Watanabe! llvm-svn: 104015
* I hate this commit.Douglas Gregor2010-05-181-70/+33
| | | | | | | | | | | | | | | | | | | | | Revert much of the implementation of C++98/03 [temp.friend]p5 in r103943 and its follow-ons r103948 and r103952. While our implementation was technically correct, other compilers don't seem to implement this paragraph (which forces the instantiation of friend functions defined in a class template when a class template specialization is instantiated), and doing so broke a bunch of Boost libraries. Since this behavior has changed in C++0x (which instantiates the friend function definitions when they are used), we're going to skip the nowhere-implemented C++98/03 semantics and go straight to the C++0x semantics. This commit is a band-aid to get Boost up and running again. It doesn't really fix PR6952 (which this commit un-fixes), but it does deal with the way Boost.Units abuses this particular paragraph. llvm-svn: 104014
* Keep track of the LLVM field numbers for non-virtual bases.Anders Carlsson2010-05-182-4/+25
| | | | llvm-svn: 104013
* Start laying out bases as individual fields. We still use ugly i8 arrays but ↵Anders Carlsson2010-05-181-14/+61
| | | | | | this is a step in the right direction. llvm-svn: 104012
OpenPOWER on IntegriCloud