summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
* Add a method to query whether or not a class has a default constructor declared.Nick Lewycky2011-05-121-1/+7
| | | | llvm-svn: 131255
* After issuing diagnostics on circular protocol list,Fariborz Jahanian2011-05-122-5/+8
| | | | | | | | don't build circular AST in protocol's protocol list when user code has introduced it. Indexer and other clients may crash. // rdar://9221614 llvm-svn: 131254
* Doug convinced me that DW_AT_APPLE_objc_complete_type is more appropriate name.Devang Patel2011-05-124-4/+4
| | | | | | s/DW_AT_APPLE_objc_class_extension/DW_AT_APPLE_objc_complete_type/g llvm-svn: 131245
* Do not add AT_APPLE_objc_class_extension attribute if @implementation is not ↵Devang Patel2011-05-122-2/+13
| | | | | | seen. llvm-svn: 131242
* enable __has_feature(is_standard_layout)Howard Hinnant2011-05-122-0/+6
| | | | llvm-svn: 131240
* Use DW_AT_APPLE_objc_class_extension attribute to identify interfaces that ↵Devang Patel2011-05-123-1/+35
| | | | | | | | represent class extension. Radar 9423077. llvm-svn: 131239
* LLVM doesn't always optimize away the four loads from this:Bill Wendling2011-05-125-2/+8
| | | | | | | | | | (__m128){ p[0], p[1], p[2], p[3] } which produces really bad code. This could be done in instcombine, but it's probably better to do it in the front-end instead. <rdar://problem/9424836> llvm-svn: 131237
* Add clang_CXXMethod_isVirtual() to libclang, from Erik Verbruggen!Douglas Gregor2011-05-124-0/+22
| | | | llvm-svn: 131230
* Properly parse the 'default' and 'delete' keywords.Alexis Hunt2011-05-1211-79/+213
| | | | | | | | | | | | | | | | | They are actually grammatically considered definitions and parsed accordingly. This fixes the outstanding bugs regarding defaulting functions after their declarations. We now really nicely diagnose the following construct (try it!) int foo() = delete, bar; Still todo: Defaulted functions other than default constructors Test cases (including for the above construct) llvm-svn: 131228
* Make it so that we actually generate definitions for explicitlyAlexis Hunt2011-05-123-4/+5
| | | | | | | | | | defaulted default constructors. As it happens, making sure that we handle out-of-line defaulted functions properly will involved making sure that we actually parse them correctly, so that's coming after. llvm-svn: 131224
* Implement deletion of explicitly defaulted default constructors.Alexis Hunt2011-05-123-31/+19
| | | | | | | We still don't parse out-of-line defaults correctly, which is needed to get the full effect out of this patch. llvm-svn: 131223
* Fix crasher spotted in IWYU.Nick Lewycky2011-05-121-1/+2
| | | | llvm-svn: 131222
* PR9899: handle pseudo-destructors correctly in noexcept() expressions.Eli Friedman2011-05-122-1/+7
| | | | llvm-svn: 131220
* Make this code more resilient against catch variables which need cleanups.John McCall2011-05-121-3/+4
| | | | llvm-svn: 131215
* Fix typo in comment.Nick Lewycky2011-05-121-1/+1
| | | | llvm-svn: 131212
* Fix PR9902: correctly substitute alias templates within the template in ↵Richard Smith2011-05-122-0/+31
| | | | | | which they are defined: provide an empty list of arguments for each containing template context during substitution. llvm-svn: 131211
* Implement CWG1170, which makes access-control errors into templateDouglas Gregor2011-05-114-3/+53
| | | | | | | argument deduction failures. Only implemented in C++0x, since this is a significant change in behavior from C++98/03. llvm-svn: 131209
* When checking for the necessary 'template<>' headers based on theDouglas Gregor2011-05-114-4/+56
| | | | | | | | | | nested of an out-of-line declaration, only require a 'template<>' header for each enclosing class template that hasn't been previously specialized; previously, we were requiring 'template<>' for enclosing class templates and members of class templates that hadn't been previously specialized. Fixes <rdar://problem/9422013>. llvm-svn: 131207
* Place "conflicting distributed object modifiers..." warnings under a -W flag.Ted Kremenek2011-05-111-2/+4
| | | | llvm-svn: 131206
* Commit some missing changes to the previous patch.Alexis Hunt2011-05-112-4/+16
| | | | | | This means we get C++0x jump-across-intializer semantics correct. llvm-svn: 131204
* Implement implicit deletion of default constructors.Alexis Hunt2011-05-118-21/+210
| | | | | | | | Yes, I'm aware that the diagnostics are awful. Tests to follow. llvm-svn: 131203
* Add a Microsoft C test following r131201.Francois Pichet2011-05-111-0/+8
| | | | llvm-svn: 131202
* In Microsoft mode, allow conversion from pointer to integral type no matter ↵Francois Pichet2011-05-112-3/+13
| | | | | | | | | | | what size the integral type is. Necessary to parse MFC code. Example: void f(char *ptr) { char var = (char)ptr; } llvm-svn: 131201
* Clean up consequences of cut and paste.Fariborz Jahanian2011-05-111-69/+69
| | | | llvm-svn: 131190
* Implenment #pack pragma and ms_struct attribute layout.Fariborz Jahanian2011-05-112-21/+158
| | | | | | Concludes // radar://8823265. llvm-svn: 131188
* Handle gcc-compatible compilers (such as clang) the same way we handleOscar Fuentes2011-05-112-2/+2
| | | | | | | | gcc. Fixes PR9886. llvm-svn: 131182
* Teach CFG building how to deal with CXXMemberCallExprs and BoundMemberTy,John McCall2011-05-113-16/+35
| | | | | | | then teach -Wreturn-type to handle the same. Net effect: we now correctly handle noreturn attributes on member calls in the CFG. llvm-svn: 131178
* PR9882: Fix noexcept to deal with dependent new, delete, calls, andEli Friedman2011-05-112-17/+34
| | | | | | dynamic_cast correctly. llvm-svn: 131177
* In Microsoft mode, allow pure specifier (=0) on inline functions declared at ↵Francois Pichet2011-05-116-5/+30
| | | | | | | | | | | | | class scope. This removes 2 errors when parsing MFC code with clang Example: class A { virtual void f() = 0 { } } llvm-svn: 131175
* Use a heralded conversion to bool in inline-asm constraints.John McCall2011-05-102-1/+11
| | | | llvm-svn: 131170
* Fix crash in -Wuninitialized when using switch statments whose condition is ↵Ted Kremenek2011-05-102-5/+22
| | | | | | a logical operation. llvm-svn: 131158
* Tweak the diagnostics for the C++0x extensions to friend types to noteDouglas Gregor2011-05-104-8/+9
| | | | | | | | that they are C++0x extensions, and put them in the appropriate group. We already support most of the semantics. Addresses <rdar://problem/9407525>. llvm-svn: 131153
* Change magic string "abc" to better magic string "qux".Matt Beaumont-Gay2011-05-101-6/+2
| | | | | | | | | | | | | Wait, what? So, we run Clang (and LLVM) tests in an environment where the md5sum of the input files becomes a component of the path. When testing the preprocessor, the path becomes part of the output (in line directives). In this test, we were grepping for the absence of "abc" in the output. When the stars aligned properly, the md5sum component of the path contained "abc" and the test failed. Oops. llvm-svn: 131147
* Re-do R131114 without breaking code.Alexis Hunt2011-05-107-30/+30
| | | | | | | | | I've edited one diagnostic which would print "copy constructor" for copy constructors and "constructor" for any other constructor. If anyone is extremely enamored with this, it can be reinstated with a simple boolean flag rather than calling getSpecialMember, which is inappropriate. llvm-svn: 131143
* Support pack pragma and ms_struct attributes. // rdar://8823265Fariborz Jahanian2011-05-102-0/+41
| | | | llvm-svn: 131142
* Elide __label__ declarations from the CFG. This resolves a crash in ↵Ted Kremenek2011-05-102-0/+16
| | | | | | CFGRecStmtDeclVisitor (crash in static analyzer). llvm-svn: 131141
* Reimplement Sema::MatchTemplateParametersToScopeSpecifier() based onDouglas Gregor2011-05-106-154/+448
| | | | | | | | | | | | | | | | | | the semantic context referenced by the nested-name-specifier rather than the syntactic form of the nested-name-specifier. The previous incarnation was based on my complete misunderstanding of C++ [temp.expl.spec]. The latest C++0x working draft clarifies the requirements here, and this rewrite is intended to follow that. Along the way, improve source location information in the diagnostics. For example, if we report that a specific type needs or doesn't need a 'template<>' header, we dig out that type in the nested-name-specifier and highlight its range. Fixes: PR5907, PR9421, PR8277, PR8708, PR9482, PR9668, PR9877, and <rdar://problem/9135379>. llvm-svn: 131138
* Don't strlen() every file before parsing it.Eli Friedman2011-05-101-1/+2
| | | | llvm-svn: 131132
* Add test for PR9884.Rafael Espindola2011-05-101-0/+17
| | | | llvm-svn: 131127
* Revert 131114. This fixes PR9884.Rafael Espindola2011-05-103-12/+9
| | | | llvm-svn: 131126
* Fixes compilation with Visual Studio by replacing the non-standard ↵Manuel Klimek2011-05-101-2/+2
| | | | | | vector::data() access. llvm-svn: 131116
* Further implement defaulting constructors.Alexis Hunt2011-05-105-152/+245
| | | | | | | | | | | | | Focus is on default constructors for the time being. Currently the exception specification and prototype are processed correctly. Codegen might work but in all likelihood doesn't. Note that due to an error, out-of-line defaulting of member functions is currently impossible. It will continue to that until I muster up the courage to admit that I secretly pray to epimetheus and that I need to rework the way default gets from Parse -> Sema. llvm-svn: 131115
* The last of the trivial constructor changes, make CXXSpecialMemberAlexis Hunt2011-05-103-9/+12
| | | | | | reflect our new, more accurate AST. llvm-svn: 131114
* Add a __uuidof test where the uuid attribute is on the second declaration. Francois Pichet2011-05-101-7/+17
| | | | | | Also some -fdelayed-template-parsing test refactoring. llvm-svn: 131113
* Ignore const/volatile/restrict qualifiers on anonymous structs andDouglas Gregor2011-05-094-5/+55
| | | | | | unions. Fixes PR8326. llvm-svn: 131109
* Add a FIXME.Francois Pichet2011-05-091-0/+1
| | | | llvm-svn: 131108
* 'long long' requires special treatment in ms_structFariborz Jahanian2011-05-092-1/+21
| | | | | | structs (impacts 32-bit only though). llvm-svn: 131103
* Extend the tag-ambiguity hack I committed in r130810 for tagDouglas Gregor2011-05-092-4/+13
| | | | | | definitions to also include tag declarations. Fixes PR8151. llvm-svn: 131102
* Clean up trivial default constructors now.Alexis Hunt2011-05-098-30/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | hasTrivialDefaultConstructor() really really means it now. Also implement a fun standards bug regarding aggregates. Doug, if you'd like, I can un-implement that bug if you think it is truly a defect. The bug is that non-special-member constructors are never considered user-provided, so the following is an aggregate: struct foo { foo(int); }; It's kind of bad, but the solution isn't obvious - should struct foo { foo (int) = delete; }; be an aggregate or not? Lastly, add a missing initialization to FunctionDecl. llvm-svn: 131101
* When determining whether we need to instantiate a function type,Douglas Gregor2011-05-092-0/+28
| | | | | | | also consider whether any of the parameter types (as written, prior to decay) are dependent. Fixes PR9880 and <rdar://problem/9408413>. llvm-svn: 131099
OpenPOWER on IntegriCloud