Chris Lattner
da248f4f30
fix PR3768, Clang does -D__STDC_HOSTED__=1, even if -ffreestanding is passed.
...
llvm-svn: 66474
2009-03-09 21:50:12 +00:00
Chris Lattner
794c001ad4
fix PR3764 - A redefinition of a pre-processor macro fails
...
Redefinition checking should ignore the leading whitespace and
start of line flags on the first token of an expansion.
llvm-svn: 66442
2009-03-09 20:33:32 +00:00
Chris Lattner
7253991f9d
add \n characters to the scratch buffer *before* returned tokens.
...
This prevents caret diagnostics from the scratch buffer from
including other tokens in the scratch buffer that occurred beforei
them.
llvm-svn: 66375
2009-03-08 08:16:41 +00:00
Chris Lattner
fa217bda40
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.
llvm-svn: 66373
2009-03-08 08:08:45 +00:00
Mike Stump
82d8d559bb
Fix warnings in build on clang-x86_64-freebsd buildbot.
...
llvm-svn: 66344
2009-03-07 18:35:41 +00:00
Chris Lattner
d4a96730c1
#import is not considered an extension for ObjC.
...
llvm-svn: 66246
2009-03-06 04:28:03 +00:00
Chris Lattner
8322dc809e
make the token lexer allocate its temporary token buffers for
...
preexpanded macro arguments from the preprocessor's bump pointer.
This reduces # mallocs from 12444 to 11792.
llvm-svn: 66025
2009-03-04 06:50:57 +00:00
Chris Lattner
c25d8a7e30
improve compatibility with GCC 4.4, patch by Michel Salim (PR3697)
...
llvm-svn: 65884
2009-03-02 22:20:04 +00:00
Douglas Gregor
96977da72c
Clean up and document code modification hints.
...
llvm-svn: 65641
2009-02-27 17:53:17 +00:00
Chris Lattner
d42c29f9a2
fix some sema problems with wide strings and hook up basic codegen for them.
...
llvm-svn: 65582
2009-02-26 23:01:51 +00:00
Ted Kremenek
29b8697393
Move PTHStatCache within the anonymous namespace.
...
llvm-svn: 65348
2009-02-23 23:27:54 +00:00
Chris Lattner
70946da73a
switch the macroinfo argument lists from being allocated off the heap
...
to being allocated from the same bumpptr that the MacroInfo objects
themselves are.
This speeds up -Eonly cocoa.h pth by ~4%, fsyntax-only is barely measurable.
llvm-svn: 65195
2009-02-20 22:46:43 +00:00
Chris Lattner
f87c510cc9
detemplatify setArgumentList and some other cleanups.
...
llvm-svn: 65187
2009-02-20 22:31:31 +00:00
Chris Lattner
666f7a42d6
require the MAcroInfo objects are explcitly destroyed.
...
llvm-svn: 65179
2009-02-20 22:19:20 +00:00
Ted Kremenek
e76eb060c7
Fix another PTH warning that should not be a note.
...
llvm-svn: 65072
2009-02-19 22:14:49 +00:00
Ted Kremenek
36b005db45
Make PTH warnings actual warnings instead of 'notes'.
...
llvm-svn: 65071
2009-02-19 22:13:40 +00:00
Chris Lattner
91668def8b
fix PR3609, emit:
...
t.c:1:10: error: missing terminating '>' character
#include <stdio.h
^
instead of:
t.c:1:10: error: missing terminating " character
#include <stdio.h
^
llvm-svn: 65052
2009-02-19 18:29:56 +00:00
Chris Lattner
ddb7191920
Next step toward making string diagnostics correct: handle
...
escapes in the string for subtoken positioning. This gives
us working examples like:
t.m:5:16: warning: field width should have type 'int', but argument has type 'unsigned int'
printf("\n\n%*d", (unsigned) 1, 1);
^ ~~~~~~~~~~~~
where before the caret pointed two spaces to the left.
llvm-svn: 64940
2009-02-18 19:21:10 +00:00
Chris Lattner
57a09cfcbc
update comment.
...
llvm-svn: 64939
2009-02-18 18:56:29 +00:00
Chris Lattner
ec396b5114
Fix some issues handling sub-token locations that come from macro expansions.
...
We now emit:
t.m:6:15: warning: field width should have type 'int', but argument has type 'unsigned int'
printf(STR, (unsigned) 1, 1);
^ ~~~~~~~~~~~~
t.m:3:18: note: instantiated from:
#define STR "abc%*ddef"
^
which has the correct location in the string literal in the note line.
llvm-svn: 64936
2009-02-18 18:52:52 +00:00
Fariborz Jahanian
eb209e7dbd
define __OBJC2__ for objc's nonfragile abi.
...
llvm-svn: 64642
2009-02-16 18:28:48 +00:00
Chris Lattner
ee4b5235e3
Add support for deprecated members of RecordDecls (e.g. struct fields).
...
llvm-svn: 64634
2009-02-16 17:07:21 +00:00
Chris Lattner
f52c0b261c
add a new SourceManager::getInstantiationRange helper method.
...
llvm-svn: 64606
2009-02-15 21:26:50 +00:00
Chris Lattner
5a2e9cb42d
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.
llvm-svn: 64604
2009-02-15 21:06:39 +00:00
Chris Lattner
9dc9c206d3
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.
llvm-svn: 64601
2009-02-15 20:52:18 +00:00
Chris Lattner
190f64e9b8
add an assertion from Alexei Svitkine!
...
llvm-svn: 64503
2009-02-13 23:06:48 +00:00
Chris Lattner
7e4c81c8c6
Give TargetInfo a new IntPtrType to hold the intptr_t type for
...
a target.
Make Preprocessor.cpp define a new __INTPTR_TYPE__ macro based on this.
On linux/32, set intptr_t to int, instead of long. This fixes PR3563.
llvm-svn: 64495
2009-02-13 22:28:55 +00:00
Ted Kremenek
2fd18ec43a
PTH: Cache directory and negative 'stat' calls. This gives us a 1% performance improvement on Cocoa.h (fsyntax-only+PTH).
...
llvm-svn: 64490
2009-02-13 22:07:44 +00:00
Chris Lattner
9ef847be12
Fix rdar://6562329, a static analyzer crash Ted noticed on
...
wine sources. This was happening because HighlightMacros was
calling EnterMainFile multiple times on the same preprocessor
object and getting an assert due to the new #line stuff (the
file in question was bison output with #line directives).
The fix for this is to not reenter the file. Instead,
relex the tokens in raw mode, swizzle them a bit and repreprocess
the token stream. An added bonus of this is that rewrite macros
will now hilight the macro definition as well as its uses. Woo.
llvm-svn: 64480
2009-02-13 19:33:24 +00:00
Ted Kremenek
29942a349c
Add some boilerplate to the PTH file to prepare for the caching of stats for directories (and negative stats too).
...
llvm-svn: 64477
2009-02-13 19:13:46 +00:00
Mike Stump
57d7354635
Fix cmake builds.
...
llvm-svn: 64455
2009-02-13 15:42:50 +00:00
Eli Friedman
159a7cbc36
Fix gcc warning: gcc correctly notes that const-qualifying the return
...
type doesn't do anything.
llvm-svn: 64424
2009-02-13 01:02:29 +00:00
Chris Lattner
644d452de5
factor token concatenation avoidance logic out of
...
PrintPreprocessedOutput into its own file. No functionality change.
llvm-svn: 64418
2009-02-13 00:46:04 +00:00
Daniel Dunbar
ad027c7781
Fix assertion when input is an empty string.
...
llvm-svn: 64397
2009-02-12 19:31:53 +00:00
Ted Kremenek
b4c85ccaaa
Re-enable PTH stat caching. All tests pass now.
...
llvm-svn: 64356
2009-02-12 03:45:39 +00:00
Ted Kremenek
c6a2a37222
Fix bad reading of bytes in ReadUnalignedLE64() (copy-paste error).
...
llvm-svn: 64355
2009-02-12 03:39:55 +00:00
Ted Kremenek
3280145da4
Temporarily disable PTH stat caching as it appears to be failing on some machines.
...
llvm-svn: 64354
2009-02-12 03:36:54 +00:00
Ted Kremenek
a5c2c27ebd
PTH: Cache stat information for files in the PTH file. Hook up FileManager
...
to use this stat information in the PTH file using a 'StatSysCallCache' object.
Performance impact (Cocoa.h, PTH):
- number of stat calls reduces from 1230 to 425
- fsyntax-only: time improves by 4.2%
We can reduce the number of stat calls to almost zero by caching negative stat
calls and directory stat calls in the PTH file as well.
llvm-svn: 64353
2009-02-12 03:26:59 +00:00
Ted Kremenek
4c1d41f2b1
PTH: Have meta data be at the beginning of the PTH file, not the end.
...
llvm-svn: 64338
2009-02-11 23:34:32 +00:00
Ted Kremenek
e5554deb45
PTH: Replace string identifier to persistent ID lookup with a hashtable. This is
...
actually *slightly* slower than the binary search. Since this is algorithmically
better, further performance tuning should be able to make this faster.
llvm-svn: 64326
2009-02-11 21:29:16 +00:00
Ted Kremenek
8527e3a727
PTH: Don't emit the PTH offset of the IdentifierInfo string data as that data is
...
referenced by other tables.
llvm-svn: 64304
2009-02-11 16:06:55 +00:00
Ted Kremenek
86423a9993
PTH: Replace ad hoc 'file name' -> 'PTH data' lookup table in the PTH file with an on-disk chained hash table. This data structure is implemented using templates, and will be used to replace similar data structures. This change leads to no visibile performance impact on Cocoa.h, but now we only pay a price for the table on order with the number of files accessed and not the number in the PTH file.
...
llvm-svn: 64245
2009-02-10 22:16:22 +00:00
Chris Lattner
0763cc6bfd
Export __INT8_TYPE__ / __INT16_TYPE__ / __INT32_TYPE__ / __INT64_TYPE__
...
in a gcc 4.5 compatible way so that stdint.h can follow the compiler's
notion of types.
llvm-svn: 63976
2009-02-06 22:59:26 +00:00
Chris Lattner
a31829b5bc
-funsigned-char sets __CHAR_UNSIGNED__
...
llvm-svn: 63942
2009-02-06 18:20:57 +00:00
Chris Lattner
1630c3c4f0
Add an implementation of -dM that follows GCC closely enough to permit
...
diffing the output of:
clang -dM -o - -E -x c foo.c | sort
llvm-svn: 63926
2009-02-06 06:45:26 +00:00
Chris Lattner
5c7cd6043e
add interface for walking macro table.
...
llvm-svn: 63925
2009-02-06 06:26:42 +00:00
Chris Lattner
bba531ce99
get __WCHAR_TYPE__ from the targetinfo hook
...
llvm-svn: 63920
2009-02-06 05:06:07 +00:00
Chris Lattner
a91c30fdb0
simplify and refactor a bunch of type definition code in Preprocessor
...
predefines buffer initialization.
llvm-svn: 63919
2009-02-06 05:04:11 +00:00
Chris Lattner
61898606dc
remove some ad-hocery and use DefineTypeSize for more things.
...
Now you too can have a 47 bit long long!
llvm-svn: 63918
2009-02-06 04:55:18 +00:00
Chris Lattner
a3dc5d8423
refactor some code into a DefineTypeSize function.
...
llvm-svn: 63917
2009-02-06 04:50:25 +00:00