Michael J. Spencer
f6efe58d45
Replace all uses of PathV1::exists with PathV2::fs::exists.
...
llvm-svn: 123150
2011-01-10 02:34:13 +00:00
Chris Lattner
56f64c14b7
fix rdar://8823139, a crash on a comment in a preprocessed .s file
...
that contains the ## operator.
llvm-svn: 122946
2011-01-06 05:01:51 +00:00
Chandler Carruth
540960f4a2
Fix PR8654, ensuring each branch of an #if, #elif, #else, ... chain
...
receives a PPCallback.
Patch by Richard Smith.
llvm-svn: 122755
2011-01-03 17:40:17 +00:00
Jeffrey Yasskin
b3321531a8
Change all self assignments X=X to (void)X, so that we can turn on a
...
new gcc warning that complains on self-assignments and
self-initializations. Fix one bug found by the warning, in which one
clang::OverloadCandidate constructor failed to initialize its
FunctionTemplate member.
llvm-svn: 122459
2010-12-23 01:01:28 +00:00
Abramo Bagnara
ea4f7c7761
Introduced raw_identifier token kind.
...
llvm-svn: 122394
2010-12-22 08:23:18 +00:00
Nick Lewycky
2e998b7a6e
Add missing standard includes. Patch by Joerg Sonnenberger!
...
llvm-svn: 122194
2010-12-19 20:49:25 +00:00
Michael J. Spencer
f28df4cdba
Replace all uses of PathV1::isAbsolute with PathV2::is_{absolute,relative}.
...
llvm-svn: 122087
2010-12-17 21:22:22 +00:00
Michael J. Spencer
d9da7a1f16
MemoryBuffer API update.
...
llvm-svn: 121956
2010-12-16 03:28:14 +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
Douglas Gregor
9c7bd2f535
Don't crash when code-completing after "#include <". It would be far
...
better to actually produce a decent set of completions by checking the
system include paths, but not today. Fixes PR8744.
llvm-svn: 121431
2010-12-09 23:35:36 +00:00
Michael J. Spencer
f25faaaffb
Use error_code instead of std::string* for MemoryBuffer.
...
llvm-svn: 121378
2010-12-09 17:36:38 +00:00
Ted Kremenek
8c4c74f4fb
Fix diagnostic for reporting bad escape sequence.
...
Patch by Paul Curtis!
llvm-svn: 120759
2010-12-03 00:09:56 +00:00
Michael J. Spencer
8aaf49959c
Merge System into Support.
...
llvm-svn: 120297
2010-11-29 18:12:39 +00:00
Chris Lattner
dd278430a3
change the 'is directory' indicator to be a null-or-not
...
pointer that is passed down through the APIs, and make
FileSystemStatCache::get be the one that filters out
directory lookups that hit files. This also paves the
way to have stat queries be able to return opened files.
llvm-svn: 120060
2010-11-23 21:17:56 +00:00
Chris Lattner
8f0583daa2
simplify the cache miss handling code, eliminating CacheMissing.
...
llvm-svn: 120038
2010-11-23 20:05:15 +00:00
Chris Lattner
226efd356c
rework the stat cache, pulling it out of FileManager.h into
...
its own header and giving it some more structure. No
functionality change.
llvm-svn: 120030
2010-11-23 19:19:34 +00:00
Chris Lattner
7219a5db6e
don't allow remapping PTH file paths with -fworking-directory, the
...
client should just pass in absolute paths.
llvm-svn: 120012
2010-11-23 09:01:31 +00:00
Chris Lattner
5159f6162e
now the FileManager has a FileSystemOpts ivar, stop threading
...
FileSystemOpts through a ton of apis, simplifying a lot of code.
This also fixes a latent bug in ASTUnit where it would invoke
methods on FileManager without creating one in some code paths
in cindextext.
llvm-svn: 120010
2010-11-23 08:35:12 +00:00
Chris Lattner
7c434b6937
tidy up
...
llvm-svn: 119996
2010-11-23 04:40:26 +00:00
Chris Lattner
8afa6deb1d
remove old compatibility APIs, use StringRef versions instead.
...
llvm-svn: 119935
2010-11-21 09:55:08 +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
Craig Silverstein
1a9ca21881
Several PPCallbacks take an SourceLocation + IdentifierInfo, rather
...
than a Token that holds the same information all in one easy-to-use
package. There's no technical reason to prefer the former -- the
information comes from a Token originally -- and it's clumsier to use,
so I've changed the code to use tokens everywhere.
Approved by clattner
llvm-svn: 119845
2010-11-19 21:33:15 +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
Chris Lattner
39720111e0
move getSpelling from Preprocessor to Lexer, which it is more conceptually related to.
...
llvm-svn: 119479
2010-11-17 07:26:20 +00:00
Chris Lattner
6bab435db6
propagate preprocessor out of StringLiteralParser. It is now
...
possible to create one without a preprocessor.
llvm-svn: 119476
2010-11-17 07:21:13 +00:00
Chris Lattner
2be8aa9611
push the preprocessor out of EncodeUCNEscape
...
llvm-svn: 119475
2010-11-17 07:12:42 +00:00
Chris Lattner
2a6ee91619
move AdvanceToTokenCharacter and getLocForEndOfToken from
...
Preprocessor to Lexer where they make more sense.
llvm-svn: 119474
2010-11-17 07:05:50 +00:00
Chris Lattner
b1ab2c2d3d
add a static version of PP::AdvanceToTokenCharacter.
...
llvm-svn: 119472
2010-11-17 06:55:10 +00:00
Chris Lattner
bde1b81eb8
push use of Preprocessor out farther.
...
llvm-svn: 119471
2010-11-17 06:46:14 +00:00
Chris Lattner
3a324d3232
push use of Preprocessor out of getOffsetOfStringByte
...
llvm-svn: 119470
2010-11-17 06:35:43 +00:00
Chris Lattner
30d4c928ac
add a static form of the efficient PP::getSpelling method.
...
llvm-svn: 119469
2010-11-17 06:31:48 +00:00
Chris Lattner
7a02bfdfce
refactor the interface to StringLiteralParser::getOffsetOfStringByte,
...
pushing the dependency on the preprocessor out a bit.
llvm-svn: 119468
2010-11-17 06:26:08 +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
Craig Silverstein
8e3d95e7df
Add PPCallbacks for #if/#ifdef/etc.
...
The callback info for #if/#elif is not great -- ideally it would give
us a list of tokens in the #if, or even better, a little parse tree.
But that's a lot more work. Instead, clients can retokenize using
Lexer::LexFromRawLexer().
Reviewed by nlewycky.
llvm-svn: 118318
2010-11-06 01:19:03 +00:00
Argyrios Kyrtzidis
71731d6b05
Implement -working-directory.
...
When -working-directory is passed in command line, file paths are resolved relative to the specified directory.
This helps both when using libclang (where we can't require the user to actually change the working directory)
and to help reproduce test cases when the reproduction work comes along.
--FileSystemOptions is introduced which controls how file system operations are performed (currently it just contains
the working directory value if set).
--FileSystemOptions are passed around to various interfaces that perform file operations.
--Opening & reading the content of files should be done only through FileManager. This is useful in general since
file operations will be abstracted in the future for the reproduction mechanism.
FileSystemOptions is independent of FileManager so that we can have multiple translation units sharing the same
FileManager but with different FileSystemOptions.
Addresses rdar://8583824.
llvm-svn: 118203
2010-11-03 22:45:23 +00:00
Douglas Gregor
f09b6c9c85
Plug a leak in the preprocessing record's handling of inclusion
...
directives. We had a std::string in an object that was allocated via a
BumpPtrAllocator.
llvm-svn: 117912
2010-11-01 15:03:47 +00:00
Chris Lattner
5c0b40528d
Rename alignof -> alignOf to avoid irritating C++'0x compilers,
...
PR8423
llvm-svn: 117775
2010-10-30 05:14:06 +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
Chandler Carruth
c3ce5840af
Update remaining attribute macros to new style.
...
llvm-svn: 117204
2010-10-23 08:44:57 +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
Ted Kremenek
c8456f8c59
Really^2 fix <rdar://problem/8361834>, this time without crashing.
...
Now MICache is a linked list (per the FIXME), where we tradeoff between MacroInfo objects being in MICache
and MIChainHead. MacroInfo objects in the MICache chain are already "Destroy()'ed", so they can be reused. When
inserting into MICache, we need to remove them from the regular linked list so that they aren't destroyed more than
once.
llvm-svn: 116869
2010-10-19 22:15:20 +00:00
Ted Kremenek
60ba93cd62
Revert most of r116862. It isn't quite the right fix for a memory leak in Preprocessor.
...
llvm-svn: 116864
2010-10-19 21:40:34 +00:00
Ted Kremenek
e75b876fb9
Really fix: <rdar://problem/8361834> MacroInfo::AddTokenToBody() leaks memory
...
The problem was not the management of MacroInfo objects, but that when we recycle them
via the MICache the memory of the underlying SmallVector (within MacroInfo) was not getting
released. This is because objects stashed into MICache simply are reused with a placement
new, and never have their destructor called.
llvm-svn: 116862
2010-10-19 21:30:15 +00:00
Ted Kremenek
b865f7e025
Simplify loop. No functionality change.
...
llvm-svn: 116861
2010-10-19 21:30:11 +00:00
Ted Kremenek
1f1e4bdbf7
Simplify lifetime management of MacroInfo objects in Preprocessor by having the Preprocessor maintain them in a linked
...
list of allocated MacroInfos. This requires only 1 extra pointer per MacroInfo object, and allows us to blow them
away in one place. This fixes an elusive memory leak with MacroInfos (whose exact location I couldn't still figure
out despite substantial digging).
Fixes <rdar://problem/8361834>.
llvm-svn: 116842
2010-10-19 18:16:54 +00:00
Ted Kremenek
2c8028bcf4
In ~Preprocessor(), also cleanup the MacroInfo objects left-over from stray "#pragma push_macro" uses. This
...
fixes a potential memory leak.
llvm-svn: 116826
2010-10-19 17:40:53 +00:00
Ted Kremenek
6339f1ce2f
Fix typo in comment.
...
llvm-svn: 116825
2010-10-19 17:40:50 +00:00
Chris Lattner
26f6c227dc
allow I128 suffixes in msextensions mode just like i128 suffixes, patch
...
by Martin Vejnar!
llvm-svn: 116460
2010-10-14 00:24:10 +00:00
Chris Lattner
2edb926880
move logic for computing signed integer overflow when constant folding
...
into APInt.
llvm-svn: 116453
2010-10-13 23:46:56 +00:00
Nico Weber
a6bde81bc8
Add support for UCNs for character literals
...
llvm-svn: 116129
2010-10-09 00:27:47 +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
Nico Weber
9762e0a234
Add support for 4-byte UCNs like \U12345678. Warn about UCNs in c90 mode.
...
llvm-svn: 115743
2010-10-06 04:57:26 +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
Sebastian Redl
517523014d
In MeasureTokenLength, the FileLoc supplied to the lexer must point to the start of the buffer, or we risk overflow.
...
llvm-svn: 115117
2010-09-30 01:03:03 +00:00
Michael J. Spencer
4362a1c987
Fix coding standard mistake from my last commit.
...
That, and keep aKor happy :P.
llvm-svn: 114816
2010-09-27 06:34:47 +00:00
Michael J. Spencer
a0a820fadb
Lexer: Implement GCC's version of pragma message.
...
llvm-svn: 114814
2010-09-27 06:19:02 +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
Michael J. Spencer
09476212de
Revert "CMake: Update to use standard CMake dependency tracking facilities instead"
...
This reverts commit r113631
Conflicts:
CMakeLists.txt
lib/CodeGen/CMakeLists.txt
llvm-svn: 113817
2010-09-13 23:54:41 +00:00
Michael J. Spencer
0881f4a367
CMake: Update to use standard CMake dependency tracking facilities instead
...
of whatever we were using before...
llvm-svn: 113631
2010-09-10 21:13:16 +00:00
Douglas Gregor
c7d6576d54
When we parse a pragma, keep track of how that pragma was originally
...
spelled (#pragma, _Pragma, __pragma). In -E mode, use that information
to add appropriate newlines when translating _Pragma and __pragma into
#pragma, like GCC does. Fixes <rdar://problem/8412013>.
llvm-svn: 113553
2010-09-09 22:45:38 +00:00
Douglas Gregor
b2f0713ddc
Clean up some of the CMake dependencies
...
llvm-svn: 113416
2010-09-08 21:40:53 +00:00
Chris Lattner
f0b0497343
fix 7320: we can't delete a trailing space if it doesn't exist.
...
llvm-svn: 113125
2010-09-05 23:16:09 +00:00
Fariborz Jahanian
9e42a952d7
Use getSpelling to get original text of the
...
c++ operator token. (radar 8328250).
llvm-svn: 112977
2010-09-03 17:33:04 +00:00
Fariborz Jahanian
0389df4a45
Patch to allow alternative representation of c++
...
operators (and, or, etc.) to be used as selectors
to match g++'s behavior.
llvm-svn: 112935
2010-09-03 01:26:16 +00:00
Fariborz Jahanian
39de024e66
Prevent warning when built with assert off.
...
llvm-svn: 112680
2010-08-31 23:54:38 +00:00
Fariborz Jahanian
abaae2b692
Some support for unicode string constants
...
in wide strings. radar 8360841.
llvm-svn: 112672
2010-08-31 23:34:27 +00:00
Sebastian Redl
a93bb5b807
Implement __has_feature(cxx_inline_namespaces)
...
llvm-svn: 112671
2010-08-31 23:28:47 +00:00
Chris Lattner
0f0492e69c
improve isHexaLiteral to work with escaped newlines and trigraphs,
...
patch by Francois Pichet!
llvm-svn: 112602
2010-08-31 16:42:00 +00:00
Chris Lattner
dec7334218
silence a warning
...
llvm-svn: 112549
2010-08-30 23:11:03 +00:00
Alexis Hunt
3b7918625c
Revert my user-defined literal commits - r1124{58,60,67} pending
...
some issues being sorted out.
llvm-svn: 112493
2010-08-30 17:47:05 +00:00
Chris Lattner
5f183aa592
add a fixme.
...
llvm-svn: 112491
2010-08-30 17:11:14 +00:00
Chris Lattner
7a9e9e7d76
use 'features' instead of 'PP->getLangOptions'.
...
llvm-svn: 112490
2010-08-30 17:09:08 +00:00
Douglas Gregor
3cc2648b47
Now that GCC will have #pragma push/pop (in GCC 4.6), allow the
...
#pragma without requiring it to be in the "clang" namespace, from
Louis Gerbarg!
llvm-svn: 112484
2010-08-30 15:15:34 +00:00
Douglas Gregor
759ef23bb8
In Microsoft compatibility mode, don't parse the exponent as part of
...
the pp-number in a hexadecimal floating point literal, from Francois
Pichet! Fixes PR7968.
llvm-svn: 112481
2010-08-30 14:50:47 +00:00
Alexis Hunt
79eb5469e0
Implement C++0x user-defined string literals.
...
The extra data stored on user-defined literal Tokens is stored in extra
allocated memory, which is managed by the PreprocessorLexer because there isn't
a better place to put it that makes sure it gets deallocated, but only after
it's used up. My testing has shown no significant slowdown as a result, but
independent testing would be appreciated.
llvm-svn: 112458
2010-08-29 21:26:48 +00:00
John McCall
49039d4afb
Complain if a __pragma isn't terminated.
...
llvm-svn: 112392
2010-08-29 01:09:54 +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
33551892fa
Tweak wording in an assertion, from dawn@burble.org.
...
llvm-svn: 112182
2010-08-26 14:07:34 +00:00
Douglas Gregor
115837041e
Introduce a preprocessor code-completion hook for contexts where we
...
expect "natural" language and should not provide any completions,
e.g., comments, string literals, #error.
llvm-svn: 112054
2010-08-25 17:04:25 +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
Douglas Gregor
127851084d
Implement preprocessor code completion where a macro name is expected,
...
e.g., after #ifdef/#ifndef or #undef, or inside a defined <macroname>
expression in a preprocessor conditional.
llvm-svn: 111954
2010-08-24 20:21:13 +00:00
Douglas Gregor
3a7ad25eb6
Introduce basic code-completion support for preprocessor directives,
...
e.g., after a "#" we'll suggest #if, #ifdef, etc.
llvm-svn: 111943
2010-08-24 19:08:16 +00:00
Eli Friedman
04831926ec
Detabify.
...
llvm-svn: 111768
2010-08-22 01:00:03 +00:00
Chris Lattner
20a2b46ca2
fix PR7943, a corner case with the GNU __VA_ARGS__ comma
...
swallowing extension.
llvm-svn: 111701
2010-08-21 00:27:00 +00:00
Sebastian Redl
d44cd6adba
More PCH -> AST renaming.
...
llvm-svn: 111472
2010-08-18 23:57:06 +00:00
Daniel Dunbar
211a787eaf
CrashRecovery: Add #pragma clang __debug handle_crash, useful when debugging
...
CrashRecovery since it avoids sending a signal which may be intercepted by the
debugger.
llvm-svn: 111449
2010-08-18 23:09:23 +00:00
Chris Lattner
66b67d209e
no need to pass bumppointer allocator into macroinfo::destroy
...
llvm-svn: 111364
2010-08-18 16:08:51 +00:00
Daniel Dunbar
f2cf329ccd
Lex: Add #pragma clang __debug {llvm_fatal_error, llvm_unreachable}, for testing
...
those crash paths.
llvm-svn: 111311
2010-08-17 22:32:48 +00:00
Chris Lattner
c0a585d63c
Implement #pragma push_macro, patch by Francois Pichet!
...
llvm-svn: 111234
2010-08-17 15:55:45 +00:00
Douglas Gregor
02690ba643
Don't emit end-of-file diagnostics like "unterminated conditional" or
...
"unterminated string" when we're performing code completion.
llvm-svn: 110933
2010-08-12 17:04:55 +00:00
Benjamin Kramer
e8394df11b
Random temporary string cleanup.
...
llvm-svn: 110807
2010-08-11 14:47:12 +00:00
Douglas Gregor
028d3e4d0f
Use precompiled preambles for in-process code completion.
...
llvm-svn: 110596
2010-08-09 20:45:32 +00:00
Douglas Gregor
618e64a23b
Revert r110440, the fix for PR4897. Chris claims to have a better way.
...
llvm-svn: 110544
2010-08-08 07:49:23 +00:00
Benjamin Kramer
d05f31d059
Push location through the MacroUndefined PPCallback and use it to print #undefs in -dD mode. (PR7818)
...
llvm-svn: 110523
2010-08-07 22:27:00 +00:00