Commit Graph

521 Commits

Author SHA1 Message Date
Chris Lattner 97a8e43a02 fix PR6814 - Only print [-pedantic] on a diagnostic if -pedantic
actually turned it on.  If a diag is produced by a warning which
is an extension but defaults to on, and has no warning group, don't
print any option info.

llvm-svn: 101071
2010-04-12 21:53:11 +00:00
Ted Kremenek 39a7665832 Fix null dereference in 'WriteSourceLocation' when the FileEntry is null.
llvm-svn: 101060
2010-04-12 19:54:17 +00:00
Chris Lattner b986aba6db add haiku support, patch by Paul Davey!
llvm-svn: 100982
2010-04-11 19:29:39 +00:00
Daniel Dunbar 584344f2ec Disable diag::err_file_modified on Win32 completely, until someone cares to fix
it. PR6812.
 - This is another attempt at silencing annoying buildbot failures.

llvm-svn: 100914
2010-04-10 01:17:16 +00:00
Douglas Gregor 08288f2846 On Windows, disable the modification-time check for files used in
precompiled headers and/or when reading the contents of the file into
memory. These checks seem to be causing spurious regression-test
failures on Windows.

llvm-svn: 100866
2010-04-09 15:54:22 +00:00
Chris Lattner dec49e77e5 add clang -cc1 level support for "-ferror-limit 42"
llvm-svn: 100687
2010-04-07 20:37:06 +00:00
Chris Lattner 75a0393eb5 add capabilities to stop emitting errors after some limit.
Right now the limit is 0 (aka disabled)

llvm-svn: 100684
2010-04-07 20:21:58 +00:00
Chris Lattner 198cb4df6e Instead of counting totally diagnostics, split the count into a count
of errors and warnings.  This allows us to emit something like this:

2 warnings and 1 error generated.

instead of:

3 diagnostics generated.

This also stops counting 'notes' because they are just follow-on information
about the previous diag, not a diagnostic in themselves.

llvm-svn: 100675
2010-04-07 18:47:42 +00:00
Eric Christopher e1ddaf911b Add option and macro definition for AES instructions. Now produces real
assembly for testcases.

llvm-svn: 100253
2010-04-02 23:50:19 +00:00
Douglas Gregor a771f46c82 Reinstate my CodeModificationHint -> FixItHint renaming patch, without
the C-only "optimization".

llvm-svn: 100022
2010-03-31 17:46:05 +00:00
Douglas Gregor 30e631862f Revert r100008, which inexplicably breaks the clang-i686-darwin10 builder
llvm-svn: 100018
2010-03-31 17:25:35 +00:00
Douglas Gregor 3baad0d4f7 Rename CodeModificationHint to FixItHint, since we've been using the
term "fix-it" everywhere and even *I* get tired of long names
sometimes. No functionality change.

llvm-svn: 100008
2010-03-31 15:31:50 +00:00
Douglas Gregor 8933623b91 Optimize PartialDiagnostic's memory-allocation behavior by placing a
cache of PartialDiagnostic::Storage objects into an allocator within
the ASTContext. This eliminates a significant amount of malloc
traffic, for a 10% performance improvement in -fsyntax-only wall-clock
time with 403.gcc's combine.c.

Also, eliminate the RequireNonAbstractType hack I put in earlier,
which was but a symptom of this larger problem.

Fixes <rdar://problem/7806091>.

llvm-svn: 99849
2010-03-29 23:34:08 +00:00
Douglas Gregor 210b590562 Teach the diagnostic engine to provide more detailed information about
how to handle a diagnostic during template argument deduction, which
may be "substitution failure", "suppress", or "report". This keeps us
from, e.g., emitting warnings while performing template argument
deduction.

llvm-svn: 99560
2010-03-25 22:17:48 +00:00
John Thompson 957816fbf3 PS3 needs __PPC__. Should this be in the PPC target?
llvm-svn: 99513
2010-03-25 16:18:32 +00:00
Douglas Gregor 963809884f Fix a thinko and a typo in the delayed-diagnostic code.
llvm-svn: 99178
2010-03-22 15:47:45 +00:00
Douglas Gregor 8579531684 Introduce the notion of a single "delayed" diagnostic into the
Diagnostic subsystem, which is used in the rare case where we find a
serious problem (i.e., an inconsistency in the file system) while
we're busy formatting another diagnostic. In this case, the delayed
diagnostic will be emitted after we're done with the other
diagnostic. This is only to be used for fatal conditions detected at
very inconvenient times, where we can neither stop the current
diagnostic in flight nor can we suppress the second error.

