Commit Graph

3659 Commits

Author SHA1 Message Date
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 9b726f88a2 ccc: Use -include-pth.
llvm-svn: 67410
2009-03-20 22:13:54 +00:00
Daniel Dunbar da382a88bf Driver: Get executable path using llvm::sys::Path::GetMainExecutable.
llvm-svn: 67228
2009-03-18 20:25:53 +00:00
Daniel Dunbar d72468a61b ccc: Pass --relocation-model as separate arguments (to match Driver).
llvm-svn: 67190
2009-03-18 09:36:19 +00:00
Daniel Dunbar d9b80c2af8 Driver: Use custom diag printer to drop dependency on libFrontend and
libLex.

llvm-svn: 67155
2009-03-18 02:11:26 +00:00
Daniel Dunbar 2608c548b5 Driver: Use PrettyStackTrace.
llvm-svn: 67149
2009-03-18 01:38:48 +00:00
Douglas Gregor 23d75bb326 Build system changes to use TableGen to generate the various
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
2009-03-16 23:06:59 +00:00
Daniel Dunbar e75d834c7c Driver: Implement majority tool binding logic.
- Still need code for determining proper output location.

 - Doesn't work yet, of course, as the host isn't providing real
   tool chains.

 - Interface still has a few warts, but has gotten a nice bit of
   polish during the rewrite.

llvm-svn: 67038
2009-03-16 06:56:51 +00:00
Daniel Dunbar a493ff47bd Update test.
llvm-svn: 66967
2009-03-13 22:11:42 +00:00
Daniel Dunbar 427d6f1a95 ccc: Handle limited forms of -ccc-host-triple for testing
compatibility with C++ rewrite.

llvm-svn: 66938
2009-03-13 20:33:09 +00:00
Daniel Dunbar 52183091f1 ccc/Driver: Forward -fheinous-gnu-extensions to clang.
llvm-svn: 66915
2009-03-13 18:12:01 +00:00
Daniel Dunbar 7326ad57a4 ccc/Driver: Normalize phase spelling in -ccc-print-phases.
llvm-svn: 66912
2009-03-13 17:52:07 +00:00
Daniel Dunbar 3efedddcf9 Driver: Return 0 from BuildCompilation on -ccc-print-phases,
-ccc-print-options.

