summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
* Remove CK_DynamicToNull.Anders Carlsson2011-04-1110-27/+3
| | | | llvm-svn: 129265
* When we know that a dynamic_cast always returns null, we can makeAnders Carlsson2011-04-112-10/+51
| | | | | | | CodeGenFunction::EmitDynamicCast always return null or throw a bad_cast exception. llvm-svn: 129264
* Add CXXDynamicCastExpr::isAlwaysNull() which will be replacing the cast kind ↵Anders Carlsson2011-04-112-0/+32
| | | | | | I added. llvm-svn: 129263
* Clean up CodeGenFunction::EmitDynamicCast. No functionality change.Anders Carlsson2011-04-111-104/+141
| | | | llvm-svn: 129262
* Replace a couple of Builder.CreateICmpEQ with Builder.CreateIsNull. No ↵Anders Carlsson2011-04-112-9/+3
| | | | | | functionality change. llvm-svn: 129261
* PR9669: implement correct checking for [dcl.init.string]p2.Eli Friedman2011-04-114-7/+20
| | | | llvm-svn: 129260
* Remove the CodeGenCXX/dyncast.cpp test; it isn't really super useful to ↵Anders Carlsson2011-04-101-367/+0
| | | | | | match on huge chunks of LLVM output. llvm-svn: 129258
* As a first step towards fixing PR9641, add a CK_DynamicToNull cast kind whichAnders Carlsson2011-04-1010-3/+27
| | | | | | | | | | | | | | | | | | represents a dynamic cast where we know that the result is always null. For example: struct A { virtual ~A(); }; struct B final : A { }; struct C { }; bool f(B* b) { return dynamic_cast<C*>(b); } llvm-svn: 129256
* Simplify calling CheckPlaceholderExpr, converge on it in a few places,John McCall2011-04-107-71/+50
| | | | | | and move a vector-splat check to follow l-value conversion. llvm-svn: 129254
* Strip off parens and no-op casts when deciding if an expr can be ↵Anders Carlsson2011-04-102-1/+35
| | | | | | devirtualized. Fixes the second half of PR9660. llvm-svn: 129253
* Change CollectPrimaryBases to collect the bases in the right order. Fixes ↵Anders Carlsson2011-04-102-7/+31
| | | | | | one half of PR9660. llvm-svn: 129252
* Make -fdump-vtable-layouts also dump vtable indices for all virtual member ↵Anders Carlsson2011-04-101-0/+42
| | | | | | functions in the class. llvm-svn: 129250
* Reflect rename on LLVM cmake file.Oscar Fuentes2011-04-101-1/+1
| | | | llvm-svn: 129246
* Enhance the diagnostic for literal float -> int conversions to suggestChandler Carruth2011-04-104-11/+51
| | | | | | | | | | | | rewriting the literal when the value is integral. It is not uncommon to see code written as: const int kBigNumber = 42e5; Without any real awareness that this is no longer an ICE. The note helps automate and ease the process of fixing code that violates the warning. llvm-svn: 129243
* Refactor 129240 to merge the old default argument into the new parameter.Francois Pichet2011-04-101-5/+13
| | | | llvm-svn: 129242
* PR9580: Handle vectors correctly in ScalarExprEmitter::EmitRem.Eli Friedman2011-04-102-10/+126
| | | | | | | While I'm here, FileCheck-ize the ext-vector test, so we actually check what it is generating. llvm-svn: 129241
* MSVC accepts that default parameters be redefined for member functionsFrancois Pichet2011-04-103-3/+25
| | | | | | | | of template class. The new value is ignored. This fixes 1 error when parsing MSVC 2010 header files with clang. llvm-svn: 129240
* libclang output name is now libclang. This solves a name collisionOscar Fuentes2011-04-101-2/+2
| | | | | | | | | | when building with Visual Studio. `clang.dll' and `clang.exe' would have the same `clang.ilk' and `clang.pdb'. On a serial build those files would be overwritten as clang.exe/clang.dll are created. On a parallel build there is a risk of both files being written at the same time. On that case VS fails. llvm-svn: 129239
* Fix a bunch of major problems with __unknown_anytype and properly testJohn McCall2011-04-0914-39/+223
| | | | | | for them. The only major missing feature is references. llvm-svn: 129234
* Make sure we or together the overflow flags of the multiply and add, so theEli Friedman2011-04-092-2/+3
| | | | | | check is triggered appropriately. Reported on cfe-dev. llvm-svn: 129231
* strcat() and strncat() model additions to CStringChecker.Lenny Maiorani2011-04-092-9/+222
| | | | | | Validates inputs are not NULL, checks for overlapping strings, concatenates the strings checking for buffer overflow, sets the length of the destination string to the sum of the s1 length and the s2 length, binds the return value to the s1 value. llvm-svn: 129215
* refactor flags for TokenKinds.defDylan Noblesmith2011-04-091-12/+12
| | | | | | | | Make KEYALL a combination of all other flags instead of its own separate flag. Also rewrite the enum definitions in hex instead of decimal. llvm-svn: 129213
* refactor -ccc-gcc-name codeDylan Noblesmith2011-04-093-18/+24
| | | | | | | | | | | | Put the logic for deciding the default name for gcc/g++ in the only place that actually cares about it. This also pushes an ifdef out of the generic driver code to a little further down, when the target is actually known. Hopefully it can be changed into just a runtime check in the future. llvm-svn: 129212
* PR8369: make __attribute((regparm(0))) work correctly. Original patch byEli Friedman2011-04-0911-22/+44
| | | | | | pageexec@freemail.hu, tweaks by me. llvm-svn: 129206
* Clean up the bool conversion warning. Group it with other conversionChandler Carruth2011-04-093-11/+12
| | | | | | | warnings, and make its text appropriate for constant bool expressions other than 'false'. This should finish off PR9612. llvm-svn: 129205
* Add support for warning on general null pointer expressions of booleanChandler Carruth2011-04-092-6/+13
| | | | | | | type rather than just the literal 'false'. This begins fixing PR9612, but the message is now wrong. WIP, the cleanup of the messaging is next. llvm-svn: 129204
* fix indentationChris Lattner2011-04-091-7/+6
| | | | llvm-svn: 129202
* accept -x objc-cpp-output as an alias for -x objective-c-cpp-output,Chris Lattner2011-04-091-0/+1
| | | | | | per PR9577 llvm-svn: 129201
* add a __sync_swap builtin to fill out the rest of the __sync builtins. Chris Lattner2011-04-095-1/+55
| | | | | | Patch by Dave Zarzycki! llvm-svn: 129189
* Convert the PointerWidthInBytes variable in EmitMemberPointer() to CharUnitsKen Dyck2011-04-091-4/+4
| | | | | | to eliminate a divide-by-8. No change in functionality intended. llvm-svn: 129180
* Eliminate a divide-by-8 in BuildVMIClassTypeInfo() by using CharUnits forKen Dyck2011-04-091-4/+5
| | | | | | the base offset. No change in functionality intended. llvm-svn: 129179
* Remove a pair of unused diagnostic messages.Eric Christopher2011-04-091-5/+0
| | | | llvm-svn: 129178
* Apply explicit braces to avoid ambiguous 'else' [-Wparentheses]Nick Lewycky2011-04-091-2/+2
| | | | llvm-svn: 129176
* Eat the UTF-8 BOM at the beginning of a file since it's ignored anyhow.Eric Christopher2011-04-092-7/+19
| | | | | | | | Nom Nom Nom. Patch by Anton Korobeynikov! llvm-svn: 129174
* complete documentation of flags, patch by nobledChris Lattner2011-04-081-0/+1
| | | | llvm-svn: 129173
* Fixes a rewrting bug of a property-dot syntax expression insideFariborz Jahanian2011-04-082-0/+28
| | | | | | a block. First part of // rdar://9254348 llvm-svn: 129171
* Properly traverse a ObjCMethodDecl in RecursiveASTVisitor.Argyrios Kyrtzidis2011-04-081-3/+11
| | | | llvm-svn: 129169
* typo fix + expandChris Lattner2011-04-081-2/+2
| | | | llvm-svn: 129167
* Start overhauling static analyzer support for C++ constructors. The ↵Ted Kremenek2011-04-083-36/+135
| | | | | | | | | inlining support isn't complete, and needs to be reworked to model CallEnter/CallExit (just like all other calls). For now, treat constructors mostly like other function calls, making the analysis of C++ code just a little more useful. llvm-svn: 129166
* Minor format fix.Evan Cheng2011-04-081-2/+2
| | | | llvm-svn: 129164
* Document -ftrap-function= optionEvan Cheng2011-04-081-0/+12
| | | | llvm-svn: 129162
* Do not use zero as an upper bound for unbounded array because upper bound ↵Devang Patel2011-04-081-6/+17
| | | | | | zero also indicates one element array. llvm-svn: 129157
* Rename -mtrap_function= to -ftrap_function= since it's now a target neutral ↵Evan Cheng2011-04-082-13/+9
| | | | | | options. llvm-svn: 129153
* Add -mtrap_function=<> option. rdar://9257465Evan Cheng2011-04-082-0/+13
| | | | llvm-svn: 129145
* Use ExprResult& instead of Expr *& in SemaJohn Wiegley2011-04-0817-1406/+1856
| | | | | | | | | | | | | | | | | | | | | | | | | This patch authored by Eric Niebler. Many methods on the Sema class (e.g. ConvertPropertyForRValue) take Expr pointers as in/out parameters (Expr *&). This is especially true for the routines that apply implicit conversions to nodes in-place. This design is workable only as long as those conversions cannot fail. If they are allowed to fail, they need a way to report their failures. The typical way of doing this in clang is to use an ExprResult, which has an extra bit to signal a valid/invalid state. Returning ExprResult is de riguour elsewhere in the Sema interface. We suggest changing the Expr *& parameters in the Sema interface to ExprResult &. This increases interface consistency and maintainability. This interface change is important for work supporting MS-style C++ properties. For reasons explained here <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-February/013180.html>, seemingly trivial operations like rvalue/lvalue conversions that formerly could not fail now can. (The reason is that given the semantics of the feature, getter/setter method lookup cannot happen until the point of use, at which point it may be found that the method does not exist, or it may have the wrong type, or overload resolution may fail, or it may be inaccessible.) llvm-svn: 129143
* Warn for any kind of initialization if initializer does notFariborz Jahanian2011-04-086-7/+96
| | | | | | | implement lhs's protocols. // rdar://9091389. llvm-svn: 129142
* fix a typo, patch by PaX team.Chris Lattner2011-04-081-1/+1
| | | | llvm-svn: 129141
* Switch 'is possibly uninitialized' to 'may be uninitialized' based onChandler Carruth2011-04-083-15/+15
| | | | | | Chris's feedback. llvm-svn: 129127
* Now that the analyzer is distinguishing between uninitialized uses thatChandler Carruth2011-04-085-23/+24
| | | | | | | definitely have a path leading to them, and possibly have a path leading to them; reflect that distinction in the warning text emitted. llvm-svn: 129126
* Driver: Don't attempt to forward some Clang-only options to cc1.Daniel Dunbar2011-04-072-4/+11
| | | | llvm-svn: 129108
OpenPOWER on IntegriCloud