Douglas Gregor
cde232f7f0
Better documentation for our initialization checker
...
llvm-svn: 63261
2009-01-29 01:05:33 +00:00
Douglas Gregor
85df8d82c7
Move InitListChecker out of Sema.h
...
llvm-svn: 63258
2009-01-29 00:45:39 +00:00
Douglas Gregor
f6d2752f12
Eliminate infinite looping in a wacky case with designated initializers. Simplifies (somewhat) the actually checking of the initializer expression following the designators
...
llvm-svn: 63257
2009-01-29 00:39:20 +00:00
Steve Naroff
dcfe56d489
Refactor Sema::LookupDecl() into 2 functions: LookupDeclInScope() and LookupDeclInContext().
...
The previous interface was very confusing. This is much more explicit, which will be easier to understand/optimize/convert.
The plan is to eventually deprecate both of these functions. For now, I'm focused on performance.
llvm-svn: 63256
2009-01-29 00:07:50 +00:00
Douglas Gregor
e6af7a028c
Remove Expr::hasSideEffects. It doesn't work anyway
...
llvm-svn: 63254
2009-01-28 23:43:32 +00:00
Douglas Gregor
17bd094a6b
Improvements to code-generation and semantic analysis of designated
...
initializers.
- We now initialize unions properly when a member other than the
first is named by a designated initializer.
- We now provide proper semantic analysis and code generation for
GNU array-range designators *except* that side effects will occur
more than once. We warn about this.
llvm-svn: 63253
2009-01-28 23:36:17 +00:00
Fariborz Jahanian
d27a820ae2
Add setter/getter methods to the list of methods
...
of class's meta-data (related to objc2 nonfragile abi).
llvm-svn: 63251
2009-01-28 22:46:49 +00:00
Ted Kremenek
b4dd3f8685
Remove '#if 0' code.
...
llvm-svn: 63250
2009-01-28 22:35:55 +00:00
Ted Kremenek
2e561dd491
Remove method 'AddNE' from the public interface of ConstraintManager.
...
llvm-svn: 63249
2009-01-28 22:27:59 +00:00
Daniel Dunbar
f50e60b23a
Implement basic _Complex integer constant folding.
...
- Merged into single ComplexEvaluator, these share too much logic to
be worth splitting for float/int (IMHO). Will split on request.
llvm-svn: 63248
2009-01-28 22:24:07 +00:00
Fariborz Jahanian
066347ec7b
property metadata for objc2's nonfragile abi
...
llvm-svn: 63246
2009-01-28 22:18:42 +00:00
Ted Kremenek
5997644550
Add some comments to GRStateManager. No functionality change.
...
llvm-svn: 63243
2009-01-28 22:11:38 +00:00
Douglas Gregor
347f7eabb9
Code generation support for C99 designated initializers.
...
The approach I've taken in this patch is relatively straightforward,
although the code itself is non-trivial. Essentially, as we process
an initializer list we build up a fully-explicit representation of the
initializer list, where each of the subobject initializations occurs
in order. Designators serve to "fill in" subobject initializations in
a non-linear way. The fully-explicit representation makes initializer
lists (both with and without designators) easy to grok for codegen and
later semantic analyses. We keep the syntactic form of the initializer
list linked into the AST for those clients interested in exactly what
the user wrote.
Known limitations:
- Designating a member of a union that isn't the first member may
result in bogus initialization (we warn about this)
- GNU array-range designators are not supported (we warn about this)
llvm-svn: 63242
2009-01-28 21:54:33 +00:00
Ted Kremenek
c783209605
retain/release checker: Always generate an "autorelease" summary for an "autorelease" message, and have the summary processing logic treat it as a no-op in GC mode. This change is motivated to encode more of the semantics in the summaries themselves for eventual better diagnostics.
...
llvm-svn: 63241
2009-01-28 21:44:40 +00:00
Daniel Dunbar
804c0441c2
Handle complex types in ASTContext::mergeTypes
...
llvm-svn: 63238
2009-01-28 21:22:12 +00:00
Ted Kremenek
f675864e3c
Add autorelease test case.
...
llvm-svn: 63237
2009-01-28 21:20:48 +00:00
Ted Kremenek
62224c1d7f
Add more PTH diagnostics for invalid PTH files, etc.
...
llvm-svn: 63232
2009-01-28 21:02:43 +00:00
Ted Kremenek
3b0589e4b4
Enhance PTHManager::Create() to take an optional Diagnostic* argument that can be used to report issues such as a missing PTH file.
...
llvm-svn: 63231
2009-01-28 20:49:33 +00:00
Ted Kremenek
5241832d1d
Fix TextDiagnosticPrinter::HandleDiagnostic to handle invalid FullSourceLocs that do not have a SourceManager.
...
llvm-svn: 63230
2009-01-28 20:47:47 +00:00
Ted Kremenek
bf16554640
Add method FullSourceLoc::getBufferData().
...
llvm-svn: 63229
2009-01-28 20:46:26 +00:00
Ted Kremenek
3587d0b762
Tweak doxygen comment. No functionality change.
...
llvm-svn: 63228
2009-01-28 20:45:37 +00:00
Steve Naroff
16c8e598ae
Name change (isTypeName->getTypeName).
...
Since it doesn't return a bool, is shouldn't be prefixed with 'is'.
llvm-svn: 63226
2009-01-28 19:39:02 +00:00
Daniel Dunbar
ad0d48d372
Fix test case (for -### printing version)
...
llvm-svn: 63223
2009-01-28 19:30:43 +00:00
Daniel Dunbar
36ccb30a35
ccc: Support -v; invent a version number for ccc for now, will be
...
shared with clang eventually.
llvm-svn: 63220
2009-01-28 19:26:20 +00:00
Steve Naroff
b04867265c
Change Parser::ParseFunctionDeclarator() to annotate typename tokens.
...
This removes ~10% of the calls to Sema::isTypeName(), which amount to a little less than a 1% reduction in usertime (for Cocoa.h).
llvm-svn: 63219
2009-01-28 19:16:40 +00:00
Fariborz Jahanian
b042a59230
Some refactoring of common code. No change in functionality.
...
llvm-svn: 63218
2009-01-28 19:12:34 +00:00
Sebastian Redl
ed8f200318
Implement pointer to member handling in static_cast.
...
Fix a stupid mistake in UnwrapSimilarPointers that made any two member pointers compatible as long as the pointee was the same.
Make a few style corrections as suggested by Chris.
llvm-svn: 63215
2009-01-28 18:33:18 +00:00
Douglas Gregor
fb03466388
Complete semantic checking for typedef redeclarations in C++. The
...
rules are slightly different than in C, and now we handle both
dialects properly.
llvm-svn: 63211
2009-01-28 17:15:10 +00:00
Steve Naroff
aec0f37d11
Remove 'NamespaceNameOnly' argument to Sema::LookupDecl(). It is unused.
...
Even though Sema::LookupDecl() is deprecated, it's still used all over the place. Simplifying the interface will make it easier to understand/optimize/convert.
llvm-svn: 63210
2009-01-28 16:09:22 +00:00
Steve Naroff
49f97d7eb2
Remove 'enableLazyBuiltinCreation' argument to Sema::LookupDecl(). It is unused.
...
Even though Sema::LookupDecl() is deprecated, it's still used all over the place. Simplifying the interface will make it easier to understand/optimize/convert.
llvm-svn: 63208
2009-01-28 15:51:12 +00:00
Ted Kremenek
cdca288cf8
Updated checker build.
...
llvm-svn: 63200
2009-01-28 15:05:42 +00:00
Ted Kremenek
882214b676
Update comment.
...
llvm-svn: 63192
2009-01-28 07:10:33 +00:00
Chris Lattner
22ebe7ba66
long long and double have 64-bit alignment on x86-64.
...
llvm-svn: 63191
2009-01-28 06:58:19 +00:00
Chris Lattner
5fdc227326
add some basic file headers
...
llvm-svn: 63188
2009-01-28 06:31:57 +00:00
Ted Kremenek
4daeccf28f
retain/release checker: Improve diagnostics to indicate that CF objects are not automatically garbage collected.
...
llvm-svn: 63187
2009-01-28 06:25:48 +00:00
Ted Kremenek
f0ec316a04
retain/release checker: Indicate whether a tracked object is a Core Foundation or Objective-C object.
...
llvm-svn: 63186
2009-01-28 06:06:36 +00:00
Chris Lattner
e1d49c2572
add diagnostics files to xcode proj
...
llvm-svn: 63185
2009-01-28 06:02:52 +00:00
Ted Kremenek
bdaa384453
retain/release checker: More diagnostic refactoring.
...
llvm-svn: 63184
2009-01-28 06:01:42 +00:00
Ted Kremenek
aeb115f93a
retain/release checker: Embed an "object type" into the RetEffect/RetVal objects to help distinguish between Objective-C and Core Foundation objects (for better diagnostics).
...
llvm-svn: 63183
2009-01-28 05:56:51 +00:00
Chris Lattner
64d8fc25d6
fix a crash I introduced, thanks to Ted for the awesome reduced
...
testcase :)
llvm-svn: 63182
2009-01-28 05:42:38 +00:00
Ted Kremenek
21114f21c4
retain/release checker: More cleanups (no real functionality change).
...
llvm-svn: 63181
2009-01-28 05:29:13 +00:00
Ted Kremenek
ff3c2bdfee
Fix diagnostic truncated by my last patch.
...
llvm-svn: 63180
2009-01-28 05:18:08 +00:00
Ted Kremenek
758fda632b
retain/release checker: More diagnostic refactoring.
...
llvm-svn: 63179
2009-01-28 05:15:02 +00:00
Ted Kremenek
c4118ac79c
retain/release checker: Output the name of the function that allocates an object.
...
llvm-svn: 63178
2009-01-28 05:06:46 +00:00
Ted Kremenek
424c61ff6d
Refactor some diagnostic code to use raw_string_ostream. No functionality change.
...
llvm-svn: 63177
2009-01-28 04:47:13 +00:00
Ted Kremenek
99ae4120d6
Remove '#if 0' code.
...
llvm-svn: 63176
2009-01-28 04:37:52 +00:00
Ted Kremenek
062115af59
Patch by Alexei Svitkine: Refactor Sema::ParseAST API to allow clients to pass as an argument a TranslationUnit object whose contents live beyond the call to ParseAST.
...
llvm-svn: 63175
2009-01-28 04:29:29 +00:00
Mike Stump
5d1ebe90b3
Add a preliminary version number.
...
llvm-svn: 63168
2009-01-28 02:43:35 +00:00
Daniel Dunbar
6ec8a4d9e3
ABITest: Support --test-layout option for generating
...
size/alignment/offsetof based tests of types instead of calling
convention tests.
llvm-svn: 63167
2009-01-28 02:01:23 +00:00
Fariborz Jahanian
3d3426f321
Set visibility of ivar offset symbols according to
...
accessibility of the ivar (related to objc2's
non-fragile abi).
llvm-svn: 63166
2009-01-28 01:36:42 +00:00
Fariborz Jahanian
40a4bcd49b
Generation of ivar-offset symbols in objc2's non-fragile abi.
...
Changed section names for meta-data (to match current gcc).
llvm-svn: 63163
2009-01-28 01:05:23 +00:00
Ted Kremenek
1502b7e288
On Windows use a BumpPtrAllocator for the UniqueFileContainer's StringMap.
...
llvm-svn: 63162
2009-01-28 01:01:07 +00:00
Nuno Lopes
b81d94ff58
add test for PR2502, which was already fixed some time ago
...
llvm-svn: 63160
2009-01-28 00:44:33 +00:00
Ted Kremenek
bb2f25b40f
FileManager: Use a BumpPtrAllocator for the StringMaps DirEntries and FileEntries.
...
Performance impact (clang -fsyntax-only INPUTS/Cocoa_h.m):
non-PTH: 0.4% improvement
PTH: 0.8% improvement
llvm-svn: 63159
2009-01-28 00:44:12 +00:00
Nuno Lopes
bb537dc189
fix PR3427: fix debuginfo for incomplete array types
...
llvm-svn: 63158
2009-01-28 00:35:17 +00:00
Ted Kremenek
5c04bd81ed
Add a some comments to designate Windows-specific/Unix-specific code. No functionality change.
...
llvm-svn: 63157
2009-01-28 00:27:31 +00:00
Steve Naroff
99c0cdf899
Finish making AST BumpPtrAllocation runtime configurable (based on -disable-free).
...
snaroff% time ../../Release-Asserts/bin/clang INPUTS/Cocoa_h.m
0.179u 0.051s 0:00.23 95.6% 0+0k 0+0io 0pf+0w
snaroff% time ../../Release-Asserts/bin/clang INPUTS/Cocoa_h.m -disable-free
0.169u 0.052s 0:00.22 95.4% 0+0k 0+0io 0pf+0w
llvm-svn: 63153
2009-01-27 23:20:32 +00:00
Sebastian Redl
a5a77a6dc6
Add handling of member pointers to reinterpret_cast.
...
llvm-svn: 63150
2009-01-27 23:18:31 +00:00
Fariborz Jahanian
e19a1f15ae
After talking to our runtime guru, I added a comment.
...
llvm-svn: 63141
2009-01-27 22:27:56 +00:00
Ted Kremenek
3efd355b9d
Updated checker build.
...
llvm-svn: 63140
2009-01-27 22:24:33 +00:00
Steve Naroff
096bab711e
Convert types over to placement new() that takes an ASTContext.
...
Also changed FunctionTypeProto to be allocated with 8-byte alignment (noticed by Doug). I couldn't think of any reason to allocate on 16-byte boundaries. If anyone remembers why we were doing this, let me know!
llvm-svn: 63137
2009-01-27 22:08:43 +00:00
Steve Naroff
13ae6f47cd
Remove many references to ASTContext::getAllocator(), replacing them with calls to the recently added placement new (which uses ASTContext's allocator for memory). Also added ASTContext::Deallocate().
...
This will simplify runtime replacement of ASTContext's allocator. Keeping the allocator private (and removing getAllocator() entirely) is also goodness.
llvm-svn: 63135
2009-01-27 21:25:57 +00:00
Daniel Dunbar
f4a0cba545
ccc/Darwin/clang: Fix a mistranslation for the llvm-backend; llvm-gcc
...
doesn't set the relocation model when -mdynamic-no-pic is present.
llvm-svn: 63129
2009-01-27 20:42:58 +00:00
Anders Carlsson
570c357ded
If an input constraint refers to an output constraint, it should have the same constraint info as the output constraint. Fixes PR3417
...
llvm-svn: 63127
2009-01-27 20:38:24 +00:00
Fariborz Jahanian
7415caa3d4
ivar meta-data generation for nonfragile-abi.
...
Still more work to do in this area.
llvm-svn: 63126
2009-01-27 19:38:51 +00:00
Daniel Dunbar
2ad3ff0bd6
ccc: Normalize machine name to i386 for platforms which report the
...
machine as x86_64.
llvm-svn: 63122
2009-01-27 19:29:51 +00:00
Chris Lattner
75441a3870
eliminate some random .ll file outputs
...
llvm-svn: 63117
2009-01-27 18:56:08 +00:00
Fariborz Jahanian
7ec8851c89
Fixed a typo in getPreferredTypeAlign method.
...
llvm-svn: 63116
2009-01-27 18:55:00 +00:00
Chris Lattner
7687a998a4
add new headers
...
llvm-svn: 63113
2009-01-27 18:34:53 +00:00
Chris Lattner
660419289a
Add the new .def files
...
llvm-svn: 63112
2009-01-27 18:34:32 +00:00
Chris Lattner
7368d581c1
Split the single monolithic DiagnosticKinds.def file into one
...
.def file for each library. This means that adding a diagnostic
to sema doesn't require all the other libraries to be rebuilt.
Patch by Anders Johnsen!
llvm-svn: 63111
2009-01-27 18:30:58 +00:00
Ted Kremenek
422d81dcd4
Fix bug in BasicStore::getLValueElement where if the base of an array subscript expression was an ElementRegion we stacked another ElementRegion on top of that.
...
This fixes PR 3422.
llvm-svn: 63110
2009-01-27 18:29:03 +00:00
Chris Lattner
a3402cd524
add a new "getPreferredTypeAlign" method to return the preferred alignment
...
of a type. The implementation is currently something of a hack, but is
sufficient for now and allows clients to be built on it.
llvm-svn: 63108
2009-01-27 18:08:34 +00:00
Eli Friedman
3f66b84c86
Support CodeGen for __extension__ operator on aggregates.
...
llvm-svn: 63101
2009-01-27 09:03:41 +00:00
Eli Friedman
eb3a9b03ab
Fix for PR3418: make sure to handle the RHS of expressions starting with
...
__extension__. This sort of construct shows up in the gcc source code.
llvm-svn: 63100
2009-01-27 08:43:38 +00:00
Chris Lattner
f1ca7d3e02
Introduce a new PresumedLoc class to represent the concept of a location
...
as reported to the user and as manipulated by #line. This is what __FILE__,
__INCLUDE_LEVEL__, diagnostics and other things should follow (but not
dependency generation!).
This patch also includes several cleanups along the way:
- SourceLocation now has a dump method, and several other places
that did similar things now use it.
- I cleaned up some code in AnalysisConsumer, but it should probably be
simplified further now that NamedDecl is better.
- TextDiagnosticPrinter is now simplified and cleaned up a bit.
This patch is a prerequisite for #line, but does not actually provide
any #line functionality.
llvm-svn: 63098
2009-01-27 07:57:44 +00:00
Chris Lattner
c360bf2e48
rename getFullFilePos -> getFileOffset.
...
llvm-svn: 63097
2009-01-27 06:27:13 +00:00
Ted Kremenek
dd62885f40
Use string comparison rather than '=='.
...
llvm-svn: 63095
2009-01-27 05:34:28 +00:00
Chris Lattner
bf648a3a63
Fix a bug that I noticed by inspection.
...
llvm-svn: 63094
2009-01-27 05:34:03 +00:00
Chris Lattner
6d61c3e6df
make -print-stats print stats about the amount of the SLoc
...
address space we used up. Some interesting data:
For c99-intconst-1.c:
6912762 SLocEntry's allocated, 25592386B of Sloc address space used.
For cocoa.h:
26469 SLocEntry's allocated, 10278752B of Sloc address space used.
For carbon.h:
27364 SLocEntry's allocated, 12398141B of Sloc address space used.
Clearly 2G of sloc address space should be enough for anyone?!
llvm-svn: 63093
2009-01-27 05:22:43 +00:00
Chris Lattner
8d3f4a4b2f
improvements for GNU objc runtime support, patch by David Chisnall!
...
llvm-svn: 63092
2009-01-27 05:06:01 +00:00
Daniel Dunbar
d678d3d970
x86_64: Classify __m64 and __m128 "correctly".
...
- gcc appears to be classifying <1 x double> as INTEGER which is
odd. Will investigate later.
llvm-svn: 63086
2009-01-27 02:01:34 +00:00
Chris Lattner
9b415d6142
add SparcV8 asm register info support. Patch by Ben Lickly!
...
llvm-svn: 63085
2009-01-27 01:58:38 +00:00
Ted Kremenek
a3f462e49a
PathDiagnostics:
...
- Add the distinction between the 'bug type' and the 'bug description'
HTMLDiagnostics:
- Output the bug type field as HTML comments
scan-build:
- Use the bug type field instead of the bug description for the HTML table.
- Radar filing now automatically picks up the bug description in the title (addresses <rdar://problem/6265970>)
llvm-svn: 63084
2009-01-27 01:53:39 +00:00
Daniel Dunbar
0f4aa3cbb1
Implement support for coercion to wider types during ABI handling.
...
- Code quality is poor, but simple.
llvm-svn: 63083
2009-01-27 01:36:03 +00:00
Ted Kremenek
725fb43012
Have 'Analyzer Failures' files be named to reflect the category of problem.
...
llvm-svn: 63080
2009-01-27 01:19:08 +00:00
Ted Kremenek
8d178f4357
PTH: Use Token::setLiteralData() to directly store a pointer to cached spelling data in the PTH file. This removes a ton of code for looking up spellings using sourcelocations in the PTH file. This simplifies both PTH-generation and reading.
...
Performance impact for -fsyntax-only on Cocoa.h (with Cocoa.h in the PTH file):
- PTH generation time improves by 5%
- PTH reading improves by 0.3%.
llvm-svn: 63072
2009-01-27 00:01:05 +00:00
Fariborz Jahanian
d0e8e85afc
Added a FIXME.
...
llvm-svn: 63071
2009-01-26 23:49:05 +00:00
Daniel Dunbar
7a88d1fcc4
Fix definition of __builtin_ia32_vec_set_v2di and de-XFAIL
...
builtins-x86.c.
llvm-svn: 63069
2009-01-26 23:43:02 +00:00
Daniel Dunbar
fd346a3644
Pull EmitReturnBlock out of FinishFunction and catch unified return
...
case correctly.
llvm-svn: 63068
2009-01-26 23:27:52 +00:00
Fariborz Jahanian
2612e149ef
Build method-description-list for category meta-data
...
as well (for nonfragile-abi).
llvm-svn: 63062
2009-01-26 22:58:07 +00:00
Douglas Gregor
f829825d04
Some micro-optimizations for DISABLE_SMART_POINTERS:
...
- When it's safe, ActionResult uses the low bit of the pointer for
the "invalid" flag rather than a separate "bool" value. This keeps
GCC from generating some truly awful code, for a > 3x speedup in the
result-passing microbenchmark.
- When DISABLE_SMART_POINTERS is defined, store an ActionResult
within ASTOwningResult rather than an ASTOwningPtr. Brings the
performance benefits of the above to smart pointers with
DISABLE_SMART_POINTERS defined.
Sadly, these micro-benchmark performance improvements don't seem to
make much of a difference on Cocoa.h right now. However, they're
harmless and might help with future optimizations.
llvm-svn: 63061
2009-01-26 22:44:13 +00:00
Chris Lattner
9240b3eccb
rename getSpelledCharacterAt to getSpellingOfSingleCharacterNumericConstant,
...
optimize it to use the LiteralData when possible.
llvm-svn: 63060
2009-01-26 22:36:52 +00:00
Chris Lattner
d381721810
Fix a bug I introduced in my changes, which caused MeasureTokenLength
...
to crash when given an instantiation location. Thanks to Fariborz for
the testcase.
llvm-svn: 63057
2009-01-26 22:24:27 +00:00
Sebastian Redl
b44ab5f25d
Add support for member pointers to const_cast.
...
llvm-svn: 63055
2009-01-26 22:19:12 +00:00
Ted Kremenek
327d00cd45
Silence warning.
...
llvm-svn: 63054
2009-01-26 22:16:12 +00:00
Ted Kremenek
2483a6126f
Add version number to PTH files.
...
llvm-svn: 63052
2009-01-26 22:15:00 +00:00
Ted Kremenek
978b5becea
Add version number checking to PTH files.
...
llvm-svn: 63047
2009-01-26 21:50:21 +00:00
Ted Kremenek
eb8c8fbd63
Embed the offset of the PTH table inside the prologue of the PTH file. This will help improve gradual versioning of PTH files instead of relying that the PTH table is at a fixed offset.
...
llvm-svn: 63045
2009-01-26 21:43:14 +00:00
Fariborz Jahanian
99113fd577
Method decription meta-data and its setting in class_ro_t
...
meta-data.
llvm-svn: 63043
2009-01-26 21:38:32 +00:00
Daniel Dunbar
94a6f25738
Add Ignore ABIArgInfo kind, for handling void & empty structures.
...
llvm-svn: 63039
2009-01-26 21:26:08 +00:00
Daniel Dunbar
336dbba387
Skip emission of final return block if possible (e.g., functions with
...
a unified return).
llvm-svn: 63038
2009-01-26 21:25:20 +00:00
Chris Lattner
357b57d749
remove my hacks that aggressively threw away multiple
...
instantiation history in an effort to speed up c99-intconst-1.c.
Now that multiple nested instantiations are allowed, we just
make them and don't pay the cost of lookups. With the other
changes that went in before this, reverting this is actually
a speedup for c99-intconst-1.c, speeding it up from 1.96s to 1.80s,
and preserves much better loc info.
llvm-svn: 63036
2009-01-26 20:24:53 +00:00
Chris Lattner
7e20927756
allow _Pragmas formed from #defines to keep their full instantiation
...
history
llvm-svn: 63035
2009-01-26 20:15:46 +00:00
Chris Lattner
2d86c700bf
now that everything properly handles multiply instantiated
...
source locations, allow creation of them. We can now say that
a token was instantiated here, then here, then here.
llvm-svn: 63034
2009-01-26 20:08:26 +00:00
Chris Lattner
659ac5f087
make getInstantiationLoc and getSpellingLoc handle multiply instantiated
...
locations, and move the slow case out of line. No perf change on cocoa.h
llvm-svn: 63033
2009-01-26 20:04:19 +00:00
Sebastian Redl
a7bc8473a3
Remove an implemented FIXME and extend test cases. Follow-up on Doug's review.
...
llvm-svn: 63032
2009-01-26 19:54:48 +00:00
Sebastian Redl
54cb4c88e1
Correct size assumption; fixes a crash on amd64.
...
llvm-svn: 63031
2009-01-26 19:54:12 +00:00
Chris Lattner
31af4e08d1
fix a negated conditional in getDecomposedInstantiationLocSlowCase,
...
which I think is rdar://6527005, and make getDecomposedSpellingLocSlowCase
handle nested spelling locations.
llvm-svn: 63030
2009-01-26 19:41:58 +00:00
Chris Lattner
9892ea2fbb
minor speedups/cleanups for -E mode.
...
llvm-svn: 63029
2009-01-26 19:33:54 +00:00
Chris Lattner
5a7971e0c3
This change refactors some of the low-level lexer interfaces a bit.
...
Token now has a class of kinds for "literals", which include
numeric constants, strings, etc. These tokens can optionally have
a pointer to the start of the token in the lexer buffer. This
makes it faster to get spelling and do other gymnastics, because we
don't have to go through source locations.
This change is performance neutral, but will make other changes
more feasible down the road.
llvm-svn: 63028
2009-01-26 19:29:26 +00:00
Daniel Dunbar
827c763051
ABITestGen: Add generation of vector types.
...
llvm-svn: 63024
2009-01-26 19:05:20 +00:00
Fariborz Jahanian
0c8d060715
Meta-data for nonfragile-abi's categories
...
llvm-svn: 63020
2009-01-26 18:32:24 +00:00
Chris Lattner
cde6e757cf
make sure we have a definition of uintptr_t.
...
llvm-svn: 63019
2009-01-26 18:21:04 +00:00
Steve Naroff
8f93bd5936
Many updates to Windows project files.
...
llvm-svn: 63018
2009-01-26 18:09:40 +00:00
Daniel Dunbar
02fe821021
Comment fix.
...
llvm-svn: 63016
2009-01-26 18:02:34 +00:00
Daniel Dunbar
a7ff032643
ccc: -o should not be automatically forwarded to generic gcc tools.
...
llvm-svn: 63015
2009-01-26 18:00:14 +00:00
Daniel Dunbar
f3a06113c7
ccc: Recognize -emit-llvm [-S].
...
- Unlike llvm-gcc, this doesn't yet treat -emit-llvm output as a
linker input.
llvm-svn: 63014
2009-01-26 17:09:15 +00:00
Chris Lattner
b5fba6f8d8
start plumbing together the line table information. So far we just
...
unique the Filenames in #line directives, assigning them UIDs.
llvm-svn: 63010
2009-01-26 07:57:50 +00:00
Chris Lattner
43a85b1e4c
Lazily paging in file contents is a big win for PTH, strip out the old
...
testing code.
llvm-svn: 63006
2009-01-26 07:37:49 +00:00
Chris Lattner
273fc663df
Bitmangle file characteristic bits into the low bits of
...
the content cache pointer. This saves 105876 bytes on
cocoa.h because it shrinks the SLocEntry union, which
we have a big array of. It would be nice to use
PointerIntPair here, but we can't because it is in a
union.
llvm-svn: 63004
2009-01-26 06:49:09 +00:00
Chris Lattner
76e689636b
add parsing and constraint enforcement for GNU line marker directives.
...
llvm-svn: 63003
2009-01-26 06:19:46 +00:00
Ted Kremenek
e9193283c6
Use tag classes instead of typedefs for GDM entries 'ConstNotEq' and 'ConstEq'. This avoids collisions in the GDM.
...
llvm-svn: 63002
2009-01-26 06:04:53 +00:00
Chris Lattner
5a8057bc18
add another sanity test.
...
llvm-svn: 63001
2009-01-26 05:44:13 +00:00
Chris Lattner
38d7fd252a
a few minor cleanups
...
llvm-svn: 63000
2009-01-26 05:30:54 +00:00
Chris Lattner
100c65e810
parse and enforce required constraints on #line directives. Right now
...
we just discard them.
llvm-svn: 62999
2009-01-26 05:29:08 +00:00
Chris Lattner
d6d0619fb4
added to wrong directory
...
llvm-svn: 62997
2009-01-26 04:36:31 +00:00
Chris Lattner
5fe12615c2
an insane macro testcase.
...
llvm-svn: 62996
2009-01-26 04:36:10 +00:00
Chris Lattner
ad13cf4e7a
eagerly resolve the spelling locations of macro argument preexpansions.
...
This reduces fsyntax-only time on c99-intconst-1.c from 2.43s down to
2.01s (20%), reducing the number of fileid lookups from 2529040 linear
and 64771121 binary to 5625902 linear and 4151182 binary.
This knocks getFileID down to only 4.6% of compile time on this testcase.
At this point, malloc/free is over 35% of compile time, primarily allocating
MacroArgs objects and their argument preexpansion vectors.
I don't feel like malloc avoiding right now, so I'm just going to call
this good.
llvm-svn: 62994
2009-01-26 04:33:10 +00:00
Chris Lattner
5a5d67101b
Eagerly resolve the spelling location of the tokens in a definition
...
of a macro. Since these tokens may themselves be from macro
expansions, we need to resolve down to the spelling loc when the
macro ends up being instantiated. Instead of resolving this for
each token expanded from the macro definition, just do it once when
the macro is defined. This speeds up clang on c99-intconst-1.c from
2.66s to 2.43s (9.5%), reducing the FileID lookups from 407244 linear and
114175649 binary to 2529040 linear and 64771121 binary.
llvm-svn: 62993
2009-01-26 04:06:48 +00:00
Chris Lattner
dd9babc79a
Only resolve a macro's instantiation loc once per macro, instead of once
...
per token lexed from it. This speeds up clang on c99-intconst-1.c from
the GCC testsuite from 3.64s to 2.66s (36%). This reduces the number of
binary search FileID lookups from 251570522 to 114175649 on this testcase.
llvm-svn: 62992
2009-01-26 03:46:22 +00:00
Eli Friedman
16c88df1a0
PR3269: create an empty InitListExpr as a child for the
...
CompoundLiteralExpr so that there aren't any null pointers in the AST.
llvm-svn: 62981
2009-01-26 01:33:06 +00:00
Chris Lattner
4fa23625ab
Check in the long promised SourceLocation rewrite. This lays the
...
ground work for implementing #line, and fixes the "out of macro ID's"
problem.
There is nothing particularly tricky about the code, other than the
very performance sensitive SourceManager::getFileID() method.
llvm-svn: 62978
2009-01-26 00:43:02 +00:00
Sebastian Redl
cf8e1fa58e
Update C++ status table with new member pointer conversion capabilities.
...
llvm-svn: 62977
2009-01-26 00:11:25 +00:00
Chris Lattner
3138e81621
improve ASTContext::getDeclAlign comment, as suggested by Eli.
...
llvm-svn: 62975
2009-01-25 23:06:38 +00:00
Chris Lattner
4f765fb198
use simpler method
...
llvm-svn: 62974
2009-01-25 22:02:19 +00:00
Sebastian Redl
72b597d6b6
Implement implicit conversions for pointers-to-member.
...
llvm-svn: 62971
2009-01-25 19:43:20 +00:00
Sebastian Redl
8b2540439f
Introduce an explicit case for member pointers in CodeGenTypes. However, it simply asserts.
...
llvm-svn: 62960
2009-01-25 13:35:30 +00:00
Sebastian Redl
a865ade730
Fix compile error from r62953.
...
llvm-svn: 62959
2009-01-25 13:34:47 +00:00
Eli Friedman
8bad1c5903
One more case for Expr::isConstantInitializer; I think this covers
...
everything that we aren't intending to implement in Expr::Evaluate.
llvm-svn: 62953
2009-01-25 03:27:40 +00:00
Eli Friedman
384da27131
Enhancements to Expr::isConstantInitializer to deal with a few
...
cases it couldn't deal with before.
llvm-svn: 62952
2009-01-25 03:12:18 +00:00
Eli Friedman
7139af42ce
Rename Expr::isConstantExpr to Expr::isConstantInitializer; this more
...
accurately states what the function is trying to do and how it is
different from Expr::isEvaluatable. Also get rid of a parameter that is both
unused and inaccurate.
llvm-svn: 62951
2009-01-25 02:32:41 +00:00
Eli Friedman
cf2b7ba4a7
Get rid of some code that should be unnecessary.
...
llvm-svn: 62950
2009-01-25 02:10:46 +00:00
Eli Friedman
c69d454d5a
Make the constant folder aware of
...
__builtin___CFStringMakeConstantString. (We get into trouble in
GenerateStaticBlockVarDecl if the constant folder isn't accurate.)
llvm-svn: 62949
2009-01-25 01:54:01 +00:00
Eli Friedman
529a99bcf4
Fix the address of a label to be properly considered and emitted as a
...
constant.
llvm-svn: 62948
2009-01-25 01:21:06 +00:00
Eli Friedman
8b7c52658b
Fix for PR2100: merge types for variables.
...
llvm-svn: 62947
2009-01-24 23:49:55 +00:00
Eli Friedman
588395702f
Correct test; sorry for any inconvenience.
...
llvm-svn: 62946
2009-01-24 23:44:26 +00:00
Fariborz Jahanian
a887e63434
Compute instaceStart/instanceSize fields of the class_ro_t meta-data
...
for objc2's non-fragile abi.
llvm-svn: 62945
2009-01-24 23:43:01 +00:00
Sebastian Redl
c6d52f5dfb
Make tentative parsing of pointer-to-member decls work, and fix other stuff pointed out by Doug.
...
llvm-svn: 62944
2009-01-24 23:29:36 +00:00
Eli Friedman
52cc016f21
PR3062: statement expressions should be illegal at file scope. I don't
...
think this has any significant effects at the moment, but it could
matter if we start constant-folding statement expressions like gcc does.
llvm-svn: 62943
2009-01-24 23:09:00 +00:00
Eli Friedman
8549e5dcc8
Fix for PR2910: implement CodeGen for non-constant offsetof.
...
Note that there are still other issues in this area; see PR3396.
llvm-svn: 62942
2009-01-24 22:38:55 +00:00
Eli Friedman
2aa38fea35
Refactor sizeof handling to use constant folding logic for constant
...
sizeof expressions.
llvm-svn: 62941
2009-01-24 22:19:05 +00:00
Chris Lattner
6806131c6b
add initial support for the gcc "alignof(decl) is the alignment of the decl
...
not the type" semantics. This can definitely be improved, but is better than
what we had.
llvm-svn: 62939
2009-01-24 21:53:27 +00:00
Sebastian Redl
887ce84b2b
Undo accidental disabling of smart pointers.
...
llvm-svn: 62937
2009-01-24 21:36:33 +00:00
Chris Lattner
5eca6ada3a
Implement C99 6.5.3.4p1, rejecting sizeof(bitfield)
...
llvm-svn: 62936
2009-01-24 21:29:22 +00:00
Fariborz Jahanian
4723fb70a9
Patch to build class meta-data for each implementation
...
of class in objc2's nonfragile abi.
llvm-svn: 62935
2009-01-24 21:21:53 +00:00
Sebastian Redl
9ed6efdd75
Add support for declaring pointers to members.
...
Add serialization support for ReferenceType.
llvm-svn: 62934
2009-01-24 21:16:55 +00:00
Chris Lattner
04964bbebe
remove a bunch of alignment handling code out of CGExprScalar, since
...
alignment must always be a constant. Just let the constant folder
do it.
llvm-svn: 62933
2009-01-24 21:09:45 +00:00
Chris Lattner
24aeeab05c
Improve handling of alignof. alignof(VLA) now works properly for example.
...
llvm-svn: 62932
2009-01-24 21:09:06 +00:00
Chris Lattner
7bf46469f3
fix some const-correctness issues.
...
llvm-svn: 62931
2009-01-24 21:08:33 +00:00
Chris Lattner
096d3ecb51
remove dead code.
...
llvm-svn: 62930
2009-01-24 20:24:49 +00:00
Fariborz Jahanian
9e3ad5220d
This patch builds the meta-class object for each
...
implemented class in objc2's nonfrigile abi.
llvm-svn: 62929
2009-01-24 20:21:50 +00:00
Chris Lattner
8dff017695
Fix PR3386 by handling GCC's rules for alignof, which are substantially
...
different than those for sizeof. Reject alignof(bitfield) like gcc does.
llvm-svn: 62928
2009-01-24 20:17:12 +00:00
Chris Lattner
619393762b
fix a fixme, don't leak the expr on error.
...
llvm-svn: 62927
2009-01-24 19:49:13 +00:00
Chris Lattner
b1355b1545
minor formatting changes, no functionality change.
...
llvm-svn: 62926
2009-01-24 19:46:37 +00:00
Daniel Dunbar
134a02586e
Fix invalid evaluation of _Complex float (real & imaginary parts had
...
mismatched semantics).
- Enforce this in APValue.
llvm-svn: 62924
2009-01-24 19:08:01 +00:00
Anders Carlsson
a0b892113a
Handle the 'e' constraint. Fixes PR3385
...
llvm-svn: 62923
2009-01-24 18:03:09 +00:00
Anders Carlsson
b66a312f93
Ignore parens when determining if an expr is a string literal. Fixes PR3382.
...
llvm-svn: 62922
2009-01-24 17:47:50 +00:00
Daniel Dunbar
ed4361ecbb
Add simple make based harness for running ABI tests.
...
llvm-svn: 62916
2009-01-24 08:43:22 +00:00
Daniel Dunbar
3334a44501
Start filling in x86_64 ABI implementation.
...
- No functionality change, moved behind -use-x86_64-abi option until
it becomes non-experimental.
llvm-svn: 62915
2009-01-24 08:32:22 +00:00
Ted Kremenek
b239341ec4
Updated checker build.
...
llvm-svn: 62914
2009-01-24 08:11:59 +00:00
Ted Kremenek
b3fcaa7a77
Fix crash ElementRegion::getRValueType() when the RvalueType of the ArrayRegion is a typedef and not (directly) a pointer.
...
llvm-svn: 62909
2009-01-24 06:11:36 +00:00
Ted Kremenek
f08ac278ed
More hacking on static analyzer diagnostics. When emitting summary diagnostics the code paths for diagnostics involving paths or single locations are now unified. This patch also constifies many arguments/methods that are touched by this logic, leading to a nice overall code cleanup.
...
llvm-svn: 62903
2009-01-24 00:55:43 +00:00
Fariborz Jahanian
71394045e4
Some very early work for new objc's
...
meta-data generation.
llvm-svn: 62894
2009-01-23 23:53:38 +00:00
Douglas Gregor
18d30c2342
Fix a small regression in warning about template type parameter redeclarations.
...
llvm-svn: 62886
2009-01-23 22:28:29 +00:00
Ted Kremenek
864ead2076
Output summary diagnostic for each bug report.
...
llvm-svn: 62885
2009-01-23 22:22:49 +00:00
Douglas Gregor
7a95b08fce
More APSInt appeasement
...
llvm-svn: 62884
2009-01-23 22:22:29 +00:00
Douglas Gregor
b6b9961fdd
Make sure that all NamedDecls have an identifier namespace.
...
Make sure that we know a call is invalid if we dropped arguments.
llvm-svn: 62882
2009-01-23 21:30:56 +00:00
Douglas Gregor
51650d380b
Hopefully the last of the APSInt signedness issues with initializers. Fixes PR clang/3378
...
llvm-svn: 62876
2009-01-23 21:04:18 +00:00
Ted Kremenek
ec28391084
Added clang option '--analyzer-display-progress' to indicate that the analyzer should output 'ANALYZE:' messages to display its progress on a source file.
...
llvm-svn: 62875
2009-01-23 20:52:26 +00:00
Ted Kremenek
ea06ec1cad
Added virtual method DiagnosticClient::IncludeInDiagnosticCounts(). This is used by Diagnostics to determine if a diagnostic sent to a given DiagnosticClient should be included in the count of diagnostics. The default implementation of this method returns 'true'.
...
Implemented DiagCollector::IncludeInDiagnosticCounts() to return 'false' so that the batching of diagnostics for use with BugReporter doesn't mess up the count of real diagnostics.
llvm-svn: 62873
2009-01-23 20:28:53 +00:00
Daniel Dunbar
3d5d14ea15
ccc: Finish definition of long argument translations.
...
- However, these last ones do not actually work; the issue is that
they translate to batches of options and need to be reparsed. For
now we just give an unsupported error on them.
llvm-svn: 62872
2009-01-23 20:08:16 +00:00
Ted Kremenek
099243aa9e
When using -analyzer-output-plist always output a plist file even if it contains no error reports.
...
llvm-svn: 62871
2009-01-23 20:06:20 +00:00
Daniel Dunbar
505f751451
ccc: Another batch of long argument translations.
...
- Again turned up a few which don't do anything sensible.
llvm-svn: 62870
2009-01-23 19:40:54 +00:00
Douglas Gregor
5da47ad57b
Allow subtraction of function pointer types in C, as a GNU extension. Fixes rdar://problem/6520707
...
llvm-svn: 62859
2009-01-23 19:03:35 +00:00
Douglas Gregor
583cf0ac57
Make sure all of the isUnsigned flags line up when comparing initializer values, to really really fix PR clang/3377
...
llvm-svn: 62858
2009-01-23 18:58:42 +00:00
Daniel Dunbar
42a8cd37b2
Handle pointer arithmetic on function pointers.
...
- <rdar://problem/6518844> Clang-generated bitcode crashes LLVM while compiling function pointer addition expression
llvm-svn: 62857
2009-01-23 18:51:09 +00:00
Chris Lattner
1f6c7fe6a8
This is a follow-up to r62675:
...
Refactor how the preprocessor changes a token from being an tok::identifier to a
keyword (e.g. tok::kw_for). Instead of doing this in HandleIdentifier, hoist this
common case out into the caller, so that every keyword doesn't have to go through
HandleIdentifier. This drops time in HandleIdentifier from 1.25ms to .62ms, and
speeds up clang -Eonly with PTH by about 1%.
llvm-svn: 62855
2009-01-23 18:35:48 +00:00
Chris Lattner
9db60a38e9
Preprocessor doesn't require and IdentifierInfoLookup object.
...
Patch by Axel Naumann!
llvm-svn: 62854
2009-01-23 18:00:48 +00:00
Fariborz Jahanian
7fa50496f6
Checked in an oops!
...
llvm-svn: 62853
2009-01-23 17:48:29 +00:00
Fariborz Jahanian
5a63e4cd53
Another missing LLVM type for objc2's new abi defined.
...
llvm-svn: 62852
2009-01-23 17:41:22 +00:00
Douglas Gregor
033d1257ca
Properly manage the bit-widths of APInts/APSInts in array initialization.
...
Fixes PR clang/3377
llvm-svn: 62851
2009-01-23 16:54:12 +00:00
Douglas Gregor
9aa8904a46
Handle any undeclared parameters in a K&R-style function with a
...
special action, inside function prototype scope. This avoids confusion
when we try to inject these parameters into the scope of the function
body before the function itself has been added to the surrounding
scope. Fixes <rdar://problem/6097326>.
llvm-svn: 62849
2009-01-23 16:23:13 +00:00
Zhongxing Xu
e37f9afb2e
Implement retrieval of the default value of element and field regions.
...
llvm-svn: 62847
2009-01-23 11:22:12 +00:00
Zhongxing Xu
804f26a60a
Now this comment should be resolved. See the comments for the KillSet.
...
llvm-svn: 62846
2009-01-23 10:42:17 +00:00
Zhongxing Xu
b8365bd890
Add a test case for init expr of array and struct type.
...
llvm-svn: 62845
2009-01-23 10:23:13 +00:00
Zhongxing Xu
570e088e4b
When getting the element region type, we should get the rvalue type of the super
...
region. Otherwise we would get an extra level of pointer type.
llvm-svn: 62844
2009-01-23 10:19:29 +00:00
Daniel Dunbar
8fb96605f8
ccc: Implement long options which take joined & separate forms.
...
llvm-svn: 62841
2009-01-23 08:16:41 +00:00
Daniel Dunbar
8fa972a55b
ccc: Support long ('--...') flag arguments.
...
- Curiously, a number of the current translations gcc does appear to
be useless?
llvm-svn: 62831
2009-01-23 02:00:46 +00:00
Fariborz Jahanian
0232c0569f
Define LLVM types for nonfragile abi metadata.
...
llvm-svn: 62830
2009-01-23 01:46:23 +00:00