llvm-svn: 66907
2009-03-13 17:24:34 +00:00
Daniel Dunbar 92d19016b5 ccc: Don't print the arch for every action when printing phases.
llvm-svn: 66886
2009-03-13 12:16:31 +00:00
Daniel Dunbar 5a3b818dea ccc/Driver: Forward -fprint-source-range-info to clang.
llvm-svn: 66879
2009-03-13 10:03:45 +00:00
Daniel Dunbar 34c4187152 ccc/Driver: Mark {dump{machine,specs,version},
print-{multi-{directory,lib,os-directory}, search-dirs} as unsupported
instead of handling separately.

llvm-svn: 66848
2009-03-13 00:17:48 +00:00
Daniel Dunbar f336cc279c ccc: Fix broken assertion.
llvm-svn: 66793
2009-03-12 15:59:34 +00:00
Daniel Dunbar 024882184b ccc: Fix -ccc-print-phases when doing a universal build.
llvm-svn: 66792
2009-03-12 15:57:47 +00:00
Daniel Dunbar c0b3e95a1a Driver: Use standard Diagnostic interface for diagnostics.
llvm-svn: 66786
2009-03-12 08:55:43 +00:00
Daniel Dunbar 6f2650de80 ccc: Tweak some group names.
llvm-svn: 66772
2009-03-12 04:50:20 +00:00
Daniel Dunbar a27669f1d8 ccc: Cleanup arguments a bit; we don't need a separate group for
-fblocks, and there were some duplicate options scattered in.

llvm-svn: 66764
2009-03-12 03:28:55 +00:00
Daniel Dunbar d295bf1d46 ccc: -x assembler-with-cpp was broken for darwin, and it wasn't using
clang as the preprocessor even when it should.

llvm-svn: 66737
2009-03-11 23:07:54 +00:00
Daniel Dunbar 4dff6a4973 Driver: Add host info.
- Replace assorted -ccc-host-* options by -ccc-host-triple which is
   more sane.

llvm-svn: 66600
2009-03-10 23:41:59 +00:00
Daniel Dunbar ee66cf2249 Driver: Handle magic -ccc- options.
- Follows ccc currently, but this functionality should eventually be
   outside the Driver lib.

llvm-svn: 66575
2009-03-10 20:52:46 +00:00
Daniel Dunbar 7ea58c355b Forward -ftemplate-depth-<N> to clang's -ftemplate-depth N.
llvm-svn: 66516
2009-03-10 00:35:30 +00:00
Daniel Dunbar 1e6efc0cf4 ccc: Parse -T{bss,data,text}, -iwithsysroot, -specs correctly.
Also, fix some test cases.

llvm-svn: 66425
2009-03-09 17:43:51 +00:00
Daniel Dunbar 13e9eff3f2 Fix thinko. *cough* ofcourseItestedit *cough*
llvm-svn: 66283
2009-03-06 18:35:43 +00:00
Daniel Dunbar 3a45e4fffb Tidy file removal cleanup & remove race condition on file existence.
llvm-svn: 66281
2009-03-06 18:32:01 +00:00
Daniel Dunbar b2cd66bf4d Driver: Sink Driver/Compilation into clang::driver namespace.
- Add OptTable instance to Driver.

llvm-svn: 66063
2009-03-04 20:49:20 +00:00
Daniel Dunbar 03f32e7638 ccc: Fix passing of -nozero-initialized-in-bss.
- PR3722.

llvm-svn: 66052
2009-03-04 19:17:10 +00:00
Daniel Dunbar 5637208a88 Driver: More Option implementation.
- 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.

llvm-svn: 66028
2009-03-04 08:33:23 +00:00
Daniel Dunbar b2da933989 Sketch Driver Option classes.
llvm-svn: 65933
2009-03-03 05:55:11 +00:00
Daniel Dunbar 544ecd14b6 Stub out some structure for C++ driver.
llvm-svn: 65867
2009-03-02 19:59:07 +00:00
Ted Kremenek 32a59b2315 Do not automatically run the 'missing -dealloc' check until we have adequate time to make it much smarter (too much noise).
llvm-svn: 65474
2009-02-25 21:08:30 +00:00
Daniel Dunbar cdff38b1f6 ccc: Don't remove result files on error when -save-temps is present.
llvm-svn: 65349
2009-02-23 23:37:18 +00:00
Daniel Dunbar 9e5dfc6111 ccc: Remove unknown host warning, it was breaking gcc's configure.
llvm-svn: 65276
2009-02-22 08:15:14 +00:00
Daniel Dunbar f175ba1d17 ccc: Remove temporary files used in compilation, and remove
compilation results on failures.

llvm-svn: 65254
2009-02-22 01:23:52 +00:00
Daniel Dunbar e8f256c7f9 Unbreak Darwin PIC handling; my refactoring yesterday was bogus.
llvm-svn: 65154
2009-02-20 20:52:47 +00:00
Daniel Dunbar 6ef6a04dd6 Fix test case.
llvm-svn: 65139
2009-02-20 18:53:07 +00:00
Daniel Dunbar ba1c8f5a3c ccc: Spell mattr correctly.
llvm-svn: 65119
2009-02-20 07:47:48 +00:00
Daniel Dunbar e1889f935a ccc: Basic translation of gcc subtarget feature options to LLVM
options (i.e., -mno-red-zone, -msoft-float, -mno-sse, etc.)
 - Also, make sure unwind tables default to on Darwin/x86_64.
 - PR3604.

llvm-svn: 65118
2009-02-20 07:35:04 +00:00
Daniel Dunbar b9b440cde6 ccc: Use toolchain hook for default relocation model value.
llvm-svn: 65116
2009-02-20 06:48:26 +00:00
Daniel Dunbar 63e03cbe8c ccc: Use toolChain arch name instead of looking for arch command line
argument; the toolchain should always know the arch.
 - Fixes: <rdar://problem/6582911> -ccc-clang-archs doesn't work for excluding ppc

llvm-svn: 65104
2009-02-20 01:48:01 +00:00
Daniel Dunbar 1b84824f83 ccc: Store arch name in all toolchains.
- No functionality change.

llvm-svn: 65102
2009-02-20 01:36:35 +00:00
Daniel Dunbar 92cfae68e9 ccc: Give all tools access to the toolchain they are in.
- No functionality change.

llvm-svn: 65100
2009-02-20 01:30:38 +00:00
Daniel Dunbar 2a07da78c0 ccc: Give nicer error when spawning a subprocess fails.
llvm-svn: 65075
2009-02-19 22:59:57 +00:00
Daniel Dunbar a118a07157 ccc: Also look for .gch files when seeing if we should auto load a
token-cache for clang.

llvm-svn: 65069
2009-02-19 22:01:23 +00:00
Daniel Dunbar 5805c98526 ccc: Forward -ftime-report to clang.
llvm-svn: 64887
2009-02-18 05:01:43 +00:00
Daniel Dunbar 7b8b7492dd ccc: Pass -{MM,MMD,MF,MP,MT} to clang. Error on -{M,MM,MG,MQ} which
clang doesn't support yet.
 - See PR3603.

llvm-svn: 64783
2009-02-17 19:02:12 +00:00
Daniel Dunbar 89f908b883 ccc: Recognize -isystem.
llvm-svn: 64776
2009-02-17 18:10:48 +00:00
Daniel Dunbar ce96aea9ec ccc: Assume gcc will accept piped assembler input when using generic GCC toolchain.
llvm-svn: 64775
2009-02-17 18:10:15 +00:00
Daniel Dunbar 8ceb91f41b ccc: Fix a FIXME.
llvm-svn: 64774
2009-02-17 18:07:00 +00:00
Ted Kremenek b535181199 Static Analyzer driver/options (partial) cleanup:
- Move all analyzer options logic to AnalysisConsumer.cpp.
- Unified specification of stores/constraints/output to be:
   -analyzer-output=...
   -analyzer-store=...
   -analyzer-constraints=...
  instead of -analyzer-range-constraints, -analyzer-store-basic, etc.
- Updated drivers (ccc-analyzer, scan-builds, new ccc) to obey this new
  interface
- Updated test cases to conform to new driver options

llvm-svn: 64737
2009-02-17 04:27:41 +00:00
Daniel Dunbar 46414874a5 ccc: Pass -f[no-]math-errno to clang.
llvm-svn: 64709
2009-02-17 00:42:05 +00:00
Daniel Dunbar a1c37501ed ccc: @<filename> arguments are only treated specially if <filename>
exists, otherwise gcc just treats as an input.
 - PR3591

llvm-svn: 64640
2009-02-16 18:18:43 +00:00
Daniel Dunbar 87f7ba3541 ccc: Pass -P to clang.
llvm-svn: 64578
2009-02-15 05:59:37 +00:00
Douglas Gregor 69c7951c8e Add -ffreestanding to suppress the implicit declaration of library builtins like printf and malloc. Fixes PR3586
llvm-svn: 64566
2009-02-14 20:49:29 +00:00
Daniel Dunbar 72e90d7fb0 ccc: Suffix for PCH files is appended, not replaced. (Test case)
llvm-svn: 64467
2009-02-13 17:42:52 +00:00
Daniel Dunbar b903a072b1 ccc: Suffix for PCH files is appended, not replaced.
llvm-svn: 64466
2009-02-13 17:42:34 +00:00
Daniel Dunbar 7ae70391f0 ccc: Test case for transparent PTH support.
llvm-svn: 64420
2009-02-13 00:49:50 +00:00
Daniel Dunbar 391fc04b02 ccc: Stop patching output file name when using transparent PTH support.
<rdar://problem/6515236> [ccc] generate expected output files when used with PCH

llvm-svn: 64419
2009-02-13 00:49:01 +00:00
Daniel Dunbar e21993fa98 Always pass -disable-free to clang when compiling.
llvm-svn: 64416
2009-02-13 00:29:22 +00:00
Mike Stump f9cf4fa08c One more tweak to account for gluing together llvm and clang into one.
llvm-svn: 64276
2009-02-11 01:11:36 +00:00
Mike Stump 9d5d3b9de5 More version experimentation.
llvm-svn: 64271
2009-02-11 01:01:17 +00:00
Mike Stump 081e354f11 Run a little experiment with version numbers.
llvm-svn: 64268
2009-02-11 00:36:04 +00:00
Daniel Dunbar 8a1ca06456 ccc: -dM wasn't being passed to Darwin/CC1 correctly.
llvm-svn: 64169
2009-02-09 21:22:38 +00:00
Daniel Dunbar 1a5f04dc66 ccc: Forward -dM to clang.
llvm-svn: 63955
2009-02-06 19:26:48 +00:00
Daniel Dunbar 421d40c22b ccc/Darwin: Add a missing Darwin argument translation, -shared becomes
-dynamiclib. Re-audited translations to make sure I didn't miss
something else.

llvm-svn: 63953
2009-02-06 19:18:58 +00:00
Daniel Dunbar ba3325af7b ccc: Give explicit error on @ style argument lists (not yet supported).
llvm-svn: 63903
2009-02-06 01:28:59 +00:00
Daniel Dunbar 724167c280 ccc: Implement special language recognition handling for -.
- <rdar://problem/6551577> [ccc] require -x with -

llvm-svn: 63901
2009-02-05 23:44:44 +00:00
Daniel Dunbar e7dffe39ff ccc: Translate -O to -O1 for clang, and only pass last -O option.
llvm-svn: 63816
2009-02-05 02:43:38 +00:00
Daniel Dunbar ed9309ef46 ccc: Forward -femit-all-decls to clang and use an option group to
simplify handling of -f options clang recognizes.

llvm-svn: 63778
2009-02-04 21:21:08 +00:00
Daniel Dunbar 3ba943ed7a ccc: -ObjC and -ObjC++ change default language, but only for "source
files".

llvm-svn: 63727
2009-02-04 08:01:01 +00:00
Daniel Dunbar ed1ba4fc12 Use /usr/bin/env to run Python for increased portability. Patch by
David Chisnall.

llvm-svn: 63661
2009-02-03 21:25:26 +00:00
Mike Stump c99d003b25 Add -fno-blocks support. This fixes block-no-block-def.c.
llvm-svn: 63385
2009-01-30 08:22:07 +00:00
Daniel Dunbar 6d6d01f254 ccc: Forward -fobjc-nonfragile-abi to clang.
llvm-svn: 63378
2009-01-30 04:43:19 +00:00
Daniel Dunbar 3fc8ea64c9 ccc: Add -Xclang option, rename -WA, to -Xanalyzer.
- -Xclang always forwards to clang

 - -Xanalyzer replaces -WA,; it seems like the cleaner mechanism and
    is more readable.

llvm-svn: 63349
2009-01-30 00:24:16 +00:00
Daniel Dunbar b6e6a513c2 ccc: Mark -combine option as unsupported.
llvm-svn: 63348
2009-01-30 00:12:29 +00:00
Daniel Dunbar 711e882c1b ccc: Embrace destiny as a clang compiler driver.
This redoes the default mode that ccc runs in w.r.t. using clang. Now
ccc defaults to always using clang for any task clang can
handle. However, the following options exist to tweak this behavior:

 -ccc-no-clang: Don't use clang at all for compilation (still used for
  static analysis).
 
 -ccc-no-clang-cxx: Don't use clang for C++ and Objective-C++ inputs.

 -ccc-no-clang-cpp: Don't use clang as a preprocessor.

 -ccc-clang-archs <archs>: If present, only use clang for the given
  comma separated list of architectures. This only works on Darwin for
  now.

