summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/PCHReader.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix bug I introduced with assinging a temporary to a StringRef.Ted Kremenek2010-02-121-2/+2
| | | | llvm-svn: 96041
* Implementing unused function warning.Tanya Lattner2010-02-121-0/+15
| | | | llvm-svn: 95940
* Allocate 'ObjCMethodList' objects (owned by Sema) using Sema's ↵Ted Kremenek2010-02-111-2/+6
| | | | | | BumpPtrAllocator. Previously they were not getting freed. Fixes <rdar://problem/7635663>. llvm-svn: 95834
* clang -cc1: Add -fsjlj-exceptions, which requires far too much button pushing.Daniel Dunbar2010-02-101-0/+2
| | | | llvm-svn: 95785
* Implement synthesizing properties by default.Fariborz Jahanian2010-02-091-0/+2
| | | | | | | | | This is a non-fragile-abi feature only. Since it breaks existing code, it is currently placed under -fobjc-nonfragile-abi2 option for test purposes only until further notice. WIP. llvm-svn: 95685
* First stage of adding AltiVec supportJohn Thompson2010-02-051-3/+5
| | | | llvm-svn: 95335
* Add VarDecl::isThisDeclarationADefinition(), which properly encapsulates the ↵Sebastian Redl2010-01-311-3/+2
| | | | | | logic for when a variable declaration is a (possibly tentativ) definition. Add a few functions building on this, and shift C tentative definition handling over to this new functionality. This shift also kills the Sema::TentativeDefinitions map and instead simply stores all declarations in the renamed list. The correct handling for multiple tentative definitions is instead shifted to the final walk of the list. llvm-svn: 94968
* (1) Rename getClangSubversionRevision() to getClangRevision(), andTed Kremenek2010-01-221-8/+1
| | | | | | | | | | | | | | | | | have it return a StringRef instead of an integer (to be more VCS agnostic). (2) Add getClangFullRepositoryVersion(), which contains an amalgamation of the repository name and the revision. (3) Change PCH to only emit the string returned by getClangFullRepositoryVersion() instead of also emitting the value of getClangSubversionRevision() (which has been removed). This is functionally equivalent. More cleanup to version string generation pending... llvm-svn: 94231
* Rename pch::SVN_BRANCH_REVISION to pch::VERSION_CONTROL_BRANCH_REVISION.Ted Kremenek2010-01-221-1/+1
| | | | llvm-svn: 94214
* Rename getClangSubversionPath() -> getClangRepositoryPath() and have it ↵Ted Kremenek2010-01-221-3/+3
| | | | | | return a StringRef. llvm-svn: 94213
* Improve source-location information for builtin TypeLocs, from EneaDouglas Gregor2010-01-181-1/+7
| | | | | | Zaffanella (with a couple of my tweaks). llvm-svn: 93733
* Encoding calling conventions in the type system, from Charles Davis!Douglas Gregor2010-01-181-4/+6
| | | | llvm-svn: 93726
* Add type source information for both kinds of typeof types.John McCall2010-01-131-2/+7
| | | | | | Patch by Enea Zaffanella. llvm-svn: 93344
* Teach Preprocessor::macro_begin/macro_end to lazily load all macroDouglas Gregor2010-01-041-1/+61
| | | | | | | | definitions from a precompiled header. This ensures that code-completion with macro names behaves the same with or without precompiled headers. llvm-svn: 92497
* Get rid of FixedWidthIntType, as suggested by Chris and Eli.Anders Carlsson2009-12-291-8/+0
| | | | llvm-svn: 92246
* Serialize the NoReturn bit on FunctionTypes for precompiled headersDouglas Gregor2009-12-221-4/+5
| | | | llvm-svn: 91911
* Un-namespace-qualify llvm_unreachable. It's a macro, so the qualification gaveJeffrey Yasskin2009-12-121-1/+1
| | | | | | no extra safety anyway. llvm-svn: 91207
* Implement runtime checks for undefined behavior. WIP.Mike Stump2009-12-121-0/+3
| | | | | | | | | | | | | This implements a new flag -fcatch-undefined-behavior. The flag turns on additional runtime checks for: T a[I]; a[i] abort when i < 0 or i >= I. Future stuff includes shifts by >= bitwidth amounts. llvm-svn: 91198
* DeclaratorInfo -> TypeSourceInfo. Makes an effort to rename associated ↵John McCall2009-12-071-5/+5
| | | | | | | | | | | | | | | | | | | | | variables, but the results are imperfect. For posterity, I did: cat <<EOF > $cmdfile s/DeclaratorInfo/TypeSourceInfo/g s/DInfo/TInfo/g s/TypeTypeSourceInfo/TypeSourceInfo/g s/SourceTypeSourceInfo/TypeSourceInfo/g EOF find lib -name '*.cpp' -not -path 'lib/Parse/*' -exec sed -i '' -f $cmdfile '{}' \; find lib -name '*.h' -exec sed -i '' -f $cmdfile '{}' \; find include -name '*.h' -not -path 'include/clang/Parse/*' -not -path 'include/clang/Basic/*' -exec sed -i '' -f $cmdfile '{}' \; llvm-svn: 90743
* Fix "using typename" and the instantiation of non-dependent using declarations.John McCall2009-12-041-0/+7
| | | | llvm-svn: 90614
* Switch PCHReader::getOriginalSourceFile to use proper diagnostics.Daniel Dunbar2009-12-031-8/+7
| | | | llvm-svn: 90434
* Add DeclarationName support for C++0x operator literals. They should now work asAlexis Hunt2009-11-291-0/+4
| | | | | | | function names outside of templates - they'll probably cause some damage there as they're largely untested. llvm-svn: 90064
* Remove VISIBILITY_HIDDEN from anonymous namespaces in libFrontend.Benjamin Kramer2009-11-281-6/+5
| | | | llvm-svn: 90033
* Allow user re-definition of SEL as well as accessing its fields.Fariborz Jahanian2009-11-251-1/+1
| | | | | | This fixes pr5611. llvm-svn: 89895
* This patch implements objective-c's 'SEL' type as a built-inFariborz Jahanian2009-11-211-0/+7
| | | | | | | | | | | | | | | | | | type and fixes a long-standing code gen. crash reported in at least two PRs and a radar. (radar 7405040 and pr5025). There are couple of remaining issues that I would like for Ted. and Doug to look at: Ted, please look at failure in Analysis/MissingDealloc.m. I have temporarily added an expected-warning to make the test pass. This tests has a declaration of 'SEL' type which may not co-exist with the new changes. Doug, please look at a FIXME in PCHWriter.cpp/PCHReader.cpp. I think the changes which I have ifdef'ed out are correct. They need be considered for in a few Indexer/PCH test cases. llvm-svn: 89561
* Use llvm::sys::Path to check isAbsolute, instead of hard coding. Also, ↵Daniel Dunbar2009-11-181-3/+2
| | | | | | remove random FIXME (?). llvm-svn: 89229
* Remove local splitLines reimplementation.Daniel Dunbar2009-11-131-29/+7
| | | | llvm-svn: 88661
* Tweak PCH -include handling to make sure it matches the name as would be presentDaniel Dunbar2009-11-111-4/+6
| | | | | | in the predefines buffer. llvm-svn: 86903
* Redo how PCH handles its implicit include. Instead of treating this specially inDaniel Dunbar2009-11-111-4/+23
| | | | | | | | | | | | | | | the front-end (as far as the preprocessor goes), follow the usual logic of inserting the (original include path) name into the predefines buffer. This pushes the responsibility for handling this to PCH instead of the front-end. In PCH this requires being a little more clever when we diff the predefines buffers. Neither of these solutions are particularly great, I think what we eventually should do is something like gcc where we insert a special marker to indicate the PCH file, but then run the preprocessor as usual. This would be clearer and would allow us to drop the overly clever predefines handling. llvm-svn: 86806
* More StringRef simplification to PCHValidator::ReadPredefinesBuffer.Daniel Dunbar2009-11-111-27/+22
| | | | llvm-svn: 86805
* Rewrite splitLines using StringRef; this is much simpler, and also now avoidsDaniel Dunbar2009-11-111-26/+26
| | | | | | | | | | | | | tons of std::string trashing. I plan to move this and other fun string munging utilities to a StringRefExtras.h at some point if no one beats me to it. On a synthetic benchmark on x86_64, llvm-gcc actually generates code thats 10% faster using the StringRef version. gcc miscompiles the synthetic benchmark, which I'm crossing my fingers and hoping won't happen here. clang compiles the sythetic benchmark correctly (wootness), but the StringRef version is slower. Silly clang. llvm-svn: 86799
* Introduce a new representation for template templateDouglas Gregor2009-11-111-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | parameters. Rather than storing them as either declarations (for the non-dependent case) or expressions (for the dependent case), we now (always) store them as TemplateNames. The primary change here is to add a new kind of TemplateArgument, which stores a TemplateName. However, making that change ripples to every switch on a TemplateArgument's kind, also affecting TemplateArgumentLocInfo/TemplateArgumentLoc, default template arguments for template template parameters, type-checking of template template arguments, etc. This change is light on testing. It should fix several pre-existing problems with template template parameters, such as: - the inability to use dependent template names as template template arguments - template template parameter default arguments cannot be instantiation However, there are enough pieces missing that more implementation is required before we can adequately test template template parameters. llvm-svn: 86777
* StringRefify some PCH interfaces.Daniel Dunbar2009-11-111-28/+22
| | | | llvm-svn: 86775
* Replace startsWith functions with StringRef.Daniel Dunbar2009-11-111-25/+4
| | | | llvm-svn: 86774
* Switch to getFileOrSTDIN().Daniel Dunbar2009-11-101-4/+1
| | | | llvm-svn: 86632
* Adding -fshort-wchar option.John Thompson2009-11-051-0/+2
| | | | llvm-svn: 86167
* Track source information for template arguments and template specializationJohn McCall2009-10-291-1/+27
| | | | | | | types. Preserve it through template instantiation. Preserve it through PCH, although TSTs themselves aren't serializable, so that's pretty much meaningless. llvm-svn: 85500
* Add comment.Ted Kremenek2009-10-231-0/+3
| | | | llvm-svn: 84930
* Fix integer overflow in PCHReader when reading the length of anTed Kremenek2009-10-231-1/+1
| | | | | | | | | | | | | | | | | identifier. This caused a crash when reading PCH files that contained long identifier names. The issue is that 'StrLenPtr' was previously a 'const char *', meaning the byte loaded from it would be interpretted as a signed integer. If the topmost bit was set, conversion to 'unsigned' would extend that bit, causing an overflow. The solution is to make 'StrLenPtr' an 'unsigned char *', always treating the value as an unsigned integer. This fixes: <rdar://problem/7328900> llvm-svn: 84925
* FunctionTypeLocs don't necessarily provide ParmVarDecls, so don't crash ifJohn McCall2009-10-231-1/+1
| | | | | | one was PCH'ed without any. llvm-svn: 84920
* When building types from declarators, instead of building two types (one forJohn McCall2009-10-221-14/+9
| | | | | | | | | | | | | | | | | | | | | the DeclaratorInfo, one for semantic analysis), just build a single type whose canonical type will reflect the semantic analysis (assuming the type is well-formed, of course). To make that work, make a few changes to the type system: * allow the nominal pointee type of a reference type to be a (possibly sugared) reference type. Also, preserve the original spelling of the reference type. Both of these can be ignored on canonical reference types. * Remove ObjCProtocolListType and preserve the associated source information on the various ObjC TypeLocs. Preserve the spelling of protocol lists except in the canonical form. * Preserve some level of source type structure on parameter types, but canonicalize on the canonical function type. This is still a WIP. Drops code size, makes strides towards accurate source location representation, slight (~1.7%) progression on Cocoa.h because of complexity drop. llvm-svn: 84907
* Extend out the block descriptor structure for debug information withMike Stump2009-10-221-0/+3
| | | | | | the copy/dispose helpers as appropriate. llvm-svn: 84817
* Refine the type of the first parameter to block invoke functions.Mike Stump2009-10-201-0/+2
| | | | | | | WIP. I have yet to find the magic incantation to get the structure type to be defined. If someone has a pointer, love to hear it. llvm-svn: 84590
* Move clients to use IdentifierInfo::getNameStart() instead of getName()Daniel Dunbar2009-10-181-1/+1
| | | | llvm-svn: 84436
* When performing template-substitution into a type, don't just replace theJohn McCall2009-10-181-0/+13
| | | | | | | | | | | | | | | | | | TemplateTypeParmType with the substituted type directly; instead, replace it with a SubstTemplateTypeParmType which will note that the type was originally written as a template type parameter. This makes it reasonable to preserve source information even through template substitution. Also define the new SubstTemplateTypeParmType class, obviously. For consistency with current behavior, we stringize these types as if they were the underlying type. I'm not sure this is the right thing to do. At any rate, I paled at adding yet another clause to the don't-desugar 'if' statement, so I extracted a function to do it. The new function also does The Right Thing more often, I think: e.g. if we have a chain of typedefs leading to a vector type, we will now desugar all but the last one. llvm-svn: 84412
* Clone the full Type hierarchy into the TypeLoc hierarchy. NormalizeJohn McCall2009-10-181-36/+111
| | | | | | | | | | | | | TypeLoc class names to be $(Type classname)Loc. Rewrite the visitor. Provide skeleton implementations for all the new TypeLocs. Handle all cases in PCH. Handle a few more cases when inserting location information in SemaType. It should be extremely straightforward to add new location information to existing TypeLoc objects now. llvm-svn: 84386
* Switch to llvm::HashString.Daniel Dunbar2009-10-171-3/+4
| | | | llvm-svn: 84375
* Merge the "types" and "declarations" blocks in the precompiled headerDouglas Gregor2009-10-171-15/+9
| | | | | | | | | | | | | | | format, so that we don't end up with multiple declaration and types blocks. Also, fix a few obscure bugs with PCH loading and generation: - If the DeclIDs DenseMap reallocates while we are writing a declaration (due to recursively writing other declarations), we could end up writing a bad ID to ExternalDefinitions. - When loading an ArrayLoc (part of DeclaratorInfo), we need to set the size expression to NULL if no size expression was provided. PCH -> AST rewriting is still partly broken, unfortunately. llvm-svn: 84293
* Factor out routines to encode/decode DeclaratorInfos and move them into theJohn McCall2009-10-161-0/+80
| | | | | | core PCH reader/writer implementation files. llvm-svn: 84278
* Add support for a chain of stat caches in the FileManager, rather thanDouglas Gregor2009-10-161-12/+14
| | | | | | | | | only supporting a single stat cache. The immediate benefit of this change is that we can now generate a PCH/AST file when including another PCH file; in the future, the chain of stat caches will likely be useful with multiple levels of PCH files. llvm-svn: 84263
OpenPOWER on IntegriCloud