Commit Graph

5341 Commits

Author SHA1 Message Date
Ted Kremenek c6501dbc10 Fix more strict-aliasing warnings.
Fix indentation of class declarations in ExprCXX.h

llvm-svn: 52380
2008-06-17 03:11:08 +00:00
Ted Kremenek 3dd7724711 Only use colored output when the environment variable SCAN_BUILD_COLOR is set.
llvm-svn: 52379
2008-06-17 03:06:59 +00:00
Ted Kremenek 08e171183f This patch is motivated by numerous strict-aliasing warnings when compiling
clang as a Release build.

The big change is that all AST nodes (subclasses of Stmt) whose children are
Expr* store their children as Stmt* or arrays of Stmt*. This is to remove
strict-aliasing warnings when using StmtIterator. None of the interfaces of any
of the classes have changed (except those with arg_iterators, see below), as the
accessor methods introduce the needed casts (via cast<>). While this extra
casting may seem cumbersome, it actually adds some important sanity checks
throughout the codebase, as clients using StmtIterator can potentially overwrite
children that are expected to be Expr* with Stmt* (that aren't Expr*). The casts
provide extra sanity checks that are operational in debug builds to catch
invariant violations such as these.

For classes that have arg_iterators (e.g., CallExpr), the definition of
arg_iterator has been replaced. Instead of it being Expr**, it is an actual
class (called ExprIterator) that wraps a Stmt**, and provides the necessary
operators for iteration. The nice thing about this class is that it also uses
cast<> to type-checking, which introduces extra sanity checks throughout the
codebase that are useful for debugging.

A few of the CodeGen functions that use arg_iterator (especially from
OverloadExpr) have been modified to take begin and end iterators instead of a
base Expr** and the number of arguments. This matches more with the abstraction
of iteration. This still needs to be cleaned up a little bit, as clients expect
that ExprIterator is a RandomAccessIterator (which we may or may not wish to
allow for efficiency of representation).

This is a fairly large patch. It passes the tests (except CodeGen/bitfield.c,
which was already broken) on both a Debug and Release build, but it should
obviously be reviewed.

llvm-svn: 52378
2008-06-17 02:43:46 +00:00
Ted Kremenek 1c77e8f26b Silence uninitialized value warning in Release build.
llvm-svn: 52376
2008-06-16 23:46:27 +00:00
Ted Kremenek bba87243aa Silence uninitialized value warning during Release build.
llvm-svn: 52375
2008-06-16 23:45:12 +00:00
Ted Kremenek 51ca6fa512 Remove debugging message in ccc-analyzer.
Add color diagnostics from scan-build, and indicate the number of bugs found (if any).

llvm-svn: 52372
2008-06-16 22:40:14 +00:00
Ted Kremenek c9904b61af Latest release is checker-37.
llvm-svn: 52370
2008-06-16 21:46:12 +00:00
Ted Kremenek c17ec3e27f Re-enable the analyzer.
llvm-svn: 52367
2008-06-16 21:41:07 +00:00
Ted Kremenek 6bed7d6b1e Remove Analysis-Apple.
llvm-svn: 52366
2008-06-16 21:21:48 +00:00
Ted Kremenek f3c8650502 Move test case "uninit-msg-expr.m" from Analysis-Apple to Analysis (now works on all platforms).
llvm-svn: 52362
2008-06-16 21:15:29 +00:00
Ted Kremenek 2eed4d7a25 Moved test case NoReturn.m from Analysis-Apple to Analysis (now works on all platforms).
llvm-svn: 52359
2008-06-16 21:05:04 +00:00
Ted Kremenek bbe6111cc3 Move NSString.m test case from Analysis-Apple to Analysis. The test case now works on all platforms.
llvm-svn: 52354
2008-06-16 20:37:30 +00:00
Ted Kremenek ccafce3d4c Update test case to use -pedantic (makes the test case more clear).
llvm-svn: 52349
2008-06-16 19:53:46 +00:00
Ted Kremenek 5935a17daf Fix misspelling of "svelte".
llvm-svn: 52348
2008-06-16 19:51:41 +00:00
Ted Kremenek 951bc67096 Move Analysis-Apple/CFString.c to Analysis (the test case now works on all platforms).
llvm-svn: 52346
2008-06-16 19:35:31 +00:00
Ted Kremenek 107f13971f Move CFDateGC.m test case from Analysis-Apple to Analysis (it now runs on all platforms).
llvm-svn: 52344
2008-06-16 18:46:17 +00:00
Ted Kremenek 7056bb1f21 Moved CFDate.m from test/Analysis-Apple to test/Analysis, and added the necessary declarations from Foundation.h to CFDate.m so that the test case can be exercised on all platforms.
llvm-svn: 52343
2008-06-16 18:34:22 +00:00
Ted Kremenek 87c760af36 Add test case for NSString format-string checking.
llvm-svn: 52337
2008-06-16 18:01:05 +00:00
Ted Kremenek 34f664d443 Introduce preliminary support for NSString format-string checking.
Patch by Nikita Zhuk!

llvm-svn: 52336
2008-06-16 18:00:42 +00:00
Chris Lattner 22b9ff4131 force size of alloca to i32, which is currently required by LLVM IR.
This fixes use of alloca on 64-bit systems.

llvm-svn: 52334
2008-06-16 17:15:14 +00:00
Eli Friedman 327944b343 Basic support for volatile loads and stores. Stores the volatile
qualifier in the lvalue, and changes lvalue loads/stores to honor 
the volatile flag.  Places which need some further attention are marked 
with FIXMEs.

Patch by Cédric Venet.

llvm-svn: 52264
2008-06-13 23:01:12 +00:00
Ted Kremenek 871fcb57e7 Tweak h1 line-height to avoid text overlay issues in the headers.
llvm-svn: 52256
2008-06-13 21:09:07 +00:00
Ted Kremenek 54aba504be CSS tweaks with the menu to help resolve some menu/content overlap issues.
llvm-svn: 52255
2008-06-13 21:06:53 +00:00
Argyrios Kyrtzidis 351008da17 Allow -parse-noop -verify options to be used together.
llvm-svn: 52249
2008-06-13 12:15:34 +00:00
Ted Kremenek b7aa2cc416 Grammo.
llvm-svn: 52241
2008-06-12 19:14:13 +00:00
Ted Kremenek 05e2f6006c Added an "important notes" section. Tweaked formatting.
llvm-svn: 52239
2008-06-12 18:39:02 +00:00
Argyrios Kyrtzidis caec17eab9 Fix broken test.
llvm-svn: 52232
2008-06-12 12:44:52 +00:00
Argyrios Kyrtzidis 351763e156 Multiple tests in a single test file must be linked with '&&'.
Otherwise, failing tests other than the last one will not be reported.

llvm-svn: 52231
2008-06-12 12:40:02 +00:00
Argyrios Kyrtzidis de794aadae Fix "copy & paste" error.
llvm-svn: 52227
2008-06-11 23:15:56 +00:00
Ted Kremenek 3715385cf0 Added direct link to latest analyzer build on Mac OS X.
llvm-svn: 52222
2008-06-11 16:16:41 +00:00
Ted Kremenek 690f46fd20 Added a disclaimer about running time, and provided an executive summary of the tool's interface.
llvm-svn: 52221
2008-06-11 16:09:34 +00:00
Ted Kremenek 9f25c1d219 Use relative links that start with "/" so the menu works from different subdirectories.
llvm-svn: 52210
2008-06-11 06:22:05 +00:00
Eli Friedman 61b529f466 Don't crash if we can't find FileEntry info for a typedef, since one
isn't guaranteed to exist. This fixes a crash with conflicting typedefs
coming from stdin.

This also fixes the crash in PR2406, but doesn't completely fix the 
issue; it appears there's something strange about the physical location 
for the definition of int64_t in stdlib.h.

llvm-svn: 52209
2008-06-11 06:20:39 +00:00
Ted Kremenek d2c8970a9a Use same CSS as the rest of the clang website.
llvm-svn: 52208
2008-06-11 06:19:49 +00:00
Ted Kremenek 1d920583e5 Fix menu/content overlap.
llvm-svn: 52207
2008-06-11 06:15:58 +00:00
Ted Kremenek 56847a7249 More padding adjustments.
llvm-svn: 52206
2008-06-11 06:14:37 +00:00
Ted Kremenek 7d4955d842 Shorten menu item name.
llvm-svn: 52205
2008-06-11 06:13:36 +00:00
Ted Kremenek 9c682c000a Add some padding to the right of "content" to balance out.
llvm-svn: 52204
2008-06-11 06:08:58 +00:00
Ted Kremenek 3ec4889258 Less padding... (difficult to preview without commits)
llvm-svn: 52203
2008-06-11 06:08:05 +00:00
Ted Kremenek a32374a768 More padding...
llvm-svn: 52202
2008-06-11 06:07:21 +00:00
Ted Kremenek 909ce26888 Expand padding of content.
llvm-svn: 52201
2008-06-11 06:06:43 +00:00
Ted Kremenek 91f223a587 Added static analysis link.
llvm-svn: 52200
2008-06-11 06:04:56 +00:00
Ted Kremenek 2a10380f99 Make default text a little darker. Shorten title in Static Analysis page.
llvm-svn: 52199
2008-06-11 06:01:28 +00:00
Ted Kremenek 2fc9d272a0 More CSS refinements.
llvm-svn: 52198
2008-06-11 05:55:39 +00:00
Ted Kremenek e368a8cb02 Use Arial as default font.
llvm-svn: 52197
2008-06-11 05:32:48 +00:00
Ted Kremenek 39da888759 Use sans-serif font.
llvm-svn: 52196
2008-06-11 05:29:48 +00:00
Ted Kremenek 567d28c20d Included page-specific formatting for tables.
llvm-svn: 52195
2008-06-11 05:28:36 +00:00
Ted Kremenek 9b9fe9799c Include side-menu.
llvm-svn: 52194
2008-06-11 05:26:52 +00:00
Ted Kremenek c2144e73a1 Minor tweaks/grammar/formatting.
llvm-svn: 52193
2008-06-11 05:25:12 +00:00
Ted Kremenek 2f7a88ddf6 Skip a few more files and linker options.
llvm-svn: 52189
2008-06-10 18:56:59 +00:00
Argyrios Kyrtzidis 34fe86cd9c Fix the setup of CodeGen/bitfield.c test.
Due to the broken setup it was passing the test while it should have failed.

llvm-svn: 52181
2008-06-10 15:48:26 +00:00
Eli Friedman 940a7c0cf8 Fix the run line for this test.
llvm-svn: 52169
2008-06-10 05:18:06 +00:00
Eli Friedman 4f64def9ee Make this test C instead of C++; making it C++ causes a failure on Linux
because clang can't parse stdio.h in C++ mode yet.

llvm-svn: 52168
2008-06-10 05:14:31 +00:00
Eli Friedman d5b11a3adc Don't include complex.h or tgmath.h for this test; they aren't needed,
and including tgmath.h causes the test to fail for no good reason.

llvm-svn: 52167
2008-06-10 05:09:36 +00:00
Eli Friedman d48188e8e0 Fix getTrueExpr for ConditionalOperator to actually work. No testcase
because it's currently unused.

llvm-svn: 52166
2008-06-10 05:00:13 +00:00
Argyrios Kyrtzidis 406fb231f8 -Add DeclChain member to DeclContext.
-ScopedDecls get chained to their DeclContext.
-DeclContext's DeclChain replaces FunctionDecl's DeclChain and EnumDecl's ElementList.

llvm-svn: 52164
2008-06-10 01:32:09 +00:00
Argyrios Kyrtzidis d0c1df4c84 Make CodeGenFunction::EmitDecl() recognise CXXClass/CXXStruct/CXXUnion.
llvm-svn: 52162
2008-06-09 23:42:47 +00:00
Argyrios Kyrtzidis d8cb25ee90 Dump the name of CXXStruct/CXXUnion/CXXClass Decl subclasses.
llvm-svn: 52161
2008-06-09 23:36:53 +00:00
Argyrios Kyrtzidis 554a07bab3 -Changes to TagDecl:
Added TagKind enum.
  Added getTagKind() method.
  Added convenience methods: isEnum(), isStruct(), isUnion(), isClass().
-RecordDecl/CXXRecordDecl::Create() accept a TagKind enum instead of a DeclKind one.

llvm-svn: 52160
2008-06-09 23:19:58 +00:00
Argyrios Kyrtzidis 2951e14520 Added new C++ AST Decl subclasses.
llvm-svn: 52155
2008-06-09 21:05:31 +00:00
Eli Friedman 8233993fc6 Get -serialize working again, plus a bit of minor cleanup.
llvm-svn: 52152
2008-06-09 20:02:51 +00:00
Ted Kremenek 401ef2e426 Added link to Mac OS X builds. Provide instructions for those not using Mac OS X.
llvm-svn: 52148
2008-06-09 14:30:01 +00:00
Matthijs Kooijman 9c995757a9 Sprinkle some "-o -" clang options to make the examples work.
llvm-svn: 52145
2008-06-09 14:09:10 +00:00
Ted Kremenek 420f7e76c7 Add redirection page.
llvm-svn: 52143
2008-06-09 13:38:32 +00:00
Sanjiv Gupta 224e8ea2bb Generate debug descriptors for array types while generating the debug info.
llvm-svn: 52140
2008-06-09 10:47:41 +00:00
Eli Friedman e6e0f23a29 Add code to make test/CodeGen/struct-init.c work correctly without the
pointer cast hack currently in isIntegerConstantExpr 
(in lib/AST/Expr.cpp).  Also removes an odd test that even gcc doesn't accept.

The reason the pointer cast hack is relevant here is that it makes Sema 
end up misinterpreting the relevant expression as a null pointer constant.

The reason for this patch is that I plan to remove the pointer cast hack 
sometime soon because it causes strange issues, especially in its 
current form; see my recent email to cfe-dev
"[PATCH] add constant expression evaluation to the AST and fix PR2413".

llvm-svn: 52120
2008-06-09 05:05:07 +00:00
Eli Friedman 7567573926 For struct initialization, check compatibility with the unqualified
type; this isn't explicitly stated in the standard, but it doesn't 
really make sense for them to have an effect here.  Fixes the included 
testcase, sent to me by Steve Naroff.

llvm-svn: 52113
2008-06-09 03:52:40 +00:00
Chris Lattner e642fcd689 Since this isn't linked from anywhere yet, I'm taking the opportunity
to move it to a more stable URL.  If the S-A work grows, this will be
the entrypoint for the pages related to it.

llvm-svn: 52101
2008-06-08 21:55:32 +00:00
Nuno Lopes b6f7953818 implement the alias attirbute (in both Sema and Codegen)
llvm-svn: 52092
2008-06-08 15:45:52 +00:00
Nuno Lopes cc041ea68e fix compiler warnings
llvm-svn: 52089
2008-06-08 10:16:34 +00:00
Eli Friedman c98a7add43 Don't crash emitting an initializer for a static local with union type.
This fix just makes sure to construct the global with the appropriate 
type, and fixes up the one user this affects to compensate.

llvm-svn: 52084
2008-06-08 01:23:18 +00:00
Eli Friedman 69d721e071 Enable the rewriter tests on all platforms; there don't appear to
be any regressions from this on my machine, but please let me know if 
you run into issues.  (The idea here is that it's better to run all 
tests on all platforms if at all possible.)

llvm-svn: 52083
2008-06-07 23:20:33 +00:00
Eli Friedman 7e4f41ef3f Don't include objc.h, so the rewriter tests work on machines without it.
llvm-svn: 52082
2008-06-07 23:15:03 +00:00
Chris Lattner a5678ccd4a capture whether a CharacterLiteral was wide or not in the AST.
Patch by Mike Stump!

llvm-svn: 52081
2008-06-07 22:35:38 +00:00
Chris Lattner a0173131fa Fix ast dumping to work with long double literals, e.g. we dump:
long double X() { return 1.0L; }

as:

long double X()
(CompoundStmt 0xb06a00 <t.c:2:17, col:32>
  (ReturnStmt 0xb068d0 <col:19, col:26>
    (FloatingLiteral 0xb02cf0 <col:26> 'long double' 1.000000)))

llvm-svn: 52080
2008-06-07 22:13:43 +00:00
Chris Lattner 82333ccf39 Mark the right ctor explicit, patch by Cédric Venet
llvm-svn: 52078
2008-06-07 19:56:57 +00:00
Eli Friedman 3ce7b20590 Fix crash with conversion to an address-space-qualified pointer. Bug
reported on cfe-dev by Cédric Venet.

Note that I seriously doubt that this perticular construct is useful, 
though: it's a pointer in an alternate address space pointing into 
unqualified address space.

llvm-svn: 52076
2008-06-07 17:27:51 +00:00
Eli Friedman 7dbab8a6a1 Fix the line endings in the newly added DeclBase.cpp.
llvm-svn: 52075
2008-06-07 16:52:53 +00:00
Eli Friedman 445c73d19f Fix Visual Studio project files; patch by Cédric Venet.
llvm-svn: 52074
2008-06-07 16:34:27 +00:00
Sanjiv Gupta 1929242a94 Create debug type descriptors for aggregate/enum types.
llvm-svn: 52070
2008-06-07 04:46:53 +00:00
Ted Kremenek 92611db88f Use a common SourceManager when processing multiple files. This allows us to cache the contents of source files already loaded from disk.
llvm-svn: 52066
2008-06-06 22:42:39 +00:00
Ted Kremenek af44b83296 Updated Xcode project.
llvm-svn: 52065
2008-06-06 21:48:51 +00:00
Ted Kremenek ef17049bac Reclaim memory owned by ObjCForwardProtocolDecls.
llvm-svn: 52063
2008-06-06 21:05:33 +00:00
Eli Friedman fd1e32b1f3 Reorganize this loop a bit so it doesn't crash for empty unions. Fixes
PR2419.

llvm-svn: 52060
2008-06-06 20:12:37 +00:00
Ted Kremenek 71fff8b4de Implement "Destroy" and destructor for ObjCClassDecl, allowing us to reclaim its memory and the memory of the Decls it owns.
llvm-svn: 52059
2008-06-06 20:11:53 +00:00
Ted Kremenek 2e34af659a Implement "Destroy" and destructor for ObjCProtocolDecl, allowing us to reclaim its memory and the memory of the Decls it owns.
llvm-svn: 52055
2008-06-06 19:48:57 +00:00
Eli Friedman 01321c3b8c Clean up dead code from SemaInit landing.
llvm-svn: 52054
2008-06-06 19:40:52 +00:00
Ted Kremenek 5144fe2287 Because of a lack of a clear ownership role between ObjCInterfaceDecls and
ObjCPropertyDecls, have TranslationUnit destroy ObjCPropertyDecls. This is a
horrible hack, and must be removed eventually.

llvm-svn: 52051
2008-06-06 17:21:42 +00:00
Ted Kremenek 09a0d04ea0 Initial work on additional memory collection for ObjC AST objects. We now
have Destroy methods of ObjcMethodDecl and ObjCInterfaceDecl which recursively
destroy their owned Decls and Stmts.  There are a few cases where it is not
clear what to do (FIXMEs included in the patch).

llvm-svn: 52050
2008-06-06 16:45:15 +00:00
Nuno Lopes 9b07b7b099 implement constant expr. sub ptr ptr
llvm-svn: 52049
2008-06-06 16:41:08 +00:00
Devang Patel 8f5645cd51 During interface layout, don't forget super class.
llvm-svn: 52035
2008-06-06 02:14:01 +00:00
Devang Patel e1f10511ba Undo previous check-in.
llvm-svn: 52034
2008-06-06 02:00:35 +00:00
Devang Patel 1216b05d3d During interface layout, don't forget super class.
llvm-svn: 52033
2008-06-06 01:50:12 +00:00
Ted Kremenek 3ad519441f Fix crash when running with multiple source files. This can be improved.
llvm-svn: 52032
2008-06-06 01:47:30 +00:00
Steve Naroff d32ae8edf2 Oops...remove weird printf:-)
llvm-svn: 52025
2008-06-05 22:58:33 +00:00
Steve Naroff 946166f4e9 Second half of "fix" for <rdar://problem/5986085> clang on xcode: error: redefinition of 'XCElementToggler' as different kind of symbol
llvm-svn: 52024
2008-06-05 22:57:10 +00:00
Ted Kremenek dfa8c8aef5 Ignore a few more linker arguments.
llvm-svn: 52023
2008-06-05 22:46:24 +00:00
Steve Naroff a44099f022 super fix submitted by David Chisnall.
llvm-svn: 52014
2008-06-05 18:14:25 +00:00
Steve Naroff 31e1d41338 Fixed a recent test regression from last night (r51976).
llvm-svn: 52006
2008-06-05 15:03:27 +00:00
Steve Naroff 25449a5221 Fix <rdar://problem/5986833> clang on xcode: incompatible type returning 'void', expected 'int'.
- Changed Sema::ObjCActOnStartOfMethodDef() to more accurately type "self" in factory methods.
- Changed Sema::ActOnInstanceMessage() to use the new type to restrict the lookup.

