aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-01-27Teach -Wuninitialized to suggest "= false" for initializing bool variables.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124352 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27Notes on dynamic array cookies in MSVC.John McCall
My thanks to chapuni for his help in investigating this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124351 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27Import three interesting bits that apply only to C++ methods.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124349 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27Teach -Wuninitialized not to assert when analyzingTed Kremenek
blocks that reference captured variables. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124348 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27Teach -Wuninitialized about ObjC fast enumeration loops.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124347 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27When we run into a template parameter that should have a defaultDouglas Gregor
argument but doesn't (because previous template parameters had default arguments), clear out all of the default arguments so that we maintain the invariant that a template parameter has a default argument only if subsequence template parameters also have default arguments. Fixes a crash-on-invalid <rdar://problem/8913649>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124345 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27Cope with parenthesized function declarators when emitting aDouglas Gregor
diagnostic about ref-qualifiers where they do not belong. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124344 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27Fix a horrible bug in our handling of C-style casting, where a C-styleDouglas Gregor
derived-to-base cast that also casts away constness (one of the cases for static_cast followed by const_cast) would be treated as a bit-cast rather than a derived-to-base class, causing miscompiles and heartburn. Fixes <rdar://problem/8913298>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124340 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Fixes an IRgen bug where __block variable isFariborz Jahanian
referenced in the block-literal initializer of that variable. // rdar://8893785 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124332 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Update C++0x status web pageDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124326 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26make `make` work in examples/PrintFucntionNames on Mac. I checked that it ↵Nico Weber
still works on Linux. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124325 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Add __has_feature(cxx_reference_qualified_functions); update tests andDouglas Gregor
documentation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124322 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Implement the restriction that a function with a ref-qualifier cannotDouglas Gregor
overload a function without a ref-qualifier (C++0x [over.load]p2). This, apparently, completes the implementation of rvalue references for *this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124321 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Handle C-style casts to rvalue reference types that cast away constness.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124319 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Improve the extension warning for the use of ref-qualifiers, toDouglas Gregor
distinguish them from rvalue references. Using the rvalue-references warning was weird when the ref-qualifier was '&'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124316 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26When mangling a qualified array type, push the qualifiers down to theJohn McCall
element type. Fixes rdar://problem/8913416. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124315 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Rvalue references for *this: explicitly keep track of whether aDouglas Gregor
reference binding is for the implicit object parameter of a member function with a ref-qualifier. My previous comment, that we didn't need to track this explicitly, was wrong: we do in fact get rvalue-references-prefer-rvalues overloading with ref-qualifiers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124313 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Rvalue references for *this: implement the implicit conversion rulesDouglas Gregor
for the implicit object argument to a non-static member function with a ref-qualifier (C++0x [over.match.funcs]p4). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124311 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Un-nest the meat of this function.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124310 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Fix some obvious bugs in the conditional-cleanup code and then make theJohn McCall
dtor cleanup use it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124309 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Move InheritableAttr::isInherited to AttrPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124299 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Remove Attr::isMerged; it is not used any more and redundant withPeter Collingbourne
InheritableAttr git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124298 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Rvalue references for *this: allow functions to be overloaded based onDouglas Gregor
the presence and form of a ref-qualifier. Note that we do *not* yet implement the restriction in C++0x [over.load]p2 that requires either all non-static functions with a given parameter-type-list to have a ref-qualifier or none of them to have a ref-qualifier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124297 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Rvalue references for *this: add name mangling for ref-qualifiers,Douglas Gregor
using rules that I just made up this morning. This encoding has now been proposed to the Itanium C++ ABI group for inclusion, but of course it's still possible that the mangling will change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124296 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Rvalue references for *this: tentative parsing and template argument deduction.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124295 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Reference qualifiers for *this: implement C++0x [expr.mptr.oper]p6,Douglas Gregor
the restrictions on .* and ->* for ref-qualified pointer-to-member functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124294 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Clean up the C++0x __has_feature tests. Specifically:Douglas Gregor
- Don't publicize a C++0x feature through __has_feature if we aren't in C++0x mode (even if the feature is available only with a warning). - "auto" is not implemented well enough for its __has_feature to be turned on. - Fix the test of C++0x __has_feature to actually test what we're trying to test. Searching for the substring "foo" when our options are "foo" and "no_foo" doesn't work :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124291 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Reinstate r124236 (tweaking the rvalue-reference overload resolutionDouglas Gregor
rules), now that we've actually have a clean build for me to sully. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124290 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Rvalue references for *this: Douglas Gregor
- Add ref-qualifiers to the type system; they are part of the canonical type. Print & profile ref-qualifiers - Translate the ref-qualifier from the Declarator chunk for functions to the function type. - Diagnose mis-uses of ref-qualifiers w.r.t. static member functions, free functions, constructors, destructors, etc. - Add serialization and deserialization of ref-qualifiers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124281 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Teach -Wreturn-type that destructors can appearTed Kremenek
after a 'return' in a CFGBlock. This accidentally was working before, but the false assumption that 'return' always appeared at the end of the block was uncovered by a recent change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124280 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Merge -Wuninitialized-experimental into -Wuninitialized.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124279 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Tweak -Wuninitialized-experimental to not emitTed Kremenek
a warning for uses of an uninitialized variable when the use is a void cast, e.g. (void) x. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124278 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Better framework for conditional cleanups; untested as yet.John McCall
I'm separately committing this because it incidentally changes some block orderings and minor IR issues, like using a phi instead of an unnecessary alloca. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124277 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Rvalue references for *this: parse ref-qualifiers.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124276 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Use RecordLayout::getBaseClassOffset() where CharUnits are needed instead ofKen Dyck
converting getBaseClassOffsetInBits() to CharUnits. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124274 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26[analyzer] Enable the self-init checker under command-line option ↵Argyrios Kyrtzidis
'-analyzer-check-objc-self-init' which by default is enabled by the driver for '--analyze'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124266 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Correct r124242 making sure function chunk that gets diagnosed is really ↵Argyrios Kyrtzidis
about the block. Clairvoyance by John! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124264 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26[analyzer] Improve the diagnostic for the self-init checker. Suggestion by Ted!Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124263 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Tweak the rule for deciding if a provisional ivar is neededFariborz Jahanian
in default ivar synthesis. Fixes // rdar://8913053. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124258 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26Remove CompilerInstance::getOutputFileList because it is unimplemented and ↵Jeffrey Yasskin
unused. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124256 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25[analyzer] Do the self-init check only on NSObject subclasses. Patch by ↵Argyrios Kyrtzidis
Jean-Daniel Dupas! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124249 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Speculatively revert r124236Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124247 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Diagnose calling convention attribute incompatibilities. Fixes rdar://8876096.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124244 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Fix infinite loop during error diagnostics. Fixes rdar://8875304.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124243 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Change error "function cannot return array type" -> "blocks cannot return ↵Argyrios Kyrtzidis
array type" when blocks are involved. Addresses rdar://8876238. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124242 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Tweak return-noreturn.cpp test to have its originalTed Kremenek
contents, with the additional warning flag (and still marked XFAIL). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124239 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Fix regression in -Wreturn-type caused by notTed Kremenek
handling all CFGElement kinds. While writing the test case, it turned out that return-noreturn.cpp wasn't actually testing anything since it has the wrong -W flag. That uncovered another regression with the handling of destructors marked noreturn. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124238 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Speculatively implement a tweak to the C++0x overload resolution rulesDouglas Gregor
for reference binding (C++ [over.rank.ics]p3b1sb4), so that we prefer the binding of an lvalue reference to a function lvalue over the binding of an rvalue reference. This change resolves the ambiguity with std::forward and lvalue references to function types in a way that seems consistent with the original rvalue references proposal. My proposed wording for this change is shown in isBetterReferenceBindingKind(); we'll try to get this change adopted in the C++0x working paper as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124236 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Unbreak CMake build.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124235 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25Don't try and symbolicate unions; we don't reasonTed Kremenek
about them yet. Fixes crash reported in PR 9049. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124228 91177308-0d34-0410-b5e6-96231b3b80d8