aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend
AgeCommit message (Collapse)Author
2011-09-26Don't map a file:line:col triplet that is inside the preamble range toArgyrios Kyrtzidis
a "loaded" location of the precompiled preamble. Instead, handle specially locations of preprocessed entities: -When looking up for preprocessed entities, map main file locations inside the preamble range to a preamble loaded location. -When getting the source range of a preprocessing cursor, map preamble loaded locations back to main file locations. Fixes rdar://10175093 & http://llvm.org/PR10999 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140519 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Don't print a stray ] at the end of diagnostics.Benjamin Kramer
Also remove an obsolete utostr call. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140511 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Remove support for splitting word-wrapped diagnostic messages on newlineChandler Carruth
characters. I could find no newline character in a diagnostic message, and adding an assert to this code never fires in the testsuite. I think this code is essentially dead, and was previously used for a different purpose. If I just don't understand how it is we can end up with a newline here please let me know (with a test case?) and I'll revert. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140497 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Move the word wrapped printing routine down to all the other helperChandler Carruth
printing routines, clean up its doxyments and switch it to a camelCase name as well. No functionality changed here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140496 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Switch some of my recently added helper functions to use the properChandler Carruth
style, and add doxyments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140495 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Rewrite the printing of diagnostic options, categories, etc to actuallyChandler Carruth
use the ostream interface and avoid lots of temporary strings. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140494 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Rename DiagnosticInfo to Diagnostic as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140493 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Delete an extraneous line I missed.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140491 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26A direct extraction of the rest of the option printing into a helper.Chandler Carruth
This needs to be cleaned up to better use the ostream object, WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140490 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Rename VerifyDiagnosticsClient to VerifyDiagnosticConsumer as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140489 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Start a more correct pattern for factoring out the name printing. SlowlyChandler Carruth
I'm planning to switch a bunch of these over to use a raw_ostream instead of += on a string object. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140488 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Revert r140484. That was *not* ready to be committed! Only halfway done,Chandler Carruth
and completely broken at that. Sorry, must remember to stash rather than commit. =] git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140487 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Fix a formatting goof.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140486 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Rename ChainedDiagnosticClient to ChainedDiagnosticConsumer as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140485 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Extract the diagnostic message formatting into a helper routine.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140484 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Rename StoredDiagnosticClient to StoredDiagnosticConsumer as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140483 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Extract the logic for printing a colorful level name into a helperChandler Carruth
function. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140481 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Rename DiagnosticClient to DiagnosticConsumer as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140479 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Rename Diagnostic to DiagnosticsEngine as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140478 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Inline this method now that its completely trivial, and prepare forChandler Carruth
hoisting parts of the text diagnostic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140477 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Shuffle some names around. 'CaretDiagnostic' is inaccurate as this needsChandler Carruth
to handle non-caret diagnostics as well in order to be fully useful in libclang etc. Also sketch out some more of my plans on this refactoring. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140476 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Actually remove the members of CaretDiagnostic no longer in use forChandler Carruth
tracking the start and stop of macro expansion suppression. Also remove the Columns variable which was just a convenience variable based on DiagOpts. Instead we materialize it in the one piece of code that cared. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140475 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Sink the logic for suppressing some macro expansion notes from theChandler Carruth
TextDiagnosticPrinter into the CaretDiagnostic class. Several interesting results from this: - This removes a significant per-diagnostic bit of state from the CaretDiagnostic class, which should eventually allow us to re-use the object. - It removes a redundant recursive walk of the macro expansion stack just to compute the depth. We don't need the depth until we're unwinding anyways, so we can just mark when we reach it. - It also paves the way for several simplifications we can do to how we implement the suppression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140474 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Split the recursive macro expansion walk out from the routine whichChandler Carruth
emits a source snippet and caret line. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140467 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23Don't translate CRLF files into LF files. Fixes PR6870, from Aaron Ballman!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140435 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23More missing header inclusions from llvm_unreachable migration.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140369 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23Switch assert(0/false) llvm_unreachable.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140367 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23Reenable -cxx-isystem for Objective C++, until I come up with a better solutionBenjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140365 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-22Add support for CPATH and friends.Benjamin Kramer
This moves the existing code for CPATH into the driver and adds the environment lookup and path splitting there. The paths are then passed down to cc1 with -I options (CPATH), added after the normal user-specified include dirs. Language specific paths are passed via -LANG-isystem and the actual filtering is performed in the frontend. I tried to match GCC's behavior as close as possible Fixes PR8971. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140341 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-21In the OpenCL mode, the AltiVec mode must be off and checks must be strictTobias Grosser
OpenCL is different from AltiVec in the way it supports vector literals. OpenCL is strict with regards to semantic checks. For example, implicit conversions and explicit casts between vectors of different types are disallowed. Fixes PR10975. Submitted by: Anton Lokhmotov <Anton.lokhmotov@gmail.com> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140270 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-20Remove __WCHAR_UNSIGNED__ and anything that used it.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140155 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-19In libclang, when visiting preprocessed entities in a source range, useArgyrios Kyrtzidis
PreprocessingRecord's getPreprocessedEntitiesInRange. Also remove all the stuff that were added in ASTUnit that are unnecessary now that we do a binary search for preprocessed entities and deserialize only what is necessary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140063 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-19Introduce local_begin()/local_end() methods in PreprocessingRecord whichArgyrios Kyrtzidis
return iterators for local, non-loaded, preprocessed entities. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140062 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-19[libclang] When getting a source location from a file:line:col tripletArgyrios Kyrtzidis
check whether the requested location points inside the precompiled preamble, in which case the returned source location will be a "loaded" one. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140060 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-19Rename SourceLocation::getFileLocWithOffset -> getLocWithOffset.Argyrios Kyrtzidis
It already works (and is useful with) macro locs as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140057 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-19Do not use builtin includes if -fms-compatibility is specified. Some MSVC ↵Francois Pichet
header files have the same name as clang's builtins, this creates clash. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140009 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-17Rename LangOptions::Microsoft to LangOptions::MicrosoftExt to make it clear ↵Francois Pichet
that this flag must be used only for Microsoft extensions and not emulation; to avoid confusion with the new LangOptions::MicrosoftMode flag. Many of the code now under LangOptions::MicrosoftExt will eventually be moved under the LangOptions::MicrosoftMode flag. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139987 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-17As per discussion with Doug Gregor on the IRC channel, introduce a new ↵Francois Pichet
compiler switch: -fms-compatility. Microsoft specific tweaking will now fall into 2 categories: - fms-extension: Microsoft specific extensions that should never change the meaning of an otherwise well formed code. Currently map to LangOptions::Microsoft. (To be clearer, I am planning to change the name to LangOptions::MicrosoftExt). - fms-compatibility: Really a MSVC emulation mode. Map to LangOptions::MicrosoftMode. Can change the meaning of an otherwise standard conformant program. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139978 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15Add an experimental flag -fauto-module-import that automatically turnsDouglas Gregor
#include or #import direcctives of framework headers into module imports of the corresponding framework module. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139860 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15Comment what's going on when we compile a moduleDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139837 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15Detect cyclic module dependencies in a manner that is rather moreDouglas Gregor
graceful than running out of stack space. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139833 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15Eliminate the list of modules from the preprocessor options. This wasDouglas Gregor
used back when we had an -import-module command-line option, but it's no longer used (or useful). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139829 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15Eliminate the unused -create-module cc1-level optionDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139827 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15When we load the first module, make sure that we wire up the ASTConsumer to ↵Douglas Gregor
the newly-created ASTReader. This makes sure that CodeGen sees the declarations it is interested in git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139824 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15[PCH] Overhaul how preprocessed entities are [de]serialized.Argyrios Kyrtzidis
-Use an array of offsets for all preprocessed entities -Get rid of the separate array of offsets for just macro definitions; for references to macro definitions use an index inside the preprocessed entities array. -Deserialize each preprocessed entity lazily, at first request; not in bulk. Paves the way for binary searching of preprocessed entities that will offer efficiency and will simplify things on the libclang side a lot. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139809 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14Make -E work with module importsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139750 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14Encode the module hash in base-36, to reduce the length of the strings a bitDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139696 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Assert that the module hash produced after stripping away non-modular ↵Douglas Gregor
options is the same as the module hash before stripping those options. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139663 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13For modules, use a hash of the compiler version, language options, andDouglas Gregor
target triple to separate modules built under different conditions. The hash is used to create a subdirectory in the module cache path where other invocations of the compiler (with the same version, language options, etc.) can find the precompiled modules. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139662 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13When building a module on-demand, clear out the "non-modular" languageDouglas Gregor
and preprocessor options (such as macro definitions) first. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139638 91177308-0d34-0410-b5e6-96231b3b80d8