llvm-svn: 52005
2008-06-05 14:49:39 +00:00
Steve Naroff f9c65246dd Fix <rdar://problem/5987482> clang on xcode: null dereference in Sema::ActOnMemberReferenceExpr.
In addition to fixing the crasher, this commit fixes further improves property lookup (by searching protocols of qualified interfaces..."NSObject <prot>").

llvm-svn: 52001
2008-06-05 13:55:23 +00:00
Sanjiv Gupta 158143ad54 Emit debug information for global and static variables when -g is specified.
llvm-svn: 51993
2008-06-05 08:59:10 +00:00
Steve Naroff d1c3d1130b Fix trivial crasher and downgrade an error to warning (to match GCC).
llvm-svn: 51976
2008-06-05 04:33:44 +00:00
Steve Naroff cfdf6166fc Support "<p>" as a short-hand for "id<p>". Here's a comment from GCC (the only documentation I could find on it).
/* Make "<SomeProtocol>" equivalent to "id <SomeProtocol>" - nisse@lysator.liu.se.  */

This commit adds the parser magic. The type associated with <p> is still incorrect. Will discuss with Chris.

llvm-svn: 51972
2008-06-05 00:02:44 +00:00
Steve Naroff d5bf26fa26 Fix crash identified by <rdar://problem/5986085>.
llvm-svn: 51969
2008-06-04 23:08:38 +00:00
Devang Patel dbb7263fd9 Add ObjCInterface layout support.
Reuse RecordLayout.

