aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend
AgeCommit message (Collapse)Author
2009-10-23Add comment.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84930 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23Fix integer overflow in PCHReader when reading the length of anTed Kremenek
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> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84925 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-23FunctionTypeLocs don't necessarily provide ParmVarDecls, so don't crash ifJohn McCall
one was PCH'ed without any. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84920 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22When building types from declarators, instead of building two types (one forJohn McCall
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84907 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-22Extend out the block descriptor structure for debug information withMike Stump
the copy/dispose helpers as appropriate. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84817 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-21hookize wint_t's definition, patch by Edward O'Callaghan (from PR5233).Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84740 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20Add destructor and cleanup code to LocationContext (fixing some leaks). ↵Ted Kremenek
Along the way, have AnalysisManager periodically cleanup its AnalysisContextManager and LocationContextManager objects, as they don't need to forever retain all the CFGs ever created when analyzing a file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84684 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20Refine the type of the first parameter to block invoke functions.Mike Stump
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84590 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-19The constructor for ASTUnit now takes a DiagnosticClient*, allowing uses of ↵Ted Kremenek
ASTUnit to specify alternate DiagnosticClients. To match this API, ASTUnit::LoadFromPCHFile() now takes a corresponding DiagnosticClient* argument as well. The DiagnosticClient object is destroyed when the ASTUnit object is destroyed. The CIndex library now uses this API to create a 'IgnoreDiagnosticsClient' that simply silences diagnostics when using the clang_createTranslationUnitFromSourceFile() function. This fixes <rdar://problem/7312058>. This API can change in the future as we add more flexibility for clients. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84539 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-19Move Diagnostic/DiagClient/FileManager from Indexer => ASTUnit.Steve Naroff
Removing this shared data should enable clang_createTranslationUnit/clang_createTranslationUnitFromSourceFile to be run from multiple threads (related to <rdar://problem/7303432>). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84499 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-19Workaround a bug exposed by the FileCheckify of message-length.c, the caret endDaniel Dunbar
column computation isn't correct and could exceed the line length, which resulted in a buffer overflow later. - Chris, is there a better way for this code to compute the final column used by the caret? git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84475 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18PR5218: Replace IdentifierInfo::getName with StringRef version, now that clientsDaniel Dunbar
are updated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84447 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18Move misc clients to IdentifierInfo StringRef API.Daniel Dunbar
- strcmp -> == - OS.write(II->getName() ...) -> OS << II->getNameStr() - Avoid std::string concatenation - Use getNameStr().str() when an std::string is really needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84437 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18Move clients to use IdentifierInfo::getNameStart() instead of getName()Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84436 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18Use sys::Path::eraseFromDisk instead of unlink as suggested by Chris.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84415 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18When performing template-substitution into a type, don't just replace theJohn McCall
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84412 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-18Clone the full Type hierarchy into the TypeLoc hierarchy. NormalizeJohn McCall
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84386 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Switch to llvm::HashString.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84375 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17add gentoo x86 2009.1 (gcc 4.3.4) include pathsNuno Lopes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84371 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Use StringExtra's HashString instead of BernsteinHash.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84360 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Write the preprocessor block after we write out types + declarations,Douglas Gregor
so that we catch any macros used within the declarations and types. Also, properly store a NULL selector. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84334 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Add Ubuntu 9.04 C++ search path.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84301 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Add 'UseBumpPtrAllocator' flag to ASTUnit::LoadFromPCHFile() to cause the ↵Ted Kremenek
created ASTContext to use its own BumpPtrAllocator to allocate ASTs. Change clang_createTranslationUnit (CIndex) to pass 'UseBumpPtrAllocator = true' to ASTUnit::LoadFromPCHFile(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84296 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-17Merge the "types" and "declarations" blocks in the precompiled headerDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84293 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16While writing source-location entries to a PCH file, go through anDouglas Gregor
interface that can load those source-location entries on demand (from another PCH file). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84287 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16Factor out routines to encode/decode DeclaratorInfos and move them into theJohn McCall
core PCH reader/writer implementation files. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84278 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16Keep track of whether declararions were loaded from a precompiledDouglas Gregor
header or not via a new "PCHLevel" field in Decl. We currently use this information to help CIndex filter out declarations that came from a precompiled header (rather than from an AST file). Further down the road, it can be used to help implement multi-level precompiled headers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84267 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16Add support for a chain of stat caches in the FileManager, rather thanDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84263 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16Work-around wchar_t and __pragma problem in VC headersJohn Thompson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84227 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16Remove the ConstantArrayType subtypes. This information is preserved in theJohn McCall
TypeLoc records for declarations; it should not be necessary to represent it directly in the type system. Please complain if you were using these classes and feel you can't replicate previous functionality using the TypeLoc API. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84222 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Make sure temporary files get unlinked.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84208 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15AuroraUX toolchain fixes.Edward O'Callaghan
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84176 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-15Better living through metaprogramming. Create a base class which abstractsJohn McCall
most of the unsafe boilerplate out of TypeLoc. Create a QualifiedLoc class to represent the idea that we *might* start representing source locations of qualifiers. Dealing with qualifiers explicitly like this also lets us efficiently ignore them in all the concrete cases. This should make it obvious and easy to add new TypeLoc subclasses. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84168 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-14Add support for having different c++ search dirs with -m32 and -m64. So farRafael Espindola
this is only used in darwin10, 64 bit ubuntu 9.10 and 64 bit openSUSE 11.1. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84115 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Fixes pth.c on Windows.John Thompson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84007 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Fixup windows include paths. Patch by John Thompson.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83898 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Typo in AddGnuCPlusPlusIncludePaths.Edward O'Callaghan
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83847 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09Efficiency refinements.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83666 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09Push all the way out to 80.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83664 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09Passing const Triple& is sufficient for AddDefaultSystemIncludePaths()Axel Naumann
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83663 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Add a refactor pointer...Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83599 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Set up include paths for VC++ and Cygwin headers, along with theMike Stump
existing MinGW headers, plus the newer 4.4.0 version. Patch by John Thompson. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83594 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Installation of Clang libraries and headers, from Axel Naumann!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83582 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Remove use of std::ofstream in HTMLDiagnostics.cpp.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83560 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06Refactor the c++ include path a bit.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83357 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05Encode the Clang branch and Subversion revision into a PCH file, andDouglas Gregor
assume that PCH files from different Clang revisions are not compatible. Addresses <rdar://problem/7266572>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83323 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-01Move the "needs exception support" logic to clang. This also fixesRafael Espindola
-fno-exceptions in C++ code. We used to always define __EXCEPTIONS in C++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83199 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-29Pull TypeLocVisitor into its own header file.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83112 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-29Introduce ObjCInterfaceLoc which provides type source information for ObjC ↵Argyrios Kyrtzidis
interfaces. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83097 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-29Introduce ObjCProtocolListLoc for keeping source location information for ↵Argyrios Kyrtzidis
protocol references. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83094 91177308-0d34-0410-b5e6-96231b3b80d8