llvm-svn: 99175
2010-03-22 15:10:57 +00:00
Douglas Gregor b41ca8f2ae Keep track of the size/modification time of each file source-location
entry in a precompiled header, so that we can detect modified files
even when we miss in the stat cache.

llvm-svn: 99149
2010-03-21 22:49:54 +00:00
Douglas Gregor 51c2351d30 Fix a longstanding (but previously unknown) bug in the lazy
deserialization of precompiled headers, where the deserialization of
the source location entry for a buffer (e.g., macro instantiation
scratch space) would overwrite a one-element FileID cache in the
source manager. When tickled at the wrong time, we would return the
wrong decomposed source location and eventually cause c-index-test to
crash.

Found by dumb luck. It's amazing this hasn't shown up before.

llvm-svn: 98940
2010-03-19 06:12:06 +00:00
Douglas Gregor 22fde23b6e Check the inode in addition to size and modification time to determine
whether a file has changed since it was originally read.

llvm-svn: 98726
2010-03-17 15:33:06 +00:00
Douglas Gregor 6597f59506 Use a simple diagnostic (file modified) when we detect that a file has
changed, rather than trying to point out how it changed. The "why"
doesn't matter.

llvm-svn: 98725
2010-03-17 15:30:15 +00:00
Douglas Gregor 82752ec843 Teach SourceManager's content cache to keep track of whether its
buffer was invalid when it was created, and use that bit to always set
the "Invalid" flag according to whether the buffer is invalid. This
ensures that all accesses to an invalid buffer are marked invalid,
improving recovery.

llvm-svn: 98690
2010-03-16 22:53:51 +00:00
Douglas Gregor a71b9d0678 Update get*LineNumber() and get*ColumnNumber() functions to pass the
Invalid bit through; there are no safety-critical callers of these
functions.

llvm-svn: 98674
2010-03-16 20:53:17 +00:00
Douglas Gregor 42fe858cd6 Audit all callers of SourceManager::getCharacterData(); update some of
them to recover more gracefully on failure.

llvm-svn: 98672
2010-03-16 20:46:42 +00:00
Douglas Gregor 4fb7fbef3b Audit all getBuffer() callers (for both the FullSourceLoc and
SourceManager versions), updating those callers that need to recover
gracefully from failure.

llvm-svn: 98665
2010-03-16 20:01:30 +00:00
Benjamin Kramer 0ca3c62078 Switch another function to StringRef instead of char pointer pairs.
llvm-svn: 98631
2010-03-16 14:48:07 +00:00
Benjamin Kramer eb92dc0b09 Let SourceManager::getBufferData return StringRef instead of a pair of two const char*.
llvm-svn: 98630
2010-03-16 14:14:31 +00:00
Douglas Gregor 7bda4b8310 Introduce optional "Invalid" parameters to routines that invoke the
SourceManager's getBuffer() and, therefore, could fail, along with
Preprocessor::getSpelling(). Use the Invalid parameters in the literal
parsers (string, floating point, integral, character) to make them
robust against errors that stem from, e.g., PCH files that are not
consistent with the underlying file system.

I still need to audit every use caller to all of these routines, to
determine which ones need specific handling of error conditions.

llvm-svn: 98608
2010-03-16 05:20:39 +00:00
Douglas Gregor 874cc62876 Use SourceManager's Diagnostic object for all file-reading errors,
simplifying the SourceManager interfaces somewhat.

llvm-svn: 98598
2010-03-16 00:35:39 +00:00
Douglas Gregor e0fbb83b8b Give SourceManager a Diagnostic object with which to report errors,
and start simplifying the interfaces in SourceManager that can fail.

