Douglas Gregor
56d5f0abaa
Add __has_feature(cxx_reference_qualified_functions); update tests and
...
documentation.
llvm-svn: 124322
2011-01-26 21:25:54 +00:00
Douglas Gregor
c41d94eb1a
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 :)
llvm-svn: 124291
2011-01-26 15:36:03 +00:00
Douglas Gregor
0098499f7d
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.
llvm-svn: 124169
2011-01-25 02:17:32 +00:00
Douglas Gregor
312ab72dbd
Eradicate any mention of C++0x concepts.
...
llvm-svn: 123860
2011-01-19 23:15:20 +00:00
Douglas Gregor
eecc6bc388
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.
llvm-svn: 123854
2011-01-19 22:11:50 +00:00
Chris Lattner
008c0a4a68
clean up some dead code around __has_include() processing code identified by the ted-o-matic.
...
rdar://8867482
llvm-svn: 123522
2011-01-15 06:57:04 +00:00
Argyrios Kyrtzidis
1cb0de1d4c
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.
llvm-svn: 121873
2010-12-15 18:44:22 +00:00
Argyrios Kyrtzidis
de2bdf637e
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!
llvm-svn: 119887
2010-11-20 02:04:01 +00:00
Argyrios Kyrtzidis
90ee2a4ecf
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.
llvm-svn: 119838
2010-11-19 20:54:25 +00:00
Douglas Gregor
453b012513
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.
llvm-svn: 118885
2010-11-12 07:15:47 +00:00
NAKAMURA Takumi
c0d7d99cc1
lib/Lex/PPMacroExpansion.cpp: Fixup to appease MSVC.
...
Confirmed on MSVS10.
llvm-svn: 118496
2010-11-09 06:27:32 +00:00
Douglas Gregor
ae674f3148
Appeasing MSVC, take 3
...
llvm-svn: 118493
2010-11-09 05:43:53 +00:00
Douglas Gregor
416463f7f3
Try to appease MSVC
...
llvm-svn: 118487
2010-11-09 04:38:09 +00:00
Douglas Gregor
9169dcb7a9
sprintf -> snprintf conversion, from Vladimir Kirillov
...
llvm-svn: 118478
2010-11-09 03:20:07 +00:00
John McCall
f71b45367f
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
llvm-svn: 118435
2010-11-08 19:48:17 +00:00
Douglas Gregor
5ef9e33137
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.
llvm-svn: 117750
2010-10-30 00:23:06 +00:00
Douglas Gregor
796d76a663
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.
llvm-svn: 116952
2010-10-20 22:00:55 +00:00
Anders Carlsson
274a70ed7f
Add a __has_attribute macro that works much like __has_feature and __has_builtin.
...
llvm-svn: 116906
2010-10-20 02:31:43 +00:00
Douglas Gregor
0bf3140424
Implement C++0x scoped enumerations, from Daniel Wallin! (and tweaked a
...
bit by me).
llvm-svn: 116122
2010-10-08 23:50:27 +00:00
Douglas Gregor
7fb25418ed
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).
llvm-svn: 115322
2010-10-01 18:44:50 +00:00
Anders Carlsson
991285e425
Allow the use of C++0x deleted functions as an extension in C++98.
...
llvm-svn: 114762
2010-09-24 21:25:25 +00:00
Sebastian Redl
a93bb5b807
Implement __has_feature(cxx_inline_namespaces)
...
llvm-svn: 112671
2010-08-31 23:28:47 +00:00
John McCall
89e925d78e
Add support for Microsoft's __pragma in the preprocessor.
...
Patch by Francois Pichet!
llvm-svn: 112391
2010-08-28 22:34:47 +00:00
Douglas Gregor
ec00a26855
Implement code completion for preprocessor expressions and in macro
...
arguments.
llvm-svn: 111976
2010-08-24 22:20:20 +00:00
Ted Kremenek
d21139a34f
After a lengthy design discussion, add support for "ownership attributes" for malloc/free checking. Patch by Andrew McGregor!
...
llvm-svn: 109939
2010-07-31 01:52:11 +00:00
Eric Christopher
03256c32ff
More clang support for darwin tls. Add a __has_feature macro and
...
target specific preprocessor define as well.
llvm-svn: 106715
2010-06-24 02:02:00 +00:00
Ted Kremenek
e506ddc71e
Add '__has_feature' support for weak ObjC classes.
...
llvm-svn: 102588
2010-04-29 02:06:46 +00:00
Ted Kremenek
6459939112
Sort '__has_feature' cases. No functionality change.
...
llvm-svn: 102587
2010-04-29 02:06:42 +00:00
Chris Lattner
8c5d05a299
fix a case where macro expansion should be disabled, patch by
...
Abramo Bagnara!
llvm-svn: 99626
2010-03-26 17:49:16 +00:00
Douglas Gregor
dc970f0866
Audit all Preprocessor::getSpelling() callers, improving failure
...
recovery for those that need it.
llvm-svn: 98689
2010-03-16 22:30:13 +00:00
Ted Kremenek
a00c5db1a8
Augment __has_feature to report that Clang supports adding attribute 'unused'
...
to an Objective-C instance variable.
llvm-svn: 97850
2010-03-05 22:43:32 +00:00
Benjamin Kramer
0a1abd4088
Add an overload of Preprocessor::getSpelling which takes a SmallVector and
...
returns a StringRef. Use it to simplify some repetitive code.
llvm-svn: 97322
2010-02-27 13:44:12 +00:00
Ted Kremenek
f2b64ba858
Add __has_feature support for attributes ns_returns_not_retained
...
and cf_returns_not_retained.
llvm-svn: 96538
2010-02-18 00:06:04 +00:00
Benjamin Kramer
b925f7707e
Use raw_ostreams in Preprocessor::ExpandBuiltinMacro. Still not nice but less fragile than the old code.
...
llvm-svn: 94679
2010-01-27 16:38:22 +00:00
Douglas Gregor
64213261b4
Fix typo in comment
...
llvm-svn: 94576
2010-01-26 19:43:43 +00:00
Chris Lattner
fde85356c6
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.
llvm-svn: 94120
2010-01-22 00:14:44 +00:00
Alexis Hunt
af4e28d897
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.
llvm-svn: 93312
2010-01-13 08:31:49 +00:00
Chris Lattner
d081f8c851
stringref'ize a bunch of filename handling logic. Much
...
nicer than passing around two const char*'s.
llvm-svn: 93094
2010-01-10 01:35:12 +00:00
Chris Lattner
2ceb625f59
implement rdar://7520940: published framework headers should
...
import other headers within the same framework with the full
framework path, not with a relative include.
llvm-svn: 93083
2010-01-10 00:24:58 +00:00
Benjamin Kramer
60fbd641ad
Simplify with StringSwitch.
...
llvm-svn: 93064
2010-01-09 18:53:11 +00:00
Chris Lattner
ffbf2de1d8
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.
llvm-svn: 91345
2009-12-14 22:12:52 +00:00
Eli Friedman
be6f4cffca
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).
llvm-svn: 90826
2009-12-08 02:22:26 +00:00
Ted Kremenek
5ef26fb4fd
Add 'has_feature(cxx_exceptions)' to allow code to determine via preprocessor logic if C++ exceptions are enabled.
...
llvm-svn: 90378
2009-12-03 01:34:15 +00:00
Ted Kremenek
c3fe01943f
Rename has_feature(rtti) to has_feature(cxx_rtti) for clarity.
...
llvm-svn: 90376
2009-12-03 01:31:28 +00:00
Ted Kremenek
4bc256ec9d
Add "has_feature" support for C++ RTTI.
...
llvm-svn: 90368
2009-12-03 01:02:35 +00:00
John Thompson
ac0b098d4d
Added __has_include and __has_include_next.
...
llvm-svn: 85834
2009-11-02 22:28:12 +00:00
Benjamin Kramer
26ddfee3b2
PR4991: Properly remove trailing newline from __TIMESTAMP__.
...
Replace strcpy with memcpy while at it.
llvm-svn: 82043
2009-09-16 13:10:04 +00:00
Mike Stump
11289f4280
Remove tabs, and whitespace cleanups.
...
llvm-svn: 81346
2009-09-09 15:08:12 +00:00
David Chisnall
5778fce141
Updated GNU runtime non-fragile ABI.
...
Added -fconstant-string-class= option.
Added __has_feature() test for non-fragile ABI.
llvm-svn: 80591
2009-08-31 16:41:57 +00:00
Chris Lattner
b6f77af532
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).
llvm-svn: 73289
2009-06-13 07:13:28 +00:00