History log of /external/clang/lib/Lex/PPMacroExpansion.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
eb382ec1507cf2c8c12d7443d0b67c076223aec6 19-Apr-2012 Patrick Beard <pcbeard@mac.com> Implements boxed expressions for Objective-C. <rdar://problem/10194391>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155082 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
316551f079a182d15c0e9b930c361428c968b5ee 10-Apr-2012 Douglas Gregor <dgregor@apple.com> Add a query macro for C++11 N3276, decltype does not require complete
return types, from Michel Morin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154428 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7b156ddae822a546aa9e8b23d683ac76da8e8ac8 04-Apr-2012 Douglas Gregor <dgregor@apple.com> Add feature check "cxx_local_type_template_args" describing support
for templates with local template arguments, from Michel Morin! Fixes
PR12337.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153983 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
4e4d08403ca5cfd4d558fa2936215d3a4e5a528d 11-Mar-2012 David Blaikie <dblaikie@gmail.com> Unify naming of LangOptions variable/get function across the Clang stack (Lex to AST).

The member variable is always "LangOpts" and the member function is always "getLangOpts".

Reviewed by Chris Lattner

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152536 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
9c1dda7d7b6336506764ce1b03baf4c03ed9ff92 09-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> User-defined literals are done.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
ebcb57a8d298862c65043e88b2429591ab3c58d3 06-Mar-2012 Ted Kremenek <kremenek@apple.com> Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,
NSNumber, and boolean literals. This includes both Sema and Codegen support.
Included is also support for new Objective-C container subscripting.

My apologies for the large patch. It was very difficult to break apart.
The patch introduces changes to the driver as well to cause clang to link
in additional runtime support when needed to support the new language features.

Docs are forthcoming to document the implementation and behavior of these features.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
99831e4677a7e2e051af636221694d60ba31fcdb 06-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> User-defined literals: reject string and character UDLs in all places where the
grammar requires a string-literal and not a user-defined-string-literal. The
two constructs are still represented by the same TokenKind, in order to prevent
a combinatorial explosion of different kinds of token. A flag on Token tracks
whether a ud-suffix is present, in order to prevent clients from needing to look
at the token's spelling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
ec92bc78979aae6ec436fe51d082f7467e6f96c0 04-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add a pile of tests for unrestricted unions, and advertise support for them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151992 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
8a5e7fdd2c7d3f46685396e13ed76798f4573c02 01-Mar-2012 Jean-Daniel Dupas <devlists@shadowlab.org> Implement double underscore names support in __has_attribute



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151809 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
d1dc3aa25797301788f1c4f30f769b1d9e1fb22a 25-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Initializer lists are now supported.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151458 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
5297d71e8c85f9b04dc31c690e91c6a2f7eddb90 25-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Accept __has_feature(__feature__) as a synonym for __has_feature(feature) (and
likewise for __has_extension). Patch by Jonathan Sauer!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151445 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
4ca8ac2e61c37ddadf37024af86f3e1019af8532 24-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement a new type trait __is_trivially_constructible(T, Args...)
that provides the behavior of the C++11 library trait
std::is_trivially_constructible<T, Args...>, which can't be
implemented purely as a library.

Since __is_trivially_constructible can have zero or more arguments, I
needed to add Yet Another Type Trait Expression Class, this one
handling arbitrary arguments. The next step will be to migrate
UnaryTypeTrait and BinaryTypeTrait over to this new, more general
TypeTrait class.

Fixes the Clang side of <rdar://problem/10895483> / PR12038.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151352 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
25d0a0f67d9e949ffbfc57bf487012f5cbfd886e 23-Feb-2012 Douglas Gregor <dgregor@apple.com> Provide the __is_trivially_assignable type trait, which provides
compiler support for the std::is_trivially_assignable library type
trait.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151240 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7c07e964d72a287aa3d5714731e202c3ffa17007 23-Feb-2012 Douglas Gregor <dgregor@apple.com> Clang now supports lambda expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151231 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b5216aaf803609d25eb8514266dd8531812b4877 14-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Advertize support for constexpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150524 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f7ccbad5d9949e7ddd1cbef43d482553b811e026 05-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> Basic: import SmallString<> into clang namespace

