Commit Graph

244 Commits

Author SHA1 Message Date
Daniel Dunbar 0e0cf39a9e gcc 4.3 finds my use of ^ suspicious.
llvm-svn: 67673
2009-03-25 03:06:26 +00:00
Ted Kremenek 759d5d3fa7 Turn on -analyzer-eagerly-assume by default when using 'clang-cc' to perform
static analysis.

llvm-svn: 67665
2009-03-25 00:38:14 +00:00
Daniel Dunbar 1386495406 Driver: Handle -flto, -O4, and tweak -emit-llvm to match llvm-gcc.
- -emit-llvm no longer changes what compilation steps are done.

 - -emit-llvm and -emit-llvm -S write output files with .o and .s
    suffixes, respectively.

 - <rdar://problem/6714125> clang-driver should support -O4 and -flto,
   like llvm-gcc

llvm-svn: 67645
2009-03-24 20:17:30 +00:00
Daniel Dunbar 6b5244d600 Driver: Warn when 'clang' is used to compile a source file we could
conceivably handle, but are defaulting to not using clang for.

llvm-svn: 67641
2009-03-24 19:14:56 +00:00
Daniel Dunbar 88f356e16b Driver: Change default use of "clang" compiler.
- Don't default to using clang for C++ (use -ccc-clang-cxx to
   override).

 - Default to only using clang on i386 and x86_64 (use
   -ccc-clang-archs "" to override).

 - <rdar://problem/6712350> [driver] clang should not be used on
   powerpc by default
 - <rdar://problem/6705767> driver should default to -ccc-no-clang-cxx

I plan to add a warning that we are not using the clang compiler for
the given compilation so that users do not think clang is being used
in situations it isn't.

This change is motivated by the desire to be able to drop clang into a
build and have things "just work", even if it happens to get used to
compile C++ code or code for an architecture we don't support yet.

llvm-svn: 67640
2009-03-24 19:02:31 +00:00
Daniel Dunbar 8fa879d39f Move ToolChain::ShouldUseClangCompiler to
Driver::ShouldUseClangCompiler.
 - No functionality change.

llvm-svn: 67639
2009-03-24 18:57:02 +00:00
Daniel Dunbar 038f5d6ef0 Driver: Translate -fverbose-asm for LLVM backend.
- <rdar://problem/6715707> driver should translate -fverbose-asm into
   -asm-verbose

llvm-svn: 67634
2009-03-24 17:59:06 +00:00
Mike Stump 90a3707225 Really fix cmake style builds.
llvm-svn: 67633
2009-03-24 17:52:34 +00:00
Daniel Dunbar 827faf8f2b Driver: Result files shouldn't be removed on failure when -save-temps
is specified.
 - No easy way to make a safe test case for this (given where the
   driver is supposed to put temp files).

llvm-svn: 67632
2009-03-24 17:49:01 +00:00
Daniel Dunbar 9ea0e77572 Driver: ArgList::getLastArg was in fact returning the first matching arg.
- <rdar://problem/6715818> clang doesn't honor gcc semantic that last
    -O optimization option wins.

llvm-svn: 67628
2009-03-24 17:31:30 +00:00
Daniel Dunbar d7a1860eba Driver: Forward -MMD (not -MM) to clang-cc; this got lost in
translation, the former we support, the later we don't (yet).

llvm-svn: 67611
2009-03-24 07:20:59 +00:00
Daniel Dunbar 2dbe89af65 Install clang-cc to libexec/clang-cc (instead of bin/clang-cc).
- Updated ccc & driver to look in libexec/ for tools.

llvm-svn: 67607
2009-03-24 04:07:10 +00:00
Daniel Dunbar a45cf5b6b0 Rename clang to clang-cc.
Tests and drivers updated, still need to shuffle dirs.

llvm-svn: 67602
2009-03-24 02:24:46 +00:00
Daniel Dunbar 06686abfdc Driver: lipo wasn't being called correctly (translation failure from
ccc due to the different way we handle output arguments).

llvm-svn: 67583
2009-03-24 00:24:37 +00:00
Daniel Dunbar 95953ce31c Driver: Make argument parsing fast.
On a synthetic command line consisting of almost all defined options,
this drops wall time from .00494 to .00336 and user time from .00258
to .00105.

