Commit Graph

10389 Commits

Author SHA1 Message Date
Mike Stump 97d01d50d9 Improved ABI compliance for __block variables. No testcases yet as we
still give an unsupported error for them due to the fact this is a
work in progress.

llvm-svn: 66007
2009-03-04 03:23:46 +00:00
Ted Kremenek d275bf3c54 Added the notion of a "boundable region", which is a region that can have a direct binding in the StoreManager.
llvm-svn: 66005
2009-03-04 02:43:08 +00:00
Daniel Dunbar 14a41c5e98 Add some more FIXME's about bits we could pack better.
llvm-svn: 66003
2009-03-04 02:27:50 +00:00
Daniel Dunbar 47076e7155 Woot, save 8 bytes in Decl on 64-bit by reordering fields. This
reduces allocated Decl size by ~8% on Cocoa.h (~700k).

llvm-svn: 66002
2009-03-04 02:26:41 +00:00
Ted Kremenek d69e29e8c4 This test now passes using RegionStore.
llvm-svn: 65988
2009-03-04 00:23:28 +00:00
Ted Kremenek 52170722ec RegionStore: Handle implicit parameters.
llvm-svn: 65987
2009-03-04 00:23:05 +00:00
Ted Kremenek 74a2d0f8ca Create "TypedViewRegions" that layer on top of SymbolicRegions when handling
pointer-to-pointer casts involving symbolic locations.

llvm-svn: 65984
2009-03-04 00:14:35 +00:00
Ted Kremenek 804fc236a7 Use GetSValAsScalarOrLoc instead of GetSVal to prevent unintended structure or array "loads".
llvm-svn: 65983
2009-03-04 00:13:50 +00:00
Ted Kremenek 19df925f6b Add "GetSValAsScalarOrLoc" methods to GRState/GRStateRef that only perform a
retrieval from the store/environment for locations or scalar types.

llvm-svn: 65982
2009-03-04 00:13:10 +00:00
Ted Kremenek 67c710e2c8 RegionStore::RemoveDeadBindings needs to check all the symbols of the super region of a scanned region as well.
llvm-svn: 65981
2009-03-04 00:11:38 +00:00
Daniel Dunbar 817b7692fb Add new performance numbers; no discussion yet. Obvious two
conclusions are our PCH generation is way faster than gcc, and the
Python based driver kills compile times.

llvm-svn: 65980
2009-03-04 00:04:28 +00:00
Steve Naroff 013813dd5d Change a warning to an error...
llvm-svn: 65978
2009-03-03 23:13:51 +00:00
Fariborz Jahanian 9a8e759b4f Implement an important missing warning when a selector
is searched for in the global pool. It already uncovered 
a clang bug in message selection.

llvm-svn: 65974
2009-03-03 22:19:15 +00:00
Steve Naroff c03f6b91b1 Fix <rdar://problem/5982579> [clang on xcode] (using arch=x86_64): synthesized property 'sdkPath' must either be named the same as a compatible ivar or must explicitly name an ivar.
llvm-svn: 65973
2009-03-03 22:09:41 +00:00
Ted Kremenek c9747dd60f Rework use of loc::SymbolVal in the retain/release checker to use the new method
SVal::getAsLocSymbol(). This simplifies the code and allows the retain/release
checker to (I believe) also correctly reason about location symbols wrapped in
SymbolicRegions.

Along the way I cleaned up SymbolRef a little, disallowing implicit casts to
'unsigned'.

llvm-svn: 65972
2009-03-03 22:06:47 +00:00
Steve Naroff 27ed6f6766 Fix <rdar://problem/6252237> [sema] qualified id should be disallowed in @catch statements.
llvm-svn: 65969
2009-03-03 21:16:54 +00:00
Steve Naroff 39d6fba0d6 Fix <rdar://problem/6632061> [sema] non object types should not be allowed in @catch statements.
llvm-svn: 65968
2009-03-03 20:59:06 +00:00
Chris Lattner 5c3529634a implement support for propagating *features* down to the code generator
and defining target-specific macros based on them (like __SSE3__ and 
friends).  After extensive discussion with Daniel, this work will need
driver support, which will translate things like -msse3 into a -mattr 
feature.  Until this work is done, the code in clang.cpp is disabled and
the X86TargetInfo ctor still defaults to SSE2.  With these two things
changed, this code will work.  PR3634