llvm-svn: 51968
2008-06-04 21:54:36 +00:00
Steve Naroff 524fbe8687 Update a test and add a FIXME.
llvm-svn: 51967
2008-06-04 21:38:52 +00:00
Devang Patel 21979193bb Refactoring.
Move field layout code in a ASTRecordLayout member fn.

llvm-svn: 51966
2008-06-04 21:22:16 +00:00
Ted Kremenek 6da61be501 ccc-analyzer now properly eats the -install_name, -exported_symbols_list, -current_version, -compatibility_version, and -sectorder command line arguments.
llvm-svn: 51965
2008-06-04 20:49:03 +00:00
Ted Kremenek 46267c839d Added fixmes.
llvm-svn: 51964
2008-06-04 20:48:08 +00:00
Steve Naroff d9c2607014 Parser::ParseObjCSynchronizedStmt() needs to Enter/Exit a decl scope.
llvm-svn: 51963
2008-06-04 20:36:13 +00:00
Eli Friedman 3e1852fa7e Make sure the types are consistent for a void conditional. No visible
difference, but it's better to be consistent.

llvm-svn: 51961
2008-06-04 19:47:51 +00:00
Eli Friedman 2425cd8158 For setting attributes, don't assume there are ParamVarDecls available,
because trying to access non-existent ParamVarDecls can crash. 
Testcase from the original source for PR2414.