On the same benchmark, clang-driver is about 15% faster than the
primary gcc driver and almost twice as fast as the gcc driver driver.

llvm-svn: 67564
2009-03-23 21:50:40 +00:00
Daniel Dunbar ee4d1feb44 Driver: Fix off by one in computation of first searchable option.
llvm-svn: 67552
2009-03-23 19:19:19 +00:00
Daniel Dunbar 1773177a99 Driver: Add two special groups of "whitelisted" options which we know
clang doesn't support, and don't want to warn are unused. Eventually
these should disappear.

Here is a more readable list than is in the diff:

W options: -Wall, -Wcast-align, -Wchar-align, -Wchar-subscripts,
-Werror, -Wextra, -Winline, -Wint-to-pointer-cast, -Wmissing-braces,
-Wmost, -Wnested-externs, -Wno-format-y2k, -Wno-four-char-constants,
-Wno-missing-field-initializers, -Wno-trigraphs, -Wno-unknown-pragmas,
-Wno-unused-parameter, -Wparentheses, -Wpointer-arith,
-Wpointer-to-int-cast, -Wreturn-type, -Wshorten-64-to-32, -Wswitch,
-Wunused-function, -Wunused-label, -Wunused-value, -Wunused-variable,
-Wwrite-strings.

f options: -fasm-blocks, -fmessage-length=.

llvm-svn: 67549
2009-03-23 19:03:36 +00:00
Daniel Dunbar 453d79a2db Driver: Check that options are ordered properly (outside of
Release-Asserts mode).

Also, avoid searching through option groups (which will never match).

llvm-svn: 67548
2009-03-23 18:41:45 +00:00
Daniel Dunbar 76ce7416ae Driver: Setup file and program search paths in tool chains.
llvm-svn: 67529
2009-03-23 16:15:50 +00:00
Daniel Dunbar a0c89be9cc Driver: Drop code for checking bounds in SeparateArg::render, this
situation should never occur now that arguments are parsed correctly.

llvm-svn: 67493
2009-03-22 23:50:14 +00:00
Daniel Dunbar d8500f3b0f Driver: Implement 'missing argument' error.
llvm-svn: 67490
2009-03-22 23:26:43 +00:00
Nuno Lopes 34cef4c1c8 fix PR3859: crash with 'cc -V'
llvm-svn: 67472
2009-03-22 17:47:44 +00:00
Daniel Dunbar 1acb0eb24f Driver: Give Compilation::Execute total control over the Driver result
code; and don't return an error code when -### is present, even if
errors occur.

llvm-svn: 67425
2009-03-21 00:40:53 +00:00
Daniel Dunbar ea9f032613 ccc/Driver: .s defaults to 'assembler-with-cpp' on Darwin.
- <rdar://problem/6669441> ccc doesn't handle assembler-with-cpp
   semantics correctly (but clang supports it)

 - This is sad, because it requires a fairly useless target
   hook. C'est la vie.

llvm-svn: 67418
2009-03-20 23:39:23 +00:00
Daniel Dunbar 60196720eb Driver: Switch to using -include-pth.
llvm-svn: 67393
2009-03-20 19:38:56 +00:00
Daniel Dunbar 7f2600244c Driver: Parse Darwin version out of target triple.
llvm-svn: 67388
2009-03-20 18:21:51 +00:00
Daniel Dunbar be2208472c Driver: Add and use darwin::Assemble tool.
- Based on patch from Pieter de Bie; thanks!

llvm-svn: 67379
2009-03-20 16:06:39 +00:00
Daniel Dunbar e81cc832f6 Driver: Add two option overload for AddAllArgValues.
llvm-svn: 67377
2009-03-20 15:59:01 +00:00
Daniel Dunbar 0e75994e8b Driver: Add Arg::getAsString and use when dumping arguments to
diagnostics.
 - This ensures that the whole argument and values are printed,
   instead of just the option name.

