]>
granicus.if.org Git - clang/log
Ted Kremenek [Wed, 14 Nov 2007 21:31:46 +0000 (21:31 +0000)]
Implemented serialization of InitListExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44137
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 21:18:36 +0000 (21:18 +0000)]
Implemented serialization of CompoundLiteralExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44134
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 21:15:42 +0000 (21:15 +0000)]
Added serialization of Union decls.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44133
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 19:36:11 +0000 (19:36 +0000)]
Removed assertion inserted only for temporary debugging.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44131
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 19:33:01 +0000 (19:33 +0000)]
Added missing break statement.
Reordered serialization methods for FunctionTypeProto and FunctionTypeNoProto
to be alphabetical by serialized type name.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44130
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Wed, 14 Nov 2007 19:25:57 +0000 (19:25 +0000)]
Fairly major surgery to RewriteTest::SynthesizeObjcInternalStruct().
This allows us to handle funky stuff like...
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
@interface NSLayoutManager : NSObject <NSCoding, NSGlyphStorage> {
#else /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3 */
@interface NSLayoutManager : NSObject <NSCoding> {
#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3 */
...which now rewrites to...
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
#ifndef _REWRITER_typedef_NSLayoutManager
#define _REWRITER_typedef_NSLayoutManager
typedef struct objc_object NSLayoutManager;
#endif
struct NSLayoutManager {
struct NSObject _NSObject;
#else /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3 */
// @interface NSLayoutManager : NSObject <NSCoding> {
#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3 */
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44129
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 18:12:19 +0000 (18:12 +0000)]
Implemented serialization of EnumDecl and EnumConstantDecl.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44127
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 17:47:01 +0000 (17:47 +0000)]
Implemented serialization of FieldDecls.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44126
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 17:46:35 +0000 (17:46 +0000)]
SourceManager, IdentifierTable, Selectors are now serialized in their own
block separate from ASTContext. This block is serialized out AFTER writing out
ASTContext, but deserialized BEFORE reading in ASTContext. This permits the
optimization of the serialization of the IdentifierTable where we only write
out identifiers that are used.
This was needed because TagDecls are owned by Types, and TagDecls contain
identifiers. Thus types need to be written out first to register with the
serializer any identifiers they refer to (and hence need to be serialized out
with IdentifierTable).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44125
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 14 Nov 2007 17:35:46 +0000 (17:35 +0000)]
Removed unused variabel.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44123
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Nov 2007 16:14:50 +0000 (16:14 +0000)]
Fix a bug handling hex floats in c90 mode, pointed out by Neil.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44120
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Wed, 14 Nov 2007 15:03:57 +0000 (15:03 +0000)]
Fix yesterday's regression with rewriting @optional/@required.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44119
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Wed, 14 Nov 2007 14:34:23 +0000 (14:34 +0000)]
Rewrite methods that span multiple lines.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44118
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Wed, 14 Nov 2007 14:15:31 +0000 (14:15 +0000)]
Allow properties within a protocol. The case below was asserting...now it works fine.
@protocol CAMediaTiming
@property int beginTime;
@end
Comments in the code tell the rest of the story...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44117
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 08:06:37 +0000 (08:06 +0000)]
Implemented serialization of RecordDecls. Changed serialization of TagType to
have an owning pointer to the referred TagDecl. This should hopefully fix a
bug where TagDecls (including decls from structs, etc.) were not serialized.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44106
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 14 Nov 2007 06:34:38 +0000 (06:34 +0000)]
implement test/Sema/typedef-prototype.c, allowing code
to declare a function with a typedef:
typedef int unary_int_func(int arg);
unary_int_func add_one;
This patch contributed by Seo Sanghyeon!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44100
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Wed, 14 Nov 2007 03:37:28 +0000 (03:37 +0000)]
Comment out recent regression r44096.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44098
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 14 Nov 2007 01:37:46 +0000 (01:37 +0000)]
Rewrite @optional/@required directives used inside protocol definitions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44096
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 14 Nov 2007 00:42:16 +0000 (00:42 +0000)]
Rewrite of forward protocol declaration.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44095
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 00:38:50 +0000 (00:38 +0000)]
Implemented serialization of FunctionTypeNoProto.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44094
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 00:31:36 +0000 (00:31 +0000)]
Implemented serialization of VariableArrayTypes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44093
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 00:27:46 +0000 (00:27 +0000)]
Implemented serialization of TypedefType.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44092
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 00:17:21 +0000 (00:17 +0000)]
Implemented serialization of ConstantArrayType.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44091
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 00:03:56 +0000 (00:03 +0000)]
Implemented serialization of TagTypes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44090
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 14 Nov 2007 00:03:20 +0000 (00:03 +0000)]
Modified ASTContext::getTagDeclType() to accept a NULL pointer for the passed
in TagDecl*. This allows the deserializer to use ASTContext to create the
TagTypes. Deserialize TagTypes then rely on pointer-backpatching to resolve
the decls.
This may not be the interface that we want, but as the implementation of
TagTypes will potentially change significantly in the future, I'm leaving this
for now. An appropriate FIXME is in place.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44089
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Tue, 13 Nov 2007 23:48:03 +0000 (23:48 +0000)]
Fix regression with ObjC method definitions and -ast-print
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44088
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 13 Nov 2007 23:21:38 +0000 (23:21 +0000)]
Type encoding for structs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44087
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Tue, 13 Nov 2007 23:01:27 +0000 (23:01 +0000)]
Rewrite method definition bodies. Also renamed a method to distinguish between method declarations and definitions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44080
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 22:57:59 +0000 (22:57 +0000)]
Removed line with typo (declared friendship with ASTContext). Line was
not needed since friendship is declared elsewhere.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44079
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 22:56:10 +0000 (22:56 +0000)]
Added pretty-printing of statements during serialization.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44078
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 22:55:51 +0000 (22:55 +0000)]
Implemented serialization of AsmStmt (or rather what is currently implemented
in AsmStmt).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44077
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 22:51:08 +0000 (22:51 +0000)]
Fixed bug in FunctionDecl serialization where we crashed when the
FunctionDecl had decls for its parameters but still had greater than 0
arguments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44076
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 22:30:29 +0000 (22:30 +0000)]
Implemented serialization for SizeOfAlignOfTypeExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44075
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 22:16:23 +0000 (22:16 +0000)]
Implemented serialization for MemberExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44074
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 13 Nov 2007 22:14:47 +0000 (22:14 +0000)]
Give AST-walk passes a way to access DeclSpec attributes on functions and
variables.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44073
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 13 Nov 2007 22:09:49 +0000 (22:09 +0000)]
Fixed a rewrite of metadata bug when category implementation has no matching interface.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44072
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 22:02:55 +0000 (22:02 +0000)]
Rewrote type serialization to used the same methodology as we do for Decls.
Removed tons of dead code in ASTContext concerning how types use to be
serialized.
Removed serialization methods from QualType that are no longer used.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44070
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 13 Nov 2007 21:49:48 +0000 (21:49 +0000)]
Rename Sema method to follow class naming convention
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44069
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 13 Nov 2007 21:02:00 +0000 (21:02 +0000)]
Populate metadata with adrress of method code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44066
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Nov 2007 20:50:37 +0000 (20:50 +0000)]
Parse "sizeof(arr)[0]" as a sizeof of an expr if arr
is an expression.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44065
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 13 Nov 2007 20:04:28 +0000 (20:04 +0000)]
Rewrite of method definitions in categories.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44062
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 13 Nov 2007 19:21:13 +0000 (19:21 +0000)]
Order of methods are OK and generated .c file can be compiled.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44060
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 19:18:22 +0000 (19:18 +0000)]
Updated test case to flag about comparisons against constants. We may
invert this case (i.e., not flag a warning) in the future.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44059
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 19:17:00 +0000 (19:17 +0000)]
Modified -Wfloat-equal logic to suppress warnings where floating point values
are compared against builtins such as __builtin_inf.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44058
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 13 Nov 2007 18:44:14 +0000 (18:44 +0000)]
First patch in rewrie of method definitions. This is work in progress.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44055
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 18:40:33 +0000 (18:40 +0000)]
Updated diagnostic for -Wfloat-equal to underline the offending expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44054
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 18:37:02 +0000 (18:37 +0000)]
Added -Wfloat-equal option to the driver. This makes warnings about
floating point comparisons using == or != an opt-in rather than a default
warning.
Updated test case to use -Wfloat-equal.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44053
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Nov 2007 18:16:41 +0000 (18:16 +0000)]
Clean up types, removing some casts. Patch contributed by
Cedric Venet.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44050
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Nov 2007 18:05:45 +0000 (18:05 +0000)]
improve handling of address of global when checking for
constants and initializers. Patch by Sanghyeon Seo, thanks!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44049
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Tue, 13 Nov 2007 14:57:38 +0000 (14:57 +0000)]
Teach Sema::CheckCompareOperands() about "void *" (C99 6.5.9p2)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44047
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Tue, 13 Nov 2007 04:10:18 +0000 (04:10 +0000)]
Tune the lookup logic in Sema::ActOnInstanceMessage() to handle private methods (declared within the implementation).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44041
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Tue, 13 Nov 2007 01:40:57 +0000 (01:40 +0000)]
Minor indenting changes and removed a level of casting in getClassInterface();
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44039
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 13 Nov 2007 01:10:08 +0000 (01:10 +0000)]
Patch to set context (interface, category, etc.) in which method is declared.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44038
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Tue, 13 Nov 2007 00:31:42 +0000 (00:31 +0000)]
Fix Sema::CheckAssignmentConstraints() to operate on the canonical, unqualified type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44036
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 00:25:37 +0000 (00:25 +0000)]
Renamed all serialization "Materialize" methods to "Create" to conform with
the new serialization API.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44035
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 13 Nov 2007 00:15:39 +0000 (00:15 +0000)]
Restructured serialization code for decls to make it cleaner, easier to
understand, and batched the emission owned subobjects (using
BatchEmitOwnedPtr) to get a smaller output bitcode size.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44033
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Mon, 12 Nov 2007 22:29:28 +0000 (22:29 +0000)]
Patch to do statically typed ivar references.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44028
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 22:05:31 +0000 (22:05 +0000)]
Add category method definitions incrementally, removing a FIXME (like we do for class implementations).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44027
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Mon, 12 Nov 2007 20:20:37 +0000 (20:20 +0000)]
Minor twik for when there is no super class and 'super' is errornously used.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44026
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Mon, 12 Nov 2007 20:13:27 +0000 (20:13 +0000)]
'super' nailed.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44025
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 19:48:27 +0000 (19:48 +0000)]
Fix regression to Sema::ObjcActOnStartOfMethodDef()...need to initialize InvalidType field to false.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44023
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 19:18:37 +0000 (19:18 +0000)]
Add an error diagnostic to Parse::ParseObjCMessageExpression().
This now exposes the following bug...
******************** TEST 'Sema/message.m' FAILED! ********************
Command:
clang -fsyntax-only -verify Sema/message.m
Output:
Errors seen but not expected:
Line 9: invalid receiver to message expression
******************** TEST 'Sema/message.m' FAILED! ********************
As far as I can tell, all messages to method agruments fail.
The method arguments are built by Sema::ObjcActOnStartOfMethodDef().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44022
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Mon, 12 Nov 2007 18:04:32 +0000 (18:04 +0000)]
In Stmt serialization, renamed directEmit to EmitImpl and
directMaterialize to CreateImpl.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44020
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 14:34:27 +0000 (14:34 +0000)]
Now that we can refer to instance variables, make sure they are considered lvalues.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44017
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 14:29:37 +0000 (14:29 +0000)]
Implement instance variable references.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44016
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 13:56:41 +0000 (13:56 +0000)]
- Minor cleanup to yesterday's changes to Sema::ObjcActOnStartOfMethodDef();
- Add Sema::CurMethodDecl, in preparation for adding ObjcIvarRefExpr.
- Add ObjcInterfaceDecl::lookupInstanceVariable(), in prep for adding ivars.
- A couple renames in ObjcInterfaceDecl, while I was in the vicinity:-)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44015
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 05:02:46 +0000 (05:02 +0000)]
Forgot this file from my last commit...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44009
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 04:59:00 +0000 (04:59 +0000)]
Remove Action::ObjcActOnMethodDefinition(). Rationale:
- It is not an "action" - it is never called by the parser.
- It was only used by one method, Sema::ObjcActOnStartOfMethodDef().
As a result, the logic it embodied is now directly implemented in Sema::ObjcActOnStartOfMethodDef().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44008
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 04:22:52 +0000 (04:22 +0000)]
Make sure @property is allowed within a category.
Bug submitted by Keith Bauer.
CookieJar:Desktop keith$ cat test.m
#import <WebKit/WebKit.h>
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44007
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Mon, 12 Nov 2007 03:44:46 +0000 (03:44 +0000)]
Remove Sema::ObjcBuildMethodParameter().
Modify Sema::ParseParamDeclarator() to work for both ActOnStartOfFunctionDef() and ObjcActOnStartOfMethodDef().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44006
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Sun, 11 Nov 2007 23:20:51 +0000 (23:20 +0000)]
Replace 2 method definition actions (ActOnFunctionDefBody, ActOnMethodDefBody) with 1 method definition action (ActOnFinishFunctionBody). I can't think of any reason that we would need two action hooks.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44000
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Sun, 11 Nov 2007 19:54:21 +0000 (19:54 +0000)]
Replace 3 method definition functions (ObjcParseMethodDefinition, ParseObjCInstanceMethodDefinition, ParseObjCClassMethodDefinition) with 1 method definition function (ParseObjCMethodDefinition).
Less code/confusion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43999
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Sun, 11 Nov 2007 17:52:25 +0000 (17:52 +0000)]
Tweak Sema::ActOnInstanceMessage() to treat the built-in "Class" type the same as "id".
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43996
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Sun, 11 Nov 2007 17:19:15 +0000 (17:19 +0000)]
This is the last 5% of the solution to teaching Sema::ActOnInstanceMessage() about private methods (r43989).
While the diff is large, the idea is very simple. When we parse method definitions (in an @implementation), we need to add them incrementally (rather than wait until the @end).
Other details...
- Renamed Sema::ActOnAddMethodsToObjcDecl() to Sema::ActOnAtEnd(). The methods are now optional arguments.
- Removed Parser::AllImplMethods (a nice cleanup).
- Added location info to ObjcImplementationDecl (since we will need it very soon:-)
- Modified message.m test to no longer allow the bogus diagnostic.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43995
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Sun, 11 Nov 2007 14:15:57 +0000 (14:15 +0000)]
Make sure Sema::CheckIncrementDecrementOperand() removes typedefs when doing it's analysis.
Thanks to Seo Sanghyeon for his excellent (first) bug fix!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43994
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Sun, 11 Nov 2007 00:10:47 +0000 (00:10 +0000)]
Teach Sema::ActOnInstanceMessage() about private methods. That is, methods declared in an implementation (but not listed in the interface).
This commit is only 95% of the bug fix. The last piece to this puzzle is to add the method decls to the implementation incrementally (as we encounter them). At the moment, the methods aren't added until we see an @end (which is too late).
I will complete this later...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43989
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Sat, 10 Nov 2007 22:00:55 +0000 (22:00 +0000)]
Fixed a bug which exposed the internally built type to user code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43987
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Sat, 10 Nov 2007 20:59:13 +0000 (20:59 +0000)]
pretty priting for method definitions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43986
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Sat, 10 Nov 2007 19:45:54 +0000 (19:45 +0000)]
Fix a basic bug (having to do with typedefs) in Sema::UsualArithmeticConversions().
This resuled in the following crash below.
Also modified the usual-float.c test case to capture this case.
[steve-naroffs-imac:clang/test/Sema] snaroff% ../../../../Debug/bin/clang usual-float.c
Assertion failed: (0 && "Sema::UsualArithmeticConversions(): illegal float comparison"), function UsualArithmeticConversions, file SemaExpr.cpp, line 960.
0 clang 0x001ef9b9 _ZN40_GLOBAL__N_Signals.cpp_00000000_4E6DAF8315PrintStackTraceEv + 45
1 clang 0x001efd5f _ZN40_GLOBAL__N_Signals.cpp_00000000_4E6DAF8313SignalHandlerEi + 323
2 libSystem.B.dylib 0x90c6297b _sigtramp + 43
3 ??? 0xffffffff 0x0 +
4294967295
4 libSystem.B.dylib 0x90cdb782 raise + 26
5 libSystem.B.dylib 0x90cead3f abort + 73
6 libSystem.B.dylib 0x90cdc923 __assert_rtn + 101
7 clang 0x00077316 _ZN5clang4Sema26UsualArithmeticConversionsERPNS_4ExprES3_b + 1004
8 clang 0x000803cf _ZN5clang4Sema27CheckMultiplyDivideOperandsERPNS_4ExprES3_NS_14SourceLocationEb + 181
9 clang 0x0007a8e8 _ZN5clang4Sema10ActOnBinOpENS_14SourceLocationENS_3tok9TokenKindEPvS4_ + 472
10 clang 0x000cf058 _ZN5clang6Parser26ParseRHSOfBinaryExpressionENS_6Action12ActionResultILj0EEEj + 1286
11 clang 0x000cf2de _ZN5clang6Parser25ParseAssignmentExpressionEv + 86
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43985
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Sat, 10 Nov 2007 18:06:36 +0000 (18:06 +0000)]
Since we are all working on Leopard, change the built-in MacOS X version number (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) to target Leopard. This is only a short term solution, until the clang driver implements the "-mmacosx-version-min" flag (which will compute this value based on the target).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43981
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Sat, 10 Nov 2007 17:40:57 +0000 (17:40 +0000)]
Minor code clean up in method def area.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43980
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Sat, 10 Nov 2007 16:31:34 +0000 (16:31 +0000)]
Represent method definitions as separate AST nodes. Pretty print will come next.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43979
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Sat, 10 Nov 2007 02:11:55 +0000 (02:11 +0000)]
Changed the serialization of IdentifierTable to only serialize out entries
that are referenced in the ASTs. This assumes that we serialize out the
decls/stmts first, and use the pointer-tracking logic in the Serializer to
determine if an IdentifierInfo (or its string key) is ever referenced.
This is a significant space optimization for serialized ASTs.
Consider the following program:
void foo(int x,int y) {
return x > y ? x : y+1;
}
Here are the sizes of the files for the serialized ASTs:
Full IdentifierTable: 23676 bytes
Only-referenced Identifiers: 304 bytes.
For this simple program, this is a 77% reduction in the file size of the
serialized ASTs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43975
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Sat, 10 Nov 2007 02:07:12 +0000 (02:07 +0000)]
Modifed the test serialization driver to...
(1) serialize out top-level decls BEFORE serializing out translation unit
structures like ASTContext.
(2) deserialize out translation unit structures like ASTContext before
top-level decls by first skipping the decls in the bitstream, deserializing
ASTContext and friends, and then jumping back to the bitstream block with the
decls and then deserializing them.
Change (1) allows us to utilize the pointer-tracking system in the Serializer
to only serialize out metadata that is actually referenced by the ASTS.
Change (2) allows us to deserialize the metadata first as before, which
signficantly reduces the amount of pointer backpatching the deserializer
would have to do if the decls were deserialized first.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43974
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Nov 2007 23:59:17 +0000 (23:59 +0000)]
rename getInstantiationLoc to match the scheme of isPhysicalLoc.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43969
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Nov 2007 23:52:16 +0000 (23:52 +0000)]
change source location to have two bits for macros, tracking
whether the location is the start and/or end of an expansion.
These are currently not set or used by anything.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43968
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 9 Nov 2007 22:27:59 +0000 (22:27 +0000)]
Some code clean up in the form of name changes for functions which
process method definitions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43967
91177308 -0d34-0410-b5e6-
96231b3b80d8
Hartmut Kaiser [Fri, 9 Nov 2007 19:53:21 +0000 (19:53 +0000)]
Updated VC++ build system
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43958
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 9 Nov 2007 19:52:12 +0000 (19:52 +0000)]
Added class context to method declarations. Provide "interface *" type
to 'self' method of instance methods.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43957
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 9 Nov 2007 17:18:29 +0000 (17:18 +0000)]
Insert invisble arguments to method definition header.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43948
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Fri, 9 Nov 2007 15:20:18 +0000 (15:20 +0000)]
Rewrite global variable initializers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43947
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Fri, 9 Nov 2007 15:00:03 +0000 (15:00 +0000)]
Recognize ObjCStringLiteral as a constant expression.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43946
91177308 -0d34-0410-b5e6-
96231b3b80d8
Steve Naroff [Fri, 9 Nov 2007 12:50:28 +0000 (12:50 +0000)]
- add typedef guards.
- tweak scanForProtocolRefs heuristic.
- disable RewriteInclude() for now.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43942
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 9 Nov 2007 00:43:55 +0000 (00:43 +0000)]
Changed method call to reflect updated serialization API.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43917
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 8 Nov 2007 23:49:49 +0000 (23:49 +0000)]
First patch toward rewriting of method definitions. This is work in progress.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43915
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Nov 2007 20:53:07 +0000 (20:53 +0000)]
remove some temporary code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43906
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Nov 2007 20:51:02 +0000 (20:51 +0000)]
add a getAtOffset() member to simplify some code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43905
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 8 Nov 2007 19:52:41 +0000 (19:52 +0000)]
Rewrote serialization of IdentifierInfo and IdentifierTable to use methods Emit
and Materialize/Read instead of using specializations of SerializeTrait<>. The
resulting code is much cleaner. We are also setting the stage so that only the
parts of the IdentifierTable that are ever referenced within the ASTs are
serialized, and not the whole table.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43904
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Nov 2007 19:40:23 +0000 (19:40 +0000)]
add a fixme.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43902
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Nov 2007 19:39:57 +0000 (19:39 +0000)]
significantly simplify the implementation of RewriteRope by changing the
implementation to be list<RopePiece> instead of vector<RopePiece*>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43901
91177308 -0d34-0410-b5e6-
96231b3b80d8