summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic
Commit message (Collapse)AuthorAgeFilesLines
* Fix a bunch of major problems with __unknown_anytype and properly testJohn McCall2011-04-091-0/+5
| | | | | | for them. The only major missing feature is references. llvm-svn: 129234
* refactor flags for TokenKinds.defDylan Noblesmith2011-04-091-12/+12
| | | | | | | | Make KEYALL a combination of all other flags instead of its own separate flag. Also rewrite the enum definitions in hex instead of decimal. llvm-svn: 129213
* Eat the UTF-8 BOM at the beginning of a file since it's ignored anyhow.Eric Christopher2011-04-091-6/+5
| | | | | | | | Nom Nom Nom. Patch by Anton Korobeynikov! llvm-svn: 129174
* Enable sse4 and aes for SandyBridge. Leave avx support commented out for now.Roman Divacky2011-04-051-2/+5
| | | | llvm-svn: 128923
* Explain why layout prefers 32 for small types on Thumb.Sandeep Patel2011-04-041-0/+4
| | | | llvm-svn: 128850
* Change ARM data layout strings to match llvm-gcc.Bob Wilson2011-04-041-5/+5
| | | | | | | | | Sandeep Patel noticed that the alignment was wrong for Neon vector types, and this change is partly derived from his patch. For the APCS ABI, however, additional changes were required: the maximum ABI alignment is 32 bits and the preferred alignment for i64 and f64 types should be 64 bits. llvm-svn: 128825
* Change Clang's __VERSION__ to include the same basic info as in clang -v.Daniel Dunbar2011-03-311-0/+13
| | | | | | - Please never ever ever ever write a tool that sniffs this. llvm-svn: 128599
* Basic: Add support for a build variable to set the repository path that goesDaniel Dunbar2011-03-311-0/+4
| | | | | | into the Clang version. llvm-svn: 128595
* For Diagnostic::Reset() also reset the state related to #pragma diagnostic. ↵Argyrios Kyrtzidis2011-03-261-5/+10
| | | | | | Fixes rdar://9170766. llvm-svn: 128346
* Implement a new 'availability' attribute, that allows one to specifyDouglas Gregor2011-03-234-3/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | which versions of an OS provide a certain facility. For example, void foo() __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,obsoleted=10.6))); says that the function "foo" was introduced in 10.2, deprecated in 10.4, and completely obsoleted in 10.6. This attribute ties in with the deployment targets (e.g., -mmacosx-version-min=10.1 specifies that we want to deploy back to Mac OS X 10.1). There are several concrete behaviors that this attribute enables, as illustrated with the function foo() above: - If we choose a deployment target >= Mac OS X 10.4, uses of "foo" will result in a deprecation warning, as if we had placed attribute((deprecated)) on it (but with a better diagnostic) - If we choose a deployment target >= Mac OS X 10.6, uses of "foo" will result in an "unavailable" warning (in C)/error (in C++), as if we had placed attribute((unavailable)) on it - If we choose a deployment target prior to 10.2, foo() is weak-imported (if it is a kind of entity that can be weak imported), as if we had placed the weak_import attribute on it. Naturally, there can be multiple availability attributes on a declaration, for different platforms; only the current platform matters when checking availability attributes. The only platforms this attribute currently works for are "ios" and "macosx", since we already have -mxxxx-version-min flags for them and we have experience there with macro tricks translating down to the deprecated/unavailable/weak_import attributes. The end goal is to open this up to other platforms, and even extension to other "platforms" that are really libraries (say, through a #pragma clang define_system), but that hasn't yet been designed and we may want to shake out more issues with this narrower problem first. Addresses <rdar://problem/6690412>. As a drive-by bug-fix, if an entity is both deprecated and unavailable, we only emit the "unavailable" diagnostic. llvm-svn: 128127
* Make the definition of "long double" consistent for llvm::Triple::Win32 forEli Friedman2011-03-221-1/+3
| | | | | | both 32-bit and 64-bit targets. llvm-svn: 128110
* Another cortex-m0 patch from James Orr.Bob Wilson2011-03-211-0/+1
| | | | llvm-svn: 128029
* Relax assertion to fail during crash recovery cleanup.Ted Kremenek2011-03-211-3/+1
| | | | llvm-svn: 128010
* Use CrashRecoveryContextCleanup objects to reclaim resources from ↵Ted Kremenek2011-03-211-1/+7
| | | | | | CompilerInstance objects. llvm-svn: 128009
* Unbreak build.Daniel Dunbar2011-03-191-1/+2
| | | | llvm-svn: 127942
* Add support for language-specific address spaces. On top of that,Peter Collingbourne2011-03-181-0/+6
| | | | | | | | | add support for the OpenCL __private, __local, __constant and __global address spaces, as well as the __read_only, _read_write and __write_only image access specifiers. Patch originally by ARM; language-specific address space support by myself. llvm-svn: 127915
* Add FileManager::getNoncachedStatValue, which will resolve relative paths ↵Anders Carlsson2011-03-181-0/+8
| | | | | | against the working directory specified in the file system options. llvm-svn: 127893
* Having FileManager::getFile always open the file, brought much consternation ↵Argyrios Kyrtzidis2011-03-161-1/+6
| | | | | | | | | | | and leaking of file descriptors. Add 'openFile' bool to FileManager::getFile to specify whether we want to have the file opened or not, have it false by default, and enable it only in HeaderSearch.cpp where the open+fstat optimization matters. Fixes rdar://9139899. llvm-svn: 127748
* lib/Basic/Targets.cpp: __declspec(attr) should be provided on mingw as ↵NAKAMURA Takumi2011-03-151-2/+18
| | | | | | | | macro, alias of __attribute__. On mingw without -fms-extensions, we can provide "as-is" __declspec. llvm-svn: 127655
* Stop leaking file descriptors.Argyrios Kyrtzidis2011-03-151-14/+16
| | | | | | | | After the open+fstat optimization, files were already opened for FileManager::getBufferForFile() and we closed them after reading them. The problem was that when -working-directory was passed, the code path that actually reuses & closes the already opened file descriptor was not followed. llvm-svn: 127639
* Get rid of the static FileManager::FixupRelativePath.Anders Carlsson2011-03-141-8/+4
| | | | llvm-svn: 127573
* Add 'OverridenFilesKeepOriginalName' field in SourceManager which if true ↵Argyrios Kyrtzidis2011-03-081-2/+4
| | | | | | | | | | | the SourceManager should report the original file name for contents of files that were overriden by other files, otherwise it should report the name of the new file. Default is true. Also add similar field in PreprocessorOptions and pass similar parameter in ASTUnit::LoadFromCommandLine. llvm-svn: 127289
* lib/Basic/Targets.cpp: mingw-w64 should define __MINGW32__, too.NAKAMURA Takumi2011-03-081-0/+1
| | | | llvm-svn: 127238
* Check in the implementation as well...Anders Carlsson2011-03-071-3/+7
| | | | llvm-svn: 127144
* Convert FileManager::FixupRelativePath over to using PathV2.Anders Carlsson2011-03-061-8/+10
| | | | llvm-svn: 127133
* Currently we can only remap a file by creating a MemoryBuffer and replacing ↵Argyrios Kyrtzidis2011-03-051-18/+38
| | | | | | | | | the file contents with it. Allow remapping a file by specifying another filename whose contents should be loaded if the original file gets loaded. This allows to override files without having to create & load buffers in advance. llvm-svn: 127052
* Move some of the logic about classifying Objective-C methods intoJohn McCall2011-03-021-0/+50
| | | | | | | | conventional categories into Basic and AST. Update the self-init checker to use this logic; CFRefCountChecker is complicated enough that I didn't want to touch it. llvm-svn: 126817
* Teach TextDiagnosticPrinter to print out '-Werror' in addition to the ↵Ted Kremenek2011-02-251-3/+8
| | | | | | | | | | warning flag for a warning mapped to an error. For example: t.c:7:9: error: using the result of an assignment as a condition without parentheses [-Werror,-Wparentheses] llvm-svn: 126466
* Switch the VerifyDiagnosticsClient to use PresumedLocs now that theyChandler Carruth2011-02-231-3/+14
| | | | | | | exist. Cheat and do this by adding some wrappers around the PresumedLoc machinery that directly return the line and column number. llvm-svn: 126281
* Targets/Darwin: mcount name on Darwin needs to be unmangled.Daniel Dunbar2011-02-211-0/+1
| | | | llvm-svn: 126152
* Test commit.Richard Smith2011-02-201-1/+0
| | | | llvm-svn: 126063
* Re-instate r125819 and r125820 with no functionality changePeter Collingbourne2011-02-191-12/+0
| | | | llvm-svn: 126060
* Revert 125820 and 125819 to fix PR9266.Rafael Espindola2011-02-191-0/+12
| | | | llvm-svn: 126050
* Selector::getIdentifierInfoForSlot() can return NULL values, a factDouglas Gregor2011-02-181-0/+5
| | | | | | | | | | | | that was ignored in a few places (most notably, code completion). Introduce Selector::getNameForSlot() for the common case where we only care about the name. Audit all uses of getIdentifierInfoForSlot(), switching many over to getNameForSlot(), fixing a few crashers. Fixed <rdar://problem/8939352>, a code-completion crasher. llvm-svn: 125977
* [Heikki Kultala] This patch contains the ABI changes for the TCE target.NAKAMURA Takumi2011-02-181-2/+2
| | | | | | TCE target has some too strict alignment rules (that the HW really does not require, but which caused problems elsewhere) for data types and an ABI change was decided. llvm-svn: 125833
* Move TargetInfo::adjustInlineAsmType to TargetCodeGenInfoPeter Collingbourne2011-02-181-12/+0
| | | | llvm-svn: 125819
* Triple::MinGW64 is deprecated and removed. We can use Triple::MinGW32 instead.NAKAMURA Takumi2011-02-171-1/+1
| | | | | | No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. llvm-svn: 125742
* Fix a thinko with llvm::Optional, which is clearly the most dangerous class ↵Douglas Gregor2011-02-161-4/+8
| | | | | | template in the universe llvm-svn: 125679
* OpenCL: add support for __kernel, kernel keywords and EXTENSION,Peter Collingbourne2011-02-141-1/+3
| | | | | | FP_CONTRACT pragmas. Patch originally by ARM. llvm-svn: 125475
* Add CMake dependencies so that LLVM_USED_LIBS order doesn't matter.Jeffrey Yasskin2011-02-111-0/+2
| | | | | | | I also sorted the tools/driver dependencies since their order no longer matters. llvm-svn: 125417
* Uses llvm::sys::path instead of hand-rolled algorithm in FileManager.Zhanyong Wan2011-02-111-32/+11
| | | | | | Reviewed by dgregor. llvm-svn: 125407
* Improves Clang's virtual file handling.Zhanyong Wan2011-02-111-85/+146
| | | | | | | | | | | | | | | | | | | | | | | This patch contains: - making some of the existing comments more accurate in the presence of virtual files/directories. - renaming some private data members of FileManager to match their roles better. - creating 'DirectorEntry's for the parent directories of virtual files, such that we can tell whether two virtual files are from the same directory. This is useful for injecting virtual files whose directories don't exist in the real file system. - minor clean-ups and adding comments for class FileManager::UniqueDirContainer and FileManager::UniqueFileContainer. - adding statistics on virtual files to FileManager::PrintStats(). - adding unit tests to verify the existing and new behavior of FileManager. llvm-svn: 125384
* Don't compare llvm::Optional<> objects directly; compare theirDouglas Gregor2011-02-111-8/+14
| | | | | | contents when it's safe. I just *love* C++ some days. llvm-svn: 125378
* Implement two related optimizations that make de-serialization ofDouglas Gregor2011-02-101-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AST/PCH files more lazy: - Don't preload all of the file source-location entries when reading the AST file. Instead, load them lazily, when needed. - Only look up header-search information (whether a header was already #import'd, how many times it's been included, etc.) when it's needed by the preprocessor, rather than pre-populating it. Previously, we would pre-load all of the file source-location entries, which also populated the header-search information structure. This was a relatively minor performance issue, since we would end up stat()'ing all of the headers stored within a AST/PCH file when the AST/PCH file was loaded. In the normal PCH use case, the stat()s were cached, so the cost--of preloading ~860 source-location entries in the Cocoa.h case---was relatively low. However, the recent optimization that replaced stat+open with open+fstat turned this into a major problem, since the preloading of source-location entries would now end up opening those files. Worse, those files wouldn't be closed until the file manager was destroyed, so just opening a Cocoa.h PCH file would hold on to ~860 file descriptors, and it was easy to blow through the process's limit on the number of open file descriptors. By eliminating the preloading of these files, we neither open nor stat the headers stored in the PCH/AST file until they're actually needed for something. Concretely, we went from *** HeaderSearch Stats: 835 files tracked. 364 #import/#pragma once files. 823 included exactly once. 6 max times a file is included. 3 #include/#include_next/#import. 0 #includes skipped due to the multi-include optimization. 1 framework lookups. 0 subframework lookups. *** Source Manager Stats: 835 files mapped, 3 mem buffers mapped. 37460 SLocEntry's allocated, 11215575B of Sloc address space used. 62 bytes of files mapped, 0 files with line #'s computed. with a trivial program that uses a chained PCH including a Cocoa PCH to *** HeaderSearch Stats: 4 files tracked. 1 #import/#pragma once files. 3 included exactly once. 2 max times a file is included. 3 #include/#include_next/#import. 0 #includes skipped due to the multi-include optimization. 1 framework lookups. 0 subframework lookups. *** Source Manager Stats: 3 files mapped, 3 mem buffers mapped. 37460 SLocEntry's allocated, 11215575B of Sloc address space used. 62 bytes of files mapped, 0 files with line #'s computed. for the same program. llvm-svn: 125286
* Implement mcount profiling, enabled via -pg.Roman Divacky2011-02-102-0/+20
| | | | llvm-svn: 125282
* CMake: LLVM_NO_RTTI must be obsolete now!NAKAMURA Takumi2011-02-101-2/+0
| | | | llvm-svn: 125275
* Update for API change.Rafael Espindola2011-02-081-2/+2
| | | | llvm-svn: 125129
* Improve our uniquing of file entries when files are re-saved or areDouglas Gregor2011-02-051-21/+36
| | | | | | | | | | | | | | overridden via remapping. Thus, when we create a "virtual" file in the file manager, we still stat() the real file that lives behind it so that we can provide proper uniquing based on inodes. This helps keep the file manager much more consistent. To take advantage of this when reparsing files in libclang, we disable the use of the stat() cache when reparsing or performing code completion, since the stat() cache is very likely to be out of date in this use case. llvm-svn: 124971
* If any Fix-Its attached to a diagnostic have invalid source locationsDouglas Gregor2011-02-031-0/+13
| | | | | | | or source locations that refer into a macro instantiation, delete all of the Fix-Its on that diagnostic. llvm-svn: 124833
* Teach SourceManager::getLocation() how to cope with a source fileDouglas Gregor2011-02-031-18/+84
| | | | | | | | | | | | | | | | whose inode has changed since the file was first created and that is being seen through a different path name (e.g., due to symlinks or relative path elements), such that its FileEntry pointer doesn't match a known FileEntry pointer. Since this requires a system call (to stat()), we only perform this deeper checking if we can't find the file by comparing FileEntry pointers. Also, add a micro-optimization where we don't bother to compute line numbers when given the location (1, 1). This improves the efficiency of clang_getLocationForOffset(). llvm-svn: 124800
OpenPOWER on IntegriCloud