llvm-svn: 98594
2010-03-16 00:06:06 +00:00
Douglas Gregor 0adf3182b0 Add some <cstdio> includes to unbreak the buildbots
llvm-svn: 98591
2010-03-15 23:33:37 +00:00
Douglas Gregor 802b77601e Introduce a new BufferResult class to act as the return type of
SourceManager's getBuffer() (and similar) operations. This abstract
can be used to force callers to cope with errors in getBuffer(), such
as missing files and changed files. Fix a bunch of callers to use the
new interface.

Add some very basic checks for file consistency (file size,
modification time) into ContentCache::getBuffer(), although these
checks don't help much until we've updated the main callers (e.g.,
SourceManager::getSpelling()).

llvm-svn: 98585
2010-03-15 22:54:52 +00:00
Kovarththanan Rajaratnam 00682a48f4 Reintroduce r98340 and r98341 now without copy/paste errors.
Thanks to Ben for pointing this out.

llvm-svn: 98345
2010-03-12 11:27:37 +00:00
Kovarththanan Rajaratnam e604f14c96 Back out r98340 abd r98341
llvm-svn: 98344
2010-03-12 11:00:51 +00:00
Nuno Lopes 4cbc8bd1bc fix PR6584: __SSE3__ not defined with -mss3
llvm-svn: 98342
2010-03-12 10:20:09 +00:00
Kovarththanan Rajaratnam f1aa69d103 Switch parameter order for consistency (no functionality change)
llvm-svn: 98341
2010-03-12 10:17:07 +00:00
Kovarththanan Rajaratnam e2acea7c53 Add keywords using StringRef
llvm-svn: 98340
2010-03-12 10:14:26 +00:00
Ted Kremenek 4a26524050 Fix -Wsign-compare warning reported by clang++.
llvm-svn: 98170
2010-03-10 18:22:38 +00:00
Chris Lattner 5178f56255 add mblaze target support, patch by Wesley Peck!
llvm-svn: 97890
2010-03-06 21:21:27 +00:00
Benjamin Kramer d4870700ad Make sure the raw_string_ostream gets flushed so we don't accidentally return an empty string.
llvm-svn: 97809
2010-03-05 15:39:20 +00:00
Chris Lattner 09797543bd add TCE target support, patch by Pekka J!
llvm-svn: 97746
2010-03-04 21:07:38 +00:00
Eric Christopher cfeceffa27 Add in disabled case as well.
llvm-svn: 97716
2010-03-04 02:31:44 +00:00
Eric Christopher 399ffa55d2 Add in -msse4.1 and -msse4.2 options and continuing a rather
hacky solution for translating.  Expanded on comment explaining
the hack a bit.

llvm-svn: 97714
2010-03-04 02:26:37 +00:00
Chris Lattner 5cc15e058b add framework for ARM builtins, Patch by Edmund Grimley Evans!
llvm-svn: 97656
2010-03-03 19:03:45 +00:00
Ted Kremenek c9ef64ff67 Use SVN_REVISION, not SVN_VERSION.
llvm-svn: 97625
2010-03-03 01:30:39 +00:00
Ted Kremenek 47307292f1 Make getClangRevision() check that SVN_VERSION is an empty string
(even if it is defined).  This fixes the issue of this function
returning '0' when SVN_VERSION is defined to be "".

Fixes: <rdar://problem/7663667>
llvm-svn: 97620
2010-03-03 01:02:48 +00:00
Eric Christopher 0b26a616eb Add in some more MIPS command line options.
Patch by Oleksandr Tymoshenko!

llvm-svn: 97544
2010-03-02 02:41:08 +00:00
Douglas Gregor b8b9f28e24 Robustify SourceManager::getLocation(), so that it returns an
end-of-line source location when given a column number beyond the
length of the line, or an end-of-file source location when given a
line number beyond the length of the file. Previously, we would return
an invalid location.

llvm-svn: 97299
2010-02-27 02:42:25 +00:00
Douglas Gregor 70127c1dcf Use a little binary header in serialized diagnostics to help the deserializer skip over noise in the stream
llvm-svn: 96641
2010-02-19 00:40:40 +00:00
Douglas Gregor 1e21cc7d19 Re-apply my diagnostics-capture patch for CIndex, with some tweaks to
try to address the msvc failures.

llvm-svn: 96624
2010-02-18 23:07:20 +00:00