Note that all -ccc options must be first on the command line.

llvm-svn: 63346
2009-01-29 23:54:06 +00:00
Daniel Dunbar df49b7cf2f ccc: Honor -ccc-clang for generic GCC toolchain.
llvm-svn: 63277
2009-01-29 06:12:22 +00:00
Daniel Dunbar ad0d48d372 Fix test case (for -### printing version)
llvm-svn: 63223
2009-01-28 19:30:43 +00:00
Daniel Dunbar 36ccb30a35 ccc: Support -v; invent a version number for ccc for now, will be
shared with clang eventually.

llvm-svn: 63220
2009-01-28 19:26:20 +00:00
Daniel Dunbar f4a0cba545 ccc/Darwin/clang: Fix a mistranslation for the llvm-backend; llvm-gcc
doesn't set the relocation model when -mdynamic-no-pic is present.

llvm-svn: 63129
2009-01-27 20:42:58 +00:00
Daniel Dunbar 2ad3ff0bd6 ccc: Normalize machine name to i386 for platforms which report the
machine as x86_64.

llvm-svn: 63122
2009-01-27 19:29:51 +00:00
Daniel Dunbar a7ff032643 ccc: -o should not be automatically forwarded to generic gcc tools.
llvm-svn: 63015
2009-01-26 18:00:14 +00:00
Daniel Dunbar f3a06113c7 ccc: Recognize -emit-llvm [-S].
- Unlike llvm-gcc, this doesn't yet treat -emit-llvm output as a
   linker input.

llvm-svn: 63014
2009-01-26 17:09:15 +00:00
Daniel Dunbar 3d5d14ea15 ccc: Finish definition of long argument translations.
- However, these last ones do not actually work; the issue is that
   they translate to batches of options and need to be reparsed. For
   now we just give an unsupported error on them.

llvm-svn: 62872
2009-01-23 20:08:16 +00:00
Daniel Dunbar 505f751451 ccc: Another batch of long argument translations.
- Again turned up a few which don't do anything sensible.

llvm-svn: 62870
2009-01-23 19:40:54 +00:00
Daniel Dunbar 8fb96605f8 ccc: Implement long options which take joined & separate forms.
llvm-svn: 62841
2009-01-23 08:16:41 +00:00
Daniel Dunbar 8fa972a55b ccc: Support long ('--...') flag arguments.
- Curiously, a number of the current translations gcc does appear to
   be useless?

llvm-svn: 62831
2009-01-23 02:00:46 +00:00
Daniel Dunbar e2c430b317 ccc: Organize long options together.
llvm-svn: 62829
2009-01-23 01:31:44 +00:00
Daniel Dunbar eff67fa33b ccc: Add support for several more aliases (--ansi, --assemble,
--assert, --classpath).
 - Requires providing some option parameters to over-ride rendering in
   order to match gcc. There may be a cleaner way to do this (probably
   by introducing a new option type for long JoinedOrSeparate forms).

llvm-svn: 62825
2009-01-23 00:54:03 +00:00
Daniel Dunbar 58645d0285 ccc: Darwin/x86/link: Fix a few incompatibilities with gcc (missed
forwarding -s to linker, and was only taking last arg in some cases
when should have been taking all).

llvm-svn: 62824
2009-01-23 00:39:52 +00:00
Daniel Dunbar 4bb6a2fcd3 ccc: Add support for "alias" options.
- Unlike groups (which gather distinct but related options), aliases
   are for options like '--all-warnings' which are effectively treated
   like some other option ('-Wall') both in the driver logic and when
   passing to tools.

llvm-svn: 62820
2009-01-23 00:14:46 +00:00
Daniel Dunbar ccabd0f01a ccc: Fix typo; isn't dynamic typing fun!
llvm-svn: 62817
2009-01-23 00:04:43 +00:00
Daniel Dunbar 2e1cfd0267 ccc: Bug fix, driver logic was allowing child jobs to pipe output when
parent wasn't expecting it.

llvm-svn: 62811
2009-01-22 23:19:32 +00:00
Daniel Dunbar d89187696f ccc/clang: Mimic llvm-gcc initialization of LLVM backend based on gcc
options (for example, to set relocation model or enable unwind table generation).

llvm-svn: 62740
2009-01-22 01:55:46 +00:00
Daniel Dunbar d00bca3572 ccc: Handle a few long argument form (--) translations using option
groups, and fix misdeclaration of some -W options.

llvm-svn: 62702
2009-01-21 18:49:34 +00:00
Daniel Dunbar f2e3d81cb4 ccc: Add appropriate file search prefixes when on x86_64 Darwin, and
look for crt3.o appropriately.

llvm-svn: 62694
2009-01-21 17:18:19 +00:00
Daniel Dunbar a184754570 ccc: Implement file & path searching.
- Toolchain is responsible for providing list of prefixes to search.

 - Implement -print-file-name=xxx and -print-prog-name=xxx driver options.

llvm-svn: 62659
2009-01-21 02:03:52 +00:00
Daniel Dunbar 309052a84c ccc: Add --analyze test case.
llvm-svn: 62654
2009-01-21 01:22:37 +00:00
Daniel Dunbar 989ab477d2 ccc: Add --analyze driver mode (for running static analyzer).
- For now forces generation of plist files, need to think about the
   right interface.

 - Changed -fsyntax-only mode to be its own phase (more consistent).

 - Add -WA, for passing options verbatim to analyzer.

llvm-svn: 62649
2009-01-21 01:07:49 +00:00
Daniel Dunbar 47d16e53fe ccc: Unbreak -pipe handling broken in previous refactoring.
llvm-svn: 62637
2009-01-21 00:05:15 +00:00
Mike Stump c1b44ce610 Fix ccclib building when building in a separate build tree.
llvm-svn: 62621
2009-01-20 21:54:36 +00:00
Daniel Dunbar de46097847 ccc: Allow downstream tools to be aware of final output name.
- This is a hack to allow the Darwin linker to get -final_output when
   doing universal builds; the mechanism should be generalized.

 - Handle multiple redundant -arch arguments correctly.

 - Forward -arch_multiple and -final_output to gcc when necessary.

 - Simplified implementation of derived gcc tools.

llvm-svn: 62618
2009-01-20 21:29:14 +00:00
Daniel Dunbar 7966091399 ccc: Darwin/x86: Teach compile tool how to build .pch files. xcc is
now fully independent of the gcc driver when targetting Darwin/x86.

llvm-svn: 62570
2009-01-20 05:51:52 +00:00
Daniel Dunbar 8bc09f4085 ccc: PCH generation doesn't strip the path when generating a derived
filename from the input path.

llvm-svn: 62569
2009-01-20 05:49:32 +00:00
Daniel Dunbar 313e301574 ccc: Recognize that -M and -MM only run preprocessor.
- Clean up some placement of output args to match gcc more precisely
   (for testing).

llvm-svn: 62566
2009-01-20 01:53:54 +00:00
Daniel Dunbar 0c8d6c9d27 ccc: Darwin/x86: Add direct cpp support.
- Add Darwin_X86_CC1Tool which is shared by Darwin/x86/Compile and
   Darwin/x86/Preprocess tools.

 - Minor bug fixes (CmpDriver exit code, -x cpp-output handling, some
   linker argument translation).

llvm-svn: 62551
2009-01-20 00:47:24 +00:00
Daniel Dunbar 19e953acd9 Makefile isn't executable.
llvm-svn: 62523
2009-01-19 19:59:59 +00:00
Daniel Dunbar ababe7d47d ccc: Add missing file.
llvm-svn: 62520
2009-01-19 19:20:01 +00:00
Daniel Dunbar f6135630a8 ccc: Add installation of ccc; based on patch from Mike Stump.
- This doesn't follow normal installation procedure of python
   code, but no sense trying too hard since ccc will be moved to
   C++.

 - Entry point is now tools/ccc.

llvm-svn: 62517
2009-01-19 18:50:49 +00:00
Daniel Dunbar 6e2c6844c1 ccc: Bug fix, pch generation should not try to output on pipe and -E
should. This needs cleanup.

llvm-svn: 62473
2009-01-18 21:35:24 +00:00
Anders Carlsson c57acbc3af Fix a tyop
llvm-svn: 62453
2009-01-18 02:54:30 +00:00
Anders Carlsson d0e93db5ce Make CCC_ECHO output to stderr
llvm-svn: 62452
2009-01-18 02:54:17 +00:00
Anders Carlsson 178b767b9b Fix a runtime error I saw
llvm-svn: 62448
2009-01-18 02:19:54 +00:00
Daniel Dunbar 5f40dec258 ccc: Support running piped jobs (-pipe now works).
llvm-svn: 62396
2009-01-17 02:02:35 +00:00
Daniel Dunbar ee5a4a8cce ccc: Don't be pedantically compatible with -Z options, these are the
result of an internal implementation detail of gcc.

llvm-svn: 62389
2009-01-17 00:53:19 +00:00
Daniel Dunbar b3a633fc0c ccc: Clean up (user level) error handling.
- ccc now checks for existence of input files (more annoying to test,
   but matches gcc).
 - Fix some test cases.

llvm-svn: 62378
2009-01-16 23:12:12 +00:00
Daniel Dunbar c1a2043c5b ccc: Fix thinko, add gross but effective test of translation for Darwin/X86/cc1.
llvm-svn: 62360
2009-01-16 21:20:42 +00:00
Daniel Dunbar 245df5f4ac ccc: Darwin/X86: gcc compatibility, only add
'-feliminate-unused-debug-symbols' in reponse to '-g' (not '-g*').

llvm-svn: 62357
2009-01-16 21:07:21 +00:00
Daniel Dunbar 1e3677c907 ccc: Darwin/X86: Implement remainder of (non -Z...) generic argument
translation.
 - As is my general strategy, this is initially pedantically
   compatible with gcc and can be cleaned up later. So, for example,
   we still pass -static to collect2 4 times if you say '-mkernel
   -fapple-kext'. ;)

llvm-svn: 62353
2009-01-16 20:25:36 +00:00
Daniel Dunbar 87cb84e9f0 ccc: Implement support clang PTH using gcc PCH style interface.
This requires some hackery, as gcc's PCH mechanism changes behavior,
whereas while PTH is simply a cache. Notably:

 - Automatically cause clang to load a .pth file if we find one that
   matches a command line -include argument (similar to how gcc
   looks for .gch files).

 - When generating precompiled headers, translate the suffix from .gch
   to .pth (so we do not conflict with actual gcc PCH files).

 - When generating precompiled headers, copy the input header to the
   same location as the output PTH file. This is necessary because gcc
   supports -include xxx.h even if xxx.h doesn't exist, but for clang
   we need to actually have the contents of this file available.

llvm-svn: 62246
2009-01-14 23:26:40 +00:00
Daniel Dunbar fec2f2950a ccc: Finish main clang compiler argument translation.
- Still missing some odds and ends like -M.

 - Also, we still need to do some translation and forwarding of
   codegen options.

llvm-svn: 62241
2009-01-14 19:42:31 +00:00
Daniel Dunbar 3b8678fd60 ccc: Darwin/Compiler: Improve gcc compat in use of -auxbase-strip.
llvm-svn: 62213
2009-01-14 03:31:16 +00:00
Daniel Dunbar a06af2ba07 ccc: Implement argument translation for clang.
- This is what ccc (old) currently handles.

 - Clang accepts some more things that aren't getting forwarded...

llvm-svn: 62210
2009-01-14 01:50:15 +00:00
Daniel Dunbar 5cc2ba3617 ccc: Add hello.{cpp,m} tests.
- hello.cpp is XFAIL pending g++ emulation.

llvm-svn: 62208
2009-01-14 01:34:13 +00:00
Daniel Dunbar d80c653fe2 ccc: Add -ccc-echo special option, and support pulling CCC_CLANG,
CCC_ECHO, and CCC_FALLBACK from environment as ccc (old) did.

llvm-svn: 62207
2009-01-14 01:32:05 +00:00
Daniel Dunbar 65928570c0 ccc: Use Clang/Compile for Objective-C files as well.
llvm-svn: 62206
2009-01-14 01:30:55 +00:00
Daniel Dunbar a63b7f396a ccc: Add dummy Clang/Compile tool and use on Darwin/X86 for C files.
llvm-svn: 62204
2009-01-14 01:03:36 +00:00
Daniel Dunbar e725ff1263 ccc: Darwin/Compile: Define __private_extern__ when building c++.
llvm-svn: 62200
2009-01-14 00:06:14 +00:00
Daniel Dunbar d064502da3 ccc: Fix a test case.
llvm-svn: 62183
2009-01-13 21:11:28 +00:00
Daniel Dunbar 3ff18a5119 ccc: Darwin: Implement some important general argument translations
for the Darwin tool chain.
 - Ideally we would localize these to tool specific argument
   processing but for now this matches gcc closely.

llvm-svn: 62181
2009-01-13 21:07:43 +00:00
Daniel Dunbar 28cffd3dbc ccc: Allow internal tool chain specific argument translation.
- Pulled -Xarch processing into this.

 - Get rid of manual creation of forwarding arg array.

 - Use Darwin/CC1 instead of generic GCC cc1 on X86.

llvm-svn: 62172
2009-01-13 18:51:26 +00:00
Daniel Dunbar 70ff972e52 ccc: Bug fix, '-f...' should be part of the '-f' group.
llvm-svn: 62157
2009-01-13 07:39:45 +00:00
Daniel Dunbar eb83389b30 ccc: Darwin/Link also runs dsymutil in one very particular situation.
llvm-svn: 62154
2009-01-13 06:44:28 +00:00
Daniel Dunbar fc8d8effb6 ccc: Bug fix and gcc compatibility tweak.
- --gstabs only goes to Darwin/Assembler when dealing with an
     assembly file from the command line.

 - Relative placement of -o option for cc1 moves depending on
   -fsyntax-only/-S, how quaint.

llvm-svn: 62152
2009-01-13 06:25:31 +00:00
Daniel Dunbar 34bafa4a40 ccc: Add option groups.
- Simple mechanism for group together sets of options so the driver
   can efficiently deal with them as a group (i.e., for forwarding -i*
   to cc1).

 - Use to finish off the major missing pieces of Darwin/CC1 support.

llvm-svn: 62149
2009-01-13 05:54:38 +00:00
Daniel Dunbar fab583b7c6 ccc: Darwin/CC1: Hardcode (for now) some -m options to match gcc.
llvm-svn: 62146
2009-01-13 04:51:51 +00:00
Daniel Dunbar 8af0d3447e ccc: Allow host to over-ride default arch based on command line
arguments (e.g., -m32 and -m64).

llvm-svn: 62145
2009-01-13 04:05:40 +00:00
Daniel Dunbar 260c84657f ccc: Darwin/CC1: Be bug compatible with gcc in a corner case.
llvm-svn: 62131
2009-01-13 01:04:40 +00:00
Daniel Dunbar dd0efa8aad ccc: Bug fix, output can be NULL.
llvm-svn: 62108
2009-01-12 22:19:59 +00:00
Daniel Dunbar f538cfa254 ccc: Even more Darwin/cc1 argument translation support.
llvm-svn: 62105
2009-01-12 21:44:10 +00:00
Daniel Dunbar df5598444a ccc: Add leading space in -### output to match gcc.
llvm-svn: 62097
2009-01-12 19:36:35 +00:00
Daniel Dunbar b1a40a6a58 ccc: (Darwin) More argument translation for Darwin/Compile tool.
llvm-svn: 62093
2009-01-12 18:51:02 +00:00
Daniel Dunbar d0b0eca12a ccc: (Darwin) More argument translation for Darwin/Compile tool.
llvm-svn: 62089
2009-01-12 17:53:19 +00:00
Daniel Dunbar 999c85542a ccc: (Darwin) Start implementing argument translation for
Darwin/Compile tool.

llvm-svn: 62085
2009-01-12 09:23:15 +00:00
Daniel Dunbar f12e40736a ccc: When constructing a named output, only use base name (not full
path).

llvm-svn: 62083
2009-01-12 07:48:07 +00:00
Daniel Dunbar e42e520a57 ccc: (Darwin) Move path resolution into ToolChain.
llvm-svn: 62082
2009-01-12 07:45:49 +00:00
Daniel Dunbar 17bbcfd5a0 ccc: Implement the rest of Darwin/Assembler argument translation.
llvm-svn: 62081
2009-01-12 07:40:25 +00:00
Daniel Dunbar c11d8d4a09 ccc: Implement macosx-version-min conditions (including a bug fix).
llvm-svn: 62079
2009-01-12 05:02:38 +00:00
Daniel Dunbar e84d6ed8f8 ccc: Generalize Darwin/Link tool based on Darwin version.
llvm-svn: 62078
2009-01-12 04:21:12 +00:00
Daniel Dunbar 02cd7e4070 ccc: Support arguments which behave like linker inputs.
- Support comma joined options which magically turn into multiple
   value arguments (e.g., -Wl,)

 - Split out separate Arg::render routine for when an argument is
   being rendered as an input (as opposed to in its original form).

 - Add option flag for options which should be rendered without the
   option when they are used as an input (e.g., -Xlinker or -o).

 - Support -weak-l..., -weak_framework, and -weak_library.

llvm-svn: 62075
2009-01-12 03:33:58 +00:00
Daniel Dunbar 027c5fbb6d ccc: (Darwin) Pass -ObjC to linker if -ObjC, -ObjC++ or -fobjc is
present.

llvm-svn: 62070
2009-01-12 02:24:21 +00:00
Daniel Dunbar fd22768b08 ccc: Add fairly complete argument translation for Darwin link step.
- Some things are still hardcoded, and macosx-version-min comparison
   isn't implemented, but otherwise this very closely matches gcc.

 - The one exception is that arguments (like -framework or -Wl,) which are
   treated as linker inputs instead of options are not being
   forwarded yet.

llvm-svn: 62059
2009-01-11 23:13:15 +00:00
Daniel Dunbar 3b43cf6169 ccc: Add several convenience methods for argument translation.
llvm-svn: 62057
2009-01-11 22:42:24 +00:00
Daniel Dunbar 39a5c22c40 ccc: Add and name a host of arguments.
- Also, fix bug in MultipleValuesOption which was accepting joined
   arguments.

 - Add ArgList::getArgs, provides iterator over all arg instances for a
   given option.
 
 - Option definition is very much in need of cleaning...

llvm-svn: 62054
2009-01-11 22:12:37 +00:00
Daniel Dunbar adf3e5bdbc ccc: Give the Host an opportunity to switch ToolChains when binding
archs (as a driver driver).

llvm-svn: 62053
2009-01-11 22:06:22 +00:00
Daniel Dunbar 10d5adf031 ccc: Print -### output on stderr to match gcc.
llvm-svn: 62052
2009-01-11 22:03:55 +00:00
Daniel Dunbar cb8d7e131c ccc: Introduce ToolChains for mapping Actions to Tools which can
perform them.

 - A ToolChain is a coherent set of tools use in a compilation
   process. The idea is that a ToolChain holds roughly the information
   (specs, search paths, etc.) that is in a single gcc binary.

 - The default ToolChain is selected by the host and will generally
   correspond to what the default system compiler would do. However,
   this can be over-riden for a variety of purposes, for example the
   by the driver driver or for testing.

llvm-svn: 62021
2009-01-10 02:07:54 +00:00
Daniel Dunbar eacf5b174d ccc: Add generic assembler & linker tools which effectively shell out
to gcc.

llvm-svn: 62020
2009-01-10 02:00:04 +00:00
Daniel Dunbar 96977ae536 ccc: Add information about whether type can be user specified (a -x
argument) to InputType.

llvm-svn: 62019
2009-01-10 01:50:42 +00:00
Daniel Dunbar 61f97e290a ccc: Get host information via Driver methods.
llvm-svn: 62011
2009-01-09 22:21:24 +00:00
Daniel Dunbar a3491665a6 ccc: Start defining host information.
- For use by the driver in places where the host alters driver
   behavior (for example, running as a driver driver on darwin).

 - Allow user override for testing purposes.

llvm-svn: 61967
2009-01-09 01:00:40 +00:00
Daniel Dunbar f8b5992b80 ccc: Make proper synthetic arguments in places we have to construct
"fake" options, allowing Tools to be oblivious to whether an argument
is real or synthetic. This kills off DerivedArg & a number of FIXMEs.

llvm-svn: 61871
2009-01-07 18:54:26 +00:00
Daniel Dunbar 7792e90f83 ccc: Change Command to take list of strings for argv instead of Arg
instances; this just complicated things and doesn't seem to provide
any benefit.

llvm-svn: 61869
2009-01-07 18:40:45 +00:00
Daniel Dunbar de482c408c ccc: Extend ArgList to support indexing into a synthetic arg array
(for killing off DerivedArg).

llvm-svn: 61846
2009-01-07 01:57:39 +00:00
Daniel Dunbar d315a274aa ccc: Refactor so that all accesses to actual input strings go through
the ArgList.

llvm-svn: 61844
2009-01-07 01:29:28 +00:00
Daniel Dunbar 697867dadd ccc: Remove ValueArg::setValue, this is no longer used.
llvm-svn: 61794
2009-01-06 06:32:49 +00:00
Daniel Dunbar 85a868f8cc ccc: Track last actual argument instance for each option & change
driver to lookup this way instead of manually scanning arguments in
multiple places.

llvm-svn: 61793
2009-01-06 06:12:13 +00:00
Daniel Dunbar e5e454e199 ccc: Use dummy InputOption and UnknownOption classes instead of
InputArg and UnknownArg.
 - Every argument now always corresponds to some option, which
   simplifies other code.

llvm-svn: 61783
2009-01-06 02:30:10 +00:00
Daniel Dunbar e31bfdd7c7 ccc: Introduce ArgList for keeping input argv & parsed Args together.
llvm-svn: 61780
2009-01-06 01:35:44 +00:00
Daniel Dunbar 6e01600398 Add prototype ccc rewrite.
- Entry point is tools/ccc/xcc until we are a functional replacement
   for ccc.

This is highly experimental (FIXME/LOC ratio of 3.4%), quite crufty,
and barely usable (and then only on my specific Darwin). However, many
of the right ideas are present, and it already fixes a number of
things gcc gets wrong.

The major missing component is argument translation for tools
(translating driver arguments into cc1/ld/as/etc. arguments). This is
a large part of the driver functionality and will probably double the
LOC, but my hope is that the current architecture is relatively
stable.

Documentation & motivation to follow soon...

llvm-svn: 61739
2009-01-05 19:53:30 +00:00
Ted Kremenek 1e0d95e17e "missing ivar release" is a performance bug.
llvm-svn: 58436
2008-10-30 17:29:54 +00:00
Ted Kremenek 4bc52fdd75 Generalize searching for the keyword "leak" in a bug type.
llvm-svn: 58115
2008-10-24 21:23:51 +00:00
Ted Kremenek 049ba7fbb1 For Radar reporting, null dereferences should be default classified as "Crash/Hang/Data loss" <rdar://problem/6315624>
llvm-svn: 58045
2008-10-23 21:36:52 +00:00
Ted Kremenek 7a93cd8ac6 Set reproducibility back to "Always"
llvm-svn: 56891
2008-09-30 23:23:58 +00:00
Daniel Dunbar 9e3b917965 scan-view: Remove some debugging prints.
llvm-svn: 56864
2008-09-30 17:54:44 +00:00
Ted Kremenek 05f3ccda24 Default reproducibility to "Not applicable"
llvm-svn: 56860
2008-09-30 17:28:54 +00:00
Ted Kremenek 9f403161d7 Make "Performance" the default Radar classification for leaks. "Other" for all others (for now).
llvm-svn: 56858
2008-09-30 17:12:32 +00:00
Ted Kremenek fb0fef9157 Make a separate parameter class for "Radar classifications".
Do not save the radar classification to the config file.

llvm-svn: 56856
2008-09-30 17:00:30 +00:00
Ted Kremenek b166299f2b Add "SelectionParameter" class to represent drop-down boxes.
Added "Classification" field to Radar filing.
Modified FileRadar.scpt to take the classification as an argument.

llvm-svn: 56854
2008-09-30 16:37:50 +00:00
Ted Kremenek fef3c4092d Conditionally load/save default parameter value from config file.
llvm-svn: 56852
2008-09-30 16:11:33 +00:00
Ted Kremenek 094ff0b061 Use objects to represent form parameters. This allows us to abstract away some
of the details of HTML rendering of form parameters, and also us with the
ability to delegate other actions (such as in the filling in of default values)
to specific parameter objects.

llvm-svn: 56851
2008-09-30 16:08:13 +00:00
Ted Kremenek a930b56252 Tabs -> Spaces.
llvm-svn: 56833
2008-09-30 05:45:59 +00:00
Daniel Dunbar 068f7f7092 Fix braindead bug, ID number was hardcoded.
llvm-svn: 56789
2008-09-29 16:06:43 +00:00
Daniel Dunbar 08971bf2c4 Change Radar reproducibility to "Always".
llvm-svn: 56644
2008-09-26 05:00:28 +00:00
Daniel Dunbar 8e519d0d48 Disable report crashes link for the time being.
llvm-svn: 56617
2008-09-25 19:59:17 +00:00
Daniel Dunbar 0dbad4670c Add link to report analyzer failures (parse errors, asserts, etc).
llvm-svn: 56606
2008-09-25 06:05:31 +00:00
Daniel Dunbar d8d1fec6bd Add scan-view '--allow-all-hosts' option, by default access is now
restricted to 127.0.0.1.

llvm-svn: 56563
2008-09-24 17:59:41 +00:00
Daniel Dunbar fd462af19e scan-view: Add header and "report bug" links to report pages.
llvm-svn: 56470
2008-09-22 21:43:43 +00:00
Daniel Dunbar d3b096bd5a scan-view: Add links to open files using default file handler.
llvm-svn: 56454
2008-09-22 18:44:46 +00:00
Daniel Dunbar 6c9bf7d92a scan-view: Update for "button" class change, drop magic resolution of
"scanview.css", start action for opening files.

llvm-svn: 56448
2008-09-22 18:05:49 +00:00
Ted Kremenek 2c4a8f414b Removed scan-view's version of scanview.css.
llvm-svn: 56446
2008-09-22 17:55:14 +00:00
Nuno Lopes 47e46ed3da not executable
llvm-svn: 56439
2008-09-22 17:26:14 +00:00
Daniel Dunbar ed4e3210da scan-view: Add links from bug reporting forms to report & summary pages.
llvm-svn: 56427
2008-09-22 03:08:32 +00:00
Daniel Dunbar 2ef3142b92 scan-view: Search for available port if default is unavailable.
llvm-svn: 56426
2008-09-22 02:53:12 +00:00
Daniel Dunbar 34525a91fa scan-view: Store bug reporter defaults in ~/.scanview.cfg
llvm-svn: 56424
2008-09-22 02:27:45 +00:00
Daniel Dunbar 4aed7dede7 scan-view tweak
- Require index.html in provided results directory.

llvm-svn: 56423
2008-09-22 01:42:08 +00:00
Daniel Dunbar 8d139d3d40 scan-view tweaks
- Use more correct HTTP error codes on (unexpected) errors.

 - Use onLoad to set ensure bug submission method gets set correctly.

llvm-svn: 56422
2008-09-22 01:40:14 +00:00
Daniel Dunbar 553fdc6bc7 Improve scan-view report bug (submitted) interface.
Give more meaningful error messages / fail gracefully on bad form
input or SMTP errors.

Use button for Report Bug link (where available).

llvm-svn: 56420
2008-09-22 01:21:30 +00:00
Daniel Dunbar 49351e7eb9 Improve scan-view report bug interface.
- Pulled css out into Resources/scanview.css

llvm-svn: 56416
2008-09-22 00:11:51 +00:00
Daniel Dunbar 19af4ea47b scan-view tweaks:
- Add simple favicon
 - Allow resolving source file paths (should be rethought)

llvm-svn: 56414
2008-09-21 23:02:25 +00:00
Daniel Dunbar daa26f879e scan-view tweaks:
- Update for scan-build table change.
 - Add --auto-reload option (for development, avoids need to restart
   server).
 - Always send Last-Modified, with a reasonable value for dynamic content.

llvm-svn: 56409
2008-09-21 20:34:58 +00:00
Daniel Dunbar b9c42108d9 scan-view: Add more information to default bug description and use
iframe to embed bug view (for easy reference).

llvm-svn: 56406
2008-09-21 19:08:54 +00:00
Daniel Dunbar a00b7a8240 Don't add Bugzilla reporter (not yet implemented)
llvm-svn: 56404
2008-09-21 19:06:51 +00:00
Ted Kremenek ebb4245b84 Have ScanView.py generate a "<td></td>" pair in the output HTML instead of having scan-build output an empty (and possibly unused) <td>.
llvm-svn: 56393
2008-09-21 03:55:51 +00:00
Daniel Dunbar 025b48dd6e Make scan-view more robust / friendly when bug reporting fails.
llvm-svn: 56382
2008-09-20 01:43:16 +00:00
Daniel Dunbar d4c2337ef5 Add initial implementation of scan-view
- Web based interface to static analyzer.

llvm-svn: 56375
2008-09-19 23:32:11 +00:00