llvm-svn: 51960
2008-06-04 19:41:28 +00:00
Nuno Lopes 7bd6e58ddc fix crash when codegening 'cond ? lhs : call-to-void-func()'
llvm-svn: 51958
2008-06-04 19:15:45 +00:00
Nuno Lopes 28bcfec325 fix type of ?: operator. If one of the operator is void, the type should be void as well.
Please confirm this is safe

llvm-svn: 51957
2008-06-04 19:14:12 +00:00
Fariborz Jahanian 6e59392e4b Fix a gcc compatibility issue which allows more protocol-qualified id on RHS to be
assigned to less protocol qualified object on LHS.

llvm-svn: 51956
2008-06-04 19:00:03 +00:00
Eli Friedman 8547e1d129 Don't assume that the type of a FunctionDecl is a FunctionType; that
assumption isn't accurate in the presence of typedefs.

llvm-svn: 51951
2008-06-04 17:58:41 +00:00
Eli Friedman 67b827900e Make the width and alignment for long double consistent with the
hardcoded data layout in getTargetDescription.  Hopefully fixes a test 
failure.

Of course, this should be fixed properly, but that's a bigger fix.

llvm-svn: 51948
2008-06-04 17:01:45 +00:00
Eli Friedman c0b54901f4 clang fix to parallel LLVM r51928
(http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080602/063306.html).