(I was going to fix the TODO about DenseMap too, but
that would break self-host right now. See PR11922.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149799 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f83a615ad0004fc4cca3e3c1ea2234a685487304 02-Feb-2012 Fariborz Jahanian <fjahanian@apple.com> objc2: add __has_feature(objc_default_synthesize_properties).
// rdar://10770497


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149565 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
2831092e8063c01aa307bc62ff5e9eb8db2ceedc 31-Jan-2012 Chris Lattner <sabre@nondot.org> fix a crash on:

__has_builtin

in an empty file, as we were overwriting the EOF token. Overwriting an arbitrary token
never seems like a good idea in the error case. This fixes a bug reported on the GCC
list :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149397 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
5d5051f3e79bf754134ccdf7a1dc7778cd80c73e 24-Jan-2012 Douglas Gregor <dgregor@apple.com> Only mark an IdentifierInfo as having changed since deserialization
when it actually has changed (and not, e.g., when we've simply attached a
deserialized macro definition). Good for ~1.5% reduction in module
file size, mostly in the identifier table.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148808 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7a7ee3033e44b45630981355460ef89efa0bdcc4 16-Jan-2012 David Chisnall <csdavec@swan.ac.uk> Some improvements to the handling of C11 atomic types:

- Add atomic-to/from-nonatomic cast types
- Emit atomic operations for arithmetic on atomic types
- Emit non-atomic stores for initialisation of atomic types, but atomic stores and loads for every other store / load
- Add a __atomic_init() intrinsic which does a non-atomic store to an _Atomic() type. This is needed for the corresponding C11 stdatomic.h function.
- Enables the relevant __has_feature() checks. The feature isn't 100% complete yet, but it's done enough that we want people testing it.

Still to do:

- Make the arithmetic operations on atomic types (e.g. Atomic(int) foo = 1; foo++;) use the correct LLVM intrinsic if one exists, not a loop with a cmpxchg.
- Add a signal fence builtin
- Properly set the fenv state in atomic operations on floating point values
- Correctly handle things like _Atomic(_Complex double) which are too large for an atomic cmpxchg on some platforms (this requires working out what 'correctly' means in this context)
- Fix the many remaining corner cases



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148242 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
bd507c5ef3cfe58aa2c0eca901fcd53b45c673a1 04-Jan-2012 Douglas Gregor <dgregor@apple.com> Add __has_feature(modules) to indicate when modules are available (in
any language variant), and restrict __has_feature(objc_modules) to
mean that we also have the Objective-C @import syntax. I anticipate
__has_feature(cxx_modules) and/or __has_feature(c_modules) for when we
nail down the module syntax for C/C++.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147548 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7fde6518934846808e878cee8798166ae65edcd4 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Add __has_feature(objc_modules)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147482 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1e8a0678df724a28fe47e0034246f2604056a278 02-Jan-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Added a missing case for -Wdisabled-macro-expansion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147433 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
ffbe9b9c64ab2e94b9d48ec56e511f75826fc80a 23-Dec-2011 Benjamin Kramer <benny.kra@googlemail.com> Mass rename C1x references to C11. The name hasn't proliferated like "C++0x" so this patch is surprisingly small.

Also drop -Wc1x-extensions in favor of -Wc11-extensions. I don't think we need to keep this around for compatibility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147221 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1770e0dadcab966990cca4d7516253c886fd907c 22-Dec-2011 Dylan Noblesmith <nobled@dreamwidth.org> remove unneeded config.h includes



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147195 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
373cb7832090dd5a380be73fdff79881721eed00 17-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Fix bug where we failed to update an identifier for a single token
macro expansion.

rdar://10588825

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146818 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
5e9392ba18f5925e26cc5714d1412eda0d219826 03-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement support for the __is_final type trait, to determine whether
a class is marked 'final', from Alberto Ganesh Barbati! Fixes
PR11462.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145775 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b61968857fd2c6579b4dcd7bad65736e89d21185 22-Nov-2011 Kostya Serebryany <kcc@google.com> implement __has_feature(address_sanitizer); also use LangOpts.AddressSanitizer instead of CodeGenOpts.AddressSanitizer

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145054 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
172b221147ab56e60968d3f7ffdb42256622fa4c 01-Nov-2011 Douglas Gregor <dgregor@apple.com> Add __has_feature(cxx_raw_string_literals) and
__has_feature(cxx_unicode_literals), from Michel Morin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143412 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f695a6952f111e79c685301c292755908473f297 01-Nov-2011 Douglas Gregor <dgregor@apple.com> Add __has_feature(cxx_defaulted_functions) for querying "defaulted
functions", from Michel Morin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
eee242ff426bf79149f221798966e58688383c1e 27-Oct-2011 Douglas Gregor <dgregor@apple.com> Make the loading of information attached to an IdentifierInfo from an
AST file more lazy, so that we don't eagerly load that information for
all known identifiers each time a new AST file is loaded. The eager
reloading made some sense in the context of precompiled headers, since
very few identifiers were defined before PCH load time. With modules,
however, a huge amount of code can get parsed before we see an
@import, so laziness becomes important here.

The approach taken to make this information lazy is fairly simple:
when we load a new AST file, we mark all of the existing identifiers
as being out-of-date. Whenever we want to access information that may
come from an AST (e.g., whether the identifier has a macro definition,
or what top-level declarations have that name), we check the
out-of-date bit and, if it's set, ask the AST reader to update the
IdentifierInfo from the AST files. The update is a merge, and we now
take care to merge declarations before/after imports with declarations
from multiple imports.

The results of this optimization are fairly dramatic. On a small
application that brings in 14 non-trivial modules, this takes modules
from being > 3x slower than a "perfect" PCH file down to 30% slower
for a full rebuild. A partial rebuild (where the PCH file or modules
can be re-used) is down to 7% slower. Making the PCH file just a
little imperfect (e.g., adding two smallish modules used by a bunch of
.m files that aren't in the PCH file) tips the scales in favor of the
modules approach, with 24% faster partial rebuilds.

This is just a first step; the lazy scheme could possibly be improved
by adding versioning, so we don't search into modules we already
searched. Moreover, we'll need similar lazy schemes for all of the
other lookup data structures, such as DeclContexts.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143100 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
eb2ac8b349e181bdc71bfd64980c019be3180d76 18-Oct-2011 John McCall <rjmccall@apple.com> Add a __has_feature check for arc_cf_code_audited.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142423 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
661a99690bc133bbaa029da925481d4a860dec90 15-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat warnings for the lexer.

This also adds a -Wc++98-compat-pedantic for warning on constructs which would
be diagnosed by -std=c++98 -pedantic (that is, it warns even on C++11 features
which we enable by default, with no warning, in C++98 mode).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142034 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
fd5f6866a7574f12ecac5cceb7359ff253f83145 15-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Add c_alignas and cxx_alignas features

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142020 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
d768150ef57f617c8d9fef48f3c92e8f21698024 12-Oct-2011 Ted Kremenek <kremenek@apple.com> Implement built-in macro '__has_warning', which allows one to query if a warning flag is valid. Fixes <rdar://problem/10263428>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141802 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
a08529cc3f00e0b47a3c028823634129ac46847b 03-Oct-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed exapnsion range for # and ##.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141012 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
d6471f7c1921c7802804ce3ff6fe9768310f72b9 26-Sep-2011 David Blaikie <dblaikie@gmail.com> Rename Diagnostic to DiagnosticsEngine as per issue 5397


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140478 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
9fe8c74a93ac8e92512615c5f83e7a328b3b0544 23-Sep-2011 David Blaikie <dblaikie@gmail.com> Fix missing includes for llvm_unreachable


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140368 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b219cfc4d75f0a03630b7c4509ef791b7e97b2c8 23-Sep-2011 David Blaikie <dblaikie@gmail.com> Switch assert(0/false) llvm_unreachable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140367 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
d7bb6a014afec8c8e2962d8282db412e664dc2f9 22-Sep-2011 David Blaikie <dblaikie@gmail.com> ArrayRef-ifying MacroArgs::create's arguments argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140288 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
62ec1f2fd7368542bb926c04797fb07023547694 17-Sep-2011 Francois Pichet <pichet2000@gmail.com> Rename LangOptions::Microsoft to LangOptions::MicrosoftExt to make it clear 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
/external/clang/lib/Lex/PPMacroExpansion.cpp
fba18aa8f2cd1994dc65e8cb9f4be201c560dc0b 16-Sep-2011 Douglas Gregor <dgregor@apple.com> Add an experimental flag -fauto-module-import that automatically turns
#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
/external/clang/lib/Lex/PPMacroExpansion.cpp
5471bc85b69912e3b448de004498a80c0de32296 08-Sep-2011 Douglas Gregor <dgregor@apple.com> Allow C++0x enumerations with a fixed underlying type in
Objective-C. The @encode'ing of such an enumeration type is the same
as its underlying type. <rdar://problem/5276348>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139297 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
e97179c675b341927807c718be215c8d1aab8acb 08-Sep-2011 Douglas Gregor <dgregor@apple.com> Implement the Objective-C 'instancetype' type, which is an alias of
'id' that can be used (only!) via a contextual keyword as the result
type of an Objective-C message send. 'instancetype' then gives the
method a related result type, which we have already been inferring for
a variety of methods (new, alloc, init, self, retain). Addresses
<rdar://problem/9267640>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139275 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7640c0070361bd365e30fc2eb3b6a64361fa7377 06-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> Advertise support for cxx_range_for as an extension in C++98 mode. Patch by Jean-Daniel Dupas!
Also provide a modicum of test coverage for ranged for in C++98.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139149 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
74e611a5fd0b5977c664d13a07b625ae23527d0d 04-Sep-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Add test case for defaulted copy and move structure validation.
Fix bug this uncovered.
Address minor comments from Doug.
Enable cxx_implicit_moves feature.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139101 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7d100872341f233c81e1d7b72b40457e62c36862 04-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support code-completion for C++ inline methods and ObjC buffering methods.

Previously we would cut off the source file buffer at the code-completion
point; this impeded code-completion inside C++ inline methods and,
recently, with buffering ObjC methods.

Have the code-completion inserted into the source buffer so that it can
be buffered along with a method body. When we actually hit the code-completion
point the cut-off lexing or parsing.

Fixes rdar://10056932&8319466

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139086 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
e2ca828119b8bff4a5c25c6db8ee4fec558451e7 01-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't try keeping a 'LeadingEmptyMacroLoc' in NullStmt. This fails
in the face of buffering C++/ObjC method bodies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138972 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
ece3894a9fe3ce3d282e63c349d84c0923143fe2 29-Aug-2011 Douglas Gregor <dgregor@apple.com> Add and document __has_feature values for the remaining C++0x
features, so clients can check for the availability of these features
even before we get around to implementing them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138741 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
5c5f03e4020e90b9760ec547962ba02b029cc359 18-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Support code-completion inside macro arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137973 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1b2d53647dda5e4a70cea54ec3bedbf167081120 18-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> For the MacroExpands preprocessor callback, also pass the SourceRange
of expansion (for function macros it includes the right paren).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137909 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
e1f6dea1c9593651116fa9a5faa05647d18f3193 07-Aug-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Add a __has_feature macro for generalized initializers, turned off
because we don't support them yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137027 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b3f8c244a0f193229a6fdbcea1a3615aff5b90dc 03-Aug-2011 Douglas Gregor <dgregor@apple.com> Comment the weird behavior of __has_feature(is_empty) and __has_feature(is_pod)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136788 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
9a14ecbdecd89801d87beae92ad60845374e252a 30-Jul-2011 Douglas Gregor <dgregor@apple.com> Fix a thinko in my __is_empty/__is_pod commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136561 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
688761409155b47c39eb5dae1b8c6c8a9f43307a 30-Jul-2011 Douglas Gregor <dgregor@apple.com> Turn off __has_feature(is_empty) and __has_feature(is_pod) if the
libstdc++ hack has reverted these type traits to keywords. Icky, but
fixes <rdar://problem/9836262>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136560 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
bf340e452339e374ea6eef78c1f0a2abdd16c5a3 26-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rename create(MacroArg)InstantiationLoc to create(MacroArg)ExpansionLoc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136054 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
edc3dccece244a584f8ebdb81da6c962c08e79be 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rename SourceManager::getInstantiationRange to getExpansionRange.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135915 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
2d3ba4f5a923a90c3fc290ddfba5e36c2d0a9b46 23-Jul-2011 Chris Lattner <sabre@nondot.org> Move ArrayRef to LLVM.h and eliminate now-redundant qualifiers, patch by Jon Mulder!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135855 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
5f9e272e632e951b1efe824cd16acb4d96077930 23-Jul-2011 Chris Lattner <sabre@nondot.org> remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
them into the clang namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135852 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
858a325e5f250c83409137c5609b162983ea6d1e 18-Jul-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Remember to add a has_feature macro for __underlying_type now that it is
correctly impelmented

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135401 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
9e5bb85ac899eeab7c21b5ff9030c3da6ff4837b 14-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Move the rest of the preprocessor terminology from 'instantiate' and
variants to 'expand'. This changed a couple of public APIs, including
one public type "MacroInstantiation" which is now "MacroExpansion". The
rest of the codebase was updated to reflect this, especially the
libclang code. Two of the C++ (and thus easily changed) libclang APIs
were updated as well because they pertained directly to the old
MacroInstantiation class.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135139 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
9f084a3166b684573ba49df28fc5792bc37d92e1 06-Jul-2011 John McCall <rjmccall@apple.com> Change the driver's logic about Objective-C runtimes: abstract out a
structure to hold inferred information, then propagate each invididual
bit down to -cc1. Separate the bits of "supports weak" and "has a native
ARC runtime"; make the latter a CodeGenOption.

The tool chain is still driving this decision, because it's the place that
has the required deployment target information on Darwin, but at least it's
better-factored now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134453 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
5b3284a9275a27f5c4410e25eb8933be540601d6 30-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a caching mechanism for macro expanded tokens.

Previously macro expanded tokens were added to Preprocessor's bump allocator and never released,
even after the TokenLexer that were lexing them was finished, thus they were wasting memory.
A very "useful" boost library was causing clang to eat 1 GB just for the expanded macro tokens.

Introduce a special cache that works like a stack; a TokenLexer can add the macro expanded tokens
in the cache, and when it finishes, the tokens are removed from the end of the cache.

Now consumed memory by expanded tokens for that library is ~ 1.5 MB.

Part of rdar://9327049.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134105 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f85e193739c953358c865005855253af4f68a497 16-Jun-2011 John McCall <rjmccall@apple.com> Automatic Reference Counting.

Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.

Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133103 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
84ee2eeec9f63e4938bafd060105fa4f0c9cd89b 22-May-2011 Douglas Gregor <dgregor@apple.com> Audit and finish the implementation of C++0x nullptr, fixing two
minor issues along the way:
- Non-type template parameters of type 'std::nullptr_t' were not
permitted.
- We didn't properly introduce built-in operators for nullptr ==,
!=, <, <=, >=, or > as candidate functions .

To my knowledge, there's only one (minor but annoying) part of nullptr
that hasn't been implemented: catching a thrown 'nullptr' as a pointer
or pointer-to-member, per C++0x [except.handle]p4.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
d1aab5be8b24f5a65f6448be27020c453ec89019 20-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Revert r131672 until __underlying_type is properly implemented in the
template case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131692 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
0191b6b638ee57cc1108f427fc93d57e75ef7222 19-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement a __has_feature for __underlying_type

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131672 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
c1b5fa41f09512c74030b9a2a0d1564535e22a76 13-May-2011 Peter Collingbourne <peter@pcc.me.uk> Introduce __has_extension macro

__has_extension is a function-like macro which takes the same set
of feature identifiers as __has_feature. It evaluates to 1 if the
feature is supported by Clang in the current language (either as a
language extension or a standard language feature) or 0 if not.

At the same time, add support for the C1X feature identifiers
c_generic_selections (renamed from generic_selections) and
c_static_assert, and document them.

Patch by myself and Jean-Daniel Dupas.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131308 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
feb375d31b7e9108b04a9f55b721d5e0c793a558 13-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement the __is_trivially_copyable type trait

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131270 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
a55e68b7f961d6ef4551c9be9ac18a1e25c7c927 12-May-2011 Howard Hinnant <hhinnant@apple.com> enable __has_feature(is_standard_layout)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131240 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7822ee3ef9f0d5cfd289258614ac31be70097449 12-May-2011 Douglas Gregor <dgregor@apple.com> Implement CWG1170, which makes access-control errors into template
argument deduction failures. Only implemented in C++0x, since this is
a significant change in behavior from C++98/03.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131209 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
3e4c6c4c79a03f5cb0c4671d7c282d623c6dc35e 05-May-2011 Richard Smith <richard-llvm@metafoo.co.uk> Implement support for C++0x alias templates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130953 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
059ce0d92eb5a7da900ae735dc0a2ea3d64f4b0b 01-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Fully implement delegating constructors!

As far as I know, this implementation is complete but might be missing a
few optimizations. Exceptions and virtual bases are handled correctly.

Because I'm an optimist, the web page has appropriately been updated. If
I'm wrong, feel free to downgrade its support categories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130642 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
91d3df506fa66de3919fd7284737eed93e5ed01f 28-Apr-2011 Douglas Gregor <dgregor@apple.com> Only call the MacroExpands callback when we're actually going to
expand the macro, based on a patch by Ori Avtalion. Fixes PR9799.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b7d98d35ea723624345f06e5895ddce2e0388ef0 27-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> If a null statement was preceded by an empty macro keep its instantiation source location
in NullStmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130289 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7412494982c8b50c90961302c3a718633b2c3ab7 26-Apr-2011 Manuel Klimek <klimek@google.com> To be able to replay compilations we need to accurately remodel how
includes get resolved, especially when they are found relatively to
another include file. We also try to get it working for framework
includes, but that part of the code is untested, as I don't have a code
base that uses it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130246 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b7e9589bce9852b4db9575f55ac9137572147eb5 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Implement basic __is_trivial type-trait support, enough to close PR9472.
This introduces a few APIs on the AST to bundle up the standard-based
logic so that programmatic clients have access to exactly the same
behavior.

There is only one serious FIXME here: checking for non-trivial move
constructors and move assignment operators. Those bits need to be added
to the declaration and accessors provided.

This implementation should be enough for the uses of __is_trivial in
libstdc++ 4.6's C++98 library implementation.

Ideas for more thorough test cases or any edge cases missing would be
appreciated. =D

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
4e61ddd644e9c6293697a966d98d7c1905cf63a8 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Sort the type traits in a few places where they weren't previously
sorted in order to prepare for adding some new ones.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130056 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
32c1388f0feef4ea147f881415f5a7225e8cadcc 23-Apr-2011 Chris Lattner <sabre@nondot.org> don't warn about empty macro arguments in c++'0x mode, since it sucked in
the c99 preprocessor. Patch by Jonathan Sauer!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130031 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
a391a4642c5eb98aae606f2a2b7219b1a3619d11 15-Apr-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add __has_feature(cxx_range_for) check for C++11 range-based for loop.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129573 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f111d935722ed488144600cea5ed03a6b5069e8f 15-Apr-2011 Peter Collingbourne <peter@pcc.me.uk> C1X: implement generic selections

As an extension, generic selection support has been added for all
supported languages. The syntax is the same as for C1X.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129554 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
dceb53180ae145915673913a9398ba4a00b05584 26-Mar-2011 Douglas Gregor <dgregor@apple.com> Add a __has_feature check for the 'availability' attribute

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128337 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
c8b9f7977094d0169ec59f9042e85ca854735299 25-Mar-2011 Anders Carlsson <andersca@mac.com> we can now claim to fully support the override control feature in C++0x.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128281 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b5142bb7af5c70fffd09f05172a1379a35a9c29a 16-Mar-2011 Chandler Carruth <chandlerc@gmail.com> Add a 'RawPath' parameter to the PPCallbacks interface. This allows
clients to observe the exact path through which an #included file was
located. This is very useful when trying to record and replay inclusion
operations without it beind influenced by the aggressive caching done
inside the FileManager to avoid redundant system calls and filesystem
operations.

The work to compute and return this is only done in the presence of
callbacks, so it should have no effect on normal compilation.

Patch by Manuel Klimek.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127742 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
4561ecdf27b68d80b3cecc2d80ec32bea0ac2127 15-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Create __has_feature(cxx_noexcept) and mark it as working.
Find out that our C++0x status has only one field for noexcept expression and specification together, and that it was accidentally already marked as fully implemented.
This completes noexcept specification work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
d5313b0bbf3948fe7c63bf46a7da330c96d07309 02-Mar-2011 John McCall <rjmccall@apple.com> Provide an attribute, objc_method_family, to allow the inferred family
of an Objective-C method to be overridden on a case-by-case basis. This
is a higher-level tool than ns_returns_retained &c.; it lets users specify
that not only does a method have different retain/release semantics, but
that it semantically acts differently than one might assume from its name.
This in turn is quite useful to static analysis.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126839 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
84021556baceb76eedf7d44be8ba71d9b8cfacce 28-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Rename tok::eom to tok::eod.

The previous name was inaccurate as this token in fact appears at
the end of every preprocessing directive, not just macro definitions.
No functionality change, except for a diagnostic tweak.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126631 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
738291eedac0f3f3628e34b0b32d6155f280fab2 20-Feb-2011 Richard Smith <richard-llvm@metafoo.co.uk> Turn on __has_feature(cxx_auto_type). The feature is now fully implemented.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126078 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
0750800623dc6d14c4c0c721996ffd4210fcdff3 05-Feb-2011 Douglas Gregor <dgregor@apple.com> Add a __has_feature check for default template arguments in function
templates, a C++0x feature.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124973 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
afdf137c50f7f96ef865cf007f660dd663a8731f 03-Feb-2011 Douglas Gregor <dgregor@apple.com> Add __has_feature() for each of the type traits

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
11fe175346242744bd9cb4040f3c84e243934134 27-Jan-2011 Ted Kremenek <kremenek@apple.com> Wire up attributes 'ns_consumed' and 'cf_consumed' in the static analyzer's ObjC retain/release checker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124386 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
12b9434d5bf801e24242b1f6fd04899f8a7fa92c 27-Jan-2011 Ted Kremenek <kremenek@apple.com> Hook up attribute ns_consumes_self in the ObjC retain/release checker in the static analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124360 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
56209ffed29ab82d0d65ac0d1d026fe179321afd 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Add __has_feature(cxx_reference_qualified_functions); update tests and
documentation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124322 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
c78e259a5fafd889f5945bc2c48fea48cb3ef9d0 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Clean up the C++0x __has_feature tests. Specifically:
- Don't publicize a C++0x feature through __has_feature if we aren't
in C++0x mode (even if the feature is available only with a
warning).
- "auto" is not implemented well enough for its __has_feature to be
turned on.
- Fix the test of C++0x __has_feature to actually test what we're
trying to test. Searching for the substring "foo" when our options
are "foo" and "no_foo" doesn't work :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124291 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
16cf8f5b6f582876b64e132715280fc473f876b9 25-Jan-2011 Douglas Gregor <dgregor@apple.com> Downgrade the error about rvalue references to an extension warning
and turn on __has_feature(cxx_rvalue_references). The core rvalue
references proposal seems to be fully implemented now, pending lots
more testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124169 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
83d7781f9dc869022d48dbabde34dbfbd6f59a17 20-Jan-2011 Douglas Gregor <dgregor@apple.com> Eradicate any mention of C++0x concepts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123860 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
4c9131ac2d0a65cb7c0179d438ae56f7978ab012 19-Jan-2011 Douglas Gregor <dgregor@apple.com> Variadic templates are fully implemented.

Turn on the __has_feature switch for variadic templates, document
their completion, and put the ExtWarn into the c++0x-extensions
warning group.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123854 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
3ed572e6252683917cffee0c2b2f41a20e7289c4 15-Jan-2011 Chris Lattner <sabre@nondot.org> clean up some dead code around __has_include() processing code identified by the ted-o-matic.

rdar://8867482


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123522 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
0827408865e32789e0ec4b8113a302ccdc531423 15-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix diagnostic pragmas.

Diagnostic pragmas are broken because we don't keep track of the diagnostic state changes and we only check the current/latest state.
Problems manifest if a diagnostic is emitted for a source line that has different diagnostic state than the current state; this can affect
a lot of places, like C++ inline methods, template instantiations, the lexer, etc.

Fix the issue by having the Diagnostic object keep track of the source location of the pragmas so that it is able to know what is the diagnostic state at any given source location.

Fixes rdar://8365684.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
44aa1f397855f130e88e62ffc1029f7f83bb5d2e 20-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r119838 "Don't warn for empty 'if' body if there is a macro that expands to nothing"
and use a better and more general approach, where NullStmt has a flag to indicate whether it was preceded by an empty macro.

Thanks to Abramo Bagnara for the hint!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119887 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
a25b6a4b43e8b9611f7506e5fe1b448833b10a46 19-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't warn for empty 'if' body if there is a macro that expands to nothing, e.g:

if (condition)
CALL(0); // empty macro but don't warn for empty body.

Fixes rdar://8436021.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119838 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
cb7b1e17b63967317ab5cc55682168cf0380519a 12-Nov-2010 Douglas Gregor <dgregor@apple.com> Make sure to always check the result of
SourceManager::getPresumedLoc(), so that we don't try to make use of
an invalid presumed location. Doing so can cause crashes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118885 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
513038d9776fd2a2d19e9c6dfd3ab677cbcaa3c2 09-Nov-2010 NAKAMURA Takumi <geek4civic@gmail.com> lib/Lex/PPMacroExpansion.cpp: Fixup to appease MSVC.

Confirmed on MSVS10.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118496 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
6665ffbfc397f68e3fb15844597674d5861995b6 09-Nov-2010 Douglas Gregor <dgregor@apple.com> Appeasing MSVC, take 3

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118493 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b87b29ec2ae449686a745c257e577b7158d8d4aa 09-Nov-2010 Douglas Gregor <dgregor@apple.com> Try to appease MSVC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118487 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
5e0fb35232366d1956647c2e01ea183242fba28c 09-Nov-2010 Douglas Gregor <dgregor@apple.com> sprintf -> snprintf conversion, from Vladimir Kirillov

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118478 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
4820908be98f340a4c2a563a622ae693a7219c50 08-Nov-2010 John McCall <rjmccall@apple.com> Document Clang's support for attributes on individual enumerators and
tweak the documentation for deprecation-with-message. Provide __has_feature
tests for both. rdar://problem/8605692



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118435 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
295a2a617ac335f590e430ab7fcd98f8ce109251 30-Oct-2010 Douglas Gregor <dgregor@apple.com> Make the deserialization of macro definitions lazy, so that we can
load identifiers without loading their corresponding macro
definitions. This is likely to improve PCH performance slightly, and
reduces deserialization stack depth considerably when using
preprocessor metaprogramming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117750 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
ecdcb883cbc6bb4a2445dc6f02d58d9bdb54a0ed 21-Oct-2010 Douglas Gregor <dgregor@apple.com> Extend the preprocessing record and libclang with support for
inclusion directives, keeping track of every #include, #import,
etc. in the translation unit. We keep track of the source location and
kind of the inclusion, how the file name was spelled, and the
underlying file to which the inclusion resolved.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116952 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
cae5095c116c29a4e52c91fa0ad88df09dd2b45f 20-Oct-2010 Anders Carlsson <andersca@mac.com> Add a __has_attribute macro that works much like __has_feature and __has_builtin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116906 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1274ccd90aec0b205fc838c3d504821ccfb55482 09-Oct-2010 Douglas Gregor <dgregor@apple.com> Implement C++0x scoped enumerations, from Daniel Wallin! (and tweaked a
bit by me).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116122 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
dab60ad68a3a98d687305941a3852e793705f945 01-Oct-2010 Douglas Gregor <dgregor@apple.com> Implement the C++0x "trailing return type" feature, e.g.,

auto f(int) -> int

from Daniel Wallin!

(With a few minor bug fixes from me).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115322 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
37bf9d2bb74944c9d9a52522412bc077629977f1 24-Sep-2010 Anders Carlsson <andersca@mac.com> Allow the use of C++0x deleted functions as an extension in C++98.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114762 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f6c09775819cf851d71750bfc056dfe39ce801e1 01-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Implement __has_feature(cxx_inline_namespaces)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112671 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1ef8a2e7675f3d8b6e8d9963b00378086e1dcdc7 29-Aug-2010 John McCall <rjmccall@apple.com> Add support for Microsoft's __pragma in the preprocessor.
Patch by Francois Pichet!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112391 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f29c5233085a5af795c3c01b94d319e5b3235d56 25-Aug-2010 Douglas Gregor <dgregor@apple.com> Implement code completion for preprocessor expressions and in macro
arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111976 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
dd0e490c24aeade2c59ca4cae171199f6af9f02e 31-Jul-2010 Ted Kremenek <kremenek@apple.com> After a lengthy design discussion, add support for "ownership attributes" for malloc/free checking. Patch by Andrew McGregor!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109939 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1f84f8d970a673e487b40d341cd3e8d52ca9cc22 24-Jun-2010 Eric Christopher <echristo@apple.com> More clang support for darwin tls. Add a __has_feature macro and
target specific preprocessor define as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106715 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
3ff9d1110fed519ad81302ecc154814c33a4962b 29-Apr-2010 Ted Kremenek <kremenek@apple.com> Add '__has_feature' support for weak ObjC classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102588 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
6d9afd95d6b4bf84a4d1909ce47c54199d880812 29-Apr-2010 Ted Kremenek <kremenek@apple.com> Sort '__has_feature' cases. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102587 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
8ff66de0d036842450eb979882f826d5252100f4 26-Mar-2010 Chris Lattner <sabre@nondot.org> fix a case where macro expansion should be disabled, patch by
Abramo Bagnara!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99626 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
453091cc2082e207ea2c2dda645a9bc01b37fb0c 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Audit all Preprocessor::getSpelling() callers, improving failure
recovery for those that need it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98689 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
444b035b5325973bdd5a622006fda6367a670a94 05-Mar-2010 Ted Kremenek <kremenek@apple.com> Augment __has_feature to report that Clang supports adding attribute 'unused'
to an Objective-C instance variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97850 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
ddeea5644367c9c153c9fee9e51bdea85ce43cbd 27-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Add an overload of Preprocessor::getSpelling which takes a SmallVector and
returns a StringRef. Use it to simplify some repetitive code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97322 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1359300dd68bf428915605c6be34afda20886aa3 18-Feb-2010 Ted Kremenek <kremenek@apple.com> Add __has_feature support for attributes ns_returns_not_retained
and cf_returns_not_retained.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96538 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b176591b2e24a985fc90ee2d259f914ba3fcec5b 27-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Use raw_ostreams in Preprocessor::ExpandBuiltinMacro. Still not nice but less fragile than the old code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94679 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1367897633c2f5bb77f97cb05c76d5f80ead9976 26-Jan-2010 Douglas Gregor <dgregor@apple.com> Fix typo in comment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94576 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f45b646244705410866d62f1d8bf017a047ed662 22-Jan-2010 Chris Lattner <sabre@nondot.org> revert my patch for rdar://7520940 that warns when a published header
is #included with "foo.h" style syntax instead of framework syntax.
It produced too much noise.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94120 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
4ef4c6b232121dd611fc4ff9711052aaace635a3 13-Jan-2010 Sean Hunt <rideau3@gmail.com> Add a bunch more feature-checking macros for C++0x features. Some of these are
disabled with the intent that users can start with them now and not have to change
a thing to have them work when we implement the features.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93312 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
a139481e62fdb209d9d87a54a5733f989d2e8d51 10-Jan-2010 Chris Lattner <sabre@nondot.org> stringref'ize a bunch of filename handling logic. Much
nicer than passing around two const char*'s.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
804f65271953f358dc01bfcf74a93e8c93c5b2d6 10-Jan-2010 Chris Lattner <sabre@nondot.org> implement rdar://7520940: published framework headers should
import other headers within the same framework with the full
framework path, not with a relative include.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93083 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
32592e89e1903d4e2c1b96faf4fccf5e64f71a0e 09-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Simplify with StringSwitch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
561395bead16b9dc9b0d5bfb6b257a9ed4545db6 14-Dec-2009 Chris Lattner <sabre@nondot.org> move the VarargsElided member of MacrosArgs to shrink the MacroArgs struct
on 64-bit targets. Pass Preprocessor into create/destroy methods of MacroArgs
even though it isn't used yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91345 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
265f52e920a46c8029760ced39363ffb48c43f10 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Get rid of some diagnostics that don't follow our rules for -pedantic
diagnostics (specifically, that any extension in a compiler-reserved namespace
shouldn't trigger a diagnostic).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90826 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7d9bd4257f817494b2fa5b310df05807050a9c18 03-Dec-2009 Ted Kremenek <kremenek@apple.com> Add 'has_feature(cxx_exceptions)' to allow code to determine via preprocessor logic if C++ exceptions are enabled.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90378 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
2eca546c5836938dff3a517fbe43f266073215ab 03-Dec-2009 Ted Kremenek <kremenek@apple.com> Rename has_feature(rtti) to has_feature(cxx_rtti) for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90376 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
848001c0cdddc05b7fd71251e1b635c0af24896d 03-Dec-2009 Ted Kremenek <kremenek@apple.com> Add "has_feature" support for C++ RTTI.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90368 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
92bd8c70a6837b647a6c55964f8d0a50bf561dbc 02-Nov-2009 John Thompson <John.Thompson.JTSoftware@gmail.com> Added __has_include and __has_include_next.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85834 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
37473829cb2308af5b268a2d58bf3d7fa2056610 16-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> PR4991: Properly remove trailing newline from __TIMESTAMP__.
Replace strcpy with memcpy while at it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1eb4433ac451dc16f4133a88af2d002ac26c58ef 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tabs, and whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
8a5a9aaddb627c0884c2ed8db55cc29fdb601195 31-Aug-2009 David Chisnall <csdavec@swan.ac.uk> Updated GNU runtime non-fragile ABI.
Added -fconstant-string-class= option.
Added __has_feature() test for non-fragile ABI.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80591 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
148772a841cae6f32db16d890e788b92a763bb3f 13-Jun-2009 Chris Lattner <sabre@nondot.org> implement and document a new __has_feature and __has_builtin magic
builtin preprocessor macro. This appears to work with two caveats:
1) builtins are registered in -E mode, and 2) target-specific builtins
are unconditionally registered even if they aren't supported by the
target (e.g. SSE4 builtin when only SSE1 is enabled).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73289 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
beaaccd8e2a8748f77b66e2b330fb9136937e14c 21-May-2009 Jay Foad <jay.foad@gmail.com> Use v.data() instead of &v[0] when SmallVector v might be empty.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72210 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
9fc9e77c2fd15a88bd19ff3fdc9eb9716742f720 13-May-2009 Chris Lattner <sabre@nondot.org> When we expect two arguments but have zero, make sure to add
two empty arguments. Also, add an assert so that this bug
manifests as an assertion failure, not a valgrind problem.

This fixes rdar://6880648 - [cpp] crash in ArgNeedsPreexpansion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71616 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
97e2de171de555feb1ef422e71874082a67498c9 20-Apr-2009 Chris Lattner <sabre@nondot.org> fix the second half of PR4006 and rdar://6807000 by treating
() as being either zero arguments or one empty argument depending
on situation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69627 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
dff070fb0f2880806ef1ae5471ace37a97dd9e6a 19-Apr-2009 Chris Lattner <sabre@nondot.org> Fix PR3917: the location of a #line directive is the location of the first _.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69485 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
5c497a80c60061ba5bc3d8bd1518c15b7d7556dd 18-Apr-2009 Chris Lattner <sabre@nondot.org> fix PR3927 by being more careful about the pp test for identifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69423 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
0a4f1b9550b81b1391d79c0dd5a416951f4df9a6 18-Apr-2009 Chris Lattner <sabre@nondot.org> Substantially restructure function-like macro argument parsing.
Highlights: PP::isNextPPTokenLParen() no longer eats the (
when present. We now simplify slightly the logic parsing
macro arguments. We now handle PR3937 and other related cases
correctly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
c1f9d828c733ec1eba06d01070735d1f36fda733 13-Apr-2009 Chris Lattner <sabre@nondot.org> implement the microsoft/gnu "__COUNTER__" macro: rdar://4329310


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68933 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
555589dd0121da04544e5b6a2049aed005f46d78 10-Apr-2009 Chris Lattner <sabre@nondot.org> simplify code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68825 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
4fcb4cd6556cd783b2a8cd2b7266ae4696e605bb 25-Mar-2009 Chris Lattner <sabre@nondot.org> fix PR3880, fixing a comma swallowing bug handling macros that only take
... arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67706 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
03162d6d2aef5667816ce19788b6a752299bea43 25-Mar-2009 Chris Lattner <sabre@nondot.org> remove some dead code. ArgTokens can never be empty, because it is always
terminated with an EOF token. The condition it is trying to check for is
handled by this code above.

// Empty arguments are standard in C99 and supported as an extension in
// other modes.
if (ArgTokens.empty() && !Features.C99)
Diag(Tok, diag::ext_empty_fnmacro_arg);




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67705 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
ba9eee326434ba62b180271d3cc2999d94ee0de4 12-Mar-2009 Chris Lattner <sabre@nondot.org> add a callback for macro expansion, based on a patch by Paolo Bolzoni!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66799 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1fa495304c81e03f07f278a47b5efe9317104aab 08-Mar-2009 Chris Lattner <sabre@nondot.org> simplify some logic by making ScratchBuffer handle the application of trailing
\0's to created tokens instead of making all clients do it. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
3daed52a57d03765223021f5f921bdc280c8f3cc 02-Mar-2009 Chris Lattner <sabre@nondot.org> improve compatibility with GCC 4.4, patch by Michel Salim (PR3697)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65884 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
6678133b8ce642f93e5141f056fa643112041ad0 15-Feb-2009 Chris Lattner <sabre@nondot.org> add a new SourceManager::getInstantiationRange helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64606 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
081927bbabf1b5c28ce695e93472f8bcd42b7c0d 15-Feb-2009 Chris Lattner <sabre@nondot.org> fix PR3579: __LINE__ expands to the presumed location of the
*end* of a macro instantiation, not the start of it. This is
really all about bug-for-bug compatibility with GCC, but not
doing this breaks the FreeBSD kernel.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64604 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
e7fb48466afcbf2c4ccdfa658824282fdc3c512c 15-Feb-2009 Chris Lattner <sabre@nondot.org> track "just a little more" location information for macro instantiations.
Now instead of just tracking the expansion history, also track the full
range of the macro that got replaced. For object-like macros, this doesn't
change anything. For _Pragma and function-like macros, this means we track
the locations of the ')'.

This is required for PR3579 because apparently GCC uses the line of the ')'
of a function-like macro as the location to expand __LINE__ to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
500d3297d2a21edeac4d46cbcbe21bc2352c2a28 29-Jan-2009 Chris Lattner <sabre@nondot.org> move library-specific diagnostic headers into library private dirs. Reduce
redundant #includes. Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
20c6b3b85e186cd52d5d99489132d71d498159eb 27-Jan-2009 Chris Lattner <sabre@nondot.org> Split the single monolithic DiagnosticKinds.def file into one
.def file for each library. This means that adding a diagnostic
to sema doesn't require all the other libraries to be rebuilt.

Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
b9c3f966b103f7cfe8e5e60007c4c8b38f7298eb 27-Jan-2009 Chris Lattner <sabre@nondot.org> Introduce a new PresumedLoc class to represent the concept of a location
as reported to the user and as manipulated by #line. This is what __FILE__,
__INCLUDE_LEVEL__, diagnostics and other things should follow (but not
dependency generation!).

This patch also includes several cleanups along the way:

- SourceLocation now has a dump method, and several other places
that did similar things now use it.
- I cleaned up some code in AnalysisConsumer, but it should probably be
simplified further now that NamedDecl is better.
- TextDiagnosticPrinter is now simplified and cleaned up a bit.

This patch is a prerequisite for #line, but does not actually provide
any #line functionality.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
e7689886d6a68507ae90ca330bd24bf89d4d6df1 26-Jan-2009 Chris Lattner <sabre@nondot.org> remove my hacks that aggressively threw away multiple
instantiation history in an effort to speed up c99-intconst-1.c.
Now that multiple nested instantiations are allowed, we just
make them and don't pay the cost of lookups. With the other
changes that went in before this, reverting this is actually
a speedup for c99-intconst-1.c, speeding it up from 1.96s to 1.80s,
and preserves much better loc info.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63036 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
47246be8ac5b0ddde6c402b8fc6946b6135487b5 26-Jan-2009 Chris Lattner <sabre@nondot.org> This change refactors some of the low-level lexer interfaces a bit.
Token now has a class of kinds for "literals", which include
numeric constants, strings, etc. These tokens can optionally have
a pointer to the start of the token in the lexer buffer. This
makes it faster to get spelling and do other gymnastics, because we
don't have to go through source locations.

This change is performance neutral, but will make other changes
more feasible down the road.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63028 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
7c35122df2998d9f615c3ebd4b71a91a2c6287d6 26-Jan-2009 Chris Lattner <sabre@nondot.org> eagerly resolve the spelling locations of macro argument preexpansions.
This reduces fsyntax-only time on c99-intconst-1.c from 2.43s down to
2.01s (20%), reducing the number of fileid lookups from 2529040 linear
and 64771121 binary to 5625902 linear and 4151182 binary.

This knocks getFileID down to only 4.6% of compile time on this testcase.
At this point, malloc/free is over 35% of compile time, primarily allocating
MacroArgs objects and their argument preexpansion vectors.

I don't feel like malloc avoiding right now, so I'm just going to call
this good.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
9bd0d59026d4995148443512ab5ddf009117bfd8 26-Jan-2009 Chris Lattner <sabre@nondot.org> Eagerly resolve the spelling location of the tokens in a definition
of a macro. Since these tokens may themselves be from macro
expansions, we need to resolve down to the spelling loc when the
macro ends up being instantiated. Instead of resolving this for
each token expanded from the macro definition, just do it once when
the macro is defined. This speeds up clang on c99-intconst-1.c from
2.66s to 2.43s (9.5%), reducing the FileID lookups from 407244 linear and
114175649 binary to 2529040 linear and 64771121 binary.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62993 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
de7aeefc5573d669ed476d7bda7a8940d3bcadb7 26-Jan-2009 Chris Lattner <sabre@nondot.org> Check in the long promised SourceLocation rewrite. This lays the
ground work for implementing #line, and fixes the "out of macro ID's"
problem.

There is nothing particularly tricky about the code, other than the
very performance sensitive SourceManager::getFileID() method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62978 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f7cf85b330bedd2877e1371fb0a83e99751ae162 16-Jan-2009 Chris Lattner <sabre@nondot.org> more SourceLocation lexicon change: instead of referring to the
"logical" location, refer to the "instantiation" location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62316 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
0ea76727ae91bca918a8414ed85b530eddcfedeb 15-Dec-2008 Ted Kremenek <kremenek@apple.com> Preprocessor: Allocate MacroInfo objects using a BumpPtrAllocator instead using new/delete. This speeds up -Eonly on Cocoa.h using the regular lexer by 1.8% and the PTHLexer by 3%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61042 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
dd95d6cca5f52eabbc25e5928a60078a54a4c875 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Handle another case where we should use PTHLexer as an alternative to the normal Lexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59736 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
a275a191fccfb2f9dff57f43d76dd266ff33bff7 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Assign the result of getCurrentFileLexer() to a PreprocessorLexer* instead of Lexer* (narrower interface).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59691 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
ac80c6e06b5815228e46294e51c493a74a21f8bc 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Use PreprocessorLexer::getFileID() instead of Lexer::getFileLoc(). This is an intermediate step to having getCurrentLexer() return a PreprocessorLexer* instead of a Lexer*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59672 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
1a531570d294ffc300cce1bc5e73de847a370f4f 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Move more cases of using 'CurLexer' to 'CurPPLexer'.
Use PTHLexer::isNextPPTokenLParen() when using the PTHLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59671 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
17ff58a63197b398ae52697b088dc0fb8b255519 19-Nov-2008 Ted Kremenek <kremenek@apple.com> When using a PTHLexer, use DiscardToEndOfLine() instead of ReadToEndOfLine().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59668 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
68a91d5736c2c03d60a9d1c59d08191b8e0d6c52 18-Nov-2008 Ted Kremenek <kremenek@apple.com> Replace more uses of 'CurLexer->' with 'CurPPLexer->'. No performance change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59482 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
4411f46050216a139ab2fc7ff145ec384d11ec7f 30-Sep-2008 Chris Lattner <sabre@nondot.org> Fix the root cause of PR2750 instead of the side effect.

NumericLiteral parser is not careful about overrun because
it should never be possible. It implicitly expects that its
input matched the regex for pp-constant. Because of this, it
knows it can't be pointing to a prefix of something that
looks like a number. This is all fine, except that __LINE__
does not prevent implicit concatenation from happening. Fix
__LINE__ to not do this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56818 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
63bc0358706e63faf705803c4799e073b91a63f0 08-May-2008 Chris Lattner <sabre@nondot.org> The awesome GNU "comma elision extension" works with both the standard
__VA_ARGS__ syntax as well as with the amazingly awesome GNU "named
variadic macro" extension. Allow it with the GNU syntax as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50843 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
9a4939f7edb5dc40b20865edbd4ddd830450423d 21-Mar-2008 Sam Bishop <sam@bishop.dhs.org> Plug a memory leak in the "this macro expands into a single trivially-
expanded token" case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48637 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
f90a24857851f7d28797205c810aae1708eaa60c 18-Mar-2008 Chris Lattner <sabre@nondot.org> move #include to the file that needs it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48485 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp
bda0b626e74513950405c27525af87e214e605e2 16-Mar-2008 Chris Lattner <sabre@nondot.org> Make a major restructuring of the clang tree: introduce a top-level
lib dir and move all the libraries into it. This follows the main
llvm tree, and allows the libraries to be built in parallel. The
top level now enforces that all the libs are built before Driver,
but we don't care what order the libs are built in. This speeds
up parallel builds, particularly incremental ones.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/Lex/PPMacroExpansion.cpp