llvm-svn: 65966
2009-03-03 19:56:18 +00:00
Steve Naroff 371b8fb4c3 Fix <rdar://problem/6640991> Exception handling executes wrong clause (Daniel, please verify).
Also necessary to fix:

<rdar://problem/6632061> [sema] non object types should not be allowed in @catch statements
<rdar://problem/6252237> [sema] qualified id should be disallowed in @catch statements

llvm-svn: 65964
2009-03-03 19:52:17 +00:00
Ted Kremenek 9f276d6279 Don't use std::auto_ptr with getSubRegionMap().
llvm-svn: 65957
2009-03-03 19:02:42 +00:00
Ted Kremenek e3852bd252 Fix case where we should use dyn_cast instead of cast.
llvm-svn: 65956
2009-03-03 19:01:37 +00:00
Fariborz Jahanian eab5ecd8e0 Fixed an ir-gen bug in syntheszing a getter function
with property type which does not match its ivar and
in -fobjc-gc-only mode!

llvm-svn: 65955
2009-03-03 18:49:40 +00:00
Ted Kremenek 5340b248b4 Fix extra ';' bug noticed by Mike Stump.
llvm-svn: 65954
2009-03-03 18:15:30 +00:00
Daniel Dunbar cabb41d15a Hush gcc.
llvm-svn: 65952
2009-03-03 16:54:38 +00:00
Anders Carlsson 24b1447b19 Return 0 if the ConstExprEmitter can't handle an expression.
llvm-svn: 65951
2009-03-03 16:43:34 +00:00
Steve Naroff b0e25c1ceb Remove old/incorrect warnings.
llvm-svn: 65950
2009-03-03 15:49:23 +00:00
Steve Naroff 3e1181e2e9 Fix <rdar://problem/6497242> Inherited overridden protocol declared objects don't work.
Change Sema::DiagnosePropertyMismatch() to check for type compatibility (rather than type equivalence, which is too strict).

llvm-svn: 65949
2009-03-03 15:43:24 +00:00
Steve Naroff 157599fe1c Fix <rdar://problem/6497608> clang does not catch ivar type mismatches in @implementation.
llvm-svn: 65948
2009-03-03 14:49:36 +00:00
Daniel Dunbar d53cf6c0c5 Driver: Sketch Arg & ArgList classes.
llvm-svn: 65937
2009-03-03 07:34:45 +00:00
Eli Friedman 4735374e39 PR3691: Add support for complex modes. I also tossed in support for XF
while I was at it.  There are still a lot of diagnostics missing from 
this code, and it isn't completely correct for anything other than x86, but 
it should work correctly on x86 for valid cases.

llvm-svn: 65935
2009-03-03 06:41:03 +00:00
Daniel Dunbar b2da933989 Sketch Driver Option classes.
llvm-svn: 65933
2009-03-03 05:55:11 +00:00
Eli Friedman 78350edafb Fix for PR3687: use the memory representation for booleans when a
sub-type describes a memory location, like the pointee type of a pointer
or the element type of an array.

llvm-svn: 65925
2009-03-03 04:48:01 +00:00
Douglas Gregor 463421deb1 Implement the basics of implicit instantiation of class templates, in
response to attempts to diagnose an "incomplete" type. This will force
us to use DiagnoseIncompleteType more regularly (rather than looking at
isIncompleteType), but that's also a good thing.

Implicit instantiation is still very simplistic, and will create a new
definition for the class template specialization (as it should) but it
only actually instantiates the base classes and attaches
those. Actually instantiating class members will follow. 

Also, instantiate the types of non-type template parameters before
checking them,  allowing, e.g., 

  template<typename T, T Value> struct Constant; 
 
to work properly.

llvm-svn: 65924
2009-03-03 04:44:36 +00:00
Ted Kremenek 6c6a098a83 Tighten message bubble height.
Make bubble number decoration look more like circles than ovals.