llvm-svn: 51944
2008-06-04 16:13:19 +00:00
Ted Kremenek b147ad1051 Moved LangOptions from TranslationUnit to ASTContext. This induced a variety of cleanups in some ASTConsumers.
llvm-svn: 51943
2008-06-04 15:55:15 +00:00
Ted Kremenek 1cb246ef20 Update Xcode project.
llvm-svn: 51941
2008-06-04 15:38:06 +00:00
Steve Naroff c68e382ba9 ASTContext::typesAreCompatible(): id is compatible with all qualified id types.
llvm-svn: 51939
2008-06-04 15:07:33 +00:00
Steve Naroff f4308aac53 Sema::ActOnClassMessage() needs to look through it's local implementation for private class methods.
llvm-svn: 51938
2008-06-04 14:43:54 +00:00
Argyrios Kyrtzidis 6301884dc0 Move Decl and DeclContext implementations into a new DeclBase.cpp file.
llvm-svn: 51936
2008-06-04 13:04:04 +00:00
Steve Naroff 5ccccf0326 Make sure we look through categories when searching for a classes property.
Fixes <rdar://problem/5984338> clang on xcode: property implementation must have its declaration in interface 'PBXOpenQuicklyModule'

llvm-svn: 51925
2008-06-04 04:46:04 +00:00
Steve Naroff cff2688180 Give the "isa" slot a name!
llvm-svn: 51924
2008-06-04 03:03:48 +00:00
Steve Naroff a2981a2c7b Add a few more built-in functions.
llvm-svn: 51921
2008-06-03 22:16:48 +00:00
Steve Naroff b115be707d Put back my temporary hack until Eli addresses this in a more complete fashion.
llvm-svn: 51920
2008-06-03 22:06:04 +00:00
Steve Naroff 13c360cec4 Implement another property related FIXME:
Fix <rdar://problem/5967199> clang on xcode: error: member reference is not to a structure or union

