aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-02-16Shift Microsoft enum extensions from -fms-extensions to -fms-compatibility, ↵Eli Friedman
so -fms-extensions doesn't affect enum semantics in incompatible ways. <rdar://problem/10657186>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150663 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Initial implementation of IRGen for the lambda ↵Eli Friedman
conversion-to-function-pointer operator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150660 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16[analyzer] Diagnostics: Ensure that the default end of diagnostic pathAnna Zaks
piece can always be generated. The default end of diagnostic path piece was failing to generate on a BlockEdge that was outgoing from a basic block without a terminator, resulting in a very simple diagnostic being rendered (ex: no path highlighting or custom visitors). Reuse another function, which is essentially doing the same thing and correct it not to fail when a block has no terminator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150659 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16[analyzer] Malloc Checker: Give up when a pointer escapes into a struct.Anna Zaks
We are not properly handling the memory regions that escape into struct fields, which led to a bunch of false positives. Be conservative here and give up when a pointer escapes into a struct. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150658 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16constexpr tidyups:Richard Smith
* Fix bug when determining whether && / || are potential constant expressions * Try harder when determining whether ?: is a potential constant expression * Produce a diagnostic on sizeof(VLA) to provide a better source location git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150657 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Add a few minor items to the 3.1 release notes.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150656 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Fix the RecursiveASTVisitor to not traverse C++ default parameters twice.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150651 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Fix test for r150648.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150650 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Start of IRGen for lambda conversion operators.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150649 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Use the new method for specifying garbage collection metadata in the module.Bill Wendling
The garbage collection metadata needs to be merged "intelligently", when two or more modules are linked together, and not merely appended. (Appending creates a section which is too large.) The module flags metadata method is the way to do this. <rdar://problem/8198537> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150648 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16[libclang] Do index statements inside a type source info. rdar://10872758Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150647 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Implicitly define a lambda's conversion functions (to functionDouglas Gregor
pointers and block pointers). We use dummy definitions to keep the invariant that an implicit, used definition has a body; IR generation will substitute the actual contents, since they can't be represented as C++. For the block pointer case, compute the copy-initialization needed to capture the lambda object in the block, which IR generation will need later. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150645 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Teach clang to add metadata tags to calls and invokes in ObjC withDan Gohman
-fno-objc-arc-exceptions. This will allow the optimizer to perform optimizations which are only safe under that flag. This is a part of rdar://10803830. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150644 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Mark the parenthesized array member initialization diagnostic as DefaultError,Richard Smith
and move it out of -Wgnu so that -Wno-gnu leaves it enabled. As requested by Eli. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150643 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Start off release notes for clang 3.1 with reference to C11 anonymous structsRichard Smith
and unions, and C++11 generalized constant expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150640 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16objc-arc: For arc's ivar layout, treat __unsafe_unretained ivarsFariborz Jahanian
as unscanned. // rdar://10832643 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150639 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Revert "Add a completed/incomplete type difference. This allows us to have"Eric Christopher
This reverts commit 9a68d4584afcd0853b930bd80235b58736e785b4. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150637 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Add a completed/incomplete type difference. This allows us to haveEric Christopher
partial types for contexts and forward decls while allowing us to complete types later on for debug purposes. This piggy-backs on the metadata replacement and rauw changes for temporary nodes and takes advantage of the incremental support I added in earlier. This allows us to, if we decide, to limit adding methods and variables to structures in order to limit the amount of debug information output into a .o file. The caching is a bit complicated though so any thoughts on untangling that are welcome. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150631 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Silence a valgrind warning, and remove an unused var.Kaelyn Uhrain
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150629 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Support GCC's bug^Wextension allowing class array members to be initalized by aRichard Smith
parenthesized braced-init-list in the base/member initialization list. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150625 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Improve typo correction involving nested name specifiers.Kaelyn Uhrain
Snooping in other namespaces when the identifier being corrected is already qualified (i.e. a valid CXXScopeSpec is passed to CorrectTypo) and ranking synthesized namespace qualifiers relative to the existing qualifier is now performed. Support for disambiguating the string representation of synthesized namespace qualifers has also been added (the change to test/Parser/cxx-using-directive.cpp is an example of an ambiguous relative qualifier). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150622 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Lambda closure types have a conversion function to a block pointerDouglas Gregor
with the same parameter types and return type as the function call operator. This is the real answer to http://stackoverflow.com/questions/4148242/is-it-possible-to-convert-a-c0x-lambda-to-a-clang-block :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150620 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15objective-c translator: fixes an obscure rewriting bugFariborz Jahanian
which attempted to rewrite the same meta-data twice. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150618 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Factor the construction of the lambda-to-function-pointer conversion ↵Douglas Gregor
function declaration into a separate function. No functionality change git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150617 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Provide common include for all diagnostic headers.David Blaikie
Reviewed by Ted Kremenek. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150616 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Store the warning option corresponding to a diagnostics as an index into the ↵Benjamin Kramer
option table instead of storing the name. Another 8 bytes + relocation removed from every diagnostic on x86_64. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150615 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Remove the unuseful -fdiagnostics-show-nameDavid Blaikie
This option was added in r129614 and doesn't have any use case that I'm aware of. It's possible that external tools are using these names - and if that's the case we can certainly reassess the functionality, but for now it lets us shave out a few unneeded bits from clang. Move the "StaticDiagNameIndex" table into the only remaining consumer, diagtool. This removes the actual diagnostic name strings from clang entirely. Reviewed by Chris Lattner & Ted Kremenek. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150612 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15When overload resolution picks an implicitly-deleted special memberDouglas Gregor
function, provide a specialized diagnostic that indicates the kind of special member function (default constructor, copy assignment operator, etc.) and that it was implicitly deleted. Add a hook where we can provide more detailed information later. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150611 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Add some Solaris include paths and fix a -lgcc_eh that apparently should be ↵David Chisnall
-lgcc_s. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150602 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Tweak comment above DiagGroup<"all">.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150600 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15A little more lambda capture initialization diagnostics cleanupDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150589 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Introduce a new initialization entity for lambda captures, andDouglas Gregor
specialize location information and diagnostics for this entity. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150588 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Fix copy-and-paste error in commentDavid Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150587 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Specialize noreturn diagnostics for lambda expressions.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150586 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Fix silly precedence error.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150585 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Specialize the diagnostic complaining about conflicting types ofDouglas Gregor
return statements within a lambda; this diagnostic previously referred to blocks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150584 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Implement code completion support for lambda capture lists.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150583 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15First pass at Solaris toolchain support. This version compiles and links helloDavid Chisnall
world on Solaris 11 for both x86 and x86-64 using the built-in assembler and Solaris (not GNU) ld, however it currently relies on a hard-coded GCC location to find crtbegin.o and crtend.o, as well as libgcc and libgcc_eh. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150580 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Convert ad-hoc `int array[expr ? -1 : 1]' assertionsDmitri Gribenko
in test/SemaCXX/nullptr.cpp to static_assert git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150579 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Make -Wformat fix-its preserve original conversion specifiers.Hans Wennborg
This commit makes PrintfSpecifier::fixType() and ScanfSpecifier::fixType() only fix a conversion specification enough that Clang wouldn't warn about it, as opposed to always changing it to use the "canonical" conversion specifier. (PR11975) This preserves the user's choice of conversion specifier in cases like: printf("%a", (long double)1); where we previously suggested "%Lf", we now suggest "%La" printf("%x", (long)1); where we previously suggested "%ld", we now suggest "%lx". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150578 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15If a static data member of a class template which could be used in a constantRichard Smith
expression is referenced, defined, then referenced again, make sure we instantiate it the second time it's referenced. This is the static data member analogue of r150518. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150560 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Implement DR1454. This allows all intermediate results in constant expressionsRichard Smith
to be core constant expressions (including pointers and references to temporaries), and makes constexpr calculations Turing-complete. A Turing machine simulator is included as a testcase. This opens up the possibilty of removing CCValue entirely, and removing some copies from the constant evaluator in the process, but that cleanup is not part of this change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150557 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15[analyzer] Malloc checker: make a bit safer.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150556 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Fix typo in r150549.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150555 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Split reinterpret_casts of member pointers out from CK_BitCast; thisJohn McCall
is general goodness because representations of member pointers are not always equivalent across member pointer types on all ABIs (even though this isn't really standard-endorsed). Take advantage of the new information to teach IR-generation how to do these reinterprets in constant initializers. Make sure this works when intermingled with hierarchy conversions (although this is not part of our motivating use case). Doing this in the constant-evaluator would probably have been better, but that would require a *lot* of extra structure in the representation of constant member pointers: you'd really have to track an arbitrary chain of hierarchy conversions and reinterpretations in order to get this right. Ultimately, this seems less complex. I also wasn't quite sure how to extend the constant evaluator to handle foldings that we don't actually want to treat as extended constant expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150551 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Implement indexing support for lambdas in libclang (both kinds), asDouglas Gregor
well as improving the RecursiveASTVisitor's walk of lambda expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150549 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15modern objective-c translator: start writing the main classFariborz Jahanian
meta-data. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150548 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15[analyzer] Add the Malloc checker to the list of tested checkers.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150535 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15[analyzer] Malloc Checker: Add another false positive as a todo test.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150534 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15[analyzer] Malloc Checker: add support for reallocf, which always freesAnna Zaks
the passed in pointer on failure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150533 91177308-0d34-0410-b5e6-96231b3b80d8