llvm-svn: 65921
2009-03-03 03:00:21 +00:00
Ted Kremenek 4c8a5817a5 Implement FIXME: GRStateManager::scanReachableSymbols now supports scanning MemRegions.
llvm-svn: 65919
2009-03-03 02:51:43 +00:00
Ted Kremenek d62491a808 Update checker build.
llvm-svn: 65916
2009-03-03 01:44:57 +00:00
Ted Kremenek 8dc671cdc9 Add StoreManager::getSubRegionMap(). This method returns an opaque mapping for clients of StoreManagers from MemRegions to their subregions.
llvm-svn: 65914
2009-03-03 01:35:36 +00:00
Fariborz Jahanian a458c4ff65 Check of ivar access access control.
llvm-svn: 65912
2009-03-03 01:21:12 +00:00
Steve Naroff f3833d70be Fix <rdar://problem/6635908> crash on invalid
llvm-svn: 65909
2009-03-03 00:45:38 +00:00
Zhongxing Xu 6765d449ed Add test case for pointer arithmetic.
llvm-svn: 65907
2009-03-03 00:28:42 +00:00
Chris Lattner 5a9a892e48 fix PR#
llvm-svn: 65906
2009-03-03 00:00:26 +00:00
Ted Kremenek ccca5c3f00 Adjust CSS to make message bubble numbers less gaudy.
llvm-svn: 65903
2009-03-02 23:39:27 +00:00
Ted Kremenek 7f16ed4c25 Resize message bubble back to original size.
llvm-svn: 65892
2009-03-02 23:06:15 +00:00
Ted Kremenek c62af6c4cf Adjust HTML message bubbles to utilize information from PathDiagnosticPiece::Kind.
llvm-svn: 65891
2009-03-02 23:05:40 +00:00
Chris Lattner 96e43578fc Add plumbing to support programatically defining __SSE2__ and friends,
even though we still hard code sse2 for now.  No support for 3dnow or sse4a,
but someone could add that if they desired.

llvm-svn: 65886
2009-03-02 22:40:39 +00:00
Chris Lattner ecd49037ec minor cleanups to target-specific #defines, no functionality change.
llvm-svn: 65885
2009-03-02 22:27:17 +00:00
Chris Lattner c25d8a7e30 improve compatibility with GCC 4.4, patch by Michel Salim (PR3697)
llvm-svn: 65884
2009-03-02 22:20:04 +00:00
Chris Lattner e6e4c0381a start wiring up support for target-specific -mfoo options like -msse
llvm-svn: 65881
2009-03-02 22:11:07 +00:00
Steve Naroff b94d7f65fa Fix <rdar://problem/6636803> [sema] crash on InterfaceBuilder.
Parser::ParseObjCMethodDefinition(): Make sure we don't exit the BodyScope until ActOnFinishFunctionBody() is complete.

llvm-svn: 65880
2009-03-02 22:00:56 +00:00
Fariborz Jahanian bf8e842b67 Diagnose a variety of access of ivars when they conflict with
local or global variables in instance/class methods.

llvm-svn: 65879
2009-03-02 21:55:29 +00:00
Ted Kremenek 53b72b4fea Plist diagnostics now include PathDiagnostPiece::Kind.
llvm-svn: 65878
2009-03-02 21:44:02 +00:00
Ted Kremenek e780823fac Update HTML diagnostics to honor the different between 'event' and 'control-flow' diagnostics.
llvm-svn: 65877
2009-03-02 21:42:01 +00:00
Ted Kremenek c7b663120e BugReporter: Construct path-related PathDiagnosticPieces with kind "ControlFlow".
llvm-svn: 65876
2009-03-02 21:41:18 +00:00
Ted Kremenek 592ca2c4ab Update Xcode project.
llvm-svn: 65870
2009-03-02 21:00:12 +00:00
Chris Lattner e29509a6e1 fix PR2639
llvm-svn: 65869
2009-03-02 20:58:48 +00:00
Daniel Dunbar 544ecd14b6 Stub out some structure for C++ driver.
llvm-svn: 65867
2009-03-02 19:59:07 +00:00
Anders Carlsson b3b675c35e inline asm calls should be nounwind. Chris, please review.
llvm-svn: 65866
2009-03-02 19:58:15 +00:00
Daniel Dunbar 4c71f563e7 Fix name.
llvm-svn: 65865
2009-03-02 19:50:00 +00:00
Ted Kremenek 5e26e36283 Update Xcode project.
llvm-svn: 65863
2009-03-02 19:41:07 +00:00
Ted Kremenek da8cdbb53e Add a 'kind' field to PathDiagnosticPieces.
llvm-svn: 65862
2009-03-02 19:40:38 +00:00
Ted Kremenek 353e40211c For now, do not output the 'DisplayHint' in plist files.
llvm-svn: 65861
2009-03-02 19:40:15 +00:00
Ted Kremenek 1f8140d3d4 For now, do not output the 'DisplayHint' in plist files.
llvm-svn: 65860
2009-03-02 19:39:50 +00:00
Fariborz Jahanian abf63e7bb3 Fixed a typo.
llvm-svn: 65855
2009-03-02 19:06:08 +00:00
Fariborz Jahanian 33afd771b4 Check for duplicate declaration of method of a class
in its extension.