llvm-svn: 51919
2008-06-03 21:56:14 +00:00
Eli Friedman 149614bfe7 Re-fix r51907 in a way which doesn't affect valid code. This essentially
moves the check for the invalid construct to a point where it doesn't 
affect other uses of isIntegerConstantExpr, and we can warn properly 
when the extension is used.  This makes it a bit more complicated, but 
it's a lot cleaner.

Steve, please tell me if this check is sufficient to handle the 
relevant system header.  I know it's enough to handle the testcase, but 
I don't know what exactly the original looks like.

llvm-svn: 51918
2008-06-03 21:01:11 +00:00
Steve Naroff ec62418fc5 Fixup recent "super" regression.
llvm-svn: 51913
2008-06-03 18:21:00 +00:00
Steve Naroff 5832c03509 Add a builtin. Fixes <rdar://problem/5982037> clang on xcode: error: incompatible operand types ('int' and 'char *').
llvm-svn: 51908
2008-06-03 17:37:43 +00:00
Steve Naroff aaf5108d26 Change Expr::isIntegerConstantExpr() to allow for pointer types (for GCC compatibility). Note FIXME.
Fix <rdar://problem/5977870> clang on xcode: error: arrays with static storage duration must have constant integer length

llvm-svn: 51907
2008-06-03 17:15:29 +00:00
Steve Naroff b788d9bd27 Allow implicit pointer/int conversions on ObjCQualifiedIdTypes in Sema::CheckCompareOperands() and Sema::CheckAssignmentConstraints().
Fixes <rdar://problem/5980804> clang on xcode: error: incompatible type sending 'id<XDUMLType>', expected 'NSCellType'.

