summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend
Commit message (Collapse)AuthorAgeFilesLines
* Plist diagnostics: distinguish between regular and extended messages for ↵Ted Kremenek2009-03-191-0/+5
| | | | | | "events". llvm-svn: 67269
* Build system changes to use TableGen to generate the variousDouglas Gregor2009-03-161-1/+1
| | | | | | | | | | | | | | | | | | diagnostics. This builds on the patch that Sebastian committed and then revert. Major differences are: - We don't remove or use the current ".def" files. Instead, for now, we just make sure that we're building the ".inc" files. - Fixed CMake makefiles to run TableGen and build the ".inc" files when needed. Tested with both the Xcode and Makefile generators provided by CMake, so it should be solid. - Fixed normal makefiles to handle out-of-source builds that involve the ".inc" files. I'll send a separate patch to the list with Sebastian's changes that eliminate the use of the .def files. llvm-svn: 67058
* implement a new -fprint-source-range-info option, whichChris Lattner2009-03-131-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | defaults to off. When enabled, it emits range info along with the file/line/col information for a diagnostic. This allows tools that textually parse the output of clang to know where the ranges are, even if they span multiple lines. For example, with: $ clang exprs.c -fprint-source-range-info We now produce: exprs.c:21:11:{21:12-21:13}: warning: use of unary operator that may be intended as compound assignment (+=) var =+ 5; // expected-warning {{use of unary operator that may be intended as compound assignment (+=)}} ^~ exprs.c:22:11:{22:12-22:13}: warning: use of unary operator that may be intended as compound assignment (-=) var =- 5; // expected-warning {{use of unary operator that may be intended as compound assignment (-=)}} ^~ exprs.c:36:13:{36:3-36:12}: error: assignment to cast is illegal, lvalue casts are not supported (float*)X = P; // expected-error {{assignment to cast is illegal, lvalue casts are not supported}} ~~~~~~~~~ ^ exprs.c:41:4:{41:3-41:4}: error: called object type 'int' is not a function or function pointer X(); // expected-error {{called object type 'int' is not a function or function pointer}} ~^ exprs.c:45:15:{45:8-45:14}{45:17-45:24}: error: invalid operands to binary expression ('int *' and '_Complex float') P = (P-42) + Gamma*4; // expected-error {{invalid operands to binary expression ('int *' and '_Complex float')}} ~~~~~~ ^ ~~~~~~~ exprs.c:61:7:{61:16-61:22}: error: invalid application of '__alignof' to bitfield R = __alignof(P->x); // expected-error {{invalid application of '__alignof' to bitfield}} expected-warning {{extension used}} ^ ~~~~~~ Note the range info after the column in the initial diagnostic. This is obviously really annoying if you're not a tool parsing the output of clang, which is why it is off by default. llvm-svn: 66862
* PathDiagnostics:Ted Kremenek2009-03-121-32/+83
| | | | | | | | | | | | | | | | - PathDiagnosticControlFlowPiece now consists of a "start" and "end" location to indicating the branch location and where the branch goes. BugReporter: - Updated BugReporter to construct PathDiagnosticControlFlowPiece objects with "end" locations. PlistDiagnostics: - Plists now contain the bug "type" (not just bug "category") - Plists now encode control-flow pieces differently than events; now the "start" and "end" locations are recorded llvm-svn: 66818
* Extend the notion of active template instantiations to include theDouglas Gregor2009-03-101-4/+8
| | | | | | | | | | | | context of a template-id for which we need to instantiate default template arguments. In the TextDiagnosticPrinter, don't suppress the caret diagnostic if we are producing a non-note diagnostic that follows a note diagnostic with the same location, because notes are (conceptually) a part of the warning or error that comes before them. llvm-svn: 66572
* BugReporter:Ted Kremenek2009-03-101-49/+135
| | | | | | | | | | | | - Group control flow and event PathDiagnosticPieces into PathDiagnosticMacroPieces. - Afterwards, eliminate any PathDiagnosticMacroPieces from a PathDiagnostic that contain no informative events. HTMLDiagnostics: - Use new information about PathDiagnosticMacroPieces to specially format message bubbles for macro expansions containing interesting events. llvm-svn: 66524
* Handle "Macro" PathDiagnosticPiece kind when getting string identifier.Ted Kremenek2009-03-102-8/+11
| | | | llvm-svn: 66518
* generalize the "end of line" checking logic to stop at any \0 at theChris Lattner2009-03-081-3/+1
| | | | | | | | | end of line instead of just the end of buffer. Scratch buffers contain embedded \0's between tokens which are logic line separators. If a normal text buffer contains \0's, it doesn't make a lot of sense to include them in the caret diag output anyway. llvm-svn: 66374
* Resize message bubble back to original size.Ted Kremenek2009-03-021-1/+1
| | | | llvm-svn: 65892
* Adjust HTML message bubbles to utilize information from ↵Ted Kremenek2009-03-021-12/+26
| | | | | | PathDiagnosticPiece::Kind. llvm-svn: 65891
* improve compatibility with GCC 4.4, patch by Michel Salim (PR3697)Chris Lattner2009-03-021-0/+1
| | | | llvm-svn: 65884
* Plist diagnostics now include PathDiagnostPiece::Kind.Ted Kremenek2009-03-021-0/+6
| | | | llvm-svn: 65878
* Update HTML diagnostics to honor the different between 'event' and ↵Ted Kremenek2009-03-021-1/+7
| | | | | | 'control-flow' diagnostics. llvm-svn: 65877
* fix PR2639Chris Lattner2009-03-021-1/+1
| | | | llvm-svn: 65869
* Fix name.Daniel Dunbar2009-03-021-5/+1
| | | | llvm-svn: 65865
* For now, do not output the 'DisplayHint' in plist files.Ted Kremenek2009-03-021-0/+3
| | | | llvm-svn: 65861
* Rename lib/Driver (etc) to lib/Frontend in prep for the *actual*Daniel Dunbar2009-03-028-0/+1473
driver taking lib/Driver. llvm-svn: 65811
OpenPOWER on IntegriCloud