llvm-svn: 65854
2009-03-02 19:05:07 +00:00
Daniel Dunbar f1ccc8cdef Normalize .h guards.
llvm-svn: 65853
2009-03-02 18:59:45 +00:00
Daniel Dunbar e2e704752c Attempt to make test more robust (fails for users who put LLVM in
/path/with/store/in/it").

llvm-svn: 65852
2009-03-02 18:50:36 +00:00
Devang Patel 13dbe873bd Enable Objective-C interface debug info.
llvm-svn: 65850
2009-03-02 17:58:28 +00:00
Mike Stump fa9c6a4dd1 Fix cmake builds.
llvm-svn: 65847
2009-03-02 17:05:26 +00:00
Zhongxing Xu 57359cad17 remove an implemented fixme.
llvm-svn: 65817
2009-03-02 08:25:09 +00:00
Zhongxing Xu e7d1493216 Initial support for pointer arithmetic. Only support concrete indexes and
offsets for now.

llvm-svn: 65814
2009-03-02 07:52:23 +00:00
Daniel Dunbar dd9427133a Avoid crash when child iterator gives null result.
llvm-svn: 65812
2009-03-02 07:00:57 +00:00
Daniel Dunbar 51adf5824e Rename lib/Driver (etc) to lib/Frontend in prep for the *actual*
driver taking lib/Driver.

llvm-svn: 65811
2009-03-02 06:16:29 +00:00
Daniel Dunbar b4e80a5b19 ABITestGen: Add v2i16 and v16f32 as default vector types to generate.
llvm-svn: 65810
2009-03-02 06:14:33 +00:00
Daniel Dunbar 76b7acc49f First cut at zero-cost EH support.
- Still manually generates the EH code; the parts related to cleanup
   need to be integrated into the cleanup stack (for proper
   interaction with VLAs, etc.).

 - Some differences vs gcc in corner cases; I believe our behavior is
   correct but need to verify/file bugs vs gcc.

llvm-svn: 65809
2009-03-02 06:08:11 +00:00
Daniel Dunbar 7a38ce4f88 Make sure to invoke (not call) to objc_exception_throw if necessary.
llvm-svn: 65808
2009-03-02 05:20:36 +00:00
Daniel Dunbar a646834214 Fix completely broken thinko in GetClassGlobal.
llvm-svn: 65807
2009-03-02 05:18:14 +00:00
Daniel Dunbar 0f3403cb5a Don't set nounwind on functions when in using the new Obj-C ABI.
llvm-svn: 65806
2009-03-02 04:58:03 +00:00
Daniel Dunbar b960b7b7c7 Cleanup handling of function attributes in calls.
- No intended functionality change.

llvm-svn: 65805
2009-03-02 04:32:35 +00:00
Mike Stump 0e425b8200 Push checking down, also, give the user a hit as to which part of the
block literal is causing the problem, instead of the vague reference
to the entire block literal.

llvm-svn: 65798
2009-03-02 03:04:42 +00:00
Douglas Gregor 5a80bd1504 Rework the way we find locally-scoped external declarations when we
need them to evaluate redeclarations or call a function that hasn't
already been declared. We now keep a DenseMap of these locally-scoped
declarations so that they are not visible but can be quickly found,
e.g., when we're looking for previous declarations or before we go
ahead and implicitly declare a function that's being called. Fixes
PR3672.

llvm-svn: 65792
2009-03-02 00:19:53 +00:00
Anders Carlsson 5878c797b3 Add BLOCK_HAS_DESCRIPTOR to global blocks.
llvm-svn: 65788
2009-03-01 21:09:29 +00:00
Mike Stump 3a139f3793 Be sure to mark blocks with no imports as being global.
llvm-svn: 65784
2009-03-01 20:07:53 +00:00
Chris Lattner a01c21f616 simplify some code.
llvm-svn: 65782
2009-03-01 18:47:06 +00:00
Steve Naroff 8676e08730 Fix <rdar://problem/6248764> parser rejects: bad receiver type 'CFStringRef'.
Downgrade an error to a warning (for GCC compatibility).

llvm-svn: 65779
2009-03-01 17:14:31 +00:00
Douglas Gregor 5741efbba0 Fix PR3509 by providing correct starting locations for initializer lists
llvm-svn: 65777
2009-03-01 17:12:46 +00:00
Steve Naroff 114aecb26b Fix <rdar://problem/6619539> incompatible pointer types sending 'XCElementSpacer *', expected 'XCElement *' (not handling protocol signatures correctly?).
- Reworked ASTContext::canAssignObjCInterfaces().
- Added ObjCProtocolDecl::lookupProtocolNamed().

llvm-svn: 65773
2009-03-01 16:12:44 +00:00
Ted Kremenek 07e95680fd Rename AnonTypedRegion to TypedViewRegion.
llvm-svn: 65764
2009-03-01 05:44:08 +00:00
Ted Kremenek b90a75e55d Adjust wording of bug names.
llvm-svn: 65763
2009-03-01 05:43:22 +00:00
Daniel Dunbar 88367f2768 Obj-C non fragile ABI: Use GetClassGlobal in one more instance I missed.
llvm-svn: 65762
2009-03-01 04:51:18 +00:00
Daniel Dunbar b1559a4499 Obj-C non fragile ABI: Add GetInterfaceEHType for getting the Obj-C
exception typeinfo metadata, and a few other EH related types/functions.
 - No functionality change.

llvm-svn: 65761
2009-03-01 04:46:24 +00:00
Daniel Dunbar c6928bbe29 NeXT: Unify code for creating a class global.
- No functionality change.

llvm-svn: 65760
2009-03-01 04:40:10 +00:00
Daniel Dunbar 947bca2cc9 ObjCAtCatchStmt's ParamStmt is always a DeclStmt.
llvm-svn: 65759
2009-03-01 04:28:32 +00:00
Chris Lattner d3fd8fb3ac testcase for mike's fix for PR3612
llvm-svn: 65757
2009-03-01 03:26:22 +00:00
Daniel Dunbar 53f12b11dc This test requires blocks.
llvm-svn: 65754
2009-03-01 02:20:08 +00:00
Anders Carlsson 3113eedc8a Remove debugging code.
llvm-svn: 65753
2009-03-01 02:12:54 +00:00
Anders Carlsson 961763e35a Emit errors about unsupported blocks features.
llvm-svn: 65751
2009-03-01 01:45:25 +00:00
Anders Carlsson 655129990a Initialize NSConcreteStackBlock
llvm-svn: 65749
2009-03-01 01:17:11 +00:00
Anders Carlsson ed5e69fe50 Do some blocks cleanup and simplification. Fix a crash, and add a test case.
llvm-svn: 65746
2009-03-01 01:09:12 +00:00
Chris Lattner e87da66562 adjust to changes in the mainline llvm .ll printer.
llvm-svn: 65745
2009-03-01 00:59:19 +00:00
Chris Lattner 9ef10f4638 "This patch uses the new ObjCImplDecl class to merge Sema::ImplMethodsVsClassMethods and Sema::ImplCategoryMethodsVsIntfMethods methods.
And now, when clang check a class implementation to find unimplemented methods, it also checks all methods from the class extensions (unnamed categories).

There is also a test case to check this warning.

This patch contains also a minor update for ObjCImplDecl . getNameAsCString and getNameAsString now returns an empty string instead of crashing for unnamed categories."

Patch by Jean-Daniel Dupas!

llvm-svn: 65744
2009-03-01 00:56:52 +00:00
Anders Carlsson 5d7ede616a Whoops, actually remove the VLA/VM check in FinalizeDeclaratorGroup.
llvm-svn: 65737
2009-02-28 23:31:06 +00:00
Anders Carlsson 6c885805cd Fix invalid VLAs/VMs in Sema::ActOnVariableDeclarator, so that the variable will have the right type by the time the initializer is checked. This ensures that code like
int a[(int)(1.0 / 1.0) = { 1 } will work.

Eli, please review.
 

llvm-svn: 65725
2009-02-28 21:56:50 +00:00
Steve Naroff 4f96739122 Remove PrevFunctionScope slot (it isn't needed)...use getParent() instead.
llvm-svn: 65718
2009-02-28 21:01:15 +00:00
Ted Kremenek 111a6bdbd3 Revert 65707 (causes stack memory to be referenced after it is released).
llvm-svn: 65717
2009-02-28 20:50:43 +00:00
Fariborz Jahanian bac73acc24 Obscure code gen bug related to sending
message to 'super' in a class method declared in
cateogy (darwin specific).

llvm-svn: 65709
2009-02-28 20:07:56 +00:00
Chris Lattner 309e48695b Fix a crash in test/Parser/control-scope.c that testrunner didn't
notice because it was a negative test with a fix suggested by
Jean-Daniel Dupas.  Convert the test from a negative to a positive
test to catch stuff like this.

llvm-svn: 65708
2009-02-28 19:37:57 +00:00
Chris Lattner d4ed7e8bb9 remove static ctor.
llvm-svn: 65707
2009-02-28 19:37:06 +00:00
Chris Lattner 3385fe12ce improve compatibility with the VC++'08 C++ compiler. Patch by
Niklas Larsson!

llvm-svn: 65706
2009-02-28 19:01:03 +00:00
Chris Lattner 5a5194fec3 fix inverted conditional, rdar://6633188
llvm-svn: 65704
2009-02-28 18:53:33 +00:00
Chris Lattner a9ca0529a1 "This patch addresses two FIXME on ObjCCategoryImplDecl:
/// FIXME: Like ObjCImplementationDecl, this should not be a NamedDecl!
/// FIXME: Introduce a new common base class for ObjCImplementationDecl and ObjCCategoryImplDecl

It adds an IndentifierInfo ivar to the ObjCCategoryImplDecl, so it can inherits from Decl and not NamedDecl (I'm not sure about the memory management of this ivar).

And now that both ObjCImplementationDecl and ObjCCategoryImplDecl have the same super classes, it allow creation of a common base class:  ObjCImplDecl"

Patch by Jean-Daniel Dupas!

llvm-svn: 65703
2009-02-28 18:42:10 +00:00
Chris Lattner ca05dfef65 brain thinking memcpy, fingers thinking memset :)
llvm-svn: 65701
2009-02-28 18:31:01 +00:00
Chris Lattner 3ef668c27a after going around in circles a few times, finally cave and emit structure
copies with memcpy instead of memmove.  This matches what GCC does and if it
causes a problem with a particular libc we can always fix it with a target
hook.

llvm-svn: 65699
2009-02-28 18:18:58 +00:00
Anders Carlsson 5843635b37 TargetInfo::validateAsmConstraint now takes a reference to the full constraints string. This will make it possible to support multi-character constraints. No functionality change (for now).
llvm-svn: 65696
2009-02-28 17:11:49 +00:00
Steve Naroff 70f41d6f07 Minor name change (move the ObjC prefix to a more appropriate place).
llvm-svn: 65695
2009-02-28 16:59:13 +00:00
Steve Naroff d123bd05ca Fix <rdar://problem/6451399> problems with labels and blocks.
- Move the 'LabelMap' from Sema to Scope. To avoid layering problems, the second element is now a 'StmtTy *', which makes the LabelMap a bit more verbose to deal with.
- Add 'ActiveScope' to Sema. Managed by ActOnStartOfFunctionDef(), ObjCActOnStartOfMethodDef(), ActOnBlockStmtExpr().
- Changed ActOnLabelStmt(), ActOnGotoStmt(), ActOnAddrLabel(), and ActOnFinishFunctionBody() to use the new ActiveScope.
- Added FIXME to workaround in ActOnFinishFunctionBody() (for dealing with C++ nested functions).  

llvm-svn: 65694
2009-02-28 16:48:43 +00:00
Gabor Greif fda885d048 Adapt help string to what the code is doing (default is lang_gnu99). Thanks rdivacky!
llvm-svn: 65689
2009-02-28 09:22:15 +00:00
Mike Stump 1db7d04b71 First cut CodeGen support for __block variables.
llvm-svn: 65688
2009-02-28 09:07:16 +00:00
Eli Friedman cba899ff7b Check a few more kinds of declarations that make a scope.
llvm-svn: 65680
2009-02-28 06:22:14 +00:00
Eli Friedman f69d09bae5 Start of checking for gotos which jump to an illegal destination.
As far as I know, this catches all cases of jumping into the scope of a 
variable with a variably modified type (excluding statement 
expressions) in C.  This is missing some stuff we probably want to check
(other kinds of variably modified declarations, statement expressions, 
indirect gotos/addresses of labels in a scope, ObjC @try/@finally, cleanup 
attribute), the diagnostics aren't very good, and it's not particularly 
efficient, but it's a decent start.

This patch is a slightly modified version of the patch I attached to
PR3259, and it fixes that bug.  I was sort of planning on improving 
it, but I think it's okay as-is, especially since it looks like CodeGen 
doesn't have any use for this sort of data structure.  The only 
significant change I can think of from the version I attached to PR3259 
is that this version skips running the checking code when a function 
doesn't contain any labels.

This patch doesn't cover case statements, which also need similar 
checking; I'm not sure how we should deal with that. Extending the goto 
checking to also check case statements wouldn't be too hard; it's just a 
matter of keeping track of the scope of the closest switch and checking that
the scope of every case is the same as the scope of the switch.  That said, 
it would likely be a performance hit to run this check on every 
function (it's an extra pass over the entire function), so we probably want
some other solution.

llvm-svn: 65678
2009-02-28 05:41:13 +00:00
Eli Friedman a1c7b6c5f6 Fix obvious shortcoming in the implementations of Evaluate for
integer __real__ and __imag__.  Not sure how I missed this.

llvm-svn: 65677
2009-02-28 03:59:05 +00:00
Ted Kremenek 8a56e5c29b Update checker build.
llvm-svn: 65676
2009-02-28 02:04:49 +00:00
Douglas Gregor 89ee6822d8 Eliminate CXXRecordType
llvm-svn: 65671
2009-02-28 01:32:25 +00:00
Douglas Gregor 0ab407d57d Add a FIXME for something I can't look at just yet
llvm-svn: 65669
2009-02-28 01:09:26 +00:00
Douglas Gregor 6eaaf30968 Template instantiation for function types
llvm-svn: 65668
2009-02-28 01:04:19 +00:00
Fariborz Jahanian cd073cc2e9 Alignment of pointers in __objc_classlist must be on their
natural alignment. Otherwise, the excess hole confuses the
objc2 runtime (this is darwin specific).

llvm-svn: 65666
2009-02-28 00:54:00 +00:00
Douglas Gregor 17c0d7bacf Implement template instantiation for pointer, reference, and (some)
array types. Semantic checking for the construction of these types has
been factored out of GetTypeForDeclarator and into separate
subroutines (BuildPointerType, BuildReferenceType,
BuildArrayType). We'll be doing the same thing for all other types
(and declarations and expressions).

As part of this, moved the type-instantiation functions into a class
in an anonymous namespace. 

llvm-svn: 65663
2009-02-28 00:25:32 +00:00
Eli Friedman 015a4742c1 Fix enumeration in switch warnings. No behavior change.
llvm-svn: 65659
2009-02-27 23:15:07 +00:00
Eli Friedman cad9638bd9 Fix enumeration in switch warnings, plus misc comment changes. No
behavior change.

llvm-svn: 65658
2009-02-27 23:04:43 +00:00
Mike Stump 537abb0dec Fix PR3612. We ensure that we add builtins to the GlobalDeclMap and
we ensure that things added to the module can be found even when they
are not in GlobalDeclMap.  The later is for increased flexibility,
should someone want to do something tricky like extern "Ada" in the
same module.

llvm-svn: 65657
2009-02-27 22:42:30 +00:00
Fariborz Jahanian f5c1c923e8 Diagnose gc attribute mismatch of property and its ivar.
llvm-svn: 65656
2009-02-27 22:38:11 +00:00
Chris Lattner 537fd9337f Give a code insertion hint for how to fix 'implicit int' warnings and errors.
llvm-svn: 65653
2009-02-27 22:31:56 +00:00
Douglas Gregor 72dfbc754e Fix a typo
llvm-svn: 65652
2009-02-27 22:05:23 +00:00
Ted Kremenek cbcc5e83ca When retrieving the location of a Node, for MemberExprs use the location of the
'.' or '->'.

llvm-svn: 65651
2009-02-27 20:05:10 +00:00
Ted Kremenek e879e15ed9 In BuildAnonymousStructUnionMemberReference, we shouldn't invalidate OpLoc when
building nested member expressions. This location is used to determine the range
of the entire expression, and the expression itself already has its location
inherited from its Base.

This fixes <rdar://problem/6629829>.

llvm-svn: 65650
2009-02-27 19:58:12 +00:00
Douglas Gregor fe1e11092e Implement the basic approach for instantiating types, with a lot of FIXME'd
stubs for those types we don't yet know how to instantiate (everything
that isn't a template parameter!).

We now instantiate default arguments for template type parameters when
needed. This will be our testbed while I fill out the remaining
type-instantiation logic.

llvm-svn: 65649
2009-02-27 19:31:52 +00:00
Chris Lattner 9605a55076 minor wording changes.
llvm-svn: 65648
2009-02-27 19:31:12 +00:00
Chris Lattner 7b0ec8a9df upgrade various 'implicit int' warnings from an ext-warn to warning when not
in C89 mode.  This makes it enabled by default instead of only enabled with
-pedantic.  Clang defaults to c99 mode, so people will see this more often
than with GCC, but they can always use -std=c89 if they really want c89.

llvm-svn: 65647
2009-02-27 18:53:28 +00:00
Chris Lattner de39c3efcb cleanup
llvm-svn: 65646
2009-02-27 18:38:20 +00:00
Chris Lattner e0c511688e cleanup
llvm-svn: 65645
2009-02-27 18:35:46 +00:00
Mike Stump 5b9a3d54b6 Silence warnings.
llvm-svn: 65644
2009-02-27 18:32:39 +00:00
Ted Kremenek 9723bcf60f When checking printf-arguments for functions with '__attribute__ ((format (printf, X, Y)))'
set HasVAListArg to true when 'Y' is 0 (i.e., ignore the data arguments).

This fixes <rdar://problem/6623513>.

llvm-svn: 65642
2009-02-27 17:58:43 +00:00
Douglas Gregor 96977da72c Clean up and document code modification hints.
llvm-svn: 65641
2009-02-27 17:53:17 +00:00
Chris Lattner 7094c15d7e change a diagnostic message from something pedantically correct but
useless to something more vague but hopefully more clear.
rdar://6624173

llvm-svn: 65639
2009-02-27 17:15:01 +00:00
Daniel Dunbar 13454cfcb0 Oops, Ted beat me to it. I'll just play angry god and remove his version!
llvm-svn: 65638
2009-02-27 17:10:38 +00:00
Daniel Dunbar 8d42281150 Add coverage of "member of anonymous union redeclares ..." diagnostic.
llvm-svn: 65637
2009-02-27 17:07:01 +00:00
Ted Kremenek dd34e06eeb Add test case for PR 3675.
llvm-svn: 65635
2009-02-27 16:48:08 +00:00
Ted Kremenek 918ae24edd Update checker build.
llvm-svn: 65625
2009-02-27 07:16:04 +00:00
Eli Friedman 988a16b9b8 Change the AST generated for offsetof a bit so that it looks like a
normal expression, and change Evaluate and IRGen to evaluate it like a 
normal expression.  This simplifies the code significantly, and fixes 
PR3396.

llvm-svn: 65622
2009-02-27 06:44:11 +00:00
Ted Kremenek 078b8879e7 Don't report 'Parser Rejects' for conftest files.
llvm-svn: 65619
2009-02-27 06:17:38 +00:00
Ted Kremenek 33b220510b Correctly check for ccc-analyzer in the same directory as scan-build.
llvm-svn: 65618
2009-02-27 06:17:05 +00:00