llvm-svn: 51902
2008-06-03 14:04:54 +00:00
Steve Naroff 0b225dac9b Finish up r51900.
llvm-svn: 51901
2008-06-03 13:21:30 +00:00
Steve Naroff 1ba306cde5 Allow for a GCC cast extension.
Fixes part of <rdar://problem/5980829> clang on xcode: used type 'NSRange' where arithmetic or pointer type is required.

llvm-svn: 51900
2008-06-03 12:56:35 +00:00
Chris Lattner f4fee9e1e5 make rewrite macros insert a space when commenting out macros where the token didn't
lead with a space.

llvm-svn: 51896
2008-06-03 06:10:17 +00:00
Steve Naroff b877e2c3ca Fix parser bug/FIXME with @catch.
<rdar://problem/5980846> clang on xcode: error: declarator requires an identifier (for @catch)

llvm-svn: 51895
2008-06-03 05:36:54 +00:00
Steve Naroff ebf4cb4841 Fix <rdar://problem/5979875> clang on xcode: error: use of undeclared identifier 'super'
llvm-svn: 51888
2008-06-02 23:03:37 +00:00
Ted Kremenek 88bfb62ffe Use the correct 'ccc-analyzer' when the build command is a direct invocation of gcc.
llvm-svn: 51883
2008-06-02 21:52:47 +00:00
Chris Lattner fd2fe8270e handle the full assignment-expression grammar when using an
objc message send in an initializer expression.

