aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver
AgeCommit message (Collapse)Author
2009-03-12Driver: Add ArgList::hasArg, for testing for the presence of anDaniel Dunbar
argument matching some Option::ID. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66758 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-12Driver: Add Option::getId and Option::matches taking an optionDaniel Dunbar
identifier; we will want to use the latter in situations where we just want to check for a match, but not load options unnecessarily. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66757 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10Driver: Add host info (add new files).Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66603 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10Driver: Add host info.Daniel Dunbar
- Replace assorted -ccc-host-* options by -ccc-host-triple which is more sane. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66600 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10Driver: Handle magic -ccc- options.Daniel Dunbar
- Follows ccc currently, but this functionality should eventually be outside the Driver lib. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66575 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10Remove some now-unneeded calls to llvm::errs().flush().Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66555 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-07Fix warnings in build on clang-x86_64-freebsd buildbot.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66344 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-05Driver: Basic argument parsing.Daniel Dunbar
- Add Driver::ParseArgStrings. - Store values directly in CommaJoinedArg to support simple access. - Add FlagArg class. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66142 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Implement Option::accept methods.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66106 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Fix off by one in ParseOneArg; this code is ugly but will beDaniel Dunbar
replaced anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66101 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Add Arg::dump and SeparateArg stubs.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66100 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Add OptTable::ParseOneArg.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66090 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Add ArgList::{append, getArgString}Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66089 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Stub out Arg implementations.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66088 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Option's need to know their ID.Daniel Dunbar
- Also, add Input and Unknown opts to OptTable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66079 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Add Option flags.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66067 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Tweak Option::accept interface.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66066 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Sink Driver/Compilation into clang::driver namespace.Daniel Dunbar
- Add OptTable instance to Driver. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66063 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: Add ArgList implementation.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66037 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Driver: More Option implementation.Daniel Dunbar
- Add Options.def file, collects option information. - Actual option instantiation is handled lazily by OptTable to allow the driver to not need to instantiate all options. - cast<> support for Option, other minor tweaks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66028 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-03Sketch Driver Option classes.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65933 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-02Stub out some structure for C++ driver.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65867 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-02Rename lib/Driver (etc) to lib/Frontend in prep for the *actual*Daniel Dunbar
driver taking lib/Driver. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65811 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-26Introduce code modification hints into the diagnostics system. When weDouglas Gregor
know how to recover from an error, we can attach a hint to the diagnostic that states how to modify the code, which can be one of: - Insert some new code (a text string) at a particular source location - Remove the code within a given range - Replace the code within a given range with some new code (a text string) Right now, we use these hints to annotate diagnostic information. For example, if one uses the '>>' in a template argument in C++98, as in this code: template<int I> class B { }; B<1000 >> 2> *b1; we'll warn that the behavior will change in C++0x. The fix is to insert parenthese, so we use code insertion annotations to illustrate where the parentheses go: test.cpp:10:10: warning: use of right-shift operator ('>>') in template argument will require parentheses in C++0x B<1000 >> 2> *b1; ^ ( ) Use of these annotations is partially implemented for HTML diagnostics, but it's not (yet) producing valid HTML, which may be related to PR2386, so it has been #if 0'd out. In this future, we could consider hooking this mechanism up to the rewriter to actually try to fix these problems during compilation (or, after a compilation whose only errors have fixes). For now, however, I suggest that we use these code modification hints whenever we can, so that we get better diagnostics now and will have better coverage when we find better ways to use this information. This also fixes PR3410 by placing the complaint about missing tokens just after the previous token (rather than at the location of the next token). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65570 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25add c++ search path for GCC 4.2, PR3668, patch by Pawel Worach!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65462 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-20map source ranges through macro expansions. Before:Chris Lattner
t.m:5:2: error: invalid operands to binary expression ('typeof(P)' (aka 'struct mystruct') and 'typeof(F)' (aka 'float')) MAX(P, F); ^~~~~~~~~ t.m:1:78: note: instantiated from: #define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; }) ^ (no ranges on the second diagnostics) After: t.m:5:2: error: invalid operands to binary expression ('typeof(P)' (aka 'struct mystruct') and 'typeof(F)' (aka 'float')) MAX(P, F); ^~~~~~~~~ t.m:1:78: note: instantiated from: #define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; }) ~~~ ^ ~~~ (ranges!) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65090 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-20refactor, pass ranges down instead of the whole Chris Lattner
DiagnosticInfo. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65088 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-19fix a bug introduced in my previous patch: moving clang headers to theChris Lattner
"after" group instead of the system group makes it so #include <limits.h> picks up the *system* limits.h file before clang's. This causes a failure on linux and is definitely not what we want. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65026 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-19PR3614: "ignoring nonexistent directory" should print the -isysroot Chris Lattner
mapped path, not the requested path. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65009 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-18HTMLDiagnostics: Always display diagnostics *below* the line in question.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64959 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-18tidy upChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64934 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-18stop searching GCC install directories for standard C headers (butChris Lattner
keep searching for C++ headers when in C++ mode). In theory clang should be able to find all of its own headers now. If not, the CPATH or C_INCLUDE_PATH environment variables can be specified to add a include path. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64862 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-17Handle fatal errors.Ben Laurie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64770 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-17As an experimental hack, emit "instantiated from" information inChris Lattner
diagnostics. I'm not sure I want to keep this, but hey, it's easy and could be useful or something, even if guarded by a -fshow-me-tons-of-details option. A silly example is: #define A B #define C A #define D C int y = D; We now emit: t.c:11:9: error: use of undeclared identifier 'B' int y = D; ^ t.c:9:11: note: instantiated from: #define D C ^ t.c:8:11: note: instantiated from: #define C A ^ t.c:7:11: note: instantiated from: #define A B ^ A more useful example is from tgmath: t.c:4:9: error: no matching function for call to '__tg_acos' return acos(x); ^~~~~~~ /Users/sabre/llvm/Debug/Headers/tgmath-sofar.h:51:17: note: instantiated from: #define acos(x) __tg_acos(x) ^ ... candidate set follows ... This does not yet print ranges in instantiation info, (e.g. highlighting the range "__tg_acos(x)" in the last example), but that could be added if we decide this is a good idea :). Thoughts and bug reports welcome! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64761 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-17sink a call to getInstantiationLoc to eliminate an assertion.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64755 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-17break down EmitCaretDiagnostic to use more primitive calls.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64754 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-17split caret diagnostic printing out into its own function.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64751 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-17simplify some code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64750 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-17If a source range comes through a function-like macro expansion,Chris Lattner
highlight the arguments to the macro as well as the identifier. Before: t.c:3:9: error: no matching function for call to '__tg_acos'; candidates are: return acos(x); ^~~~ after: t.c:3:9: error: no matching function for call to '__tg_acos'; candidates are: return acos(x); ^~~~~~~ git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64743 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-08use some references to simplify code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64063 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-08Genericize the existing logic for removing duplicate header dirs to applyChris Lattner
the "system dirs win over user dirs" logic to framework and headermap search locations as well as normal directories. This means that clang t.m -F/System/Library/Frameworks will treat /System/Library/Frameworks as a system directory not a user directory. If you use -v, the difference is: Before: ignoring nonexistent directory "/usr/libdata/gcc41" ignoring duplicate framework "/System/Library/Frameworks" #include "..." search starts here: #include <...> search starts here: After: ignoring nonexistent directory "/usr/libdata/gcc41" ignoring duplicate directory "/System/Library/Frameworks" as it is a non-system directory that duplicates a system directory #include "..." search starts here: #include <...> search starts here: This fixes rdar://6566429. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64060 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-06handle fatal errors, rely on warnings to point out missing cases.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63913 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-05Add Debian gcc 4.3 header search directories.Torok Edwin
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63872 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-04lower the interface to getLineNumber like we did forChris Lattner
getColumnNumber. This fixes a FIXME in SourceManager::getPresumedLoc because we now just decompose the sloc once. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63701 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-04make SM::getColumnNumber take a predecomposed FileID/offset, whichChris Lattner
makes it clear to clients that they have to pick an instantiation or spelling location before calling it and allows optimization based on that. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63698 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-02Clean up indentation.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63551 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-30" Attached is a patch for TextDiagnosticPrinter that adds an optionalChris Lattner
parameter that allows users to omit the printing of the source location on a diagnostic. So basically it would omit the "abc.c:5:1: " at the beginning of the line." Patch by Alexei Svitkine! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63396 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-28Fix TextDiagnosticPrinter::HandleDiagnostic to handle invalid FullSourceLocs ↵Ted Kremenek
that do not have a SourceManager. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63230 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-27Introduce a new PresumedLoc class to represent the concept of a locationChris Lattner
as reported to the user and as manipulated by #line. This is what __FILE__, __INCLUDE_LEVEL__, diagnostics and other things should follow (but not dependency generation!). This patch also includes several cleanups along the way: - SourceLocation now has a dump method, and several other places that did similar things now use it. - I cleaned up some code in AnalysisConsumer, but it should probably be simplified further now that NamedDecl is better. - TextDiagnosticPrinter is now simplified and cleaned up a bit. This patch is a prerequisite for #line, but does not actually provide any #line functionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63098 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-27PathDiagnostics:Ted Kremenek
- Add the distinction between the 'bug type' and the 'bug description' HTMLDiagnostics: - Output the bug type field as HTML comments scan-build: - Use the bug type field instead of the bug description for the HTML table. - Radar filing now automatically picks up the bug description in the title (addresses <rdar://problem/6265970>) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63084 91177308-0d34-0410-b5e6-96231b3b80d8