| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
the instantiated note.
t.c:2:7: error: invalid operand for instruction
asm("movl 0(%rax), 0(%edx)");
^
<inline asm>:1:16: note: instantiated into assembly here
movl 0(%rax), 0(%edx)
^~~~~~~
1 error generated.
llvm-svn: 142131
|
| |
|
|
| |
llvm-svn: 142129
|
| |
|
|
|
|
| |
function. No functionality changed.
llvm-svn: 142128
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
formatting as any other diagnostic, they will be properly line wrapped and
otherwise pretty printed. Let's take advantage of that and the new factoring to
add some helpful information to them (much like template backtrace notes and
other notes): the name of the macro whose expansion is being noted. This makes
a world of difference if caret diagnostics are disabled, making the expansion
notes actually useful in this case. It also helps ensure that in edge cases the
information the user needs is present. Consider:
% nl -ba t5.cc
1 #define M(x, y, z) \
2 y
3
4 M(
5 1,
6 2,
7 3);
We now produce:
% ./bin/clang -fsyntax-only t5.cc
t5.cc:6:3: error: expected unqualified-id
2,
^
t5.cc:2:3: note: expanded from macro: M
y
^
1 error generated.
Without the added information in the note, the name of the macro being expanded
would never be shown.
This also deletes a FIXME to use the diagnostic formatting. It's not yet clear
to me that we *can* do this reasonably, and the production of this message was
my primary goal here anyways.
I'd love any comments or suggestions on improving these notes, their wording,
etc. Currently, I need to make them provide more helpful information in the
presence of a token-pasting buffer, and I'm pondering adding something along
the lines of "expanded from argument N of macro: ...".
llvm-svn: 142127
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
this long quest: actually use the note printing machinery for each macro
expansion note rather than a hacky version of it. This will colorize and
format the notes the same as any other. There is still some stuff to fix
here, but it's one step closer.
No test case changes because currently we don't do anything differently
that I can FileCheck for -- I don't really want to try matching the
color escape codes... Suggestions for how to test this are welcome. =]
llvm-svn: 142121
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
standing deficiency: we were providing no macro backtrace information
whenever caret diagnostics were turned off. This sinks the logic for
suppressing the code snippet and caret to the code that actually prints
tho code snippet and caret. Along the way, clean up the naming of
functions, remove some now fixed FIXMEs, and generally improve the
wording and logic of this process.
Add a test case exerecising this functionality. It is notable that the
resulting messages are extremely low quality. I'm working on a follow-up
patch that should address this and have left a FIXME in the test case.
llvm-svn: 142120
|
| |
|
|
|
|
| |
backtrace behavior.
llvm-svn: 142119
|
| |
|
|
|
|
|
|
| |
the important code in this test to make the test more stable. Now adding
further tests won't shift the line numbers occuring in the diagnostic
output.
llvm-svn: 142118
|
| |
|
|
|
|
| |
tests to it to cover more of the macro bactrace functionality.
llvm-svn: 142116
|
| |
|
|
|
|
| |
files being generated.
llvm-svn: 142113
|
| |
|
|
| |
llvm-svn: 142109
|
| |
|
|
|
|
|
|
|
| |
the SourceManager doesn't change, and the source files don't change.
This greatly simplifies the interfaces and interactions. The lifetime of
the TextDiagnostic object forms the 'session' over which we attempt to
condense and deduplicate information in diagnostics.
llvm-svn: 142104
|
| |
|
|
|
|
|
| |
function) to agree with the coding conventions, and in one case have
a bit more information in it.
llvm-svn: 142088
|
| |
|
|
|
|
|
|
|
|
| |
been there. Also delete their redundant doxyments in favor of those in
the source file. I'm putting the doxyments for private and static
helpers into the implementation file, and only the public interface
doxyments into the header. If folks have strong opinions about this type
of split, feel free to chime in, I'm happy to re-organize.
llvm-svn: 142087
|
| |
|
|
|
|
|
|
|
|
| |
making it accessible to anyone from the Frontend library. Still a good
bit of cleanup to do here, but its a good milestone. This ensures that
*all* of the functionality needed to implement the DiagnosticConsumer is
exposed via the generic interface in some form. No sneaky re-use of
static functions.
llvm-svn: 142086
|
| |
|
|
|
|
| |
part of the TextDiagnostic interface without requiring a full instance.
llvm-svn: 142085
|
| |
|
|
|
|
|
| |
allow the TextDiagnosticPrinter to continue using it even if
TextDiagnostic is implemented in a separate file.
llvm-svn: 142084
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
diagnostics to control suppression of redundant information. It now
follows the same model as all the other state, and has a bit more clear
semantics.
This is making the duality of the state a bit annoying, and I've added
a FIXME to resolve it. The problem is that I need to lift the
TextDiagnostic up into an externally visible layer before that can
happen.
llvm-svn: 142083
|
| |
|
|
|
|
| |
// rdar://10268422
llvm-svn: 142078
|
| |
|
|
|
|
|
|
| |
linker can group them together for performance.
This only has an effect with fairly new binutils (2.21.51 or later). Other ELF targets probably want this as well, but on BSDs binutils is usually old so it doesn't matter.
llvm-svn: 142076
|
| |
|
|
|
|
| |
by reference. // rdar://10188258
llvm-svn: 142075
|
| |
|
|
| |
llvm-svn: 142074
|
| |
|
|
| |
llvm-svn: 142072
|
| |
|
|
|
|
|
| |
It's the last include-stack-root we tried to walk up. Use a better name
and better doxyments for it.
llvm-svn: 142071
|
| |
|
|
|
|
|
|
|
| |
TextDiagnosticPrinter argument to the TextDiagnostic helper class. This
cements the proper ordering of things: TextDiagnostic is now a viable
stand-alone class for emitting pretty-printed textual diagnostics to
a terminal.
llvm-svn: 142070
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
utility. This is a particularly nice win because it removes a pile of
parameters from these routines. Also name them a bit better. I'm trying
to follow the pattern of 'emit' routines writing directly to what is
expected to be the final output, while 'print' routines take a output
stream argument and can be used to build up intermediate buffers, etc.
Also, fix a bug I spotted by inspection from my last commit where
'LastLoc' and 'LastNonNoteLoc' were reversed. It's really scary that
this didn't trigger a single test failure. Will be working on tests for
more of this functionality now.
llvm-svn: 142069
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
across emissions.
1) The include stack printing is conditioned on non-note diagnostics,
not just on warning diagnostics.
2) Those should be full source locations as they're tied to a source
manager.
3) We should pass in the prior state to the TextDiagnostic constructor,
allow it to mutate as diagnostics are emitted, and then cache the
final state before tearing it down.
Some of this remains incomplete, specifically #3 isn't finished for the
non-note location. That'll come when the include stack printing sinks
down a level.
This also highlights how *completely* bug-ridden this code is. For
example, we currently do all these comparisons of a FullSourceLoc and
a SourceLocation... which silently does a SourceLocation to
SourceLocation comparison, completely disregarding the source manager
from whence one of the arguments came. Oops! Good thing in practice this
wasn't important, but it could in theory be suppressing caret
diagnostics in a second TU on a single clang invocation. I'm hoping to
hammer these bugs out as the refactorings occur, although for so many of
them it's really unlikely I can dream up a test case that would show the
potentially buggy behavior.
llvm-svn: 142067
|
| |
|
|
|
|
| |
interface now that its only caller is there.
llvm-svn: 142065
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
consumer. The TextDiagnostic interface now has a generic entry point for
emitting a diagnostic which uses a minimal interface that should be
compatible with StoredDiagnostics such as are available in libclang etc.
Some unfortunate shuffling of static functions as things get relocated.
Also some unfortunate public interface points added to
TextDiagnosticPrinter, but those are the next bits to get moved so they
won't last long.
llvm-svn: 142064
|
| |
|
|
|
|
|
|
|
|
|
| |
to operate directly on the source location and ranges associated with
a diagnostic rather than digging them out of the diagnostic. This had
a side benefit of cleaning up its code a tiny bit by using the ArrayRef
interface.
No functionality changed.
llvm-svn: 142063
|
| |
|
|
|
|
|
| |
This will simplify a number of calls in the diagnostic printing going
forward.
llvm-svn: 142062
|
| |
|
|
| |
llvm-svn: 142057
|
| |
|
|
| |
llvm-svn: 142056
|
| |
|
|
|
|
| |
class/struct definition.
llvm-svn: 142054
|
| |
|
|
| |
llvm-svn: 142053
|
| |
|
|
|
|
| |
represent the fields in FunctionProtoType.
llvm-svn: 142052
|
| |
|
|
|
|
|
| |
John convinced me this wasn't the right thing to do. I'll follow up with a second
commit to make these non-doxygen comments.
llvm-svn: 142051
|
| |
|
|
| |
llvm-svn: 142050
|
| |
|
|
| |
llvm-svn: 142049
|
| |
|
|
|
|
|
| |
'final', and don't accept (then silently discard) braced init lists in C++98
new-expressions.
llvm-svn: 142048
|
| |
|
|
|
|
| |
expressions. PR10582.
llvm-svn: 142047
|
| |
|
|
|
|
|
|
| |
Also note that it is actually doing much more than it should. This paves
the way for building a more generic 'Emit' routine that is the real
entry point here.
llvm-svn: 142035
|
| |
|
|
|
|
|
|
| |
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).
llvm-svn: 142034
|
| |
|
|
|
|
|
|
|
|
| |
avoids loading data from an external source, since those lookups were
causing some "interesting" recursion in LLDB.
This code is not efficient. I plan to remedy this inefficiency in a
follow-up commit.
llvm-svn: 142023
|
| |
|
|
| |
llvm-svn: 142020
|
| |
|
|
|
|
| |
the standard library issue
llvm-svn: 142019
|
| |
|
|
| |
llvm-svn: 142017
|
| |
|
|
|
|
| |
Lack of half FP was a regression compared to llvm-gcc.
llvm-svn: 142016
|
| |
|
|
|
|
|
| |
user-centric list, with Clang version numbers, following GCC's lead
(and user requests).
llvm-svn: 142015
|
| |
|
|
| |
llvm-svn: 142014
|