llvm-svn: 51882
2008-06-02 21:31:07 +00:00
Steve Naroff f611964230 Fix <rdar://problem/5976164> clang ObjC rewriter: for ... in enumeration inserts undeclared function (objc_enumerationMutation should be in preamble)
llvm-svn: 51880
2008-06-02 20:23:21 +00:00
Ted Kremenek 0b6b0e7157 Teach the CF retain checker about "_init" methods. Fixes: <rdar://problem/5956379>
llvm-svn: 51872
2008-06-02 17:14:13 +00:00
Ted Kremenek 7ccc9835ef Use "file_language" for per-language -x options.
llvm-svn: 51871
2008-06-02 17:13:40 +00:00
Nuno Lopes 3fe4651e2e fix decl attributes cleaning
this plugs the leak of attributes and also fixes a crash in the test

llvm-svn: 51862
2008-06-01 22:53:53 +00:00
Argyrios Kyrtzidis 28172cb812 Include <string> header to allow compiling for MSVC.
llvm-svn: 51847
2008-06-01 21:23:24 +00:00
Nuno Lopes 363212b3fa fix PR2357 (#ifs didnt invalidate the multiple-inclusion optimization state)
llvm-svn: 51843
2008-06-01 18:31:24 +00:00
Eli Friedman 412c66839e Don't name the ObjC types if there aren't any ObjC objects in the file.
Patch by David Chisnall.

llvm-svn: 51840
2008-06-01 16:00:02 +00:00
Eli Friedman f6b091f73a First cut at setting attributes for functions and calls; this puts us
much closer to passing the gcc struct layout tests.

It might be possible to refactor this a bit, but I'm not sure there's 
actually enough common code for that to be useful.

To get the calling convention completely correct, a bit of 
platform-specific code is necessary even for x86-Linux. On x86-Linux, the
alignment of function parameters is extremely strange; as far as I can tell,
it's always 4 except for SSE vectors or structs containing SSE vectors.  I'm 
continuing to investigate this.

llvm-svn: 51839
2008-06-01 15:54:49 +00:00
Eli Friedman 10c2417570 Make sure _Bool globals have the correct type.
llvm-svn: 51838
2008-06-01 15:31:44 +00:00