summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/PCHWriter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Rename TypenameType to DependentNameType in anticipation of someDouglas Gregor2010-03-311-1/+1
| | | | | | refactoring work in this area. llvm-svn: 100019
* Remember the regparm attribute in FunctionType::ExtInfo.Rafael Espindola2010-03-301-0/+1
| | | | | | Fixes PR3782. llvm-svn: 99940
* the big refactoring bits of PR3782.Rafael Espindola2010-03-301-2/+3
| | | | | | | | This introduces FunctionType::ExtInfo to hold the calling convention and the noreturn attribute. The next patch will extend it to include the regparm attribute and fix the bug. llvm-svn: 99920
* Keep track of the size/modification time of each file source-locationDouglas Gregor2010-03-211-0/+7
| | | | | | | entry in a precompiled header, so that we can detect modified files even when we miss in the stat cache. llvm-svn: 99149
* Remove the capture, serialization, and deserialization of commentDouglas Gregor2010-03-191-20/+0
| | | | | | | | ranges as part of the ASTContext. This code is not and was never used, but contributes ~250k to the size of the Cocoa.h precompiled header. llvm-svn: 99007
* Implement serialization and lazy deserialization of the preprocessingDouglas Gregor2010-03-191-3/+86
| | | | | | | | | | | | | | | | | | | | | | | | record (which includes all macro instantiations and definitions). As with all lay deserialization, this introduces a new external source (here, an external preprocessing record source) that loads all of the preprocessed entities prior to iterating over the entities. The preprocessing record is an optional part of the precompiled header that is disabled by default (enabled with -detailed-preprocessing-record). When the preprocessor given to the PCH writer has a preprocessing record, that record is written into the PCH file. When the PCH reader is given a PCH file that contains a preprocessing record, it will be lazily loaded (which, effectively, implicitly adds -detailed-preprocessing-record). This is the first case where we have sections of the precompiled header that are added/removed based on a compilation flag, which is unfortunate. However, this data consumes ~550k in the PCH file for Cocoa.h (out of ~9.9MB), and there is a non-trivial cost to gathering this detailed preprocessing information, so it's too expensive to turn on by default. In the future, we should investigate a better encoding of this information. llvm-svn: 99002
* Fix header-search problems with precompiled headers, where theDouglas Gregor2010-03-161-15/+15
| | | | | | | | | | | | | | | | | | | | | | presence or absence of header map arguments when using the precompiled header would cause Clang to get confused about which headers had already been included/imported, along with their controlling macros. The fundamental problem is that the serialization of the header search information was relying on the UIDs of FileEntry objects at PCH generation time and PCH load time to be equivalent, which effectively means that we had to probe the same files in the same order. Differing header map arguments caused an extra FileEntry lookup, but it's easy to imagine other minor command-line arguments triggering this problem. Header-search information is now encoded along with the source-location entry for a file, so that we register information about a file's properties as a header at the same time we create the FileEntry for that file. Fixes <rdar://problem/7743243>. llvm-svn: 98636
* Use SourceManager's Diagnostic object for all file-reading errors,Douglas Gregor2010-03-161-1/+2
| | | | | | simplifying the SourceManager interfaces somewhat. llvm-svn: 98598
* Path related cleanup. Remove unnecessary variables.Kovarththanan Rajaratnam2010-03-141-6/+2
| | | | llvm-svn: 98473
* Use makeAbsolute()Kovarththanan Rajaratnam2010-03-141-25/+17
| | | | llvm-svn: 98472
* Create a new InjectedClassNameType to represent bare-word references to the John McCall2010-03-101-0/+9
| | | | | | | | | | | | | injected class name of a class template or class template partial specialization. This is a non-canonical type; the canonical type is still a template specialization type. This becomes the TypeForDecl of the pattern declaration, which cleans up some amount of code (and complicates some other parts, but whatever). Fixes PR6326 and probably a few others, primarily by re-establishing a few invariants about TypeLoc sizes. llvm-svn: 98134
* Add support for the weakref attribute. We still produce "alias weak" as ↵Rafael Espindola2010-02-231-1/+1
| | | | | | llvm-gcc does, but are more strict on what uses of weakref we accept. llvm-svn: 96992
* Sort cases.Ted Kremenek2010-02-181-2/+2
| | | | llvm-svn: 96536
* Add 'ns_returns_not_retained' and 'cf_returns_not_retained' attributes toTed Kremenek2010-02-181-2/+4
| | | | | | | match 'ns_returns_retained' and 'cf_returns_retained' respectively. These are not yet hooked up to the static analyzer. llvm-svn: 96535
* Add IBAction attribute to keep the IBOutlet attribute company.Ted Kremenek2010-02-171-0/+1
| | | | llvm-svn: 96447
* Implementing unused function warning.Tanya Lattner2010-02-121-0/+10
| | | | llvm-svn: 95940
* clang -cc1: Add -fsjlj-exceptions, which requires far too much button pushing.Daniel Dunbar2010-02-101-0/+1
| | | | llvm-svn: 95785
* Implement synthesizing properties by default.Fariborz Jahanian2010-02-091-1/+4
| | | | | | | | | 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
* Roll r95513 back in.Sam Weinig2010-02-071-0/+9
| | | | llvm-svn: 95515
* Roll out r95513, it seems to have broken self hosting.Sam Weinig2010-02-071-9/+0
| | | | llvm-svn: 95514
* Add PCH support for CXXBoolLiteralExpr and CXXNullPtrLiteralExpr.Sam Weinig2010-02-071-0/+9
| | | | llvm-svn: 95513
* First stage of adding AltiVec supportJohn Thompson2010-02-051-0/+2
| | | | llvm-svn: 95335
* Add VarDecl::isThisDeclarationADefinition(), which properly encapsulates the ↵Sebastian Redl2010-01-311-5/+3
| | | | | | 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/+7
| | | | | | | | | | | | | | | | | 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-3/+3
| | | | llvm-svn: 94214
* Rename getClangSubversionPath() -> getClangRepositoryPath() and have it ↵Ted Kremenek2010-01-221-1/+1
| | | | | | return a StringRef. llvm-svn: 94213
* Use the llvm coding convention for indentation for switch.Mike Stump2010-01-201-1/+1
| | | | llvm-svn: 93966
* 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-0/+2
| | | | 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
* Generalize target weirdness handling having proper layering in mind:Anton Korobeynikov2010-01-101-1/+4
| | | | | | | | | 1. Add helper class for sema checks for target attributes 2. Add helper class for codegen of target attributes As a proof-of-concept - implement msp430's 'interrupt' attribute. llvm-svn: 93118
* Teach Preprocessor::macro_begin/macro_end to lazily load all macroDouglas Gregor2010-01-041-2/+0
| | | | | | | | 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-10/+0
| | | | llvm-svn: 92246
* Serialize the NoReturn bit on FunctionTypes for precompiled headersDouglas Gregor2009-12-221-0/+1
| | | | llvm-svn: 91911
* Fix a few MSVC warnings.Daniel Dunbar2009-12-181-4/+4
| | | | llvm-svn: 91714
* Implement runtime checks for undefined behavior. WIP.Mike Stump2009-12-121-0/+1
| | | | | | | | | | | | | 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/+11
| | | | llvm-svn: 90614
* 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-5/+4
| | | | 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
* Parse C++ member check attributes - base_check, hiding, and override.Alexis Hunt2009-11-251-0/+5
| | | | | | The attributes are currently ignored. llvm-svn: 89837
* This patch implements objective-c's 'SEL' type as a built-inFariborz Jahanian2009-11-211-0/+5
| | | | | | | | | | | | | | | | | | 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
* Added rudimentary C++0x attribute support.Alexis Hunt2009-11-211-0/+1
| | | | | | | | | | | | | | The following attributes are currently supported in C++0x attribute lists (and in GNU ones as well): - align() - semantics believed to be conformant to n3000, except for redeclarations and what entities it may apply to - final - semantics believed to be conformant to CWG issue 817's proposed wording, except for redeclarations - noreturn - semantics believed to be conformant to n3000, except for redeclarations - carries_dependency - currently ignored (this is an optimization hint) llvm-svn: 89543
* First part of changes to eliminate problems with cv-qualifiers andDouglas Gregor2009-11-161-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sugared types. The basic problem is that our qualifier accessors (getQualifiers, getCVRQualifiers, isConstQualified, etc.) only look at the current QualType and not at any qualifiers that come from sugared types, meaning that we won't see these qualifiers through, e.g., typedefs: typedef const int CInt; typedef CInt Self; Self.isConstQualified() currently returns false! Various bugs (e.g., PR5383) have cropped up all over the front end due to such problems. I'm addressing this problem by splitting each qualifier accessor into two versions: - the "local" version only returns qualifiers on this particular QualType instance - the "normal" version that will eventually combine qualifiers from this QualType instance with the qualifiers on the canonical type to produce the full set of qualifiers. This commit adds the local versions and switches a few callers from the "normal" version (e.g., isConstQualified) over to the "local" version (e.g., isLocalConstQualified) when that is the right thing to do, e.g., because we're printing or serializing the qualifiers. Also, switch a bunch of Context.getCanonicalType(T1).getUnqualifiedType() == Context.getCanonicalType(T2).getQualifiedType() expressions over to Context.hasSameUnqualifiedType(T1, T2) llvm-svn: 88969
* Introduce a new representation for template templateDouglas Gregor2009-11-111-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add support for cdecl attribute. (As far as I know, it doesn't affect CodeGenEli Friedman2009-11-091-0/+3
| | | | | | | | unless we start implementing command-line switches which override the default calling convention, so the effect is mostly to silence unknown attribute warnings.) llvm-svn: 86571
* Adding -fshort-wchar option.John Thompson2009-11-051-0/+1
| | | | llvm-svn: 86167
* Track source information for template arguments and template specializationJohn McCall2009-10-291-1/+22
| | | | | | | 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
* Remove OriginalTypeParmDecl; the original type is the one specifiedJohn McCall2009-10-231-1/+0
| | | | | | | | | | | | | in the DeclaratorInfo, if one is present. Preserve source information through template instantiation. This is made more complicated by the possibility that ParmVarDecls don't have DIs, which is possibly worth fixing in the future. Also preserve source information for function parameters in ObjC method declarations. llvm-svn: 84971
OpenPOWER on IntegriCloud