llvm-svn: 67366
2009-03-20 06:14:23 +00:00
Chris Lattner 03b886e301 strictly evaluate SVN_REVISION so that svnversion is run once instead of 4 times.
llvm-svn: 67365
2009-03-20 05:23:53 +00:00
Daniel Dunbar d972e2247b Driver: Implement -print-search-dirs.
llvm-svn: 67362
2009-03-20 04:37:21 +00:00
Daniel Dunbar 03e0a4f324 Driver: Sketch Darwin tool chains.
llvm-svn: 67356
2009-03-20 00:57:52 +00:00
Daniel Dunbar 64ed5e3730 Driver: Add darwin::Lipo tool.
llvm-svn: 67355
2009-03-20 00:52:38 +00:00
Daniel Dunbar 59e5e880f3 Driver: Move tool chain implementations into ToolChains.cpp.
llvm-svn: 67350
2009-03-20 00:20:03 +00:00
Daniel Dunbar 1fc898c40a Driver: Temporary hack to allow -ccc-print-bindings to work (for
testing) even with -pipe on.

llvm-svn: 67348
2009-03-20 00:11:04 +00:00
Daniel Dunbar 403c468065 Driver/clang: -mattr strings were not comma separated.
- Apologies for commits w/o test cases; they are coming.

llvm-svn: 67310
2009-03-19 17:36:04 +00:00
Daniel Dunbar 8d6ab2afa6 Driver: Compilation::Execute wasn't returning result code correctly.
llvm-svn: 67296
2009-03-19 08:03:45 +00:00
Daniel Dunbar 1da82ae5bd Driver: Executing piped jobs with a single command is easy.
llvm-svn: 67295
2009-03-19 08:01:45 +00:00
Daniel Dunbar adc5c7c2fd Driver: Claim unused input arguments when emitting "input file unused"
diagnostic (to suppress more generic unused warning).

llvm-svn: 67294
2009-03-19 07:57:08 +00:00
Daniel Dunbar 2da027244d Driver: Claim -arch options when pipelining, and claim arguments that
are forwarded to GCC.
 - The later is unfortunate, as it prevents us from generally warning
   about anything interesting on platforms that use a generic
   toolchain. However, we can't do much better without significantly
   complicating things, and generally we should have proper tool chain
   definitions.

llvm-svn: 67293
2009-03-19 07:55:12 +00:00
Daniel Dunbar 5cdf3e0fb9 Driver: Handle "linker input" arguments.
- Make InputInfo a variant of filename, pipe, input argument,
   nothing.

 - Leave a FIXME in InputInfo that this should be revisited.

llvm-svn: 67292
2009-03-19 07:29:38 +00:00
Daniel Dunbar 0e227785cb Driver: Add Arg::renderAsInput; this is a messy area and something I
was hoping to clean up in the rewrite, but I don't see it yet.

llvm-svn: 67291
2009-03-19 07:22:40 +00:00
Daniel Dunbar 7ef5ed6c16 Driver: Fix bug in translating -O to clang, add clang-translation test
case.

llvm-svn: 67257
2009-03-18 23:39:35 +00:00
Daniel Dunbar 483693941c Driver: Resolve program path for "cp" (used as part of transparent gcc
PCH support).

llvm-svn: 67256
2009-03-18 23:34:15 +00:00
Daniel Dunbar c4acf9d516 Driver: Forcibly disable pipe support until we can execute them, the
driver is functional without them.

llvm-svn: 67254
2009-03-18 23:18:19 +00:00
Daniel Dunbar 18d69de523 Driver: Delete the temporary files llvm::sys::Path::makeUnique
sometimes leaves around.

llvm-svn: 67253
2009-03-18 23:08:52 +00:00
Mike Stump 1a0d5707af Make -j8 safe.
llvm-svn: 67252
2009-03-18 22:53:10 +00:00
Daniel Dunbar 64316c49a6 Driver: Execute jobs; no pipe support yet.
llvm-svn: 67250
2009-03-18 22:44:24 +00:00
Daniel Dunbar 6c17bfd99b Driver: Cleanup temporary/result files.
llvm-svn: 67248
2009-03-18 22:16:03 +00:00
Daniel Dunbar 6f66877ebf Driver: Lookup program names using llvm::sys::Program::FindProgramByName
if our usual methods fail. This isn't necessary for running the tool,
but improves the accuracy of logging output.

Also, have GCC tools lookup gcc program path.

llvm-svn: 67243
2009-03-18 21:34:08 +00:00