• Home
  • History
  • Annotate
  • only in /external/clang/include/clang/Driver/
History log of /external/clang/include/clang/Driver/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
c50010f412ad39bda1b70cdc0f082597dcbacbb8 23-Oct-2014 Tim Murray <timmurray@google.com> Revert "Bring in fixes for Cortex-A53 errata."

This reverts commit 1aeaece93aae941bb1bbb3a226398a311dfe18e8.

bug 18094492
ptions.td
1aeaece93aae941bb1bbb3a226398a311dfe18e8 17-Oct-2014 Stephen Hines <srhines@google.com> Bring in fixes for Cortex-A53 errata.

Bug: 18034609

(cherry picked from commit 7fb0af86e33f382a8e4a8f23cc1ab471b7134995)

Change-Id: Ifc04c2a8e3ec13efd3a5f5ed4879f0a657df50cf
ptions.td
ef8225444452a1486bd721f3285301fe84643b00 21-Jul-2014 Stephen Hines <srhines@google.com> Update Clang for rebase to r212749.

This also fixes a small issue with arm_neon.h not being generated always.

Includes a cherry-pick of:
r213450 - fixes mac-specific header issue
r213126 - removes a default -Bsymbolic on Android

Change-Id: I2a790a0f5d3b2aab11de596fc3a74e7cbc99081d
C1AsOptions.h
C1AsOptions.td
C1Options.td
LCompatOptions.td
MakeLists.txt
ompilation.h
akefile
ptions.h
ptions.td
oolChain.h
til.h
6bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89 29-May-2014 Stephen Hines <srhines@google.com> Update Clang for 3.5 rebase (r209713).

Change-Id: I8c9133b0f8f776dc915f270b60f94962e771bc83
C1AsOptions.td
C1Options.td
LCompatOptions.td
river.h
ptions.td
oolChain.h
ypes.def
651f13cea278ec967336033dd032faef0e9fc2ec 24-Apr-2014 Stephen Hines <srhines@google.com> Updated to Clang 3.5a.

Change-Id: I8127eb568f674c2e72635b639a3295381fe8af82
ction.h
C1AsOptions.td
C1Options.h
C1Options.td
LCompatOptions.td
river.h
ob.h
ultilib.h
ptions.td
anitizerArgs.h
oolChain.h
07ac846d50503fcbd78bf9de031cba1157393cfd 17-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove method that always returns true.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194984 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
ce5b5f13a6c90904040b29b9eb765bb7cd736f0b 17-Nov-2013 Hal Finkel <hfinkel@anl.gov> Add -freroll-loops to enable loop rerolling

This adds -freroll-loops (and -fno-reroll-loops in the usual way) to enable
loop rerolling as part of the optimization pass manager. This transformation
can enable vectorization, reduce code size (or both).

Briefly, loop rerolling can transform a loop like this:

for (int i = 0; i < 3200; i += 5) {
a[i] += alpha * b[i];
a[i + 1] += alpha * b[i + 1];
a[i + 2] += alpha * b[i + 2];
a[i + 3] += alpha * b[i + 3];
a[i + 4] += alpha * b[i + 4];
}

into this:

for (int i = 0; i < 3200; ++i) {
a[i] += alpha * b[i];
}

Loop rerolling is currently disabled by default at all optimization levels.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194967 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d378144e00212af69800ab9c1df8be8b339f086b 15-Nov-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Make the driver parse all(?) msvc flags

Even if we don't support a flag, we should be able to parse it
to provide a better error message than the current default
"error: no such file or directory: '/foo'" (which we should probably
also tweak, btw).

This also tries to clean up the test file a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194837 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
2c050f6a68c4f871d26be63f8d598f1b64a8e16f 14-Nov-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [objcmt] Introduce "objcmt-white-list-dir-path=" option.

This options accepts a path to a directory, collects the filenames of the files
it contains, and the migrator will only modify files with the same filename.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194710 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7792fde854b5d2bb9d2dc18b4a1de09397307220 13-Nov-2013 Weiming Zhao <weimingz@codeaurora.org> Adds ARM backend options: -mrestrict-it and -mno-restrict-it

To support the generation of IT block in Thumbv7 way or
Thumbv8 way


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194593 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b85a9ec6df63f30bbdef9a3975b1d31a680b15c1 13-Nov-2013 Diego Novillo <dnovillo@google.com> Add -fprofile-sample-use to Clang's driver.

This adds a new option -fprofile-sample-use=filename to Clang. It
tells the driver to schedule the SampleProfileLoader pass and passes
on the name of the profile file to use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194567 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
5d2a20671954f55f765b96375e8bcd38367cb3ba 13-Nov-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator. Place use of NS_NONATOMIC_IOSONLY
on inferred property attribute under
-objcmt-ns-nonatomic-iosonly option.
// rdar://15442742


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194532 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
86e2a6f4f5e8bb457999a204c629ea12b5a09d3e 12-Nov-2013 Hans Wennborg <hans@hanshq.net> clang-cl: parse the /Yc flag (PR17895)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194523 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
a2f1ed0f3b0bd272da772328f8e774924c9746bb 12-Nov-2013 Hans Wennborg <hans@hanshq.net> clang-cl: parse the /GT option

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194502 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
3347b497157d36cf280d1d9f52956faa6e702f34 12-Nov-2013 Richard Smith <richard-llvm@metafoo.co.uk> Rather than duplicating extension diagnostics to allow them to cause a
substitution failure, allow a flag to be set on the Diagnostic object,
to mark it as 'causes substitution failure'.

Refactor Diagnostic.td and the tablegen to use an enum for SFINAE behavior
rather than a bunch of flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194444 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
bd3952758ce828a006d826979db642195792ac4d 09-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> This reverts commit r194330, r194329 and r194328.

The test was still failing on OS X and mingw.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194334 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
oolChain.h
a799d7db952e30b479d647fe35c00ee7360d7628 09-Nov-2013 David Chisnall <csdavec@swan.ac.uk> Add support for -fuse-ld=.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194328 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
oolChain.h
00b0f7e1174b7f552ffec0fe0e088584a5d1d092 07-Nov-2013 Alp Toker <alp@nuanti.com> clang-cl: Hide ignored joined flags as well

This is an addendum to r194174.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194180 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
9b28079f615368ec27ea8749e04b822cb6500dd5 06-Nov-2013 Alp Toker <alp@nuanti.com> clang-cl: Hide ignored flags

We don't want to them to appear in the help text for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194174 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
6e990446ce844bb656f19c535286ec434d774054 06-Nov-2013 Alp Toker <alp@nuanti.com> clang-cl: Add /FS as an ignored flag

CMake-generated Makefiles include this cl flag which can be safely ignored
until we get PDB server support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194165 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
195dd7c8448893e13a0cd8e776520f14cba65b08 06-Nov-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add a limit to the length of a sequence of 'operator->' functions we will
follow when building a class member access expression. Based on a patch by
Rahul Jain!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194161 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
cd569f2788ece55b9f790b6900164e2b2d5d966c 05-Nov-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator. Please annotation of properties with
NS_RETURNS_INNER_POINTER under -objcmt-returns-innerpointer-property
flag (off by default), as older compilers do not support such annotations.
// rdar://15396636


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194100 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1d5cce4f284519bdd1218c8f095462a518b47286 05-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> With this patch -Wwrite-strings is still implemented with the terrible
hack of passing -fconst-strings to -cc1, but at least the driver uses
the regular warning checking code path.

Since we don't support a warning that is DefaultIgnore in one language
but not in another, this patch creates a dummy C only warning in the same
group as the existing one to get the desired effect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194097 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d9553e35e1e3af6fc4ca817b169dc796a5b54bcd 01-Nov-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC. Define a new cc1 flag
-fobjc-subscripting-legacy-runtime which is off
by default and on only when using ObjectiveC
legacy runtime. Use this flag to allow
array and dictionary subscripting and disallow
objectiveC pointer arithmatic in ObjectiveC
legacy runtime. // rdar://15363492


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193889 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c6911a2b1fc176e4d6053ed86506c17c3d8b0057 01-Nov-2013 Peter Collingbourne <peter@pcc.me.uk> SanitizerArgs: add ability to filter/diagnose unsupported sanitizers.

The thread, memory, dataflow and function sanitizers are now diagnosed if
enabled explicitly on an unsupported platform. Unsupported sanitizers which
are enabled implicitly (as part of a larger group) are silently disabled. As a
side effect, this makes SanitizerArgs parsing toolchain-dependent (and thus
essentially reverts r188058), and moves SanitizerArgs ownership to ToolChain.

Differential Revision: http://llvm-reviews.chandlerc.com/D1990

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193875 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
anitizerArgs.h
oolChain.h
6334fd643309c3848261eff46053fa2f17f1ac31 30-Oct-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Parse the /arch, /Yu and /Fp options (PR17736)

We don't support these options, but should at least parse them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193702 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
799bcc7a875a2caf398728c8ba569c304a681c50 29-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add support for the separate version of /FI.

Patch by Jeff Muizelaar.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193642 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
909f35a884045c658e5c4565499f113ee63dfc1d 29-Oct-2013 Bernard Ogden <bogden@arm.com> ARM: Add -m[no-]crc to dis/enable CRC subtargetfeature from clang

Allow users to disable or enable CRC subtarget feature.

Differential Revision: http://llvm-reviews.chandlerc.com/D2037

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193600 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7edf9a4e4c5a36b2e43949f454b2e6c4aa2efd1c 24-Oct-2013 Chandler Carruth <chandlerc@gmail.com> Teach Clang to accept and ignore -f[no-]implicit-templates.

This GCC flag is useful when you want to control whether implicit
template instantiation occurs at the commandline level. Clang doesn't
currently support such controls, but technically *always* implicitly
instantiating (what Clang does, and what every other compiler still in
use does by default) is valid behavior even under
-fno-implicit-templates, it just may be slow and very wasteful. If
people really want this, we can try to implement it, but I don't have an
actual use.

This should help fix the build of libstdc++ with Clang, its build system
uses this flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193319 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6e40ca5ca48ce5862716c1b64509d068ae067246 24-Oct-2013 Chandler Carruth <chandlerc@gmail.com> Teach Clang to recognize and ignore GCC's -fdiagnostics-show-location
flag. We should probably wire at least some variants of this up to our
actual diagnostics engine, but I'm leaving that for someone else. This
fixes the builds of packages which hard code something here, at least
including libstdc++ itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193318 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
2a20270a230ef52a3a31bdb603b61880a7affbc9 21-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Ignore -fstrength-reduce and -fno-strength-reduce.

GCC does the same.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193103 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1db2e279114348d276e2dea03b8d6175743505e7 21-Oct-2013 Silviu Baranga <silviu.baranga@arm.com> Add the __ARM_ARCH_EXT_IDIV__ predefine. It is set to 1 if we have hardware divide in the mode that we are compiling in (depending on the target features), not defined if we don't. Should be compatible with the GCC conterpart. Also adding a -hwdiv option to overide the default behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193074 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
9541141f4f131d76be609665b2a8500f770109c9 21-Oct-2013 Daniel Jasper <djasper@google.com> Expose -fmodule-name and -fmodule-map-file as driver options.

Review: http://llvm-reviews.chandlerc.com/D1974

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193069 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
82a2911a94947e20ac4fd961b6322adf74ad9224 17-Oct-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Add support for asm listings (/FA and /Fa)

This adds support for outputing the assembly to a file during compilation.
It does this by changing the compilation pipeling to not use the integrated
assembler, and keep the intermediate assembler file.

Differential Revision: http://llvm-reviews.chandlerc.com/D1946

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192902 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
af7ed9e89074e37453cb2b9365b1882ab71163fb 17-Oct-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips] Added -mfp64 and -mfp32 options.

These options specify 64-bit FP registers and 32-bit FP registers respectively.

When using -mfp32, the FPU has 16x double-precision registers overlapping with
the 32x single-precision registers (each double-precision register overlaps
two single-precision registers).

When using -mfp64, the FPU has 32x double-precision registers overlapping with
the 32x single-precision registers (each double-precision register overlaps
with one single-precision register and has an additional 32-bits).

MSA requires -mfp64.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192899 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
12a5a78fa881576a4b030a895bcaf8297db599e6 17-Oct-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Update -mmsa help text and removed the hidden flag to better match conventions used by other targets



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192898 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b754974ec32ab712ea7d8b52cd8037b24e7d6ed3 17-Oct-2013 Chandler Carruth <chandlerc@gmail.com> Add support to the Clang driver for forwarding all of gfortran's flags
to GCC when asked to compile a fortran input.

This fixes a regression with essentially every Fortran compile since we
started rejecting unknown flags. Also moves a mis-classified gfortran
flag into the nicely documented set.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192867 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
40bd5ce479b5a23707821da4eadf831fade9f9c2 16-Oct-2013 Eric Christopher <echristo@gmail.com> Add minimal command line support for the VSX powerpc processor.

Preprocessor support is still needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192839 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d5e59fc9df4cc7136e07c830ed08343a80a83b8e 16-Oct-2013 Eric Christopher <echristo@gmail.com> Rework ppc options handling into a features group.

This should have no functional behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192838 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
e517d1ebc67e70ff6d8a066ae6690ed51012252b 12-Oct-2013 Nick Lewycky <nicholas@mxc.ca> Add missing flags -fexpensive-optimizations and -minline-all-stringops as noops.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192521 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
96d6c4596587df59821da10270d2102da4a49b73 11-Oct-2013 Manman Ren <manman.ren@gmail.com> Turn struct-path aware TBAA on by default.

Use -no-struct-path-tbaa to turn it off.
This is the same as r191695, which was reverted because it depends on a
commit that has issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192497 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
1d544c8a82825d9597864fa3186473d9ec2ae837 11-Oct-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Mark /FA and /Fa as unsupported options

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192465 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
ff05979144fc199e229aaeb1d248867d87d0d866 11-Oct-2013 Nick Lewycky <nicholas@mxc.ca> Add -fno-function-sections and -fno-data-sections. Since
-f{function,data}-sections had no tests at all, add some, and verify that the
-fno variants work as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192413 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
99aacad9aacbd928ed05a9fec20aa39f7044cbe8 11-Oct-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Expose the -m32 and -m64 command-line options

And add a test to check that they work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192402 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
39ebb02cb0bd342ced56de6d19aa9992aa0371b8 09-Oct-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator. Introduce a new objcmt-atomic-property option
and use it to infer all properties as 'atomic'.
// rdar://14988132


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192317 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f6614613e402e0ee512d4792f22101f5ecaf0ef2 09-Oct-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Remove unused mips_CPUs_Group options group. It's better to join
all MIPS-related options to the new m_mips_Features_Group later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192291 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
305dc0dab74af453c645a0e99b211967b292fb10 09-Oct-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Make mips32/mips32r2/mips64/mips64r2 real aliases for appropriate
march options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192289 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7949acf370bd3f1f47c15f29ecaa28b8797a9c1f 08-Oct-2013 Hans Wennborg <hans@hanshq.net> clang-cl: ignore the /sdl[-] flag

In cl.exe, this flag turns some warnings into errors and adds some
codegen security checks. I don't think we intend to support this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192201 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
5c7a04aceadf1c9efa060ad149aa0704f3e9ce8d 08-Oct-2013 Reid Kleckner <reid@kleckner.net> clang-cl: Accept and mostly ignore /vm*, /GF, /GF-, /Zm, and /bigobj

Patch by David Ziman!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192141 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
9a7e09fffbad657f775417252bc966098dfb1501 07-Oct-2013 Richard Smith <richard-llvm@metafoo.co.uk> Remove -ast-dump-xml.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192131 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
af9454635939bf070733d95d72284494dda6791d 05-Oct-2013 Nick Lewycky <nicholas@mxc.ca> Add support for -mcx16, and predefine __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 when
it is enabled. Also enable it on the same architectures that GCC does.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192045 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
db1ad606af140311ff9de0887f74e29fefe4d2d6 03-Oct-2013 Nico Weber <nicolasweber@gmx.de> Don't complain about -fuse-ld=gold (cf r191429).

(There's a real implementation for this flag in review.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191926 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
522f4d0fbf7e2001c199714a67ee98824a1be528 03-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Fix the test in clang_f_opts.c to fail on unknown options.

Also fix options that were broken in the previous refactorings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191925 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
a9259c2c9783e79ce6814dec20782cf76f7b9bdf 03-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Ignore -mieee-fp.

It looks like clang always produce code with the ieee comparisons, so it is
safe to ignore this flag (we still error on -mno-ieee-fp).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191912 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a00f8737e671b587e83280a53e85562c00a7a78d 02-Oct-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator: Add more options one for each
kind of migration. // rdar://15003157



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191858 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
081099d302b79d1746c7a39da14e3265971eb718 02-Oct-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator. Starting distiguising different
migrations under their own option.
wip and // rdar://15003157


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191855 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1596e5b368ddbdc4b9c3ecab75115b179b6e5391 01-Oct-2013 Richard Smith <richard-llvm@metafoo.co.uk> Revert r191586 and r191695. They cause crashes when building with
-relaxed-aliasing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191725 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
03928403af872d3b04d1d5d5a5c4be2d4d366af4 30-Sep-2013 Manman Ren <manman.ren@gmail.com> Turn struct-path aware TBAA on by default.

Use -no-struct-path-tbaa to turn it off.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191695 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
144fe706a0303860c03406e4d090e2f2191dfd0e 30-Sep-2013 Chandler Carruth <chandlerc@gmail.com> Add a bunch of other GCC '-f' options and ignore them. This covers every
such option I've been able to find in the wild in our build system.

Note that I haven't added test cases for this. I can do so if folks
want, but they're *really* boring considering that this is all generated
code to parse and ignore unsued options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191653 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
8af75cd47c60643c329d2444a5ae76cda2c9e24d 30-Sep-2013 Chandler Carruth <chandlerc@gmail.com> Switch one of the ignored boolean flag multiclasses to not have an 'f'
prefix. Sort the ignored boolean 'f' flags at the bottom of this file.
No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191651 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
4cb295d3b32cb04215f87948fbf944ee4c31de1b 29-Sep-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++1y sized deallocation (n3778). This is not enabled by -std=c++1y;
instead, it's enabled by the -cc1 flag -fsized-deallocation, until we sort out
the backward-compatibility issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191629 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
5cf3e358590939802f2e24075ed1c6088790f2be 27-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Update the help text.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191554 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
14f9889b9b88f73a891688d7732bf01a127d9e7c 27-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Replace -fobjc-default-synthesize-properties with disable-objc-default-synthesize-properties.

We want the modern behavior most of the time, so inverting the option simplifies
the driver and the tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191551 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
dea69a1149c5a77db69e037c9619a52d45fcf4a9 27-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove method that always returns true.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191533 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
bce8c928e888d2238523dafd670d3026e5682deb 27-Sep-2013 Nick Lewycky <nicholas@mxc.ca> Add -fno-unsigned-char and ignore it. We already support -fno-signed-char, add
both flags to the driver test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191486 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
084be2df33f5ac99ba989b519921014d236aea10 26-Sep-2013 Bob Wilson <bob.wilson@apple.com> Fix up fallout from r187156.

The previous change caused the driver to translate -Wa,-L to the
-msave-temp-labels option for cc1as, but cc1as did not accept that option.
This patch follows the same approach used for similar options (-relax-all,
-noexecstack) in the previous patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191458 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
0e4bdb01227b9cf613ba8db5e21f7a2f836374c9 26-Sep-2013 Reid Kleckner <reid@kleckner.net> clang-cl: Add /FI (forced include) as an alias for -include

Patch by Jeff Muizelaar, with added test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191442 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
0fe441aa93d03d6cfe0944d949e43325b0647c1d 26-Sep-2013 Jordan Rose <jordan_rose@apple.com> [driver] Ignore -fno-var-tracking; it's a GCC option we don't support.

-fvar-tracking (which IIUC is on by default in GCC) will still generate
an error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191439 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6a09ad27c77a6795173322abf51c054d621236ec 26-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove fno_builtin_strcat and fno_builtin_strcpy.

They are already handled by the generic fno_bultin_, which also
avoids unused warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191437 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
729be24cd826918bbfa788b8f2313e7d0e2a9b0e 26-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove -fbuiltin-strcat and -fbuiltin-strcpy.

These options don't exist in gcc and clang was not handling them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191435 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
4e77e0642468ccdbd6a4a2f167952eb76876712b 26-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Ignore unknown -fno-builtin-*.

This matches gcc's behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191434 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
e48ceda1043a1b8eeb52d43721b3c6f48a80d2ad 26-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191433 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7178f6e72c86bf267ed4eaf856870d8fd3cf0ad0 26-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Ignore some -f options that are supported by gcc.

It is possible that we should say some of these are unsupported, but this is
not any worse than the old behavior of ignoring all unknown -f options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191429 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
49b3533e1ac091894537d1a7be4bc51fef1ae1e5 25-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Produce an error for unknown -f options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191394 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
db10fe278886eadaff028a747b260f06d5a37c8b 25-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Move --relocatable-pch to Options.td.

It is a valid driver option (we have tests for that), so it should not be
marked as NoDriverOption.

No functionality change other than it showing in --help.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191377 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
74cd65e8dc60fe9e6c397b3393da7303debbc971 25-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191373 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ed919388e498379c7f8a32b73341bbd491fa29fa 24-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Produce an error for unknown -m options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191328 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a8f7d9dd926d61c92dbe194e9b6f51a9c015cea5 24-Sep-2013 Yunzhong Gao <Yunzhong_Gao@playstation.sony.com> Adding -mtbm and -mno-tbm command line options to the clang front end for the
x86 TBM instruction set. Also adding a __TBM__ macro if the TBM feature is
enabled. Otherwise there should be no functionality change to existing features.

Phabricator code review is located here: http://llvm-reviews.chandlerc.com/D1693



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191326 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f26d8bc4406be1311a38fd1761d5ddeb2f5a38b6 24-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove a use of OPT_m_Joined.

This patch turns the -mv* hexagon options into aliases. We should really produce
errors for invalid versions in the driver, but this patch preserves the old
behavior for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191298 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1b8840ce0d7a3383915b29dc3779dfadec817458 24-Sep-2013 Daniel Jasper <djasper@google.com> Add -fmodule-map-file option.

With this option, arbitrarily named module map files can be specified
to be loaded as required for headers in the respective (sub)directories.

This, together with the extern module declaration allows for specifying
module maps in a modular fashion without the need for files called
"module.map".

Among other things, this allows a directory to contain two modules that
are completely independent of one another.

Review: http://llvm-reviews.chandlerc.com/D1697.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191284 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ddd2dfc1d3f4a36cbe8cd775c588623a17049f9f 24-Sep-2013 Daniel Jasper <djasper@google.com> Module use declarations (II)

Review: http://llvm-reviews.chandlerc.com/D1546.

I have picked up this patch form Lawrence
(http://llvm-reviews.chandlerc.com/D1063) and did a few changes.

From the original change description (updated as appropriate):
This patch adds a check that ensures that modules only use modules they
have so declared. To this end, it adds a statement on intended module
use to the module.map grammar:

use module-id

A module can then only use headers from other modules if it 'uses' them.
This enforcement is off by default, but may be turned on with the new
option -fmodules-decluse.

When enforcing the module semantics, we also need to consider a source
file part of a module. This is achieved with a compiler option

-fmodule-name=<module-id>.

The compiler at present only applies restrictions to the module directly
being built.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191283 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
fc12c4aa20876bdf91bff98dc50eb68b4dd04b80 24-Sep-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Support -mnan=2008 option. Define "__mips_nan2008" macros and pass
this option to the assembler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191282 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c3c66879c329bf8caf4f0fcf62093c93a3f8c342 24-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused option.

gcc doesn't support "gcc -m sse" and this was not tested in clang and only
used for link argument on darwin, so this was very likely just a bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191251 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c8ba0a0acd30f0b56d08a3a0947f68ac01a40730 19-Sep-2013 Hans Wennborg <hans@hanshq.net> clang-cl: implement /fallback mode

When this flag is enabled, clang-cl falls back to cl.exe if it
cannot compile the code itself for some reason.

The idea is to use this to help build projects that almost compile
with clang-cl, except for some files that can then be built with
the fallback mechanism.

Differential Revision: http://llvm-reviews.chandlerc.com/D1711

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191034 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
ob.h
ool.h
f6ae52b3b69f49139b0d7d181e58be1770b08955 19-Sep-2013 Reid Kleckner <reid@kleckner.net> clang-cl: Accept -fmsc-version so we can set it without -Xclang

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191011 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b83f5a77335ca8a5b41ba4e17aa8d4bb6248c1e4 19-Sep-2013 Ben Langmuir <ben.langmuir@intel.com> Add C intrinsics for Intel SHA Extensions

Intrinsics added shaintrin.h, which is included from x86intrin.h if __SHA__ is
enabled. SHA implies SSE2, which is needed for the __m128i type.

Also add the -msha/-mno-sha option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190999 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
64228b6c0696f3579d40bab0ef40691ef4f41242 18-Sep-2013 Hans Wennborg <hans@hanshq.net> Add comment about exporting clang::driver::ArgStringList,
as suggested by Jordan on IRC. Also, use the unqualified name
in Job.cpp.

And while we're here, refer to StringRef with the unqualified
name, because we have a using directive for that too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190909 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
5c6ecf5a07317edc4a01f967a43eb3f76142d387 18-Sep-2013 Hans Wennborg <hans@hanshq.net> Revert r190902 and r190906

The first one broke the build, and the latter one made it worse.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190907 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
4832ee31e6ab96b77ad429ef9347fbf09c099f47 18-Sep-2013 Hans Wennborg <hans@hanshq.net> Revert "Move using directive from Job.h to Job.cpp" (r190902)

Seems like it was intentional to export ArgStringList as
driver::ArgStringList, and e.g. examples/clang-interpreter/main.cpp
uses it this way.

However, exporting it with a typedef seems like a more common way to do it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190906 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
f1666bbaba75eff59ae47e42d6d601e3d36781ff 18-Sep-2013 Hans Wennborg <hans@hanshq.net> Move using directive from Job.h to Job.cpp

I don't think it belongs in the header, but seems handy in the .cpp file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190902 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
007ef4f775797665a2b2df2c693517ac3a275f5c 18-Sep-2013 Hans Wennborg <hans@hanshq.net> clang-cl: ignore ths /GS- flag

The /GS- flag is used to turn off run-time buffer security checks (/GS).
Since no such checks are enabled in the first place, I think we should just
ignore this flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190900 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
d8df3f70930b2251119ed363a7fde737c76af784 17-Sep-2013 Hans Wennborg <hans@hanshq.net> clang-cl: ignore compile-only options in link-only invocations.

Previously we would warn about unused arguments such as /MD when linking.
Clang already has logic to ignore compile-only options, e.g. for -D and -U.
This patch extends that to include clang-cl's compile-only options too.

Also, some clang-cl options should always be ignored. Doing this earlier
means they get ignored both for compilation and link-only invocations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190825 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
6560839a11e653800ec92a2279cef5988d861a7d 17-Sep-2013 Hans Wennborg <hans@hanshq.net> clang-cl: ignore all /w<foo> options

We previously ignored /wd<n>, but I think we can ignore the rest too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190819 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
0f43a6daddd41722a4183a49b344f85b5aefbb33 14-Sep-2013 Eric Christopher <echristo@gmail.com> Add support for -ggnu-pubnames matching the llvm support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190729 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
1eef85246b411b55c493098266746d0d83c241ea 13-Sep-2013 David Tweed <david.tweed@arm.com> Certain multi-platform languages, such as OpenCL, have the concept of
address spaces which is both (1) a "semantic" concept and
(2) possibly a hardware level restriction. It is desirable to
be able to discard/merge the LLVM-level address spaces on arguments for which
there is no difference to the current backend while keeping
track of the semantic address spaces in a funciton prototype. To do this
enable addition of the address space into the name-mangling process. Add
some tests to document this behaviour against inadvertent changes.

Patch by Michele Scandale!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190684 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
aaaa2a1889fe882e7e41048e3b298ca594454eb1 12-Sep-2013 Hans Wennborg <hans@hanshq.net> Move the execution code from Compilation::ExecuteCommand to Command::Execute

I think it makes sense that a Command knows how to execute itself.

There's no functionality change but i rewrote the code to avoid the manual
memory management of Argv.

My motivation for this is that I plan to subclass Command to build fall-back
functionality into clang-cl.

Differential Revision: http://llvm-reviews.chandlerc.com/D1654

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190621 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
fc3389701ead32709ba84825e4c06651065da2c0 12-Sep-2013 Hans Wennborg <hans@hanshq.net> Move Compilation::PrintJob and PrintDiagnosticJob into Job::Print.

This moves the code to Job.cpp, which seems like a more natural fit,
and replaces the "is this a JobList? is this a Command?" logic with
a virtual function call.

It also removes the code duplication between PrintJob and
PrintDiagnosticJob and simplifies the code a little.

There's no functionality change here, except that the Executable is
now always printed within quotes, whereas it would previously not be
quoted in crash reports, which I think was a bug.

Differential Revision: http://llvm-reviews.chandlerc.com/D1653

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190620 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
ob.h
42ade496f79d2b9b1ff9fbdc30dd025c168be7a3 11-Sep-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Warn about overriding /MD with /MT etc.

This also bakes the /M options into a separate option group to make
them easier to refer to from the code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190529 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
2956ef43da9c0e7bce8fae4a015255a2c19458bb 11-Sep-2013 Nico Rieck <nico.rieck@gmail.com> Add -fansi-escape-codes option

Some build systems use pipes for stdin/stderr. On nix-ish platforms colored
output can be forced by -fcolor-diagnostics. On Windows this option has
no effect in these cases because LLVM uses the console API (which only
operates on the console buffer) even if a console wrapper capable of
interpreting ANSI escape codes is used.

The -fansi-escape-codes option allows switching from the console API to
ANSI escape codes. It has no effect on other platforms.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190464 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6d0a8d56b4386bd3f1091bf15d88491ad1299913 10-Sep-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Support building DLLs (PR17083)

This adds driver support for building DLLs (the /LD and /LDd flags).
It basically does two things: runtime selection and passing -dll and
-implib to the linker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190428 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
5bfc796a03e45c23e498315b7b49a5c46fe77446 09-Sep-2013 Hans Wennborg <hans@hanshq.net> clang-cl: parse (but don't support) the /o flag

Apparently folks run into this (PR17097). The flag is not supported by
MSVC either, but we should parse it so we don't get confused when it occurs.

This changes the clang-cl output for "clang-cl /c /o foo.obj" from:

clang-cl.exe: error: no such file or directory: '/o'
clang-cl.exe: error: no such file or directory: 'foo.obj'

to:

clang-cl.exe: warning: argument unused during compilation: '/o bajs.obj'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190323 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
c64bbe84e4d796a2749a63293c891693db613eff 06-Sep-2013 Hans Wennborg <hans@hanshq.net> clang-cl: ignore /RTC options (PR17129)

I don't think Clang intends to implement this functionality.
ASan should be used instead. Since /RTC is often passed by default
from MSBuild, ignore the option to avoid bloating the output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190202 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
535ae75f7b02b0d7adf76ed18f7f045efd54947c 06-Sep-2013 Hans Wennborg <hans@hanshq.net> Remove unused method Job::AddCommand.

I was going to update the comment referring to PipedJob, which was removed
some time ago, but then it turned out that this method is not actually used
at all.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190171 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
b2c70470def1ab0380be36a295ce4aa7864abfe1 05-Sep-2013 Chandler Carruth <chandlerc@gmail.com> Support suppressing unused arguments warnings as a core option so that
it works in the CL flavor driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190040 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6155fbe1f6674eb0aab98156925938fec558e335 04-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the -fuse-gold-plugin driver option.

* It was redundant with -flto.
* It was confusing since -uAnythingElse is a different option.
* GCC uses -fuse-linker-plugin, so it was not even a compatibility option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189976 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
709a8cac10585d9b8f3835abf1061c6b3a6c7b1b 04-Sep-2013 Reid Kleckner <reid@kleckner.net> clang-cl: Make -W a core option so we can adjust clang warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189882 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
2dfbb3234fe31f338523dd32964d323cda71e63b 03-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189805 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a673dbda6f67dbeb06aa2f99312200c8f5034cab 03-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Use -### instead of -ccc-print-options.

Convert the last few tests using -ccc-print-options to -### and remove
-ccc-print-options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189802 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.td
39024ecff9d9e1be1858f83b0dd2ac12d8ac5751 03-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove 3 unused ccc options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189794 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
5b98aba1d74184923da32016c3abbc20e9a7686d 29-Aug-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator. This patch infers readonly properties for no-parameter
instance methods returning non-void. This will be quite noisy. So, it is
placed under a new migrator flag -objcmt-migrate-readonly-property.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189537 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
3c4da0c4c84521367e84632f5f627b3439e61bcd 27-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Support -fsanitize=address

This exposes the -fsanitize=address option and adds the runtime library
to the link command.

Differential Revision: http://llvm-reviews.chandlerc.com/D1526

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189389 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
55ee1ebeb0b9f7b26919c325582f1e6a05df4ec8 27-Aug-2013 Rafael Espindola <rafael.espindola@gmail.com> Warn that -O4 is the same as -O3.

We error on -O5 and higher. While it is tempting to do the same for -O4, I
agree with Jordan Rose: we should warn for a release at least first.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189369 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
168de198e5b2333b9135a5c00546da558dbb8527 26-Aug-2013 Rafael Espindola <rafael.espindola@gmail.com> Simplify now that -O4 just maps to -O3 and -O is an alias of -O2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189218 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
02ab7d3c0e1e5278ca0451dc846aedcf45e623cf 24-Aug-2013 Renato Golin <renato.golin@linaro.org> Add gcc ARM flags -munaligned-access / -mno-unaligned-access

clang already had a mstrict-align which mentiones "Force all memory
accesses to be aligned (ARM only)". On gcc arm this is controlled by
-munaligned-access / -mno-unaligned-access. Add the gcc versions to
the frontend and make -mstrict-align and alias to -mno-unaligned-access
and only show it in clang -cc1 -help.

Since the default value for unaligned accesses / strict alignment
depends on the tripple, both the enable and disable flags are added.
If both are set, the no-unaligned-access is used.

Patch by Jeroen Hofstee.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189175 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
45bd2946df2ff7460b7daf06a4fe34de8a58b8cf 24-Aug-2013 Renato Golin <renato.golin@linaro.org> Add the -ffixed-r9 flag for ARM.

This patch adds the -ffixed-r9 flag to clang to instruct llvm to
globally preserve the contents of r9. The flag is added to the newly
created ARM specific group.

While at it, also place marm / mno-thumb in that group.

Patch by Jeroen Hofstee.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189174 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
3613c004749f8976452e1ed2138d4aeb123b35db 22-Aug-2013 Craig Topper <craig.topper@gmail.com> Add test cases for avx512 feature flags. Fix typo in avx512pf options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188984 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
5389b84a780ac17b63c10ad97cd5e3aaa41595b7 21-Aug-2013 Rafael Espindola <rafael.espindola@gmail.com> Move -mfpmath handling to -cc1 and implement it for x86.

The original idea was to implement it all on the driver, but to do that the
driver needs to know the sse level and to do that it has to know the default
features of a cpu.

Benjamin Kramer pointed out that if one day we decide to implement support for
' __attribute__ ((__target__ ("arch=core2")))', then the frontend needs to
keep its knowledge of default features of a cpu.

To avoid duplicating which part of clang handles default cpu features,
it is probably better to handle -mfpmath in the frontend.

For ARM this patch is just a small improvement. Instead of a cpu list, we
check if neon is enabled, which allows us to reject things like

-mcpu=cortex-a9 -mfpu=vfp -mfpmath=neon

For X86, since LLVM doesn't support an independent ssefp feature, we just
make sure the selected -mfpmath matches the sse level.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188939 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
bca2c4fab5c67a9121c96f15fb5caf09c25cf8f6 21-Aug-2013 Craig Topper <craig.topper@gmail.com> Add avx512cd, avx512er, avx512pf feature flags and enable them on KNL CPU.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188867 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b7a95d2941869f2dfd0d2f0e805f794b46dd4b55 21-Aug-2013 Craig Topper <craig.topper@gmail.com> Replace avx-512 with avx512f to match llvm side and what gcc patches appear to be using.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188860 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
9b803cd682efb9c146a02b3a1ed5b7dd80e6b216 20-Aug-2013 Reid Kleckner <reid@kleckner.net> clang-cl: Ignore the /wd n flag for disabling a warning

Clang doesn't have a table mapping cl.exe to clang warnings. While some
warnings like -Wsign-compare exist in both compilers, the majority do
not correspond and should usually be ignored.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188732 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
12627e505034e87ed6bcb361bab55edc67f5a7d6 20-Aug-2013 Reid Kleckner <reid@kleckner.net> clang-cl: Add /MP[n] to the list of unsupported and ignored flags

This flag tells cl.exe to use up to n processes to compile the provided
source files. I have no plans to implement this in clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188729 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
4b36fb83c13a0aa2fd7e6e9200f70208791be2b3 19-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Expose the -Xclang option

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188685 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1b8f12d46c10169bb949372ec5fc4c58afc2ced1 19-Aug-2013 Alexey Samsonov <samsonov@google.com> Move SanitizerArgs to the clang Driver

Summary:
This change turns SanitizerArgs into high-level options
stored in the Driver, which are parsed lazily. This fixes an issue of multiple copies of the same diagnostic message produced by sanitizer arguments parser.

Reviewers: rsmith

Reviewed By: rsmith

CC: chandlerc, eugenis, cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1341

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188660 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
anitizerArgs.h
oolChain.h
5db9527a2e582c17bc835e6e2a5a8178efa5a1e8 14-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Support /link option and set target to win32

This adds support for the /link option, which forwards
subsequent arguments to the linker.

The test for this will only work when targetting win32.
Since that's the only target where clang-cl makes sense,
use that target by default.

Differential Revision: http://llvm-reviews.chandlerc.com/D1388

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188331 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
73052bf669d3fe4c202cff2792cfe215cf5727be 13-Aug-2013 Hans Wennborg <hans@hanshq.net> Handle "--" explicitly in the driver

Anything that comes after -- is treated as an input file. This
used to be handled automagically by the option parsing library,
but after LLVM r188314, we should handle it ourselves.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188316 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
9c0ed9122da2ec12798459328ba63511b1aab7d4 13-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Sink /Fe and /Fo diagnostic code into BuildActions

Differential Revision: http://llvm-reviews.chandlerc.com/D1370

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188226 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
c65c72d198b02c0d90c6bcced655e4bb11ed3f37 12-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Support the /Fe option

This is used to name the linked output file.

Differential Revision: http://llvm-reviews.chandlerc.com/D1344

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188210 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
c613b67f4f3e5d11d6af6426fd9b8b6a197d2b6b 12-Aug-2013 Jack Carter <jack.carter@imgtec.com> [Mips] MSA frontend option support

This patch adds -mmsa and -mno-msa to the options supported by
clang to enable and disable support for MSA.

When MSA is enabled, a predefined macro '__mips_msa' is defined to 1.

Patch by Daniel Sanders


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188184 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
708002ede3938256a6223d153a0c040f7a40f5cc 09-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Support /showIncludes

This option prints information about #included files to stderr. Clang could
already do it, this patch just teaches the existing code about the /showIncludes
style and adds the flag.

Differential Revision: http://llvm-reviews.chandlerc.com/D1333

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188037 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
LCompatOptions.td
ptions.td
c8e8e8faff9c21952cca04be664c8e25bd599300 09-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Map /Oi[-] to -f[no-]builtin

Differential Revision: http://llvm-reviews.chandlerc.com/D1328

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188027 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
a32c52367ac31982fa7c2a7ba959dadaf3693f3b 08-Aug-2013 Reid Kleckner <reid@kleckner.net> Revert "clang-cl: Hook up /Za to prevent adding oldnames.lib dependency"

This reverts commit r187991 and adjusts the comment. /Za is much more
involved, and we don't want to give anyone the impression we actually
support it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187998 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
bccf68f0901f6457ff00874ef57644100a1c7a59 08-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Hook up /Za to prevent adding oldnames.lib dependency

The /Za flag should probably do more, but let's start with this.

Differential Revision: http://llvm-reviews.chandlerc.com/D1320

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187991 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
b26404a7505dab7ec3a16f6e3b85f95cfd59ba93 08-Aug-2013 Chandler Carruth <chandlerc@gmail.com> The only useful loop unrolling flag to give realistically is
'-fno-unroll-loops'. The option to the backend is even called
'DisableUnrollLoops'. This is precisely the form that Clang *didn't*
support. We didn't recognize the flag, we didn't pass it to the CC1
layer, and even if we did we wouldn't use it. Clang only inspected the
positive form of the flag, and only did so to enable loop unrolling when
the optimization level wasn't high enough. This only occurs for an
optimization level that even has a chance of running the loop unroller
when optimizing for size.

This commit wires up the 'no' variant, and switches the code to actually
follow the standard flag pattern of using the last flag and allowing
a flag in either direction to override the default.

I think this is still wrong. I don't know why we disable the loop
unroller entirely *from Clang* when optimizing for size, as the loop
unrolling pass *already has special logic* for the case where the
function is attributed as optimized for size! We should really be
trusting that. Maybe in a follow-up patch, I don't really want to change
behavior here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187969 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b3574796d7cc0113e54b6516fc16e17ca09459fb 08-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Support the run-time selection options (/MD, /MT et al.)

These flags set some preprocessor macros and injects a dependency
on the runtime library into the object file, which later is picked up
by the linker.

This also adds a new CC1 flag for adding a dependent library.

Differential Revision: http://llvm-reviews.chandlerc.com/D1315

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187945 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
LCompatOptions.td
909930fc19ff69b08f2ea6f6e2996d24c816f311 07-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Use .obj as object file extension instead of .o

Differential Revision: http://llvm-reviews.chandlerc.com/D1302

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187840 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ypes.h
ab50ccd7f756a1e617ebd32471ba9565bb240d37 07-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Implement support for the /Fo option

This implements support for the /Fo option, which is used
to set the filename or output dir for object files.

Differential Revision: http://llvm-reviews.chandlerc.com/D1302

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187820 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
4c587532e108725e38c5546976ee81c8bea04bb7 06-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Implement the /Tc, /TC, /Tp and /TP options.

These are used to specify source files, and whether to treat source
files as C or C++.

Differential Revision: http://llvm-reviews.chandlerc.com/D1290

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187760 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
056ec12ca14ee5014ea49786f719ceaa299a7e19 05-Aug-2013 Daniel Jasper <djasper@google.com> Add option to disable module loading.

This patch was created by Lawrence Crowl and reviewed in:
http://llvm-reviews.chandlerc.com/D963

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187738 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a1c50a1f55086cda654a903abd4ce1908e580faa 03-Aug-2013 Hans Wennborg <hans@hanshq.net> Options.td: remove _DASH_DASH

Since LLVM r187675, this is handled by the option parsing code itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187689 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
09c3463441ffca4bde5e8612222f8cc6ae0ec9a5 03-Aug-2013 Hans Wennborg <hans@hanshq.net> Re-commit r187637: "clang-cl: add more options"

> This adds a bunch of options to clang-cl. Notably, this includes
> all the options that get passed when doing a default build of a
> command-line project with msbuild.exe in Debug and Release modes,
> and I believe all flags from Reid's original patch.

The original commit was reverted in r187640 after it broke the Mac build.

This should now be fixed, by Clang r187668, LLVM r187675, and putting
a -- before %s in the test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187679 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
e7a9a67f9842dcdc13d322a23110f42bd025a306 02-Aug-2013 Hans Wennborg <hans@hanshq.net> Revert r187537 "clang-cl: add more options"

It broke the "phase1 - sanity" buildbot. Reverting until
we can figure out what's going on.

And Eric says it broke all current Mac builds actually.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187640 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
ac8b5f53d4646b4f76565a03ae2a85b6c67cdcc1 02-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: add more options

This adds a bunch of options to clang-cl. Notably, this includes
all the options that get passed when doing a default build of a
command-line project with msbuild.exe in Debug and Release modes,
and I believe all flags from Reid's original patch.

Differential Revision: http://llvm-reviews.chandlerc.com/D1264

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187637 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
60704acfbdae5d4c95caf042b3fb73f8da7e6122 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Options.td: O0 and O4 are not Joined options

(I'm not sure how to test this because the Driver will still accept
e.g. "-O4foo", but it goes in the catch-all -O option instead of -O4.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187602 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f10fa8d04773410860cd347aebf77c27434aaf26 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Options: Use AliasArgs for -O -> -O2 translation.

This way we can do the translation in the .td file rather than manually.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187583 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d145ce71fbe25c578f7d6a56320b64abf808ba78 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Remove the SUPPORT_ALIASARGS define

It is not needed after LLVM r187546.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187550 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.h
ptions.h
b087a5d13d6edd8b54fbb0683d6b9d1768a86c47 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Make -m[no-]pascal-strings an alias of -f[no]pascal-strings in the .td file

This way we don't have to translate it manually in Clang::ConstructJob.

Differential Revision: http://llvm-reviews.chandlerc.com/D1249

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187547 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
438292860a49f6998dff4db0b9ff04bcc0d5ae33 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Option parsing tables: pick up AliasArgs from the OPTION macro.

This depends on LLVM r187537.

The SUPPORT_ALIASARGS macro will be removed once all option parsing
clients have been updated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187538 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.h
ptions.h
78d0fbfe3aa0dcf158fed95a51460e5d769447ee 31-Jul-2013 Hans Wennborg <hans@hanshq.net> clang-cl: add the /c, /W0 and /W1 options

This adds a few more clang-cl options. It also exposes two core clang
options to the clang-cl mode: we need to be able to claim --driver_mode
so it doesn't show up as unused in cl mode, and we need -### for tests.

Differential Revision: http://llvm-reviews.chandlerc.com/D1232

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187527 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
ptions.h
ptions.td
6365ab91a0cf2f20c73ea9c39b55c14ab438018e 30-Jul-2013 Chandler Carruth <chandlerc@gmail.com> Start keeping track of what work was done to detect a GCC installation
on the system, and report it when running the driver in verbose mode.
Without this it is essentially impossible to understand why a particular
GCC toolchain is used by Clang for libstdc++, libgcc, etc.

This also required threading a hook through the toolchain layers for
a specific toolchain implementation to print custom information under
'clang -v'. The naming here isn't spectacular. Suggestions welcome.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187427 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
6981330cc231e4e2ccbd38679209e04b776483eb 27-Jul-2013 Hans Wennborg <hans@hanshq.net> clang-cl: add support for the /? and /help options

This establishes a new Flag in Options.td, which can be assigned to
options that should be made available in clang's cl.exe compatible
mode, and updates the Driver to make use of the flag.

(The whitespace change to CMakeLists forces the build to re-run CMake
and pick up the include dependency on the new .td file. This makes the
build work if someone moves backwards in commit history after this change.)

Differential Revision: http://llvm-reviews.chandlerc.com/D1215

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187280 91177308-0d34-0410-b5e6-96231b3b80d8
LCompatOptions.td
river.h
akefile
ptions.h
ptions.td
b28b04407e6ed06431cb58176268ab719e01fae8 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: rename CCC{Driver,Debug}Opt to Internal{Driver,Debug}Opt

Also rename ccc_Group, ccc_driver_Group and ccc_Debug_Group similarly.

Differential Revision: http://llvm-reviews.chandlerc.com/D1218

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187239 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b16bb3535948c27139753f4e4627008560cfcaf5 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: remove a_Group and L_Group.

They don't seems to serve any purpose.

Differential Revision: http://llvm-reviews.chandlerc.com/D1227

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187236 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6cf69140a4d6d32802b015611833cdab1864bc15 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: Update HelpText of CCCDriverOpt

This should have been part of r186720.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187218 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
19caff4f9a38c23bffdc8ff801a36026ab61ebd7 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: fold the NoForward flag into DriverOption

They seemed to have the same implications, and this makes for one
less flag to worry about.

Differential Revision: http://llvm-reviews.chandlerc.com/D1219

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187168 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.h
ptions.td
d78aef1f8339fbe6784bf1628dcec19ca1af2b6c 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: finish comment about CompileOnly_Group

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187163 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
73168db4feadbb5e8915e71369aad33292860427 25-Jul-2013 David Blaikie <dblaikie@gmail.com> Don't forward all assembler arguments untouched to -cc1as

Use the same filtering for assembly arguments to -cc1as as we do for
-cc1, this allows a consistent (& more useful) diagnostic experience for
users (rather than getting an error from -cc1as (which a user shouldn't
really be thinking about) about --foo, they get an error from clang
about --foo in -Wa,)

I'm sort of surprised by the separation of -cc1as & the separate
argument handling, etc, but at least this removes a little bit of the
duplication.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187156 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
75fcef9a16e98b95fa980f1b2c4fc0d4090955d8 23-Jul-2013 Hans Wennborg <hans@hanshq.net> Remove HelpText for -fno-diagnostics-show-note-include-stack

The help text was wrong, and we already provide help text on the
option that actually changes anything, i.e. -fdiagnostics-show-note-include-stack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186989 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7d3240d3c949b8d0697a23a202cceba4d1a2d21f 23-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the -ccc-echo option that is now unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186970 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.td
264d206244bde858471e4b6211aeba28fd8ce7cb 23-Jul-2013 Eli Bendersky <eliben@google.com> Add a -fno-math-builtin option to the Clang -cc1


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186899 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c2f531a1300cc7a79cb8dde12cb993da82beba1b 19-Jul-2013 Hans Wennborg <hans@hanshq.net> Add a cl.exe compatible driver mode

The mode doesn't actually do anything yet, but this provides a
way to get into it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186720 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
cdbc3b36bd6167fcb1e2de080e0d9bcd35b166ea 19-Jul-2013 Akira Hatanaka <ahatanaka@mips.com> [mips] Add support for command-line options -mno-check-zero-division and
-mcheck-zero-division.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186710 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
76b86c2e79a58910a641d449f229889d671d8a38 18-Jul-2013 Hans Wennborg <hans@hanshq.net> Turn Driver::CCCIsCXX and CCCIsCPP into a single Mode enum,
and add a new option --driver-mode= to control it explicitly.

The CCCIsCXX and CCCIsCPP flags were non-overlapping, i.e. there
are currently really three modes that Clang can run in: gcc, g++
or cpp, so it makes sense to represent them as an enum.

Having a command line flag to control it helps testing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186605 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.td
b17a2c119877b47cb3fb68c76a91dfe4d8cc6199 17-Jul-2013 Hans Wennborg <hans@hanshq.net> Option parsing tables: remove some unnecessary #defines

Also make some strings static and add missing #undef's

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186518 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.h
ptions.h
d412999a3da6387dbfaf00f7647132082e94310e 09-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjC migrator: Add -objcmt-migrate-property to do property
migration. Also, fixes an old bug where older migration
flags were not being checked for properly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185948 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6b9240e058bf3451685df73fc8ce181b3046e92b 05-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl& for function arguments instead of SmallVector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185715 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.h
2b78142636ad8470bc6d05d7508623ff7e3905d4 03-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Add file suffix for assembler-with-cpp.

Fixes crash when trying to recover from a crash on an assembler-with-cpp
file. (Not sure how to write a testcase.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185562 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
fdf137b9073aa52423183fe886d072bc3b7d3889 25-Jun-2013 Nick Lewycky <nicholas@mxc.ca> Make -vectorize-... proper cc1 flags instead of abusing -backend-option. Fixes
usage of clang as a library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184812 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ab297ccbcc51d5197d4ddb4e99b7bc8868d38314 24-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add -ast-dump-lookups switch to -cc1 to dump DeclContext lookup maps. Test to
follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184678 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
fbd4116c4287cba862fbf3ff77b4032cbe98f78a 20-Jun-2013 Chandler Carruth <chandlerc@gmail.com> Update two options to my proposed syntax for user-facing driver options:

-gcc-toolchain foo -> --gcc-toolchain=foo
-target foo -> --target=foo

I've added legacy aliases for the original spellings. I've updated the
canonical tests to check both spellings, and switched all of the
-gcc-toolchain usages elsewhere in the test suite to use the new one.
I've updated some of the usages of -target to the new syntax, but will
finish that in a separate entirely mechanical change once I'm sure this
won't get rolled back for some reason (It touches a *huge* number of RUN
lines in the test suite unsurprisingly).

A nice result is that the three most common flags I end up using when
doing cross compiles are all now consistent: --target=, --sysroot=, and
--gcc-toolchain=.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184408 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
fc0f91cf0673775ce4b8b174dbb05ad2e4e6cd01 19-Jun-2013 Manman Ren <mren@apple.com> Debug Info: support for gdwarf-2 gdwarf-3 gdwarf-4

These options will add a module flag with name "Dwarf Version".
The behavior flag is currently set to Warning, so when two values disagree,
a warning will be emitted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184276 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
15f03ea2e223631e71d4ae75db986e2951d4e092 18-Jun-2013 Reid Kleckner <reid@kleckner.net> Remove option emitter from clang-tblgen

The CMake build was still using it because I forgot to s/CLANG/LLVM/ in
the tablegen() call. The Makefile build is already using llvm-tblgen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184192 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
b8b52972c72b2ba6fe171c522e5d3d7d69503021 18-Jun-2013 John McCall <rjmccall@apple.com> Add support for -fpcc-struct-return. Patch by Arthur O'Dwyer!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184166 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
3e8ac1b4d50a3b13bdda99f9d842b0127315ecf0 18-Jun-2013 Eric Christopher <echristo@gmail.com> Accept and ignore -fdebug-types-section for now. This will be used
later with dwarf4 type hashing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184152 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a372f40dac73b69936f6a713df0808c740bb326c 17-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Include PathV1.h only where it is used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184090 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
dd0b3c4c72464af92e2c27dd5a67e29f91ba7b28 17-Jun-2013 Reid Kleckner <reid@kleckner.net> [Driver] Remove the using namespace directives from headers

This adds a bunch of llvm::opt name specifiers to all the uses of types
from that namespace.

Reviewers: espindola

Differential Revision: http://llvm-reviews.chandlerc.com/D983

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184079 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
C1AsOptions.h
ompilation.h
river.h
ob.h
ool.h
oolChain.h
b1e25a1bc03292dc538d336573e0be1490223171 14-Jun-2013 Reid Kleckner <reid@kleckner.net> [Driver] Refactor clang driver to use LLVM's Option library

The big changes are:
- Deleting Driver/(Arg|Opt)*
- Rewriting includes to llvm/Option/ and re-sorting
- 'using namespace llvm::opt' in clang::driver
- Fixing the autoconf build by adding option everywhere

As discussed in the review, this change includes using directives in
header files. I'll make follow up changes to remove those in favor of
name specifiers.

Reviewers: espindola

Differential Revision: http://llvm-reviews.chandlerc.com/D975

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183989 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
rg.h
rgList.h
C1AsOptions.h
C1AsOptions.td
MakeLists.txt
ompilation.h
river.h
ob.h
akefile
ptParser.td
ptSpecifier.h
ptTable.h
ption.h
ptions.h
ptions.td
ool.h
oolChain.h
til.h
57a3bbfa9a97f174b0c80b0309e32f4329c4ae1b 13-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Use the sys::ExecuteAndWait that takes StringRefs.

Also don't depend on Program.h including PathV1.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183935 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
34392373fe25e943586de0fdbe37b806c3f7ff70 11-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Include PathV1.h in files that use it.

This is preparation for replacing Path.h with PathV2.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183781 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
9adba39460dfa5282b75dbd27db44ccfb4d1f511 05-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Default to PIE and using stack protection on OpenBSD.

Patch by Matthew Dempsky.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183295 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
bdaa13418851be5cc1ca3be88fbd82b15efecde7 27-May-2013 Peter Collingbourne <peter@pcc.me.uk> Driver: implement --dyld-prefix option.

This option is used to select a dynamic loader prefix to be used
at runtime. Currently this is implemented for the Linux toolchain.

Differential Revision: http://llvm-reviews.chandlerc.com/D851

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182744 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.td
d5dcdb2658c5aa4568c61917a1620434b055c113 24-May-2013 Bill Wendling <isanbard@gmail.com> Constify the 'dump' method so that it can be called by a const object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182620 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
6bdc4c65c0bfac1f42c3b57680ac4e45b622b266 11-May-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Add -mldc1-sdc1 / -mno-ldc1-sdc1 command line options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181660 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
65cd8132d531ba14f81fe3d8f078558be78c2f95 09-May-2013 Dmitri Gribenko <gribozavr@gmail.com> Documentation warning: \param, not \parm


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181550 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
e7565635002ce0daaaf4b714cdb472507af462ee 08-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y: Add a step limit to constexpr evaluation, to catch runaway loops.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181388 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
d99990df0b4aca43a0315b2928ff1b8baf704052 04-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r177218.

Per discussion in cfe-commits, asserting may be a better way than introducing a special test flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181073 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
1c18759b45140c85e62ac6367fbee51f363e3c81 01-May-2013 Chad Rosier <mcrosier@apple.com> [driver] Allow multiple -arch options with -save-temps by adding the arch name
to the temporary files.
rdar://13218604


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180813 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
9dbfc6135580357428966ff05427f654dba44cd3 30-Apr-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Pass -mips16, -mmicromips, -mdsp and -mdspr2 flags to the
assembler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180775 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
0127b3f60b5bf7b8caed8426b8bd77c4a019a286 24-Apr-2013 Chad Rosier <mcrosier@apple.com> [driver] Add a hasFlag API that accepts a positive alias.
Part of rdar://13622687

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180203 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
8e8e95c57c310bbc52cdc8d32df23c95afc77916 20-Apr-2013 Simon Atanasyan <simon@atanasyan.com> Supports Sourcery CodeBench Mips toolchain directories tree.

Sourcery CodeBench and modern FSF Mips toolchains require a bit more
complicated algorithm to calculate headers, libraries and sysroot paths
than implemented by Clang driver now. The main problem is that all these
paths depend on a set of command line arguments additionally to a target
triple value. For example, let $TC is a toolchain installation directory.
If we compile big-endian 32-bit mips code, crtbegin.o is in the
$TC/lib/gcc/mips-linux-gnu/4.7.2 folder and the toolchain's linker requires
--sysroot=$TC/mips-linux-gnu/libc argument. If we compile little-endian
32-bit soft-float mips code, crtbegin.o is in the
$TC/lib/gcc/mips-linux-gnu/4.7.2/soft-float/el folder and the toolchain's
linker requires --sysroot=$TC/mips-linux-gnu/libc/soft-float/el argument.

1. Calculate MultiarchSuffix using all necessary command line options and
use this MultiarchSuffix to detect crtbegin.o location in the
GCCInstallationDetector::ScanLibDirForGCCTriple() routine.
2. If a user does not provide --sysroot argument to the driver explicitly,
calculate new sysroot value based on command line options. Then use this
calculated sysroot path:
a. To populate a file search paths list in the Linux::Linux() constructor.
b. To find Mips toolchain specific include headers directories
in the Linux::AddClangSystemIncludeArgs() routine.
c. To provide -–sysroot argument for a linker.

Note:
- The FSF's tree slightly differs (folder names) and is not supported
yet.
- New addExternCSystemIncludeIfExits() routine is a temporary solution.
I plan to move path existence check to the addExternCSystemInclude()
routine by a separate commit.

The patch reviewed by Rafael Espindola.
http://llvm-reviews.chandlerc.com/D644

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179934 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
9753d462fabba1db75a977cb1f75ea66e9081120 17-Apr-2013 Nico Weber <nicolasweber@gmx.de> Add support for gcc's spelling of -fcolor-diagnostics.

See http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179728 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f4910132078b4b8852fc46657f3150ed472f4654 16-Apr-2013 Daniel Dunbar <daniel@zuster.org> [Modules] Convert module specific -fno-modules-autolink into -fno-autolink.

- There is no reason to have a modules specific flag for disabling
autolinking. Instead, convert the existing flag into -fno-autolink (which
should cover other autolinking code generation paths like #pragmas if and
when we support them).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179612 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
115ac5ac1281e6f301da4da6a5c669beae59ffcc 15-Apr-2013 Timur Iskhodzhanov <timurrrr@google.com> Add a missing space

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179525 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
3c6a9b052373f656268557904d229a8ad8b7686f 15-Apr-2013 Nadav Rotem <nrotem@apple.com> Add a new flag -vectorize-slp-aggressive to enable Hals BB vectorizer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179507 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
321ae79aae228aa069795e78449a95fa35e2abfd 14-Apr-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Support -mmicromips / -mno-micromips command line options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179489 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
2ed42b86da17b8fc54480bf34e1965e20eee89f5 14-Apr-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Remove "single" from the list of valid MIPS float ABI names. Add
two new options –msingle-float and –mdouble-float. These options can be
used simultaneously with float ABI selection options (-mfloat-abi,
-mhard-float, -msoft-float). They mark whether a floating-point
coprocessor supports double-precision operations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179481 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f6f77bd900ccc847c6601a34457c8b5f3cb48219 11-Apr-2013 Bob Wilson <bob.wilson@apple.com> Add a new -mimplicit-float option for symmetry with -mno-implicit-float.

This new option is the default, but it is useful to have a flag to override
-mno-implicit-float by putting -mimplicit-float later on the command line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179309 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d4fc9de6f7d9a56bdc2ec51d9cbbfd7d3cb0cf0a 10-Apr-2013 Chad Rosier <mcrosier@apple.com> [driver] Add a -Ofast option, which enables -O3, -ffast-math, and
-fstrict-aliasing.
rdar://13622687


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179216 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6fd7d3067dd06584ef3940e88e31fea1a0e83588 10-Apr-2013 Dmitri Gribenko <gribozavr@gmail.com> Add an option to parse all comments as documentation comments

Patch by Amin Shali.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179180 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
52ca70dc304c694923ac804630d88b1d95bfa941 09-Apr-2013 Peter Collingbourne <peter@pcc.me.uk> If the user requested a zero-base-shadow sanitizer, infer -pie and -fPIC when appropriate.

Differential Revision: http://llvm-reviews.chandlerc.com/D502

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179082 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
b37a73d5c6a0c8bb1f6e363d3b53980e4fa0cead 04-Apr-2013 Manman Ren <mren@apple.com> Initial support for struct-path aware TBAA.

Added TBAABaseType and TBAAOffset in LValue. These two fields are initialized to
the actual type and 0, and are updated in EmitLValueForField.
Path-aware TBAA tags are enabled for EmitLoadOfScalar and EmitStoreOfScalar.
Added command line option -struct-path-tbaa.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178797 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
7cc0a110bcf3fe9c4d1269ea2ae7e72aa7f37531 04-Apr-2013 Manman Ren <mren@apple.com> revert r178784 since it does not have a commit message

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178796 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
ab4ffe242935ae0dd66fbe0dcc792c1ad38b00c1 04-Apr-2013 Manman Ren <mren@apple.com> Index: include/clang/Driver/CC1Options.td
===================================================================
--- include/clang/Driver/CC1Options.td (revision 178718)
+++ include/clang/Driver/CC1Options.td (working copy)
@@ -161,6 +161,8 @@
HelpText<"Use register sized accesses to bit-fields, when possible.">;
def relaxed_aliasing : Flag<["-"], "relaxed-aliasing">,
HelpText<"Turn off Type Based Alias Analysis">;
+def struct_path_tbaa : Flag<["-"], "struct-path-tbaa">,
+ HelpText<"Turn on struct-path aware Type Based Alias Analysis">;
def masm_verbose : Flag<["-"], "masm-verbose">,
HelpText<"Generate verbose assembly output">;
def mcode_model : Separate<["-"], "mcode-model">,
Index: include/clang/Driver/Options.td
===================================================================
--- include/clang/Driver/Options.td (revision 178718)
+++ include/clang/Driver/Options.td (working copy)
@@ -587,6 +587,7 @@
Flags<[CC1Option]>, HelpText<"Disable spell-checking">;
def fno_stack_protector : Flag<["-"], "fno-stack-protector">, Group<f_Group>;
def fno_strict_aliasing : Flag<["-"], "fno-strict-aliasing">, Group<f_Group>;
+def fstruct_path_tbaa : Flag<["-"], "fstruct-path-tbaa">, Group<f_Group>;
def fno_strict_enums : Flag<["-"], "fno-strict-enums">, Group<f_Group>;
def fno_strict_overflow : Flag<["-"], "fno-strict-overflow">, Group<f_Group>;
def fno_threadsafe_statics : Flag<["-"], "fno-threadsafe-statics">, Group<f_Group>,
Index: include/clang/Frontend/CodeGenOptions.def
===================================================================
--- include/clang/Frontend/CodeGenOptions.def (revision 178718)
+++ include/clang/Frontend/CodeGenOptions.def (working copy)
@@ -85,6 +85,7 @@
VALUE_CODEGENOPT(OptimizeSize, 2, 0) ///< If -Os (==1) or -Oz (==2) is specified.
CODEGENOPT(RelaxAll , 1, 0) ///< Relax all machine code instructions.
CODEGENOPT(RelaxedAliasing , 1, 0) ///< Set when -fno-strict-aliasing is enabled.
+CODEGENOPT(StructPathTBAA , 1, 0) ///< Whether or not to use struct-path TBAA.
CODEGENOPT(SaveTempLabels , 1, 0) ///< Save temporary labels.
CODEGENOPT(SanitizeAddressZeroBaseShadow , 1, 0) ///< Map shadow memory at zero
///< offset in AddressSanitizer.
Index: lib/CodeGen/CGExpr.cpp
===================================================================
--- lib/CodeGen/CGExpr.cpp (revision 178718)
+++ lib/CodeGen/CGExpr.cpp (working copy)
@@ -1044,7 +1044,8 @@
llvm::Value *CodeGenFunction::EmitLoadOfScalar(LValue lvalue) {
return EmitLoadOfScalar(lvalue.getAddress(), lvalue.isVolatile(),
lvalue.getAlignment().getQuantity(),
- lvalue.getType(), lvalue.getTBAAInfo());
+ lvalue.getType(), lvalue.getTBAAInfo(),
+ lvalue.getTBAABaseType(), lvalue.getTBAAOffset());
}

static bool hasBooleanRepresentation(QualType Ty) {
@@ -1106,7 +1107,9 @@

llvm::Value *CodeGenFunction::EmitLoadOfScalar(llvm::Value *Addr, bool Volatile,
unsigned Alignment, QualType Ty,
- llvm::MDNode *TBAAInfo) {
+ llvm::MDNode *TBAAInfo,
+ QualType TBAABaseType,
+ uint64_t TBAAOffset) {
// For better performance, handle vector loads differently.
if (Ty->isVectorType()) {
llvm::Value *V;
@@ -1158,8 +1161,11 @@
Load->setVolatile(true);
if (Alignment)
Load->setAlignment(Alignment);
- if (TBAAInfo)
- CGM.DecorateInstruction(Load, TBAAInfo);
+ if (TBAAInfo) {
+ llvm::MDNode *TBAAPath = CGM.getTBAAStructTagInfo(TBAABaseType, TBAAInfo,
+ TBAAOffset);
+ CGM.DecorateInstruction(Load, TBAAPath);
+ }

if ((SanOpts->Bool && hasBooleanRepresentation(Ty)) ||
(SanOpts->Enum && Ty->getAs<EnumType>())) {
@@ -1217,7 +1223,8 @@
bool Volatile, unsigned Alignment,
QualType Ty,
llvm::MDNode *TBAAInfo,
- bool isInit) {
+ bool isInit, QualType TBAABaseType,
+ uint64_t TBAAOffset) {

// Handle vectors differently to get better performance.
if (Ty->isVectorType()) {
@@ -1268,15 +1275,19 @@
llvm::StoreInst *Store = Builder.CreateStore(Value, Addr, Volatile);
if (Alignment)
Store->setAlignment(Alignment);
- if (TBAAInfo)
- CGM.DecorateInstruction(Store, TBAAInfo);
+ if (TBAAInfo) {
+ llvm::MDNode *TBAAPath = CGM.getTBAAStructTagInfo(TBAABaseType, TBAAInfo,
+ TBAAOffset);
+ CGM.DecorateInstruction(Store, TBAAPath);
+ }
}

void CodeGenFunction::EmitStoreOfScalar(llvm::Value *value, LValue lvalue,
bool isInit) {
EmitStoreOfScalar(value, lvalue.getAddress(), lvalue.isVolatile(),
lvalue.getAlignment().getQuantity(), lvalue.getType(),
- lvalue.getTBAAInfo(), isInit);
+ lvalue.getTBAAInfo(), isInit, lvalue.getTBAABaseType(),
+ lvalue.getTBAAOffset());
}

/// EmitLoadOfLValue - Given an expression that represents a value lvalue, this
@@ -2494,9 +2505,12 @@

llvm::Value *addr = base.getAddress();
unsigned cvr = base.getVRQualifiers();
+ bool TBAAPath = CGM.getCodeGenOpts().StructPathTBAA;
if (rec->isUnion()) {
// For unions, there is no pointer adjustment.
assert(!type->isReferenceType() && "union has reference member");
+ // TODO: handle path-aware TBAA for union.
+ TBAAPath = false;
} else {
// For structs, we GEP to the field that the record layout suggests.
unsigned idx = CGM.getTypes().getCGRecordLayout(rec).getLLVMFieldNo(field);
@@ -2508,6 +2522,8 @@
if (cvr & Qualifiers::Volatile) load->setVolatile(true);
load->setAlignment(alignment.getQuantity());

+ // Loading the reference will disable path-aware TBAA.
+ TBAAPath = false;
if (CGM.shouldUseTBAA()) {
llvm::MDNode *tbaa;
if (mayAlias)
@@ -2541,6 +2557,16 @@

LValue LV = MakeAddrLValue(addr, type, alignment);
LV.getQuals().addCVRQualifiers(cvr);
+ if (TBAAPath) {
+ const ASTRecordLayout &Layout =
+ getContext().getASTRecordLayout(field->getParent());
+ // Set the base type to be the base type of the base LValue and
+ // update offset to be relative to the base type.
+ LV.setTBAABaseType(base.getTBAABaseType());
+ LV.setTBAAOffset(base.getTBAAOffset() +
+ Layout.getFieldOffset(field->getFieldIndex()) /
+ getContext().getCharWidth());
+ }

// __weak attribute on a field is ignored.
if (LV.getQuals().getObjCGCAttr() == Qualifiers::Weak)
Index: lib/CodeGen/CGValue.h
===================================================================
--- lib/CodeGen/CGValue.h (revision 178718)
+++ lib/CodeGen/CGValue.h (working copy)
@@ -157,6 +157,11 @@

Expr *BaseIvarExp;

+ /// Used by struct-path-aware TBAA.
+ QualType TBAABaseType;
+ /// Offset relative to the base type.
+ uint64_t TBAAOffset;
+
/// TBAAInfo - TBAA information to attach to dereferences of this LValue.
llvm::MDNode *TBAAInfo;

@@ -175,6 +180,10 @@
this->ImpreciseLifetime = false;
this->ThreadLocalRef = false;
this->BaseIvarExp = 0;
+
+ // Initialize fields for TBAA.
+ this->TBAABaseType = Type;
+ this->TBAAOffset = 0;
this->TBAAInfo = TBAAInfo;
}

@@ -232,6 +241,12 @@
Expr *getBaseIvarExp() const { return BaseIvarExp; }
void setBaseIvarExp(Expr *V) { BaseIvarExp = V; }

+ QualType getTBAABaseType() const { return TBAABaseType; }
+ void setTBAABaseType(QualType T) { TBAABaseType = T; }
+
+ uint64_t getTBAAOffset() const { return TBAAOffset; }
+ void setTBAAOffset(uint64_t O) { TBAAOffset = O; }
+
llvm::MDNode *getTBAAInfo() const { return TBAAInfo; }
void setTBAAInfo(llvm::MDNode *N) { TBAAInfo = N; }

Index: lib/CodeGen/CodeGenFunction.h
===================================================================
--- lib/CodeGen/CodeGenFunction.h (revision 178718)
+++ lib/CodeGen/CodeGenFunction.h (working copy)
@@ -2211,7 +2211,9 @@
/// the LLVM value representation.
llvm::Value *EmitLoadOfScalar(llvm::Value *Addr, bool Volatile,
unsigned Alignment, QualType Ty,
- llvm::MDNode *TBAAInfo = 0);
+ llvm::MDNode *TBAAInfo = 0,
+ QualType TBAABaseTy = QualType(),
+ uint64_t TBAAOffset = 0);

/// EmitLoadOfScalar - Load a scalar value from an address, taking
/// care to appropriately convert from the memory representation to
@@ -2224,7 +2226,9 @@
/// the LLVM value representation.
void EmitStoreOfScalar(llvm::Value *Value, llvm::Value *Addr,
bool Volatile, unsigned Alignment, QualType Ty,
- llvm::MDNode *TBAAInfo = 0, bool isInit=false);
+ llvm::MDNode *TBAAInfo = 0, bool isInit = false,
+ QualType TBAABaseTy = QualType(),
+ uint64_t TBAAOffset = 0);

/// EmitStoreOfScalar - Store a scalar value to an address, taking
/// care to appropriately convert from the memory representation to
Index: lib/CodeGen/CodeGenModule.cpp
===================================================================
--- lib/CodeGen/CodeGenModule.cpp (revision 178718)
+++ lib/CodeGen/CodeGenModule.cpp (working copy)
@@ -227,6 +227,20 @@
return TBAA->getTBAAStructInfo(QTy);
}

+llvm::MDNode *CodeGenModule::getTBAAStructTypeInfo(QualType QTy) {
+ if (!TBAA)
+ return 0;
+ return TBAA->getTBAAStructTypeInfo(QTy);
+}
+
+llvm::MDNode *CodeGenModule::getTBAAStructTagInfo(QualType BaseTy,
+ llvm::MDNode *AccessN,
+ uint64_t O) {
+ if (!TBAA)
+ return 0;
+ return TBAA->getTBAAStructTagInfo(BaseTy, AccessN, O);
+}
+
void CodeGenModule::DecorateInstruction(llvm::Instruction *Inst,
llvm::MDNode *TBAAInfo) {
Inst->setMetadata(llvm::LLVMContext::MD_tbaa, TBAAInfo);
Index: lib/CodeGen/CodeGenModule.h
===================================================================
--- lib/CodeGen/CodeGenModule.h (revision 178718)
+++ lib/CodeGen/CodeGenModule.h (working copy)
@@ -501,6 +501,11 @@
llvm::MDNode *getTBAAInfo(QualType QTy);
llvm::MDNode *getTBAAInfoForVTablePtr();
llvm::MDNode *getTBAAStructInfo(QualType QTy);
+ /// Return the MDNode in the type DAG for the given struct type.
+ llvm::MDNode *getTBAAStructTypeInfo(QualType QTy);
+ /// Return the path-aware tag for given base type, access node and offset.
+ llvm::MDNode *getTBAAStructTagInfo(QualType BaseTy, llvm::MDNode *AccessN,
+ uint64_t O);

bool isTypeConstant(QualType QTy, bool ExcludeCtorDtor);

Index: lib/CodeGen/CodeGenTBAA.cpp
===================================================================
--- lib/CodeGen/CodeGenTBAA.cpp (revision 178718)
+++ lib/CodeGen/CodeGenTBAA.cpp (working copy)
@@ -21,6 +21,7 @@
#include "clang/AST/Mangle.h"
#include "clang/AST/RecordLayout.h"
#include "clang/Frontend/CodeGenOptions.h"
+#include "llvm/ADT/SmallSet.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Metadata.h"
@@ -225,3 +226,87 @@
// For now, handle any other kind of type conservatively.
return StructMetadataCache[Ty] = NULL;
}
+
+/// Check if the given type can be handled by path-aware TBAA.
+static bool isTBAAPathStruct(QualType QTy) {
+ if (const RecordType *TTy = QTy->getAs<RecordType>()) {
+ const RecordDecl *RD = TTy->getDecl()->getDefinition();
+ // RD can be struct, union, class, interface or enum.
+ // For now, we only handle struct.
+ if (RD->isStruct() && !RD->hasFlexibleArrayMember())
+ return true;
+ }
+ return false;
+}
+
+llvm::MDNode *
+CodeGenTBAA::getTBAAStructTypeInfo(QualType QTy) {
+ const Type *Ty = Context.getCanonicalType(QTy).getTypePtr();
+ assert(isTBAAPathStruct(QTy));
+
+ if (llvm::MDNode *N = StructTypeMetadataCache[Ty])
+ return N;
+
+ if (const RecordType *TTy = QTy->getAs<RecordType>()) {
+ const RecordDecl *RD = TTy->getDecl()->getDefinition();
+
+ const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
+ SmallVector <std::pair<uint64_t, llvm::MDNode*>, 4> Fields;
+ // To reduce the size of MDNode for a given struct type, we only output
+ // once for all the fields with the same scalar types.
+ // Offsets for scalar fields in the type DAG are not used.
+ llvm::SmallSet <llvm::MDNode*, 4> ScalarFieldTypes;
+ unsigned idx = 0;
+ for (RecordDecl::field_iterator i = RD->field_begin(),
+ e = RD->field_end(); i != e; ++i, ++idx) {
+ QualType FieldQTy = i->getType();
+ llvm::MDNode *FieldNode;
+ if (isTBAAPathStruct(FieldQTy))
+ FieldNode = getTBAAStructTypeInfo(FieldQTy);
+ else {
+ FieldNode = getTBAAInfo(FieldQTy);
+ // Ignore this field if the type already exists.
+ if (ScalarFieldTypes.count(FieldNode))
+ continue;
+ ScalarFieldTypes.insert(FieldNode);
+ }
+ if (!FieldNode)
+ return StructTypeMetadataCache[Ty] = NULL;
+ Fields.push_back(std::make_pair(
+ Layout.getFieldOffset(idx) / Context.getCharWidth(), FieldNode));
+ }
+
+ // TODO: This is using the RTTI name. Is there a better way to get
+ // a unique string for a type?
+ SmallString<256> OutName;
+ llvm::raw_svector_ostream Out(OutName);
+ MContext.mangleCXXRTTIName(QualType(Ty, 0), Out);
+ Out.flush();
+ // Create the struct type node with a vector of pairs (offset, type).
+ return StructTypeMetadataCache[Ty] =
+ MDHelper.createTBAAStructTypeNode(OutName, Fields);
+ }
+
+ return StructMetadataCache[Ty] = NULL;
+}
+
+llvm::MDNode *
+CodeGenTBAA::getTBAAStructTagInfo(QualType BaseQTy, llvm::MDNode *AccessNode,
+ uint64_t Offset) {
+ if (!CodeGenOpts.StructPathTBAA)
+ return AccessNode;
+
+ const Type *BTy = Context.getCanonicalType(BaseQTy).getTypePtr();
+ TBAAPathTag PathTag = TBAAPathTag(BTy, AccessNode, Offset);
+ if (llvm::MDNode *N = StructTagMetadataCache[PathTag])
+ return N;
+
+ llvm::MDNode *BNode = 0;
+ if (isTBAAPathStruct(BaseQTy))
+ BNode = getTBAAStructTypeInfo(BaseQTy);
+ if (!BNode)
+ return StructTagMetadataCache[PathTag] = AccessNode;
+
+ return StructTagMetadataCache[PathTag] =
+ MDHelper.createTBAAStructTagNode(BNode, AccessNode, Offset);
+}
Index: lib/CodeGen/CodeGenTBAA.h
===================================================================
--- lib/CodeGen/CodeGenTBAA.h (revision 178718)
+++ lib/CodeGen/CodeGenTBAA.h (working copy)
@@ -35,6 +35,14 @@
namespace CodeGen {
class CGRecordLayout;

+ struct TBAAPathTag {
+ TBAAPathTag(const Type *B, const llvm::MDNode *A, uint64_t O)
+ : BaseT(B), AccessN(A), Offset(O) {}
+ const Type *BaseT;
+ const llvm::MDNode *AccessN;
+ uint64_t Offset;
+ };
+
/// CodeGenTBAA - This class organizes the cross-module state that is used
/// while lowering AST types to LLVM types.
class CodeGenTBAA {
@@ -46,8 +54,13 @@
// MDHelper - Helper for creating metadata.
llvm::MDBuilder MDHelper;

- /// MetadataCache - This maps clang::Types to llvm::MDNodes describing them.
+ /// MetadataCache - This maps clang::Types to scalar llvm::MDNodes describing
+ /// them.
llvm::DenseMap<const Type *, llvm::MDNode *> MetadataCache;
+ /// This maps clang::Types to a struct node in the type DAG.
+ llvm::DenseMap<const Type *, llvm::MDNode *> StructTypeMetadataCache;
+ /// This maps TBAAPathTags to a tag node.
+ llvm::DenseMap<TBAAPathTag, llvm::MDNode *> StructTagMetadataCache;

/// StructMetadataCache - This maps clang::Types to llvm::MDNodes describing
/// them for struct assignments.
@@ -89,9 +102,49 @@
/// getTBAAStructInfo - Get the TBAAStruct MDNode to be used for a memcpy of
/// the given type.
llvm::MDNode *getTBAAStructInfo(QualType QTy);
+
+ /// Get the MDNode in the type DAG for given struct type QType.
+ llvm::MDNode *getTBAAStructTypeInfo(QualType QType);
+ /// Get the tag MDNode for a given base type, the actual sclar access MDNode
+ /// and offset into the base type.
+ llvm::MDNode *getTBAAStructTagInfo(QualType BaseQType,
+ llvm::MDNode *AccessNode, uint64_t Offset);
};

} // end namespace CodeGen
} // end namespace clang

+namespace llvm {
+
+template<> struct DenseMapInfo<clang::CodeGen::TBAAPathTag> {
+ static clang::CodeGen::TBAAPathTag getEmptyKey() {
+ return clang::CodeGen::TBAAPathTag(
+ DenseMapInfo<const clang::Type *>::getEmptyKey(),
+ DenseMapInfo<const MDNode *>::getEmptyKey(),
+ DenseMapInfo<uint64_t>::getEmptyKey());
+ }
+
+ static clang::CodeGen::TBAAPathTag getTombstoneKey() {
+ return clang::CodeGen::TBAAPathTag(
+ DenseMapInfo<const clang::Type *>::getTombstoneKey(),
+ DenseMapInfo<const MDNode *>::getTombstoneKey(),
+ DenseMapInfo<uint64_t>::getTombstoneKey());
+ }
+
+ static unsigned getHashValue(const clang::CodeGen::TBAAPathTag &Val) {
+ return DenseMapInfo<const clang::Type *>::getHashValue(Val.BaseT) ^
+ DenseMapInfo<const MDNode *>::getHashValue(Val.AccessN) ^
+ DenseMapInfo<uint64_t>::getHashValue(Val.Offset);
+ }
+
+ static bool isEqual(const clang::CodeGen::TBAAPathTag &LHS,
+ const clang::CodeGen::TBAAPathTag &RHS) {
+ return LHS.BaseT == RHS.BaseT &&
+ LHS.AccessN == RHS.AccessN &&
+ LHS.Offset == RHS.Offset;
+ }
+};
+
+} // end namespace llvm
+
#endif
Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp (revision 178718)
+++ lib/Driver/Tools.cpp (working copy)
@@ -2105,6 +2105,8 @@
options::OPT_fno_strict_aliasing,
getToolChain().IsStrictAliasingDefault()))
CmdArgs.push_back("-relaxed-aliasing");
+ if (Args.hasArg(options::OPT_fstruct_path_tbaa))
+ CmdArgs.push_back("-struct-path-tbaa");
if (Args.hasFlag(options::OPT_fstrict_enums, options::OPT_fno_strict_enums,
false))
CmdArgs.push_back("-fstrict-enums");
Index: lib/Frontend/CompilerInvocation.cpp
===================================================================
--- lib/Frontend/CompilerInvocation.cpp (revision 178718)
+++ lib/Frontend/CompilerInvocation.cpp (working copy)
@@ -324,6 +324,7 @@
Opts.UseRegisterSizedBitfieldAccess = Args.hasArg(
OPT_fuse_register_sized_bitfield_access);
Opts.RelaxedAliasing = Args.hasArg(OPT_relaxed_aliasing);
+ Opts.StructPathTBAA = Args.hasArg(OPT_struct_path_tbaa);
Opts.DwarfDebugFlags = Args.getLastArgValue(OPT_dwarf_debug_flags);
Opts.MergeAllConstants = !Args.hasArg(OPT_fno_merge_all_constants);
Opts.NoCommon = Args.hasArg(OPT_fno_common);
Index: test/CodeGen/tbaa.cpp
===================================================================
--- test/CodeGen/tbaa.cpp (revision 0)
+++ test/CodeGen/tbaa.cpp (working copy)
@@ -0,0 +1,217 @@
+// RUN: %clang_cc1 -O1 -disable-llvm-optzns %s -emit-llvm -o - | FileCheck %s
+// RUN: %clang_cc1 -O1 -struct-path-tbaa -disable-llvm-optzns %s -emit-llvm -o - | FileCheck %s -check-prefix=PATH
+// Test TBAA metadata generated by front-end.
+
+#include <stdint.h>
+typedef struct
+{
+ uint16_t f16;
+ uint32_t f32;
+ uint16_t f16_2;
+ uint32_t f32_2;
+} StructA;
+typedef struct
+{
+ uint16_t f16;
+ StructA a;
+ uint32_t f32;
+} StructB;
+typedef struct
+{
+ uint16_t f16;
+ StructB b;
+ uint32_t f32;
+} StructC;
+typedef struct
+{
+ uint16_t f16;
+ StructB b;
+ uint32_t f32;
+ uint8_t f8;
+} StructD;
+
+typedef struct
+{
+ uint16_t f16;
+ uint32_t f32;
+} StructS;
+typedef struct
+{
+ uint16_t f16;
+ uint32_t f32;
+} StructS2;
+
+uint32_t g(uint32_t *s, StructA *A, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !5
+ *s = 1;
+ A->f32 = 4;
+ return *s;
+}
+
+uint32_t g2(uint32_t *s, StructA *A, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa !8
+ *s = 1;
+ A->f16 = 4;
+ return *s;
+}
+
+uint32_t g3(StructA *A, StructB *B, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !9
+ A->f32 = 1;
+ B->a.f32 = 4;
+ return A->f32;
+}
+
+uint32_t g4(StructA *A, StructB *B, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa !11
+ A->f32 = 1;
+ B->a.f16 = 4;
+ return A->f32;
+}
+
+uint32_t g5(StructA *A, StructB *B, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !12
+ A->f32 = 1;
+ B->f32 = 4;
+ return A->f32;
+}
+
+uint32_t g6(StructA *A, StructB *B, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !13
+ A->f32 = 1;
+ B->a.f32_2 = 4;
+ return A->f32;
+}
+
+uint32_t g7(StructA *A, StructS *S, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !14
+ A->f32 = 1;
+ S->f32 = 4;
+ return A->f32;
+}
+
+uint32_t g8(StructA *A, StructS *S, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa !16
+ A->f32 = 1;
+ S->f16 = 4;
+ return A->f32;
+}
+
+uint32_t g9(StructS *S, StructS2 *S2, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !14
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !17
+ S->f32 = 1;
+ S2->f32 = 4;
+ return S->f32;
+}
+
+uint32_t g10(StructS *S, StructS2 *S2, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !14
+// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa !19
+ S->f32 = 1;
+ S2->f16 = 4;
+ return S->f32;
+}
+
+uint32_t g11(StructC *C, StructD *D, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !20
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !22
+ C->b.a.f32 = 1;
+ D->b.a.f32 = 4;
+ return C->b.a.f32;
+}
+
+uint32_t g12(StructC *C, StructD *D, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// TODO: differentiate the two accesses.
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !9
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !9
+ StructB *b1 = &(C->b);
+ StructB *b2 = &(D->b);
+ // b1, b2 have different context.
+ b1->a.f32 = 1;
+ b2->a.f32 = 4;
+ return b1->a.f32;
+}
+
+// CHECK: !1 = metadata !{metadata !"omnipotent char", metadata !2}
+// CHECK: !2 = metadata !{metadata !"Simple C/C++ TBAA"}
+// CHECK: !4 = metadata !{metadata !"int", metadata !1}
+// CHECK: !5 = metadata !{metadata !"short", metadata !1}
+
+// PATH: !1 = metadata !{metadata !"omnipotent char", metadata !2}
+// PATH: !4 = metadata !{metadata !"int", metadata !1}
+// PATH: !5 = metadata !{metadata !6, metadata !4, i64 4}
+// PATH: !6 = metadata !{metadata !"_ZTS7StructA", i64 0, metadata !7, i64 4, metadata !4}
+// PATH: !7 = metadata !{metadata !"short", metadata !1}
+// PATH: !8 = metadata !{metadata !6, metadata !7, i64 0}
+// PATH: !9 = metadata !{metadata !10, metadata !4, i64 8}
+// PATH: !10 = metadata !{metadata !"_ZTS7StructB", i64 0, metadata !7, i64 4, metadata !6, i64 20, metadata !4}
+// PATH: !11 = metadata !{metadata !10, metadata !7, i64 4}
+// PATH: !12 = metadata !{metadata !10, metadata !4, i64 20}
+// PATH: !13 = metadata !{metadata !10, metadata !4, i64 16}
+// PATH: !14 = metadata !{metadata !15, metadata !4, i64 4}
+// PATH: !15 = metadata !{metadata !"_ZTS7StructS", i64 0, metadata !7, i64 4, metadata !4}
+// PATH: !16 = metadata !{metadata !15, metadata !7, i64 0}
+// PATH: !17 = metadata !{metadata !18, metadata !4, i64 4}
+// PATH: !18 = metadata !{metadata !"_ZTS8StructS2", i64 0, metadata !7, i64 4, metadata !4}
+// PATH: !19 = metadata !{metadata !18, metadata !7, i64 0}
+// PATH: !20 = metadata !{metadata !21, metadata !4, i64 12}
+// PATH: !21 = metadata !{metadata !"_ZTS7StructC", i64 0, metadata !7, i64 4, metadata !10, i64 28, metadata !4}
+// PATH: !22 = metadata !{metadata !23, metadata !4, i64 12}
+// PATH: !23 = metadata !{metadata !"_ZTS7StructD", i64 0, metadata !7, i64 4, metadata !10, i64 28, metadata !4, i64 32, metadata !1}


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178784 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
3105627bd76d6a0cc5ee305c99f4c96519bac9ac 04-Apr-2013 Eric Christopher <echristo@gmail.com> Plumb through the -fsplit-stack option using the existing backend
support.

Caveat: Other than the existing segmented stacks support, no
claims are made of this working.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178744 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
fe6b2713656c2d1bf559be357f0e0bf2d09bebd6 30-Mar-2013 Hal Finkel <hfinkel@anl.gov> Add support for gcc-compatible -mfprnd -mno-fprnd PPC options

gcc provides -mfprnd and -mno-fprnd for controlling the fprnd target
feature; support these options as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178414 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1bfc28c48c1b86a05d2e07b403107ef3da5a0f8e 29-Mar-2013 Michael Liao <michael.liao@intel.com> Add RDSEED intrinsic support defined in AVX2 extension



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178331 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
829d187e2100d2cfd85acefc2e867d12336e393f 28-Mar-2013 Hal Finkel <hfinkel@anl.gov> Add support for gcc-compatible -mpopcntd -mno-popcntd PPC options

gcc provides -mpopcntd and -mno-popcntd for controlling the popcntd target
feature; support these options as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178235 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
286f3e638fd842619f853127907398859367a464 28-Mar-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Handle pseudo-target flags '-EL' and '-EB' and properly adjust
toolchain flags for MIPS targets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178232 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f4320ab08da5e4c927ef326c68d5081f5f2a2268 28-Mar-2013 Hal Finkel <hfinkel@anl.gov> Add support for gcc-compatible -mmfcrf -mno-mfcrf PPC options

gcc provides -mmfcrf and -mno-mfcrf for controlling what we call
the mfocrf target feature. Also, PPC is now making use of the
static function AddTargetFeature used by the Mips Driver code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178227 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c544ba09695e300f31355af342258bd57619e737 27-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13509689> Introduce -module-file-info option that provides information about a particular module file.

This option can be useful for end users who want to know why they
ended up with a ton of different variants of the "std" module in their
module cache. This problem should go away over time, as we reduce the
need for module variants, but it will never go away entirely.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178148 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ypes.def
72339a0d160720c6301d629761e701e5fad56f5e 26-Mar-2013 Michael Liao <michael.liao@intel.com> Add PRFCHW intrinsic support

- Add head 'prfchwintrin.h' to define '_m_prefetchw' which is mapped to
LLVM/clang prefetch builtin
- Add option '-mprfchw' to enable PRFCHW feature and pre-define '__PRFCHW__'
macro



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178041 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d44d2872b2ebe58237de4dbc350b82cab944ccc5 25-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13434605> Periodically prune the module cache so that it does not grow forever.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177918 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
29511875348c49c9c5a14bb086cd51e17feb01c9 24-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Reject -no-integrated-as on windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177840 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
76e6e1377ff837047fb8e03a199c7f286c53897b 23-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> If a .syms file is available alongside a sanitizer runtime, pass it to the
linker via --dynamic-list instead of using --export-dynamic. This reduces the
size of the dynamic symbol table, and thus of the binary (in some cases by up
to ~30%).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177783 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
f48b93cb2054e83e43ca4391b8ec70be89fa2e30 20-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the Tools DensMap from the toolchain.

Each toolchain has a set of tools, but they are all of known types. It can
have a linker, an assembler, a "clang" (compile, analyze, ...) a non-clang
compiler, etc.

Instead of keeping a map, just have member variable for each type of tool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177479 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
83c546afef39d6b7be69f3f399804ebf037c4022 20-Mar-2013 Nick Lewycky <nicholas@mxc.ca> The flag "-coverage-function-names-in-data" is actually backwards -- we do
emit function names in .gcda files by default, and the flag turns that off!
Rename the flag to make it match what it actually does. This keeps the default
format compatible with gcc 4.2.

Also add a test for this flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177475 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f2b5e0707229e1149828ebc8d01d9308a997d6df 20-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Make clang emit linkage names in debug info for subprograms when coverage info
is enabled. Also add a new -test-coverage cc1 flag which makes testing coverage
possible and add our first clang-side coverage test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177470 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c0a55d12caff98504eace18b553bb111160a8131 19-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Finish refactoring the tool selection logic.

The general pattern now is that Foobar::constructTool only creates tools
defined in the tools::foobar namespace and then delegates to the parent.

The remaining duplicated code is now in the tools themselves.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177368 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
5b222059399ec9cccba7a393dc470adfb8a3db0f 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Centralize the recording of which tools have been constructed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177319 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
26adbe42d1fecd135dea6739ec2801f02473218f 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177303 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
af370e6e051e505016637e23418354db625dc796 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Pass an ArgList to every toolchain constructor. Remove the useIntegratedAs
argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177301 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
7ce8d82c4182b8b98d4b5c44f5258b9e9b2c1350 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Inline ShouldUseIntegratedAssembler and move the documentation to
useIntegratedAs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177300 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
5470cd27e47aea163daaa76dde36010753400663 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Refactor a bit of duplicated code to useIntegratedAs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177299 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
e5dce308870cd7d6b5156640af3724433bc1c575 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177293 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
d5320184367b681087e9ff74fc57ed2c5954c8ec 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177287 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
6aa240c03dd68ab413106d6af7a18af1c9b4e872 16-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove -Wspellcheck and replace it with a diagnostic option.

Thanks to Richard S. for pointing out that the warning would show up
with -Weverything.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177218 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
480760f8c7db7a1b77a73f4833bb99f657802775 08-Mar-2013 Chad Rosier <mcrosier@apple.com> [driver] If we're just linking, don't report --param X as unused option.
PR15327
rdar://13372628


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176670 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b9aa6739700d10e99da64cfa9b58ba7ca1c248e2 07-Mar-2013 Matthew Curtis <mcurtis@codeaurora.org> Minor refactor of how we get compilation phases.

There is now a single function to get the list of phases for a given
output Type.

No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176628 91177308-0d34-0410-b5e6-96231b3b80d8
hases.h
ypes.h
0f815f1f91e5cf0726fd8296445038fec3bed80b 07-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Add flags for additional control over coverage generation. Pick the version
string to be emitted, and two properties about the files themselves.

Use $PWD to absolut-ify the path to the coverage file. Yes, this is what GCC
does. Reverts my own r175706.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176617 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
5b9f5cc7c4310aec110f315df6fc6d6366b24b08 03-Mar-2013 David Chisnall <csdavec@swan.ac.uk> Default to enabling default-synthesized ivars on all platforms

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176419 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
80190399f5a062db72127869978699af65951b73 22-Feb-2013 Eric Christopher <echristo@gmail.com> Split out the command handling for split debug info, we're going
to want to propagate some information through the module into
the back end and so need to pass it through to codegen.

Also make the methods file static so we can use them in other places.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175916 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
6ebf09130479bc7605aa09a3e6c4dc2ba3513495 22-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: add CommentOptions to allow specifying custom comment block commands

Add an ability to specify custom documentation block comment commands via a new
class CommentOptions. The intention is that this class will hold future
customizations for comment parsing, including defining documentation comments
with specific numbers of parameters, etc.

CommentOptions instance is a member of LangOptions.

CommentOptions is controlled by a new command-line parameter
-fcomment-block-commands=Foo,Bar,Baz.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175892 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
9e738cc9d4b4655c44dadeb22f3a314daf43b995 22-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add -fbracket-depth=N, analogous to -ftemplate-depth= and -fconstexpr-depth=,
to control the check for the C 5.2.4.1 / C++ [implimits] restriction on nesting
levels for parentheses, brackets and braces.

Some code with heavy macro use exceeds the default limit of 256, but we don't
want to increase it generally to avoid stack overflow on stack-constrained
systems.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175855 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
168c96d42857ee98326b077189115cc82be1e2c3 22-Feb-2013 Eric Christopher <echristo@gmail.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175833 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
59320e770f90a59c74f2be10f198e3c390195628 21-Feb-2013 Eric Christopher <echristo@gmail.com> Remove the SplitDebug action and replace with a set of commands
in the compilation setup. Note that this doesn't currently
work for -no-integrated-as.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175813 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
649aa6adc4d8650033508d38d3b442d355d90824 21-Feb-2013 Chad Rosier <mcrosier@apple.com> [driver] Add a dump method for ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175777 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
a880b19aa6ef1dc95936f5de052be7a7d6ee6814 19-Feb-2013 John McCall <rjmccall@apple.com> Add support for -fvisibility-ms-compat.

We treat this as an alternative to -fvisibility=<?>
which changes the default value visibility to "hidden"
and the default type visibility to "default".

Expose a -cc1 option for changing the default type
visibility, repurposing -fvisibility as the default
value visibility option (also setting type visibility
from it in the absence of a specific option).

rdar://13079314

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175480 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
9ef9b8540a608a93efaaae1d26d94e8087c30b55 19-Feb-2013 David Blaikie <dblaikie@gmail.com> Use LLVM_DELETED_FUNCTION rather than '// do not implement' comments.

Also removes some redundant DNI comments on function declarations already
using the macro.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175465 91177308-0d34-0410-b5e6-96231b3b80d8
ptSpecifier.h
953a61f26bf79932b9699b09add4c388764de170 07-Feb-2013 Douglas Gregor <dgregor@apple.com> Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174645 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
2a06085281d1b6aee628f85e8676eec04542cbc9 07-Feb-2013 Douglas Gregor <dgregor@apple.com> Introduce -fmodules-ignore-macro=NNN to ignore a macro when building/loading modules.

The use of this flag enables a modules optimization where a given set
of macros can be labeled as "ignored" by the modules
system. Definitions of those macros will be completely ignored when
building the module hash and will be stripped when actually building
modules. The overall effect is that this flag can be used to
drastically reduce the number of

Eventually, we'll want modules to tell us what set of macros they
respond to (the "configuration macros"), and anything not in that set
will be excluded. However, that requires a lot of per-module
information that must be accurate, whereas this option can be used
more readily.

Fixes the rest of <rdar://problem/13165109>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174560 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1975c17e25b2d781bba95d47e8dabe6005815d5a 06-Feb-2013 Jordan Rose <jordan_rose@apple.com> Accept and ignore the -fextended-identifiers option.

This was GCC's option to turn on UCN support, which we always have on now
in C99 and C++ modes.

Additionally, mark the -fno-extended-identifiers option as unsupported,
since we don't support disabling UCNs in C99 and C++ modes.

PR11538

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174530 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c706c8e440abf61910c042380e19c67932998395 05-Feb-2013 Eric Christopher <echristo@gmail.com> Driver and option support for -gsplit-dwarf. This is a part of
the DWARF5 split dwarf proposal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174349 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
C1Options.td
ptions.td
3c6aaeb26202b41173dd9ea982833fe975147d80 01-Feb-2013 Hal Finkel <hfinkel@anl.gov> Add -mqpx and -mno-qpx feature flags to toggle use of the PPC QPX vector instruction set

I've renamed the altivec test to ppc-features (because now there is more than one feature to test).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174204 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
75dbc717c21a662b7836ed34cc4e7da7b8fa33c0 01-Feb-2013 Chad Rosier <mcrosier@apple.com> [driver] Don't try to generate diagnostic information for dsymutil crashes.
Part of rdar://13134273


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174203 91177308-0d34-0410-b5e6-96231b3b80d8
ool.h
199402b9e081dedc28e19ab6e727470b34f2f64d 01-Feb-2013 Bill Schmidt <wschmidt@linux.vnet.ibm.com> Enable -fno-altivec, -mno-altivec for PowerPC.

Introduces these negation forms explicitly and uses them to control a new
"altivec" target feature for PowerPC. This allows avoiding generating
Altivec instructions on processors that support Altivec.

The new test case verifies that the Altivec "lvx" instruction is not
used when -fno-altivec is present on the command line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174140 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ac3a3e7a402cd349dd2b7d70cd92c5fe702ae831 30-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Make shallow mode more shallow.

Redefine the shallow mode to inline all functions for which we have a
definite definition (ipa=inlining). However, only inline functions that
are up to 4 basic blocks large and cut the max exploded nodes generated
per top level function in half.

This makes shallow faster and allows us to keep inlining small
functions. For example, we would keep inlining wrapper functions and
constructors/destructors.

With the new shallow, it takes 104s to analyze sqlite3, whereas
the deep mode is 658s and previous shallow is 209s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173958 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
6bbe1442a5f3f5f761582a9005e9edf1d49c4da2 30-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Use analyzer config for max-inlinable-size option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173957 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ce32890df08387b50a960f785da79ac5582b7f74 30-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Remove further references to analyzer-ipa.

Thanks Jordan!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173955 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
78d85b1c5830a881c0a20a1b3fea99ee73149590 30-Jan-2013 Chad Rosier <mcrosier@apple.com> [ubsan] Implement the -fcatch-undefined-behavior flag using a trapping
implementation; this is much more inline with the original implementation
(i.e., pre-ubsan) and does not require run-time library support.

The trapping implementation can be invoked using either '-fcatch-undefined-behavior'
or '-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error', with the latter
being preferred. Eventually, the -fcatch-undefined-behavior' flag will be removed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173848 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a16355c31878403443f99077cc8df8318457faf5 29-Jan-2013 Chad Rosier <mcrosier@apple.com> [driver] Refactor the driver so that a failing commands doesn't prevent
subsequent commands from being executed.

The diagnostics generation isn't designed for this use case, so add a note to
fix this in the very near future. For now, just generated the diagnostics for
the first failing command.
Part of rdar://12984531

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173825 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
river.h
20c6f2eae500242d3aef5daaa55d440a0786a1fd 28-Jan-2013 Douglas Gregor <dgregor@apple.com> Enable the global module index by default. Introduce the
-fno-modules-global-index -cc1 option to allow one to disable the
index for performance testing purposes, but with a 10% win in
-fsyntax-only time, there is no reason a user would do this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173707 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f575d6e7c3b887ea4c5394d2c7e322c7a929a57e 25-Jan-2013 Douglas Gregor <dgregor@apple.com> Rename the -cc1 option "-generate-module-index" to
"-fmodules-global-index" and expand its behavior to include both the
use and generation of the global module index.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173404 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
9d718635fa805674aaba5d938f3dc6b35b8632ba 24-Jan-2013 Chad Rosier <mcrosier@apple.com> [driver] Associate a JobAction with each result file. This enables the driver
to delete result files for only those commands that fail.
Part of rdar://12984531

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173361 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
til.h
a6b00fc97669aa25d89ae9f202b05dfadfd0e324 23-Jan-2013 Douglas Gregor <dgregor@apple.com> Implement the writer side of the global module index.

The global module index is a "global" index for all of the module
files within a particular subdirectory in the module cache, which
keeps track of all of the "interesting" identifiers and selectors
known in each of the module files. One can perform a fast lookup in
the index to determine which module files will have more information
about entities with a particular name/selector. This information can
help eliminate redundant lookups into module files (a serious
performance problem) and help with creating auto-import/auto-include
Fix-Its.

The global module index is created or updated at the end of a
translation unit that has triggered a (re)build of a module by
scraping all of the .pcm files out of the module cache subdirectory,
so it catches everything. As with module rebuilds, we use the file
system's atomicity to synchronize.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173301 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
b2e2157f905b0b6e27f1d3f5e1f38778c6731813 22-Jan-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Remove the -fenable-experimental-ms-inline-asm flag. MS-style
inline assembly can be enable with -fasm-blocks or -fms-extensions alone.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173186 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
4bdc60434c79126b75aee2bb391275f3bb746364 20-Jan-2013 Alexey Samsonov <samsonov@google.com> Add top-level Clang flag -f(no-)sanitize-address-zero-base-shadow that makes AddressSanitizer use bottom of the address space for the shadow memory. On Linux it can be used with -fPIE/-pie to improve performance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172974 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d47afb96a3f988e6d21a92fe4dfe875ab227c7c0 20-Jan-2013 Sean Silva <silvas@purdue.edu> Nuke SetUpBuildDumpLog.

Also, it was the only reason that `argc` and `argv` were being passed
into createDiagnostics, so remove those parameters and clean up callers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172945 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
0234179282d59e6dfccc8b2da72a9a71bf5b6ac3 17-Jan-2013 Kevin Enderby <enderby@apple.com> We want the dwarf AT_producer for assembly source files to match clang's
AT_producer. Which includes clang's version information so we can tell
which version of the compiler was used.

This is second of the two steps to allow us to do this. The first was a
change to llvm-mc with revision 172630 to provide a method to set the
AT_producer string. This second step has the clang driver passing the value
of getClangFullVersion() via the new flag -dwarf-debug-producer when invoking
the integrated assembler on assembly source files. Then using the new
setDwarfDebugProducer() method to set the AT_producer string.

rdar://12888242


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172758 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
f43b7214e812ddca74a6213608c69c960e067956 16-Jan-2013 Douglas Gregor <dgregor@apple.com> Add -fmodules-autolink/-fno-modules-autolink (defaults to on) so that
users can explicitly enable/disable modules autolinking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172592 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
50a70cd11801fd9a700d06e447095249c34c261f 15-Jan-2013 Douglas Gregor <dgregor@apple.com> Add -fopenmp -cc1 option and wire it up to define _OPENMP, from Alexey Bataev!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172509 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
cfa88f893915ceb8ae4ce2f17c46c24a4d67502f 12-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove useless 'llvm::' qualifier from names like StringRef and others that are
brought into 'clang' namespace by clang/Basic/LLVM.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172323 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
2d382d149b442b928fd3fb8edcc8d82ea9325872 30-Dec-2012 Will Dietz <wdietz2@illinois.edu> [ubsan] Recover by default, use -fno-sanitize-recover to disable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171264 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
34ef11be9d09ebf916ab02a521e37be6e9e102d3 24-Dec-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Support -fsanitize-memory-track-origins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171020 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
27e2b983beb8b5a29869639637327725623069a8 18-Dec-2012 Eric Christopher <echristo@gmail.com> Add support for passing the main file name down to the assembler
for location information.

Part of PR14624

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170391 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
d566df67bed6381f6e859bbd21fd43ff89277cc0 17-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Fix PR14625 by teaching the driver to detect PWD for assembly files.

This also requires adding support to -cc1as for passing the detecting
PWD down through LLVM's debug info (which in turn required the LLVM
change in r170371).

The test case is weak (we only test the driver behavior) because there
is currently to infrastructure for running cc1as in the test suite. So
those four lines are untested (much like all other lines in that file),
but we have a test for the same pattern using llvm-mc in the LLVM
repository.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170373 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
443c999c967d555f6942834b0924c60226b3e6f2 11-Dec-2012 Hal Finkel <hfinkel@anl.gov> Add -fslp-vectorize to enable bb-vectorize

Add -fslp-vectorize (with -ftree-slp-vectorize as an alias for gcc compatibility)
to provide a way to enable the basic-block vectorization pass. This uses the same
acronym as gcc, superword-level parallelism (SLP), also common in the literature,
to refer to basic-block vectorization.

Nadav suggested this as a follow-up to the adding of -fvectorize.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169909 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
10b5fa283359bd423f8624c4dda11899bcc8ca9c 11-Dec-2012 Chad Rosier <mcrosier@apple.com> [driver] Add the -ftree-vectorize flag as a alias of -fvectorize to maintain
compatibility with gcc.
rdar://12839978

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169888 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c04d0934dfc78038ec1c073d9215750bd6a39c76 11-Dec-2012 Chad Rosier <mcrosier@apple.com> [driver] Add the -fvectorize flag to enable the loop vectorization passes.
rdar://12839978

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169885 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
33c95f1178999ea06837769f90be8d7b8d57bb4d 06-Dec-2012 Matthew Curtis <mcurtis@codeaurora.org> Hexagon TC: Add/improve support for small data
threshold, pic, pie



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169517 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
5fdf350e39c6e260602dbbd709101a9bb55e75f1 06-Dec-2012 Matthew Curtis <mcurtis@codeaurora.org> Hexagon TC: Reimplement Link::ConstructJob to call
linker directly

Rather than calling gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169512 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
15490fd42d7d8dca2f9b5b3a9dc074892ca1acd7 05-Dec-2012 Chad Rosier <mcrosier@apple.com> [driver, ms-inline asm] MS-Style inline assembly is controlled by the
-fasm-blocks flag, not the -fms-extensions flag.
rdar://12808010

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169422 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
30a2e16f6c27f888dd11eba6bbbae1e980078fcb 04-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort #include lines for all files under include/...

This is a simpler sort, entirely automatic with the help of
llvm/utils/sort_includes.py -- no manual edits here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169238 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
river.h
ob.h
ption.h
oolChain.h
91ecfa6af51836d3ccc90beddab1193b0c060739 03-Dec-2012 Alexey Samsonov <samsonov@google.com> Add Clang flags -fsanitize-blacklist and -fno-sanitize-blacklist. Make this flag usable for ASan. Blacklisting can be used to disable sanitizer checks for particular file/function/object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169144 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ad95481b2769ad61f23afc5e2c31f11c66090657 02-Dec-2012 Will Dietz <wdietz2@illinois.edu> [ubsan] Add flag to enable recovery from checks when possible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169114 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
bda07ace55e40bd1a620051156fa9b13ad3936aa 01-Dec-2012 Simon Atanasyan <satanasyan@mips.com> [MIPS] Add -mxgot/-mno-xgot command line options
to enable/disable support of GOT larger than 64k.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169098 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
17c874a944090a74aa890d7b5ef361be6e4a0184 27-Nov-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove some dead code. CLANG_IS_PRODUCTION is now just a build flag and
is not used in any #ifdef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168703 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
a6b2581f9595fb803fe7e2ef1d9f25e75b26d2fb 22-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Fix the '-fuse-init-array' option to actually be an option.

Previously, this flag to CC1 was never exposed at the clang driver
layer, and if you happened to enable it (by being on Android or GCC 4.7
platform), you couldn't *disable* it, because there was no 'no' variant.
The whole thing was confusingly implemented.

Now, the target-specific flag processing gets the driver arg list, and
we use standard hasFlag with a default based on the GCC version and/or
Android platform. The user can still pass the 'no-' variant to forcibly
disable the flag, or pass the positive variant to clang itself to enable
the flag.

The test has also been substantially cleaned up and extended to cover
these use cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168473 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
oolChain.h
7ce816a77dc79f71950e9e96185e3523ee08994b 19-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Completely re-work how the Clang driver interprets PIC and PIE options.

There were numerous issues here that were all entangled, and so I've
tried to do a general simplification of the logic.
1) The logic was mimicing actual GCC bugs, rather than "features". These
have been fixed in trunk GCC, and this fixes Clang as well. Notably,
the logic was always intended to be last-match-wins like any other
flag.
2) The logic for handling '-mdynamic-no-pic' was preposterously unclear.
It also allowed the use of this flag on non-Darwin platforms where it
has no actual meaning. Now this option is handled directly based on
tests of how llvm-gcc behaves, and it is only supported on Darwin.
3) The APIs for the Driver's ToolChains had the implementation ugliness
of dynamic-no-pic leaking through them. They also had the
implementation details of the LLVM relocation model flag names
leaking through.
4) The actual results of passing these flags was incorrect on Darwin in
many cases. For example, Darwin *always* uses PIC level 2 if it uses
in PIC level, and Darwin *always* uses PIC on 64-bit regardless of
the flags specified, including -fPIE. Darwin never compiles in PIE
mode, but it can *link* in PIE mode.
5) Also, PIC was not always being enabled even when PIE was. This isn't
a supported mode at all and may have caused some fallout in builds
with complex PIC and PIE interactions.

The result is (I hope) cleaner and clearer for readers. I've also left
comments and tests about some of the truly strage behavior that is
observed on Darwin platforms. We have no real testing of Windows
platforms and PIC, but I don't have the tools handy to figure that out.
Hopefully others can beef up our testing here.

Unfortunately, I can't test this for every platform. =/ If folks have
dependencies on these flags that aren't covered by tests, they may
break. I've audited and ensured that all the changes in behavior of the
existing tests are intentional and good. In particular I've tried to
make sure the Darwin behavior (which is more suprising than the Linux
behavior) also matches that of 'gcc' on my mac.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168297 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
72511f3adcc89a29c02e36283536beadf9ef555e 19-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Remove a no-op 'const' from a by-value return type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168296 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
7db16db1ad37a77d45de26bd26725a296025981a 17-Nov-2012 Chad Rosier <mcrosier@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168222 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
3d145f660a23d5bdabdd1ead83c51f3df1489b09 15-Nov-2012 Fariborz Jahanian <fjahanian@apple.com> block extended signatur option. Change previous option
to a cc1 -fencode-extended-block-signature and pass it
to cc1 and recognize this option to produce extended block
type signature. // rdar://12109031


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168063 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
oolChain.h
5bab9ae87c41148ee2f92d312945c1e9303222e8 15-Nov-2012 Nick Lewycky <nicholas@mxc.ca> Revert r167567, restoring the ability of clang to run gcc in cases where it
can't handle the input file type. This resulted in PR14338.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168024 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ypes.h
62221b17c90457df9ca0ff20bb54d634e8951def 15-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add -cc1 option -fno-diagnostics-use-presumed-location, a handy mode for
working with preprocessed testcases. This causes source locations in
diagnostics to point at the spelling location instead of the presumed location,
while still keeping the semantic effects of the line directives (entering and
leaving system-header mode, primarily).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168004 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
06cffc0511ba76d979fad9ef6944e685936b62f0 15-Nov-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C blocks: under cc1 flag -encode-extended-block-signature,
generate expanded signature encoding to include types as we
already do this for protocol method lists.
// rdar://12109031


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167997 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6f0b00a2e286adc813beb0a55ce3ffcda10cce77 14-Nov-2012 Matt Beaumont-Gay <matthewbg@google.com> Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167891 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
879c92c87549e1c37276a29e7d610523c9659aab 11-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix a typo which Matt pointed out.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167679 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
463eb89d5e36b05d74c14b937384076d745b3b84 10-Nov-2012 Michael Liao <michael.liao@intel.com> Add clang support of RTM from TSX

- New options '-mrtm'/'-mno-rtm' are added to enable/disable RTM feature
- Builtin macro '__RTM__' is defined if RTM feature is enabled
- RTM intrinsic header is added and introduces 3 new intrinsics, namely
'_xbegin', '_xend', and '_xabort'.
- 3 new builtins are added to keep compatible with gcc, namely
'__builtin_ia32_xbegin', '__builtin_ia32_xend', and '__builtin_ia32_xabort'.
- Test cases for pre-defined macro and new intrinsic codegen are added.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167665 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
e59188b0bd88ea488f2ec2f10a4ad3c4316adbce 10-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> -momit-leaf-frame-pointer is a -m option, not a -f option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167664 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
da2d2c724da8a495533187c3c8d385004a7ec3d0 10-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Document -W in clang --help. Also make the help text more consistent (don't end descriptions in periods, use | to separate possible values).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167645 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
028eb657ec50ac7c629e67660ee31ce27b8c5829 10-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Don't include the help for -mips* in clang --help. These are just aliases for other options, and not common enough to be worth including here.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167644 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
0f3edc5d4644d139501ece9e8c9926f64902ae52 10-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> -Wlarge-by-value-copy may be awesome, but it really shouldn't be the one and
only -W flag which clang --help lists.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167643 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
762d15d5dccf818bd88c80e957390e31e41b9277 09-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove --help text for deprecated sanitizer options, add --help text for -fsanitize=.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167639 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f1eaab122932a5c61b13ce9ae6d590e24558eb84 09-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR14303: Add a NoDriverOption flag to those options which are not accepted by
the driver (the options defined in CC1Options.td) and exclude their help from
"clang --help".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167638 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptParser.td
ptTable.h
ption.h
7e293276281bd5bf8526c064d298082b08f0bd8b 09-Nov-2012 Chad Rosier <mcrosier@apple.com> [driver] Add a -mstrict-align compiler option for ARM targets.
rdar://12340498

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167619 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d2a527eae6df377b326e8d764782bc34f1e64189 08-Nov-2012 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: The -arch argument values aren't exactly the arch names from a
triple.

- Translate the special case of powerpc to its expected -arch name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167571 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
85b7f7ddf2f09778ec303f5a39f9e67e3aae1115 08-Nov-2012 Bob Wilson <bob.wilson@apple.com> Rip out a bunch of code for invoking gcc from clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167567 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ypes.h
64c4f29ff3b98d412e0235504364096e997b04bb 08-Nov-2012 Bob Wilson <bob.wilson@apple.com> Remove code to fall back to llvm-gcc for i386 kexts.

More cleanups to follow in separate commits....

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167566 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
d6396a681c9acbe56bc41bbc2bed2db45755bcd7 05-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Use the individual -fsanitize=<...> arguments to control which of the UBSan
checks to enable. Remove frontend support for -fcatch-undefined-behavior,
-faddress-sanitizer and -fthread-sanitizer now that they don't do anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167413 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c4dabadb51475e76b606024f144e7cf93b0bad00 05-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add -fsanitize=<sanitizers> argument to driver and frontend, and add
-fno-sanitize=<sanitizers> argument to driver. These allow ASan, TSan, and the
various UBSan checks to be enabled and disabled separately. Right now, the
different modes can't be combined, but the intention is that combining UBSan
and the other sanitizers will be permitted in the near future.

Currently, the UBSan checks will all be enabled if any of them is; that will be
fixed by the next patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167411 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1d489cf4a04ad0ad8ac2696e4eed0995f3a67288 01-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove first argument from Arg::getValue; it's been unused since r105760.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167211 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
66fb02897b5c2e66b80e8acd9c8a5811dd02d6ee 31-Oct-2012 Chad Rosier <mcrosier@apple.com> [driver] Remove the -ccc-host-triple alias. This has been replaced by the
-target option.
rdar://10692880

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167158 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c91b41a64ccce6d1097d85c8c7354ea63a5566a0 31-Oct-2012 Chad Rosier <mcrosier@apple.com> [driver] Completely rework how superfluous options are stripped out of the crash
diagnostics script.

This addresses the FIXME pertaining to quoted arguments. We also delineate
between those flags that have an argument (e.g., -D macro, -MF file) and
those that do not (e.g., -M, -MM, -MG). Finally, we add the -dwarf-debug-flags
to the list of flags to be removed.
rdar://12329974

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167152 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
8c610b075cb2f9dae1178ab881a0aa9f91b9bcd5 31-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove the -ccc-no-clang option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167093 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.td
e6c3458723d954d1ba9b73a2d93d2e2d67dd3510 31-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove ccc-no-clang-cpp, which is also dead now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167062 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.td
d2d4d68a58898c5d13d66d45a5d9440fc1d790fe 30-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> In the past "production" clang builds would not be used for c++, and
we had the -ccc-clang-cxx and -ccc-no-clang-cxx options to force them
on or off for testing.

Clang c++ support is now production quality and these options are dead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166986 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.td
2902829d27ca3d3bb24d55dd99e8a218cc3a415f 30-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove a bit of dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166983 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.h
286d6236850ed3710822e659afdfdf08a315716b 27-Oct-2012 Mahesha S <mahesha.llvm@gmail.com> Reverted back the changes made in 166868 and in 166869

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166871 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f3b52315e2ee52bdff9cba31b037c7e6b3adfadc 27-Oct-2012 Mahesha S <mahesha.llvm@gmail.com> -------------------------------------------------
Feature:
OpenMP support in CLANG:

Sub-Feature:
Support for option -fopenmp

Files Changed/Added:
* include/clang/Driver/Options.td (C)
* include/clang/Basic/LangOptions.def (C)
* lib/Driver/Tools.cpp (C)
* lib/Frontend/CompilerInvocation.cpp (C)

Test Cases Changed/Added:
* test/Driver/clang_fopenmp_opt.c (A)
-------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166868 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
4d9e497a2b1eab3b1214848216050c64fc3acfd6 24-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Replace -analyzer-no-eagerly-trim-egraph with graph-trim-interval.

After every 1000 CFGElements processed, the ExplodedGraph trims out nodes
that satisfy a number of criteria for being "boring" (single predecessor,
single successor, and more). Rather than controlling this with a cc1 option,
which can only disable this behavior, we now have an analyzer-config option,
'graph-trim-interval', which can change this interval from 1000 to something
else. Setting the value to 0 disables reclamation.

The next commit relies on this behavior to actually test anything.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166528 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
bb531706602048716a6c36f1ea59f277be9f6753 23-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Fix two options I mistransformed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166458 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
c635710bcbb9598acd5a14647ba7ca28bee89a68 23-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Add prefixes to options.

Each option has a set of prefixes. When matching an argument such as
-funroll-loops. First the leading - is removed as it is a prefix. Then
a lower_bound search for "funroll-loops" is done against the option table by
option name. From there each option prefix + option name combination is tested
against the argument.

This allows us to support Microsoft style options where both / and - are valid
prefixes. It also simplifies the cases we already have where options come in
both - and -- forms. Almost every option for gnu-ld happens to have this form.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166444 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
C1AsOptions.h
C1AsOptions.td
C1Options.td
ptParser.td
ptTable.h
ption.h
ptions.h
ptions.td
91e06dab9335ed6b4474a74353549c708cf3d936 20-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Make Option non clang specific.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166348 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
e4151c5d1b48efac740b89cc16e5054850cbdecb 20-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] make Option a value type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166347 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
ptTable.h
ption.h
f38523388174760dcbad810ef60d8504d7df6b4c 19-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r166223 and the subsequent commits that depend on it, r166230 & r166235.

This seems to have introduced assertion hit when building compiler-rt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166245 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
ptTable.h
ption.h
da3301eec823fe770bfa49a1cb19649506caa698 18-Oct-2012 Eric Christopher <echristo@gmail.com> Add a new option for and disable column number information as there
are no known current users of column info. Robustify and fix up
a few tests in the process. Reduces the size of debug information
by a small amount.

Part of PR14106

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166236 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
5b341da0eb6478c22b9587f03572a249ebbd00dc 18-Oct-2012 Eric Christopher <echristo@gmail.com> Remove trailing comma.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166235 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
d2deb91b02ae1d810719e4a5a63dc404f362575a 18-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Make Option non clang specific.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166230 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
97b8fd941475ec233b329a21a4ec94698f8a4b5b 18-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] make Option a value type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166223 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
ptTable.h
ption.h
b43d87b0646aa04951056c7e0d1ab9a58eb09f66 12-Oct-2012 Sean Silva <silvas@purdue.edu> Remove pointless classof()'s.

Updates to llvm/Support/Casting.h have rendered these classof()'s
irrelevant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165770 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
rg.h
ob.h
146e5a4a787a2ebfe89a6b74e7c22d850bf1c858 11-Oct-2012 Manman Ren <mren@apple.com> X86: add F16C support in Clang

Support the following intrinsics:
_mm_cvtph_ps, _mm256_cvtph_ps, _mm_cvtps_ph, _mm256_cvtps_ph

rdar://12407875


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165685 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
bc0a925caac5e1a8201af4e8500da0bc4bd4d955 11-Oct-2012 Eric Christopher <echristo@gmail.com> Revert "[Options] make Option a value type."

Author: Michael J. Spencer <bigcheesegs@gmail.com>
Date: Wed Oct 10 21:48:26 2012 +0000

[Options] make Option a value type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165663 91177308-0d34-0410-b5e6-96231b3b80d8

This reverts commit 0464fd5e4ce2193e786e5adcab6b828f9366dae3.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165667 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
ptTable.h
ption.h
0464fd5e4ce2193e786e5adcab6b828f9366dae3 10-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] make Option a value type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165663 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
ptTable.h
ption.h
238b6a9d33bf87e23f86866885394cd453a06495 09-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> The clang driver has a fairly fancy support for executing gcc instead of
clang itself. This dates back to clang's early days and while it looks like
some of it is still used (for kext for example), other parts are probably dead.

Remove the -ccc-clang-archs option and associated code. I don't think there
is any remaining setup where clang doesn't support an architecture but it can
expect an working gcc cross compiler to be available.

A nice side effect is that tests no longer need to differentiate architectures
that are included in production builds of clang and those that are not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165545 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.td
e20e508aecf413f84b0dc4928cbf4bb5ce6c5bdc 04-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Driver: Link crtfastmath.o if it's available and -ffast-math is specified.

crtfastmath.o contains routines to set the floating point flags to a faster,
unsafe mode. Linking it in speeds up code dealing with denormals significantly
(PR14024).

For now this is only enabled on linux where I can test it and crtfastmath.o is
widely available. We may want to provide a similar file with compiler-rt
eventually and/or enable it on other platforms too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165240 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
9b7dcdb53cee4234c48bb4ceeef39536419945cf 03-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Store the owning OptTable in Option so it can construct Group and Alias.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165150 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
fc44e88cbdf013d285f2e4e3962fb80dcad56770 03-Oct-2012 Simon Atanasyan <satanasyan@mips.com> Remove useless parameter "WantFile" from Driver::GetProgramPath().
This parameter is useless because nowhere used explicitly and always
gets its default value - "false".

The patch reviewed by Rafael Espindola.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165149 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
oolChain.h
663117ab56390a18f4157ca84c9a92e5c6cad054 26-Sep-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Store the option ID in OptTable::Info.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164644 91177308-0d34-0410-b5e6-96231b3b80d8
ptTable.h
ption.h
80ecf5e66738a7058da58489ca55200212f3d42c 26-Sep-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for the -fno-fast-math option.
rdar://12299433

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164638 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1370d37f60a173b2acf0afce92db063f06b30b2d 25-Sep-2012 Douglas Gregor <dgregor@apple.com> -iframework should allow separate arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164607 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
03a86385d6628398e1671db1d1970eb83ef0f8b3 23-Sep-2012 Rafael Espindola <rafael.espindola@gmail.com> Implement ToolChain::IsUnwindTablesDefault to reduce code duplication a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164473 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
8e1c598310d5cd75700cf800cb333b985ce05420 21-Sep-2012 Simon Atanasyan <satanasyan@mips.com> Add four new command line options for MIPS CPU selection:
-mips32, -mips32r2, -mips64, -mips64r2.

The patch reviewed by Eric Christopher.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164410 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
72d54e1ee7fdd6d309d34fae59844ab7b1d5b58e 21-Sep-2012 Chad Rosier <mcrosier@apple.com> Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164390 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f56faa01936b9cf909623d7f06e3c2569ca4a78e 15-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163983 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
1824d54df85a462ada812dadda18130f951d40f3 13-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix Doxygen misuse: refer to parameter names in paragraphs correctly (\arg is
not what most people want -- it starts a new paragraph).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163793 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ompilation.h
river.h
ool.h
oolChain.h
127ff2ea6440c3da4b47f9c8b3b190254a97e7b5 13-Sep-2012 Ted Kremenek <kremenek@apple.com> Conditionally parse documentation comments in system headers by
passing -fretain-comments-from-system-headers. By default, the
compiler no longer parses such documentation comments, as they
can result in a noticeable compile time/PCH slowdown.

Fixes <rdar://problem/11860820>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163778 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
5a1ffe98b04120846a15f7105905b5f363b08635 06-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Always include destructors in the analysis CFG.

While destructors will continue to not be inlined (unless the analyzer
config option 'c++-inlining' is set to 'destructors'), leaving them out
of the CFG is an incomplete model of the behavior of an object, and
can cause false positive warnings (like PR13751, now working).

Destructors for temporaries are still not on by default, since
(a) we haven't actually checked this code to be sure it's fully correct
(in particular, we probably need to be very careful with regard to
lifetime-extension when a temporary is bound to a reference,
C++11 [class.temporary]p5), and
(b) ExprEngine doesn't actually do anything when it sees a temporary
destructor in the CFG -- not even invalidate the object region.

To enable temporary destructors, set the 'cfg-temporary-dtors' analyzer
config option to '1'. The old -cfg-add-implicit-dtors cc1 option, which
controlled all implicit destructors, has been removed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163264 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
5b86ffd219bdee7720217d5755b772726668b242 05-Sep-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Allow disabling of wchar_t type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163221 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
5d9cb1b9880f3cc5a96950644da6bf9c2b76149f 04-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Revert r163076 per chandlerc's request.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163146 91177308-0d34-0410-b5e6-96231b3b80d8
til.h
601944aeaf1369f92b90e5c279c22f557eb87cdb 02-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Refactored the Windows headers location lookup code. Expose it so standalone tools can have access to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163076 91177308-0d34-0410-b5e6-96231b3b80d8
til.h
318cc3c07eaca04d319be841e9e3bac35d1ff9f5 30-Aug-2012 Ted Kremenek <kremenek@apple.com> Change -analyzer-config to use '=' as the key-value separator, and only
support the '-analyzer-config key=val' variant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162891 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
7b73e0832b20af1f43601a3d19e76d02d9f4dce5 29-Aug-2012 Ted Kremenek <kremenek@apple.com> Add new -cc1 driver option -analyzer-config, which allows one to specify
a comma separated collection of key:value pairs (which are strings). This
allows a general way to provide analyzer configuration data from the command line.

No clients yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162827 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
04a42791609ea958bcb13c84e97118f1a3007eb9 21-Aug-2012 Michael J. Spencer <bigcheesegs@gmail.com> Reduce the amount of state in the Option class by relying on the data from OptTable::Info.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162299 91177308-0d34-0410-b5e6-96231b3b80d8
ptTable.h
ption.h
a7afeb040416c0eaac19b92db914913a788044f5 21-Aug-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for the --param ssp-buffer-size= driver option.
PR9673


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162285 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
0a7dd788dbef975f35f273c7ab913f480f7edd60 21-Aug-2012 John McCall <rjmccall@apple.com> Screw around with ObjCRuntime some more, changing the
diagnostics for bad deployment targets and adding a few
more predicates. Includes a patch by Jonathan Schleifer
to enable ARC for ObjFW.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162252 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
4327557dfafe16c031691ed061f52a708e4c6b7a 20-Aug-2012 Michael J. Spencer <bigcheesegs@gmail.com> Make Option non virtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162231 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
e1ce783708b65eaa832ffad03d239264046dd0eb 31-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Turn -cfg-add-initializers on by default, and remove the flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161060 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
171af64ef10ae816ed2a4f15f5d17aca1d71769f 31-Jul-2012 Alexander Kornienko <alexfh@google.com> Added -ast-list option to dump filterable AST decl node names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161040 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e34a052d642ba7830174b1a51787251d7f704f80 26-Jul-2012 Alexander Kornienko <alexfh@google.com> Added -ast-dump-filter option to clang -cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160784 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
d256f8673bf2499f57e0f40aab30ff243d576c17 21-Jul-2012 Chad Rosier <mcrosier@apple.com> Rename -fms-inline-asm to -fenable-experimental-ms-inline-asm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160590 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
0cfe9a1ceb8c4e60a9deb91003c04aba3ec9eade 20-Jul-2012 Chad Rosier <mcrosier@apple.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160574 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f925e0414d76d39d612d54d233e9fa2ee04b0a27 20-Jul-2012 Chad Rosier <mcrosier@apple.com> Add a new flag, -fms-inline-asm, that enables the output of MS-style inline
assembly.

By default, we don't emit IR for MS-style inline assembly (see r158833 as to
why). This is strictly for testing purposes and should not be enabled with the
expectation that things will work. This is a temporary flag and will be removed
once MS-style inline assembly is fully supported.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160573 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
b13291aa59c4c074e70f2d0181f9721e38b494d4 19-Jul-2012 Jordan Rose <jordan_rose@apple.com> Capitalize "Objective-C" and "C++" in user-facing contexts.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160516 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
455e72e7625a8f87c2c302d8d82baee5c111e094 19-Jul-2012 Bob Wilson <bob.wilson@apple.com> Define __FINITE_MATH_ONLY__ based on -ffast-math and -ffinite-math-only.

This macro was being unconditionally set to zero, preceded by a FIXME comment.
This fixes <rdar://problem/11845441>. Patch by Michael Gottesman!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160491 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
198871cc90375246d8692680467ff6e810edac36 12-Jul-2012 Tanya Lattner <tonic@nondot.org> Add OpenCL metadata for kernel arg names. This output is controlled via a flag as noted in the OpenCL Spec.
Includes a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160092 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6994bb61eff86b2db53253ec74b24c4142fc080e 08-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Add missing options for -m(no-){pclmul,fma,xop}.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159913 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
84f30809a2ce02183609a738aaa116d832e61da3 07-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Wire up -mrdrnd for X86.

For some reason GCC decided to call the feature rdrnd instead of rdrand,
which requires translating it for LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159897 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
e8cf7d143446c45568bb7c9a6fbd8f32ca6ae93e 07-Jul-2012 Ted Kremenek <kremenek@apple.com> Re-apply r159875 with fixes.

- Split pedantic driver flag test into separate test file, and XFAIL on cygwin,mingw32
- Fix bug in tablegen logic where a missing '{' caused errors to be included in -Wpedantic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159892 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
3b4c53259603ba389373362f476648b2b1ab9eca 07-Jul-2012 NAKAMURA Takumi <geek4civic@gmail.com> Revert rr159875, "Implement -Wpedantic and --no-pedantic to complement -Weverything." It broke several builds.

I suspect FileCheck might match assertion failure, even if clang/test/Misc/warning-flags.c passed the test.

> 0. Program arguments: bin/./clang -### -pedantic -Wpedantic clang/test/Driver/warning-options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159886 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
25570a94ca6b706d19812b0f8df25a63ec3445c8 07-Jul-2012 Ted Kremenek <kremenek@apple.com> Implement -Wpedantic and --no-pedantic to complement -Weverything.

This patch introduces some magic in tablegen to create a "Pedantic" diagnostic
group which automagically includes all warnings that are extensions. This
allows a user to suppress specific warnings traditionally under -pedantic used
an ordinary warning flag. This also allows users to use #pragma to silence
specific -pedantic warnings, or promote them to errors, within blocks of text
(just like any other warning).

-Wpedantic is NOT an alias for -pedantic. Instead, it provides another way
to (a) activate -pedantic warnings and (b) disable them. Where they differ
is that -pedantic changes the behavior of the preprocessor slightly, whereas
-Wpedantic does not (it just turns on the warnings).

The magic in the tablegen diagnostic emitter has to do with computing the minimal
set of diagnostic groups and diagnostics that should go into -Wpedantic, as those
diagnostics that already members of groups that themselves are (transitively) members
of -Wpedantic do not need to be included in the Pedantic group directly. I went
back and forth on whether or not to magically generate this group, and the invariant
was that we always wanted extension warnings to be included in -Wpedantic "some how",
but the bookkeeping would be very onerous to manage by hand.

-no-pedantic (and --no-pedantic) is included for completeness, and matches many of the
same kind of flags the compiler already supports. It does what it says: cancels out
-pedantic. One discrepancy is that if one specifies --no-pedantic and -Weverything or
-Wpedantic the pedantic warnings are still enabled (essentially the -W flags win). We
can debate the correct behavior here.

Along the way, this patch nukes some code in TextDiagnosticPrinter.cpp and CXStoredDiagnostic.cpp
that determine whether to include the "-pedantic" flag in the warning output. This is
no longer needed, as all extensions now have a -W flag.

This patch also significantly reduces the number of warnings not under flags from 229
to 158 (all extension warnings). That's a 31% reduction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159875 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c9686716d2ceb5518178dca98670ec34c472a1be 06-Jul-2012 Lang Hames <lhames@gmail.com> Add -ffp-contract = { fast | on | off } command line option support.

This flag sets the 'fp-contract' mode, which controls the formation of fused
floating point operations. Available modes are:

- Fast: Form fused operations anywhere.
- On: Form fused operations where allowed by FP_CONTRACT. This is the default
mode.
- Off: Don't form fused operations (in future this may be relaxed to forming
fused operations where it can be proved that the result won't be
affected).

Currently clang doesn't support the FP_CONTRACT pragma, so the 'On' and 'Off'
modes are equivalent.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159794 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d797a85866fd5ce62850dd145396b451364032a3 05-Jul-2012 Simon Atanasyan <satanasyan@mips.com> MIPS: Add -mdsp/-mno-dsp and -mdspr2/-mno-dspr2 command line options support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159769 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
0b273efa37a38deab77dadf72540c9c07c63f8cf 05-Jul-2012 Simon Atanasyan <satanasyan@mips.com> MIPS: Add -mips16 / -mno-mips16 command line support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159747 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
2c7886ddec1e2cee68daee9866637d2e02f434ef 04-Jul-2012 David Chisnall <csdavec@swan.ac.uk> Hoist the logic for selecting the Objective-C dispatch method into the runtime
class, from the target. No functionality change, just less duplicated logic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159710 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
109e6de8db5614fa327754a279ca4f0be04dea3f 03-Jul-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Added file header documentation with \file and \brief;
* Cleaned up existing doc comments and added/annotated \brief summaries.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159629 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
d99ef536b241071b6f4c01db6525dc03242ac30b 02-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Add a new libclang completion API to get brief documentation comment that is
attached to a declaration in the completion string.

Since extracting comments isn't free, a new code completion option is
introduced.

A new code completion option that enables including brief comments
into CodeCompletionString should be a, err, code completion option.
But because ASTUnit caches global declarations during parsing before
even completion consumer is created, the option is duplicated as a
translation unit option (in both libclang and ASTUnit, like the option
to cache code completion results).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159539 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e75d9cfbf41a0ee9e456a665776f91fdd9773b36 30-Jun-2012 David Blaikie <dblaikie@gmail.com> Use -frewrite-includes for crash reports.

In future changes we should:
* use __builtin_trap rather than derefing 'random' volatile pointers.
* avoid dumping temporary files into /tmp when running tests, instead
preferring a location that is properly cleaned up by lit.

Review by Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159469 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
ypes.def
de981f3ff163bc9ec69e4c5e7316e94276412993 28-Jun-2012 Hans Wennborg <hans@hanshq.net> Add -ftls-model command-line flag.

This allows for setting the default TLS model. (PR9788)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159336 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
246b6aa6763de8c617d564ef33123a8f3293a80e 26-Jun-2012 Richard Trieu <rtrieu@google.com> Add template type diffing to Clang. This feature will provide a better
comparison between two templated types when they both appear in a diagnostic.
Type elision will remove indentical template arguments, which can be disabled
with -fno-elide-type. Cyan highlighting is applied to the differing types.

For more formatting, -fdiagnostic-show-template-tree will output the template
type as an indented text tree, with differences appearing inline. Template
tree works with or without type elision.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159216 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7ed4f663287b087bc566d29d9febdfdeb8dd2776 26-Jun-2012 Chad Rosier <mcrosier@apple.com> [driver] Make -serialize-diagnostics (one dash) and alias for
--serialize-diagnostics.
rdar://11734800


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159208 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7f3260764a3614e22dcf24d71c1155f14a9b4e6e 21-Jun-2012 Alexey Samsonov <samsonov@google.com> Improve support for -g options accepted by Clang:
1. Accept flags -g[0-3], -ggdb[0-3], -gdwarf-[2-4] and collapse them to simple -g (except -g0/-ggdb0).
2. Produce driver error on unsupported formats (-gcoff, -gstabs, -gvms) and options (-gtoggle).
3. Recognize and ignore flags -g[no-]strict-dwarf, -g[no-]record-gcc-switches.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158906 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
8ab6c24076444fc6bda9a28c1100ba106ddffaa6 20-Jun-2012 Ted Kremenek <kremenek@apple.com> Revert "Provide a -no-pedantic to cancel out -pedantic." This needs to be designed
a bit further. We may wish to just have -Wno flags to silence warnings, and not have a -no-pedantic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158796 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
260611a32535c851237926bfcf78869b13c07d5b 20-Jun-2012 John McCall <rjmccall@apple.com> Restructure how the driver communicates information about the
target Objective-C runtime down to the frontend: break this
down into a single target runtime kind and version, and compute
all the relevant information from that. This makes it
relatively painless to add support for new runtimes to the
compiler. Make the new -cc1 flag, -fobjc-runtime=blah-x.y.z,
available at the driver level as a better and more general
alternative to -fgnu-runtime and -fnext-runtime. This new
concept of an Objective-C runtime also encompasses what we
were previously separating out as the "Objective-C ABI", so
fragile vs. non-fragile runtimes are now really modelled as
different kinds of runtime, paving the way for better overall
differentiation.

As a sort of special case, continue to accept the -cc1 flag
-fobjc-runtime-has-weak, as a sop to PLCompatibilityWeak.

I won't go so far as to say "no functionality change", even
ignoring the new driver flag, but subtle changes in driver
semantics are almost certainly not intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158793 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
bjCRuntime.h
ptions.td
oolChain.h
8af669f2f1d92436fe6dc43144bb084a620e7516 19-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Add a -fuse-init-array option to cc1 and map to the UseInitArray target
option. On the driver, check if we are using libraries from gcc 4.7 or newer
and if so pass -fuse-init-array to the frontend.
The crtbegin*.o files in gcc 4.7 no longer call the constructors listed in
.ctors, so we have to use .init_array.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158694 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
oolChain.h
c4033f318260b21408c9925537fb748ef1f3b179 17-Jun-2012 Hal Finkel <hfinkel@anl.gov> For compatibility with gcc, accept -maltivec as an alias of -faltivec.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158613 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
86123c6ca98e602e48515ec74df940c597c88506 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Converted comments to use \brief to provide summaries;
* Fixed uses of \arg that should be \p;
* Fixed \param [in] [out] to \param [in,out];
* Made minor formatting fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158510 91177308-0d34-0410-b5e6-96231b3b80d8
ptTable.h
c1a88f27bea81b270c63329a87811f91c8e467fe 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: use \p ParameterName when referring to a parameter,
not \arg ParameterName (which should be used only when documenting that
parameter, not when referring to it from elsewhere).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158509 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.h
940152f726353e08e3bdcef6f85bc8aa73173597 14-Jun-2012 David Blaikie <dblaikie@gmail.com> Support -f[no-]rewrite-includes from the driver.

Review by Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158463 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
f1492f970c7c6eb85dc18f13fb864b185bed1d23 14-Jun-2012 David Blaikie <dblaikie@gmail.com> Support -frewrite-includes as an option while preprocessing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158460 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
60ad16b7e24cdb88c577c107b69da85458000858 14-Jun-2012 David Blaikie <dblaikie@gmail.com> Rename -rewrite-includes to -frewrite-includes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158458 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f122a138e39dbb29162abfa9a3d44091d8efa7af 13-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add -isystem-prefix and -ino-system-prefix arguments, which can be used to
override whether headers are system headers by checking for prefixes of the
header name specified in the #include directive.

This allows warnings to be disabled for third-party code which is found in
specific subdirectories of include paths.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158418 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
dc9327a8da640ecf7b15c5d5b726cd67a0e63284 13-Jun-2012 John McCall <rjmccall@apple.com> Provide a -no-pedantic to cancel out -pedantic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158416 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b8c5e6b9387393072301e973b166607957300785 06-Jun-2012 Jordan Rose <jordan_rose@apple.com> Fix Makefile: Options.td depends on CC1Options.td.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158105 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
8c0b3787e7ccc7978b42dfbb84da2b802c743a5d 06-Jun-2012 David Blaikie <dblaikie@gmail.com> Add a -rewrite-includes option, which is similar to -rewrite-macros, but only expands #include directives.

Patch contributed by Lubos Lunak (l.lunax@suse.cz).
Review by Matt Beaumont-Gay (matthewbg@google.com).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158093 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
48d798ce32447607144db70a484cdb99c1180663 02-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix typos found by http://github.com/lyda/misspell-check

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157886 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
003ab6682376a0e4544df295bddcf0d991275c40 29-May-2012 Simon Atanasyan <satanasyan@mips.com> Factor out the code retrieves the last PIC related argument from
the Clang::ConstructJob() to the new ArgList::getLastArg() routine
with eight argument. That simplifies reusing of this code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157633 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
d6277fb9e0353edffc0d6c8655a65542c08cf6f1 21-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [driver] When creating the compiler invocation out of command-line
arguments, force use of clang frontend for the driver.

Fixes rdar://11356765.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157205 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
a39238bda44ab45d53785eb23006a65483a4e139 17-May-2012 Chad Rosier <mcrosier@apple.com> Add -mno-implicit-float to the M group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157014 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
005af27c607536038864ff36d480b5ecd066a267 16-May-2012 Chad Rosier <mcrosier@apple.com> Rename the driver option to -mno-implicit-float, per Eli's suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156950 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
ee9ad5ce4840b3c95024948c89d00945ffdda9bb 16-May-2012 Chad Rosier <mcrosier@apple.com> [driver] Allow the driver to directly accept the -no-implicit-float option, so that the
generation of implicit floating point instructions can be disable for ARM.
rdar://11409142


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156942 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
5f9688b7c7fdeafdf530056d49f82d2ec6ca457f 10-May-2012 Sirish Pande <spande@codeaurora.org> Hexagon V5 FP support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156567 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b3198a841e7f356f171f1e11faff014b2deb1eb8 09-May-2012 Nuno Lopes <nunoplopes@sapo.pt> add -fbounds-checking option.
When enabled, clang generates bounds checks for array and pointers dereferences. Work to follow in LLVM's backend.

OK'ed by Chad; thanks for the review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156431 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
fd00eecad6fa5400cf37269d84361a0551d0e6d3 04-May-2012 Alexey Samsonov <samsonov@google.com> This patch adds a new Clang compiler flag "-gline-tables-only".
It reduces the amount of emitted debug information:
1) DIEs in .debug_info have types DW_TAG_compile_unit, DW_TAG_subprogram,
DW_TAG_inlined_subroutine (for opt builds) and DW_TAG_lexical_block only.
2) .debug_str contains only function names.
3) No debug data for types/namespaces/variables is emitted.
4) The data in .debug_line is enough to produce valid stack traces with
function names and line numbers.

Reviewed by Eric Christopher.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156160 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
769aa2d46fa5dc0bee5285c95a80ad8749cb79cf 02-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Driver: Turn the default value for -fmath-errno into a proper target hook and disable it by default on more platforms.

For now -fno-math-errno is the default on BSD-derived platforms (Darwin,
DragonFlyBSD, FreeBSD, NetBSD, OpenBSD). If the default is not right for
your platform, please yell. I only verified the result with the default
compilers on Darwin and FreeBSD.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155990 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
10601a36d1cb28d40ff8ef4febe07a01a156dfa8 01-May-2012 Douglas Gregor <dgregor@apple.com> Revert r155933

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155939 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
d53f6971a7c97c9a564c9a7b3b1dd773d120aac8 01-May-2012 Douglas Gregor <dgregor@apple.com> Fix CMake build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155933 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
bfd7a525bcf372004787cb641b8c1566b9e8aba5 01-May-2012 James Molloy <james.molloy@arm.com> Unify Options.td and CC1Options.td, in a first step towards unifying the serialization logic in Frontend and Driver.

Reviewed by Eric, Doug and Chandler, and here: http://llvm.org/reviews/r/7/



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155916 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.h
C1Options.td
MakeLists.txt
akefile
ptParser.td
ptTable.h
ption.h
ptions.td
e855b884799e3f651f59ef64911269eaf3df6e12 26-Apr-2012 Chad Rosier <mcrosier@apple.com> Remove the group from -fhonor_infinites/-fno_honor_infinites aliases. Aliases
with groups are unsupported.
rdar://11324283


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155637 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6603ff85d415c2aa72579f1a247012b75bfc2a19 23-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Revert r155363, due to the underlying patches in LLVM causing regression
test suite failures.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155371 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ac28eca18a9f0a343c78ba90b02dfe52302c1f19 23-Apr-2012 Sirish Pande <spande@codeaurora.org> Hexagon V5 (floating point) support in cfe.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155363 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
103f41d0e72a9e52a07e19cbde58c3afc8735098 18-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Revert some Hexagon builtin commits to match reverts done to LLVM in
r155047. See the LLVM log for the primary motivation:
http://llvm.org/viewvc/llvm-project?rev=155047&view=rev

Primary commit r154828:
- Several issues were raised in review, and fixed in subsequent
commits.
- Follow-up commits also reverted, and which should be folded into the
original before reposting:
- r154837: Re-add the 'undef BUILTIN' thing to fix the build.
- r154928: Fix build warnings, re-add (and correct) header and
license
- r154937: Typo fix.

Please resubmit this patch with the relevant LLVM resubmission.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155048 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7ac715fd3118362f14574c312b044d22e3afeee9 16-Apr-2012 Sirish Pande <spande@codeaurora.org> Hexagon V5(Floating Point) support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154828 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
4762a2da74875d2ae94e0d77d38ed964816cce36 16-Apr-2012 Sebastian Pop <spop@codeaurora.org> use DEFAULT_SYSROOT

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154792 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
105047124ca8ccc27e4fa48ae8af8bb472c57648 13-Apr-2012 Douglas Gregor <dgregor@apple.com> Remove the -cc1-level option "-pubnames-dump". Such things should stay
out of the tree and use the tooling infrastructure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154668 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e51fe0972a781e79abae550786ebed7d1da54252 09-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: remove -fobjc-default-synthesize-properties from the driver.
cc1 option remains though to invoke default property synthesis.
// rdar://11209719


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154334 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
e52e2e6f4840c2fa8f7e6289cab976e2c8d2fdc0 09-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: Remove -fno-objc-default-synthesize-properties
as the driver option.
// rdar://11209719


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154331 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
561d62280aecff3168097086425a7da0442d0de4 09-Apr-2012 David Chisnall <csdavec@swan.ac.uk> Revert r154321, pending more discussion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154327 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
649ee3fec12dcf7167630ff88087ad116e9eefa6 09-Apr-2012 David Chisnall <csdavec@swan.ac.uk> Add -fobjc-trace to emit a call before and after each Objective-C message send
for hooking in code flow visualisation applications.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154321 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
5e219cf7f896873c1c1e64b9e87a7dade99debba 08-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Teach Clang about PIE compilations. This is the first step of PR12380.

First, this patch cleans up the parsing of the PIC and PIE family of
options in the driver. The existing logic failed to claim arguments all
over the place resulting in kludges that marked the options as unused.
Instead actually walk all of the arguments and claim them properly.

We now treat -f{,no-}{pic,PIC,pie,PIE} as a single set, accepting the
last one on the commandline. Previously there were lots of ordering bugs
that could creep in due to the nature of the parsing. Let me know if
folks would like weird things such as "-fPIE -fno-pic" to turn on PIE,
but disable full PIC. This doesn't make any sense to me, but we could in
theory support it.

Options that seem to have intentional "trump" status (-static, -mkernel,
etc) continue to do so and are commented as such.

Next, a -pie-level flag is threaded into the frontend, rigged to
a language option, and handled preprocessor, setting up the appropriate
defines. We'll now have the correct defines when compiling with -fpie.

The one place outside of the preprocessor that was inspecting the PIC
level (as opposed to the relocation model, which is set and handled
separately, yay!) is in the GNU ObjC runtime. I changed it to exactly
preserve existing behavior. If folks want to change its behavior in the
face of PIE, they can do that in a separate patch.

Essentially the only functionality changed here is the preprocessor
defines and bug-fixes to the argument management.

Tests have been updated and extended to test all of this a bit more
thoroughly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154291 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
3953911de1e81aec780c00102b39a2bfac8f4734 05-Apr-2012 Nico Weber <nicolasweber@gmx.de> Honor -fno-pic, -fno-PIC, -fno-pie, -fno-PIE.

Review at http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120402/055759.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154064 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7a938fa66be42710b034a79106de337a275fd265 04-Apr-2012 Chad Rosier <mcrosier@apple.com> [driver] Create a new -mfpmath= option, which is used to control whether clang
uses Neon instructions for single-precision FP.

-mfpmath=neon is analogous to passing llc -mattr=+neonfp.
-mfpmath=[vfp|vfp2|vfp3|vfp4] is analogous to passing llc -mattr=-neonfp.

rdar://11108618


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154046 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
582b395ea4d5dfe353e2132a470d39efe2f84a54 02-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> Use -rewrite-legacy-objc as clang argument for translating
objective-c's fragile abi, Use -rewrite-objc for translating
objective-c's modern abi. // rdar://11143173


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153877 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ypes.def
40afb7d4f3840e5b9dcdf77086d9e4843fd5463a 30-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Create a new L_Group for language options and add the -std= option to
said group. Also classify the group as a CompileOnly_Group so that this option
does not cause an unused argument warning when used with a link command.
rdar://11153013


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153763 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b47dbcbc12430fdf3e5a5b9f59cdec5480e89e75 28-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Enable retry exhausted without inlining by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153591 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
82fe6aea407a5a09a6131452ce622087ba83880d 28-Mar-2012 Chandler Carruth <chandlerc@gmail.com> Move the emission of strict enum range metadata behind a flag (the same
flag as GCC uses: -fstrict-enums). There is a *lot* of code making
unwarranted assumptions about the underlying type of enums, and it
doesn't seem entirely reasonable to eagerly break all of it.

Much more importantly, the current state of affairs is *very* good at
optimizing based upon this information, which causes failures that are
very distant from the actual enum. Before we push for enabling this by
default, I think we need to implement -fcatch-undefined-behavior support
for instrumenting and trapping whenever we store or load a value outside
of the range. That way we can track down the misbehaving code very
quickly.

I discussed this with Rafael, and currently the only important cases he
is aware of are the bool range-based optimizations which are staying
hard enabled. We've not seen any issue with those either, and they are
much more important for performance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153550 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
5903a373db3d27794c90b25687e0dd6adb0e497d 27-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Add an option to re-analyze a dead-end path without inlining.

The analyzer gives up path exploration under certain conditions. For
example, when the same basic block has been visited more than 4 times.
With inlining turned on, this could lead to decrease in code coverage.
Specifically, if we give up inside the inlined function, the rest of
parent's basic blocks will not get analyzed.

This commit introduces an option to enable re-run along the failed path,
in which we do not inline the last inlined call site. This is done by
enqueueing the node before the processing of the inlined call site
with a special policy encoded in the state. The policy tells us not to
inline the call site along the path.

This lead to ~10% increase in the number of paths analyzed. Even though
we expected a much greater coverage improvement.

The option is turned off by default for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153534 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
978fc9c485d21ee89b4f0bc77ce1ea55c65c7f12 27-Mar-2012 Douglas Gregor <dgregor@apple.com> Introduce a -cc1-level option -pubnames-dump, which simply dumps the
list of identifiers that that 'public' names at the end of the
translation unit, e.g., defined macros or identifiers with top-level
names, in sorted order. Meant to support <rdar://problem/10921596>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153522 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
3f718609f41921180f09ccc6e73fe8742667608e 27-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Put -cpp-precomp and -no-cpp-precomp under the clang_ignored_f_group.
We don't currently support these options.
rdar://11120518


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153485 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
64f678eab13b5de9dcebf13d973fbc4731eb1bfd 16-Mar-2012 Chad Rosier <mcrosier@apple.com> Fix help text.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152872 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
fc055f943d154c9b7463f43a3b59e093723362c9 15-Mar-2012 Chad Rosier <mcrosier@apple.com> [frontend] Fix how the frontend handles -fno-inline. AFAIK clang now matches
the behavior of gcc with respect to the -fno-inline and -fno-inline-functions
flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152861 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
2dec85b21822f950bf6035640c496ad835e11728 13-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Parse diagnostic args in the driver.

Previously, only diagnostics thrown by the cc1 process were
actually honoring the diagnostic options given on the command line,
like -Werror.

Reuse the existing code in Frontend currently used for cc1,
adjusting it to not interpret -Wl, linker flags as warnings.

Also fix a faulty test exposed by this change.
It wasn't actually testing anything, and was giving this warning:

clang-3: warning: argument unused during compilation: '-verify'

Which -Werror didn't turn into an error because it was output
by the driver, not the cc1 process, and diagnostic options
weren't parsed by the driver. And you couldn't see the warning
when running the test suite.

Fixes PR12181.
Patch by Dylan Noblesmith <nobled@dreamwidth.org>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152660 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
66253352131e3e7a22b3bfd0e180607aa2bfb988 09-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Rework inlining related command line options.
- Remove -analyzer-inline-call.
- Add -analyzer-ipa=[none|inlining]
- Add -analyzer-inlining-mode to allow experimentation for
different performance tuning methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152351 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
8ba9a6244c56b19bc2a24de5d0c32ff37d50177b 07-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Don't try to generate diagnostic information for linker crashes.
rdar://10993648



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152180 91177308-0d34-0410-b5e6-96231b3b80d8
ool.h
e5de3767186e2a31659c91c55a9665eff077eae6 07-Mar-2012 Chad Rosier <mcrosier@apple.com> Missing period.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152160 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
634a4b1b045b13e7ddfa57934cf2b85d4348f77f 06-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] What was implemented in r152130 was actually -fno-inline-functions, not
-fno-inline.
Part of rdar://10972766


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152145 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
30660a898545416f0fea2d717f16f75640001e38 06-Mar-2012 Ted Kremenek <kremenek@apple.com> Add new code migrator support for migrating existing Objective-C code to use
the new Objective-C NSArray/NSDictionary/NSNumber literal syntax.

This introduces a new library, libEdit, which provides a new way to support
migration of code that improves on the original ARC migrator. We now believe
that most of its functionality can be refactored into the existing libraries,
and thus this new library may shortly disappear.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152141 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
C1Options.td
ptions.td
ypes.def
ebcb57a8d298862c65043e88b2429591ab3c58d3 06-Mar-2012 Ted Kremenek <kremenek@apple.com> Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,
NSNumber, and boolean literals. This includes both Sema and Codegen support.
Included is also support for new Objective-C container subscripting.

My apologies for the large patch. It was very difficult to break apart.
The patch introduces changes to the driver as well to cause clang to link
in additional runtime support when needed to support the new language features.

Docs are forthcoming to document the implementation and behavior of these features.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152137 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
bjCRuntime.h
ptions.td
6e2cdfd1c1e1522b5e9e0518ab5540a73e9d05cc 06-Mar-2012 Chad Rosier <mcrosier@apple.com> Minor fix for r152130. Put -fno-inline in f_Group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152132 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
250008b4678b19ef80866702e300bb4e53d9ff2d 06-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for -fno-inline.
rdar://10972766


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152130 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
8fbb4e665dda8227f369877c11828e4402c48eba 06-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Bump up the size of the functions that should be
considered for inlining to 200 BBs.

Setting the max to 10 BBs introduced several false negatives, we'll
reevaluate the setting later on along with other inlining heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152072 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
8235f9c9c8b3d1737d1c6bd57f7ba3f616b92392 02-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Bound the size of the functions being inlined + provide
command line options for inlining tuning.

This adds the option for stack depth bound as well as function size
bound.

+ minor doxygenification

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151930 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
3c93122d31924d6d4a6265f36a0c98a164002da6 01-Mar-2012 Kostya Serebryany <kcc@google.com> Add a flag -fthread-sanitizer.
This flag enables ThreadSanitizer instrumentation committed to llvm as r150423.
The patch includes one test for -fthread-sanitizer and one similar test for -faddress-sanitizer.
This patch does not modify the linker flags (as we do it for -faddress-sanitizer) because the run-time library is not yet
committed and it's structure in compiler-rt is not 100% clear.
The users manual wil be changed in a separate commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151846 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
5840dd9a09c458ef894e7d47caab1d90dc4c1112 29-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [driver] Emit an error when trying to use ARC on macosx earlier than 10.6

rdar://10459258

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151706 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
670326f414ca3f8f2cb1ad2f8bd42d5804b563c8 28-Feb-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for -g2 and -ggdb debug flags.
rdar://10947759



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151654 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
81fb169f42769e02c7425b23885a261c025fd5e6 27-Feb-2012 Anna Zaks <ganna@apple.com> [analyzer] Add -analyzer-stats, which hooks up LLVM stats tracking.

As in http://llvm.org/docs/ProgrammersManual.html#Statistic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151570 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
2639ac628cff5dedb4fa60169082b2a1a9dd8694 22-Feb-2012 Chad Rosier <mcrosier@apple.com> Provide a way to disable auto-generation of preprocessed files during clang
crash. This can speedup the process of generating a delta reduced test case.
rdar://10905465


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151109 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
0e65959196b45d8afc89e9102c4fc4ec0d642066 19-Feb-2012 Rafael Espindola <rafael.espindola@gmail.com> Implement a -gcc-toolchain command line option that does the same as
configure's --with-gcc-toolchain. The configure option is now just a default
value for the command line one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150898 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ceb15656fbab9ee1da319afa4934b8f6a5964758 15-Feb-2012 David Blaikie <dblaikie@gmail.com> Remove the unuseful -fdiagnostics-show-name

This option was added in r129614 and doesn't have any use case that I'm aware
of. It's possible that external tools are using these names - and if that's
the case we can certainly reassess the functionality, but for now it lets us
shave out a few unneeded bits from clang.

Move the "StaticDiagNameIndex" table into the only remaining consumer, diagtool.
This removes the actual diagnostic name strings from clang entirely.

Reviewed by Chris Lattner & Ted Kremenek.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150612 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
fc30829694e62040c14f329f5491724fe7476241 10-Feb-2012 Jim Grosbach <grosbach@apple.com> Have the driver pass CPU and target feature information to cc1as.

When creating the MCSubtargetInfo, the assembler driver uses the CPU and
feature string to construct a more accurate model of what instructions
are and are not legal.

rdar://10840476


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150273 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
f94d392847fb183b3012dbcb2e372b586c80b9fb 09-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Kill the brief and full explanation fields from StaticDiagInfoRec. They were unused and wasted space for nothing.

- per PR11952.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150199 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
50a9a12d4f7387bcff3213d4b56e74bab9f4f5d2 04-Feb-2012 Sean Callanan <scallanan@apple.com> Clang has existing support for debuggers that
want to provide "po"-like functionality which
treats the result of an expression implicitly as
"id" (if it is not otherwise known) and prints
it as an Objective-C object.

This has in the past been gated by the
"DebuggerSupport" language option, but that is
too general. Debuggers also provide other commands
like "print" that do not make any assumptions
about whether the object is an Objective-C object.

This patch makes the assumption conditional on a
new language option: DebuggerCastResultToId. I
have also made corresponding modifications to the
testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149735 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
71fd6cc843719cab528a5df0899ad3d15cb9297f 03-Feb-2012 Bob Wilson <bob.wilson@apple.com> Fix -ftrap-function fallout from llvm r145714. <rdar://problem/10799325>

That llvm change removed the -trap-func backend option, so that using
-ftrap-function with clang would cause the backend to complain. Fix it
by adding the trap function name to the CodeGenOptions and passing it through
to the TargetOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149679 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
773303a505c23d73da624f1e6abcf41a393dad2b 03-Feb-2012 Douglas Gregor <dgregor@apple.com> Rename -dependency-graphviz to -dependencncy-dot

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149645 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c69a181049ab52da29f8f69316a34c90c3ea3b8e 02-Feb-2012 Douglas Gregor <dgregor@apple.com> Introduce a -cc1 option "-dependency-graphviz" that determines header
dependencies and outputs them in GraphViz format.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149575 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
1d16f0f805c2a3e2198a87154990347b2759f6bd 31-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Revert r149083 which is not the direction we're going in the Clang
driver based on discussions with Doug Gregor. There are several issues:
1) The patch was not reviewed prior to commit and there were review comments.
2) The design of the functionality (triple-prefixed tool invocation)
isn't the design we want for Clang going forward: it focuses on the
"user triple" rather than on the "toolchain triple", and forces that
bit of state into the API of every single toolchain instead of
handling it automatically in the common base classes.
3) The tests provided are not stable. They fail on a few Linux variants
(Gentoo among them) and on mingw32 and some other environments.

I *am* interested in the Clang driver being able to invoke
triple-prefixed tools, but we need to design that feature the right way.
This patch just extends the previous hack without fixing the underlying
problems with it. I'm working on a new design for this that I will mail
for review by tomorrow.

I am aware that this removes functionality that NetBSD relies on, but
this is ToT, not a release. This functionality hasn't been properly
designed, implemented, and tested yet. We can't "regress" until we get
something that really works, both with the immediate use cases and with
long term maintenance of the Clang driver.

For reference, the original commit log:
Keep track of the original target the user specified before
normalization. This used to be captured in DefaultTargetTriple and is
used for the (optional) $triple-$tool lookup for cross-compilation.
Do this properly by making it an attribute of the toolchain and use it
in combination with the computed triple as index for the toolchain
lookup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149337 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
e29cdebb4b9bb435d58aec5da844f46cf78cfbe2 30-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Fix yet another issue introduced when renaming '-ccc-host-triple' to
'-target'. The original flag was part of a flag group that marked it as
driver-only. The new flag didn't ever get equivalent treatment. This
caused the '-target' flag to get passed down to any raw GCC invocation.
Marking it as a driver option fixes this and PR11875.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149244 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
34144f67610be0ac6cb0d85d77bd57662b9232b9 26-Jan-2012 Joerg Sonnenberger <joerg@bec.de> Keep track of the original target the user specified before
normalization. This used to be captured in DefaultTargetTriple and is
used for the (optional) $triple-$tool lookup for cross-compilation.
Do this properly by making it an attribute of the toolchain and use it
in combination with the computed triple as index for the toolchain
lookup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149083 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
453dbcbe30093fbf947a0bec2fbd46e9694eafe9 26-Jan-2012 Douglas Gregor <dgregor@apple.com> Extend the ExternalASTSource interface to allow the AST source to
provide the layout of records, rather than letting Clang compute
the layout itself. LLDB provides the motivation for this feature:
because various layout-altering attributes (packed, aligned, etc.)
don't get reliably get placed into DWARF, the record layouts computed
by LLDB from the reconstructed records differ from the actual layouts,
and badness occurs. This interface lets the DWARF data drive layout,
so we don't need the attributes preserved to get the answer write.

The testing methodology for this change is fun. I've introduced a
variant of -fdump-record-layouts called -fdump-record-layouts-simple
that always has the simple C format and provides size/alignment/field
offsets. There is also a -cc1 option -foverride-record-layout=<file>
to take the output of -fdump-record-layouts-simple and parse it to
produce a set of overridden layouts, which is introduced into the AST
via a testing-only ExternalASTSource (called
LayoutOverrideSource). Each test contains a number of records to lay
out, which use various layout-changing attributes, and then dumps the
layouts. We then run the test again, using the preprocessor to
eliminate the layout-changing attributes entirely (which would give us
different layouts for the records), but supplying the
previously-computed record layouts. Finally, we diff the layouts
produced from the two runs to be sure that they are identical.

Note that this code makes the assumption that we don't *have* to
provide the offsets of bases or virtual bases to get the layout right,
because the alignment attributes don't affect it. I believe this
assumption holds, but if it does not, we can extend
LayoutOverrideSource to also provide base offset information.

Fixes the Clang side of <rdar://problem/10169539>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149055 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f8de042335b7f4c037478ee0149ecf1f5c6d4a52 26-Jan-2012 Bob Wilson <bob.wilson@apple.com> Fix a minor bug in r148582, which made -ccc-host-triple into an alias option.
I'm not adding a testcase because -ccc-host-triple is slated to be removed,
but clang crashes if you try to use -ccc-host-triple without this fix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149048 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
61d679ab2831b161c857cf3f974312fbd4ef1efd 26-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce 3 new fixit options:

-fixit-recompile
applies fixits and recompiles the result
-fixit-to-temporary
applies fixits to temporary files
-fix-only-warnings">,
applies fixits for warnings only, not errors

Combining "-fixit-recompile -fixit-to-temporary" allows testing the result of fixits
without touching the original sources.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149027 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
26f0e4e7ab534fb42485c930f20a424ecc8c9830 26-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> arc migrator: Added an option to the migrator
unused yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149001 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
0671555f51808b88578bf9c383ef6ba36bb17d5f 25-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Delete still more remnants of the now dead HostInfo. The janitoring will
continue until cleanliness improves.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148951 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
18d7f3af752c41a197552a1ff25ddd639224b4bb 25-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Delete the driver's HostInfo class. This abstraction just never really
did anything. The two big pieces of functionality it tried to provide
was to cache the ToolChain objects for each target, and to figure out
the exact target based on the flag set coming in to an invocation.
However, it had a lot of flaws even with those goals:
- Neither of these have anything to do with the host, or its info.
- The HostInfo class was setup as a full blown class *hierarchy* with
a separate implementation for each "host" OS. This required
dispatching just to create the objects in the first place.
- The hierarchy claimed to represent the host, when in fact it was
based on the target OS.
- Each leaf in the hierarchy was responsible for implementing the flag
processing and caching, resulting in a *lot* of copy-paste code and
quite a few bugs.
- The caching was consistently done based on architecture alone, even
though *any* aspect of the targeted triple might change the behavior
of the configured toolchain.
- Flag processing was already being done in the Driver proper,
separating the flag handling even more than it already is.

Instead of this, we can simply have the dispatch logic in the Driver
which previously created a HostInfo object create the ToolChain objects.
Adding caching in the Driver layer is a tiny amount of code. Finally,
pulling the flag processing into the Driver puts it where it belongs and
consolidates it in one location.

The result is that two functions, and maybe 100 lines of new code
replace over 10 classes and 800 lines of code. Woot.

This also paves the way to introduce more detailed ToolChain objects for
various OSes without threading through a new HostInfo type as well, and
the accompanying boiler plate. That, of course, was the yak I started to
shave that began this entire refactoring escapade. Wheee!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148950 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ostInfo.h
4d7ff6e8639bdce74e39b90370729ad0179ebcca 25-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Switch the ToolChain types to all store a Driver reference rather than
a HostInfo reference. Nothing about the HostInfo was used by any
toolchain except digging out the driver from it. This just makes that
a lot more direct. The change was accomplished entirely mechanically.
It's one step closer to removing the shim full of buggy copy/paste code
that is HostInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148945 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
08386a9769575bd8290024aaaecb2dbad5bfd59d 25-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Remove the TargetTriple object that I added to the Driver recently. This
helped stage the refactoring of things a bit, but really isn't the right
place for it. The driver may be responsible for compilations with many
different targets. In those cases, having a target triple in the driver
is actively misleading because for many of those compilations that is
not actually the triple being targeted.

This moves the last remaining users of the Driver's target triple to
instead use the ToolChain's target triple. The toolchain has a single,
concrete target it operates over, making this a more stable and natural
home for it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148942 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
b5c6babd3d8e0233b8ea5a4eb1e2700e30c0d396 25-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> arc migrator: Provide infrastructure to add options
specific to migrator. Use its first option to
warn migrating from GC to arc when
NSAllocateCollectable/NSReallocateCollectable is used.
// rdar://10532541


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148887 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
4a04d0b4aa33e98ea9e7b3e787f0490585ce9b6f 24-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Remove HostInfo::useDriverDriver(). This was only used in two places
inside the innards of the Driver implementation, and only ever
implemented to return 'true' for the Darwin OSes. Instead use a more
direct query on the target triple and a comment to document why the
target matters here.

If anyone is worried about this predicate getting wider use or improper
use, I can make it a local or private predicate in the driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148797 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
91e6076b9bf5e09dc6b202d17a5647b724e6f6e6 24-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Hoist the targeted triple object into an actual object in the Driver.
The Driver has a fixed target, whether we like it or not, the
DefaultTargetTriple is not a default. This at least makes things more
honest. I'll eventually get rid of most (if not all) of
DefaultTargetTriple with this proper triple object. Bit of a WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148796 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
1db772bd68502e0dabbd8efeb7f7c64a4ab2e37a 23-Jan-2012 Nick Lewycky <nicholas@mxc.ca> Add support for -fno-optimize-sibling-calls. Currently only implemented in the
X86 backend in LLVM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148689 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
9ec60dfe771ff28a84889dced6f8fd3748d3d55e 20-Jan-2012 Sebastian Pop <spop@codeaurora.org> rename -ccc-host-triple into -target

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148582 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
64554ba9fc5f251108fd7d10a9c218e7bf985941 18-Jan-2012 Douglas Gregor <dgregor@apple.com> In the driver, -fmodules enables modules for C/Objective-C but one
also needs -fcxx-modules to enable modules for C++/Objective-C++.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148393 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
31cbe684302a5ccb001fa2131c0e4aeaa372f5c0 13-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Revert r148138; it's causing test failures.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148141 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
43115d4904431917ef6852ee089a8520b9940ba5 13-Jan-2012 Sebastian Pop <spop@codeaurora.org> remove assertions in the Hexagon backend specific clang driver

Patch from Jyotsna Verma:

I have made the changes to remove assertions in the Hexagon backend
specific clang driver. Instead of asserting on invalid arch name, it has
been modified to use the default value.

I have changed the implementation of the CPU flag validation for the
Hexagon backend. Earlier, the clang driver performed the check and
asserted on invalid inputs. In the new implementation, the driver passes
the last CPU flag (or sets to "v4" if not specified) to the compiler (and
also to the assembler and linker which perform their own check) instead of
asserting on incorrect values. This patch changes the setCPU function for
the Hexagon backend in clang/lib/Basic/Targets.cpp which causes the
compiler to error out on incorrect CPU flag values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148139 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
edd4f3c39101912605c2a1868dd2be71aa218798 13-Jan-2012 Sebastian Pop <spop@codeaurora.org> rename -ccc-host-triple into -target

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148138 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
9606a57b6f2c43bf438a958fdffea1de60f6b2b7 13-Jan-2012 Sebastian Pop <spop@codeaurora.org> rename DefaultHostTriple into DefaultTargetTriple

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148137 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
edb9459c43dec5f376020f2b53833dee6549e11d 05-Jan-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for passing -lazy_framework/-lazy_library to the linker.
rdar://10630328


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147591 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7025d2cc327ec75353454586df2987afce5e5789 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Add -fno-modules to the driver, to turn off modules (although they're off by default anyway).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147449 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c514a8a0eaa575cf46b038cc27fa1e4e8c22f89a 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Rename the command-line option for mapping #include/#import over to
module imports from -fauto-module-import to -fmodules. The new name
will eventually be used to enable modules, and the #include/#import
mapping is a crucial part of the feature.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147447 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
abf07a7fb669dcb74040eef948d61dfe3c59ff17 02-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Fix PR11685 by implementing -ffast-math and its various friends in the
Clang driver. This involves a bunch of silly option parsing code to try
to carefully emulate GCC's options. Currently, this takes a conservative
approach, and unless all of the unsafe optimizations are enabled, none
of them are. The fine grained control doesn't seem particularly useful.
If it ever becomes useful, we can add that to LLVM first, and then
expose it here.

This also fixes a few tiny bugs in the flag management around
-fhonor-infinities and -fhonor-nans; the flags now form proper sets both
for enabling and disabling, with the last flag winning.

I've also implemented a moderately terrifying GCC feature where
a language change is also provided by the '-ffast-math' flag by defining
the __FAST_MATH__ preprocessor macro. This feature is tracked and
serialized in the frontend but it isn't used yet. A subsequent patch
will add the preprocessor macro and tests for it.

I've manually tested that codegen appears to respect this, but I've not
dug in enough to see if there is an easy way to test codegen options w/o
relying on the particulars of LLVM's optimizations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147434 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
C1Options.td
ptions.td
6a511e14074e186328020fce78fe0c33deb64d1b 30-Dec-2011 Craig Topper <craig.topper@gmail.com> Add FMA4 feature flag. Intrinsics coming soon. Also make sse4a feature flag imply sse3. Matches gcc behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147370 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
e14e08b2552b43d81a295401ddf9b8da2c499233 29-Dec-2011 Craig Topper <craig.topper@gmail.com> Add popcnt feature flag to match gcc. This flag is implied when sse42 is enabled, but can be disabled separately. Move popcnt intrinsics to popcntintrin.h to match gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147340 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
31ceea096563c42e083eded27f6fe19ed244c0a1 25-Dec-2011 Craig Topper <craig.topper@gmail.com> Add BMI, BMI2, and LZCNT feature flags to enable adding intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147262 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
17ba267cae596d5eb35fa0963ebcf73571572940 23-Dec-2011 Anton Yartsev <anton.yartsev@gmail.com> fix for PR11634

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147224 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
567003e572eed69cf1e8a04601076c8803355c7a 22-Dec-2011 Kevin Enderby <enderby@apple.com> Last part of support for generating dwarf for assembly source files. This gets
the clang driver to enable this when assembling a .s file. rdar://9275556


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147167 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
99ba9e3bd70671f3441fb974895f226a83ce0e66 20-Dec-2011 David Blaikie <dblaikie@gmail.com> Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146959 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
ob.h
79cbbdc8affe52591f7ee487a789639aa38331ec 18-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Split the Windows toolchain definition into its own file. This is
especially nice as the Windows toolchain needs the windows header files,
and has lots of platform specific hooks in it.

To facilitate the split, hoist a bunch of file-level static helpers into
class-level static helpers. Spiff up their doxygen comments while there
as they're now more likely to be looked up via docs.

Hopefully, this will be followed by further breaking apart of the
toolchain definitions. Most of the large and complex ones should likely
live on their own. I'm looking at you Darwin. ;]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146840 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
2b03bb0314cea77f0a8740609a9cccb2253ec1b1 17-Dec-2011 Craig Topper <craig.topper@gmail.com> Add -mavx2 and -mno-avx2 command line support. Also add core-avx2 processor type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146835 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
08d6e032a2a0a8656d12b3b7b93942987bb12eb7 16-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> C++11 constexpr: Add note stacks containing backtraces if constant evaluation
fails within a call to a constexpr function. Add -fconstexpr-backtrace-limit
argument to driver and frontend, to control the maximum number of notes so
produced (default 10). Fix APValue printing to be able to pretty-print all
APValue types, and move the testing for this functionality from a unittest to
a -verify test now that it's visible in clang's output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146749 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
9f6d068b29ea2f6276f1105c71d9e768201f2b88 14-Dec-2011 Chad Rosier <mcrosier@apple.com> Per discussion on the list, remove BitcodeVerify pass to reimplement as a free function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146530 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ff7892758f1e46221b552486c1e329db92147ebc 13-Dec-2011 Chad Rosier <mcrosier@apple.com> Add frontend flags to enable bitcode verifier pass.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146441 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
9631939f82c0eaa6fb3936a0ce58a41adfbc9011 12-Dec-2011 Tony Linthicum <tlinth@codeaurora.org> Hexagon backend support

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146413 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
001f628a693960380e37c2b58a1009da77d7e425 10-Dec-2011 Daniel Dunbar <daniel@zuster.org> Driver: Handle -f{no-}honor-infinities, -f{no-}honor-nans, and
-ffinite-math-only.
- No test case yet, I don't know how to construct a situation where this
matters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146297 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
c24767c9dd869ba0e78c2d4c86d86ed24b8e401e 08-Dec-2011 Daniel Dunbar <daniel@zuster.org> Driver: Add a --rtlib={compiler-rt,libgcc} argument which I plan to use to allow
dual support for compiler-rt on Linux, during bringup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146094 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
oolChain.h
4e785c908ae01519d3592eae2828e2cc94fb02eb 06-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Stack realignment is a tristate. Add -mno-stackrealign to turn off all stack
realignment, even with locals with alignment exceeding the ABI guarantee.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145909 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
e9d11dbfe1f3286c5f8a2f2fc8ac759f63890655 06-Dec-2011 Joerg Sonnenberger <joerg@bec.de> Add -mstack-alignment=X and fix -mstackrealign handling now that the
backend options are gone.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145868 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
6649014b792f8a4b1bc1e8be8f844a72220af508 29-Nov-2011 Douglas Gregor <dgregor@apple.com> Eliminate the -emit-module option, which emitted a module by parsing a
source file (e.g., a header). Immediately steal this useful option
name for building modules from a module map file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145444 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c18c42345636e2866fed75c7e434fb659d747672 21-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add driver arguments -ftemplate-depth=N and -fconstexpr-depth=N, with the same
semantics and defaults as the corresponding g++ arguments. The historical g++
argument -ftemplate-depth-N is kept for compatibility, but modern g++ versions
no longer document that option.

Add -cc1 argument -fconstexpr-depth N to implement the corresponding
functionality.

The -ftemplate-depth=N part of this fixes PR9890.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145045 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
5d4d9807a65291cbe6ab88d4a4f74cb7fff01bde 21-Nov-2011 Peter Collingbourne <peter@pcc.me.uk> Teach the driver about failure result files, which are compilation
output files that are valid regardless of whether the compilation
succeeded or failed (but not if we crash). Add depfiles to the
failure result file list.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145018 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
1b4eca67e073f0beefb9924cbe6c65427869f1fa 16-Nov-2011 Kostya Serebryany <kcc@google.com> Add -f[no-]address-sanitizer flag

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144800 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
db1cde7dc7bb3aaf48118bd9605192ab94a93635 16-Nov-2011 Douglas Gregor <dgregor@apple.com> Add support for building a module from a module map to the -cc1
interface. This is currently limited to modules with umbrella
headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144736 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
b86b8dc7ef89405205f94635c1073cdb1a7093eb 15-Nov-2011 Douglas Gregor <dgregor@apple.com> Add a -cc1-level option -fmodule-name=<name>, which will be used when
building modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144680 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
36f6e30d5c21a693abf2612ef086e83e9696f0e0 11-Nov-2011 Ted Kremenek <kremenek@apple.com> Add top-level driver option '--serialize-diagnostics' for serialize compiler diagnostics to a file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144339 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
55ccbd5fbfc6dce1b93779ba2dac0da259503ae0 07-Nov-2011 Chad Rosier <mcrosier@apple.com> Tablegenify -g options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144001 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
07643086c6460095855573902d66aae1b08a6182 07-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Rip out one of the features I added for the driver-include-management.
We don't actually need a separate flag for non-sysrooted paths as the
driver has to manage the sysroot anyways. The driver is not infrequently
adding paths to the header search based on their existence on the
filesystem. For that, it has to add the sysroot anyways, we should pass
it on down to CC1 already joined. More importantly, the driver cannot in
all cases distinguish between sysrooted paths and paths that are
relative to the Clang binary's installation directory. Essentially, we
always need to ignore the system root for these internal header search
options. It turns out in most of the places we were already providing
the system root in the driver, and then another one in CC1 so this fixes
several bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143917 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
103accc00cf1c9a09790ef487a9fb89ec0750fd7 05-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Fix a significant oversight in my move of MSVC includes to the driver:
actually manage the builtin header file includes as well as the system
ones.

This one is actually debatable whether it belongs in the driver or not,
as the builtin includes are really an internal bit of implementation
goop for Clang. However, they must be included at *exactly* the right
point in the sequence of header files, which makes it essentially
impossible to have this be managed by the Frontend and the rest by the
Driver. I have terrible ideas that would "work", but I think they're
worse than putting this in the driver and making the Frontend library
even more ignorant of the environment and system on which it is being
run.

Also fix the fact that we weren't properly respecting the flags which
suppress standard system include directories.

Note that this still leaves all of the Clang tests which run CC1
directly and include builtin header files broken on Windows. I'm working
on a followup patch to address that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143801 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ac2bc4d220a6263be96b943e9162f4a11149e26d 05-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Add two flags to the CC1 layer that I was hoping to avoid. We need to
encode the *exact* semantics which the header search paths internally
built by the Frontend layer have had, which is both non-user-provided,
and at times adding the implicit extern "C" bit to the directory entry.

There are lots of CC1 options that are very close, but none do quite
this, and they are all already overloaded for other purposes. In some
senses this makes the command lines more clean as it clearly indicates
which flags are exclusively used to implement internal detection of
"standard" header search paths.

Lots of the implementation of this is really crufty, due to the
surrounding cruft. It doesn't seem worth investing lots of time cleaning
this up as it isn't new, and hopefully *lots* of this code will melt
away as header search inside of the frontend becomes increasingly
trivial.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143798 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ab9fcd0ad3202735d5f21f15b2989d65f2747a13 05-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Switch the C++ include interface in the ToolChain to use the same naming
as the system include interface before I start adding implementations of
it to individual ToolChain implementations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143751 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
033be8bd33e0f84db8158771e13528e071563b73 04-Nov-2011 Devang Patel <dpatel@apple.com> Enable -flimit-debug-info by default. Now, clang lazily emits debug info for structs. Original behavior can be restored using -fno-limit-debug-info.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143733 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
7ffa0325bd61f656697f99434334d425c39af309 04-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Sink the handling of -fobjc-arc-cxxlib to live with the other -fobjc-arc
implementation in the driver. This cleans up the signature and semantics
of the include flag adding component of the toolchain. Another step to
ready it for holding all the InitHeaderSearch logic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143686 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
88491fc6dfc7ebbd856d57a9acb49fb83077d6c8 04-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Add a system include management interface to the toolchain, and call it
and the C++ include management routine from the proper place when
forming preprocessor options in the driver. This is the first step to
teaching the driver to manage all of the header search paths. Currently,
these methods remain just stubs in the abstract toolchain. Subsequent
patches will flesh them out with implementations for various toolchains
based on the current code in InitHeaderSearch.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143684 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
19bda3ad8b5d37e505214e82fab1d0a0bf00f0fd 02-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add an option to emulate the strange Apple gcc behavior of #pragma pack.

<rdar://problem/10374763>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143527 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
22a7dfea585703d6755db69b83e29a0e6ee10369 30-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Add support for lazily linking bitcode files (using a new
-mlink-bitcode-file flag), and more generally llvm::Modules, before
running optimisations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143314 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
7800212ef29be314d55814e8dcc568ff8beed106 29-Oct-2011 Ted Kremenek <kremenek@apple.com> Start work on SerializedDiagnosticPrinter, a new DiagnosticConsumer that serializes out the diagnostics for a given translation unit to a bit code file. This is a WIP.

The motivation for this new DiagnosticConsumer is to provide a way for tools invoking the compiler
to get its diagnostics via a libclang interface, rather than textually parsing the compiler output.
This gives us flexibility to change the compiler's textual output, but have a structured data format
for clients to use to get the diagnostics via a stable API.

I have no tests for this, but llvm-bcanalyzer so far shows that the emitted file is well-formed.

More work to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143259 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
9a8cbc75052d641105e45d0eca2592743fa01e54 29-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add an alias option for -error-on-deserialized-decl with joined '='.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143239 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e88c4513157cc551ed8080b1e3b3b875a9a570e1 25-Oct-2011 Eric Christopher <echristo@apple.com> Allow the -fno-operator-names option to be passed down to the rest
of the compiler.

Fixes PR10198
Patch by Brian Foley!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142913 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
89c300400b0b75d879da88f81c97a46feb0675be 24-Oct-2011 David Chisnall <csdavec@swan.ac.uk> Enable experimental support for objc_msgSend with GNUstep ObjC runtime.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142795 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
f634bcece396cf6d51df450729bcd976785a0109 22-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Pack struct better.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142725 91177308-0d34-0410-b5e6-96231b3b80d8
ptTable.h
7c4fd9121f5885096fd3258d20a984e3f08f8603 21-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Take DW_AT_comp_dir from $PWD when it's present and starts with a '/'. This is
closer to what GCC does, except that GCC also checks that the inodes for $PWD
and '.' match.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142633 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
024f4be866d13dd2b0ec062e694a62ca84c37191 18-Oct-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Support -iframework.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142418 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
ea523d73a6de06f828952a02f5ff86e4cc631695 18-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Wire up support for the controlling the extended dwarf .file directive. With
r142300 but not this patch, clang -S may emit .s files that assemblers other
than llvm-mc can't parse.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142301 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
19706f8e702c04d19bc1ace504cbb9df008b6daa 18-Oct-2011 Rafael Espindola <rafael.espindola@gmail.com> Implement -static-libstdc++ for linux.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142290 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
92d6d404833468120f9a86fb360691ac60585551 11-Oct-2011 Daniel Dunbar <daniel@zuster.org> Driver: Add support for a new -nostdlibinc option.
- This disables the system include directories, but not the compiler builtin
directories. Useful for projects that want to use things like the intrinsic
headers, but are otherwise freestanding.

- I'm willing to reconsider the option naming, I also considered providing an
explicit -builtinc (which would match -nobuiltininc), but this is more
consistent with existing options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141692 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a268fc0f2229eb132ebc8501b140093aeb5516bf 11-Oct-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Replace -nostdinc by -nostdsysteminc (which is just system include
paths). The -nostdinc behavior is now -nostdsysteminc + -nobuiltininc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141691 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ae57eadbc1a923efb72924765445db915cc23a9b 10-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> OpenCL: add driver/frontend support for precompiled headers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141516 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
d51e43af0b3a6897b971f316c4de2035ec82d1f2 06-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> CUDA: add -fcuda-is-device flag

This frontend-only flag is used by the IR generator to determine
whether to filter CUDA declarations for the host or for the device.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141301 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
6ee5b9384533d5b3f8c18b578fccd3935e1b892f 06-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Clang-side build system infrastructure for multiple tblgens.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141267 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
88934e85f81abdc4fb5202325252be3bcab5ebf0 05-Oct-2011 Daniel Dunbar <daniel@zuster.org> Driver & AST: Implement support for -fpack-struct and -fpack-struct= command
line options.
- <rdar://problem/10120602>, PR9631

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141211 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
10a82cde7c317c5dd41dc3faf17f503c52ce2a3d 04-Oct-2011 Bob Wilson <bob.wilson@apple.com> Rip out flags for controlling C++ "production mode" separately.

This is old leftover cruft from the days when C++ was not yet ready
for prime time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141063 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
d1e40d5389a4382cbebc97d54792f41ee0414af4 02-Oct-2011 John McCall <rjmccall@apple.com> Make -fobjc-nonfragile-abi the -cc1 default, since it's the
increasingly prevailing case to the point that new features
like ARC don't even support the fragile ABI anymore.

This required a little bit of reshuffling with exceptions
because a check was assuming that ObjCNonFragileABI was
only being set in ObjC mode, and that's actually a bit
obnoxious to do.

Most, though, it involved a perl script to translate a ton
of test cases.

Mostly no functionality change for driver users, although
there are corner cases with disabling language-specific
exceptions that we should handle more correctly now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140957 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
26e0b304557519c12b150afe23cd24e28fa20a1d 30-Sep-2011 Daniel Dunbar <daniel@zuster.org> Revert my --working-directory option, which wasn't well thought through.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140889 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d30952838421ddfb9f7e346b2ba8213889a5f789 30-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Add -analyzer-purge option which can take on multiple values, remove -analyzer-purge=none. (Small refactor as well: move the work of constructing AnalysisManager from the callers to the class itself.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140838 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
4213df3b5da21ce25a4541ca5c447eeb28b515a3 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostics: Split out the default warning "no-Werror" and
"show-in-system-header" bits, which is part of teasing them apart from the
diagnostic mapping kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140742 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
d6471f7c1921c7802804ce3ff6fe9768310f72b9 26-Sep-2011 David Blaikie <dblaikie@gmail.com> Rename Diagnostic to DiagnosticsEngine as per issue 5397


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140478 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
river.h
63bc59bf22b8f2e672fcf3904fe33993f69e006f 23-Sep-2011 Daniel Dunbar <daniel@zuster.org> Driver: Add a --working-directory option which can be used to cause the compiler
to operate "as if" in a certain working directory.
- For now, we just implement this by changing the actual working directory, but
eventually we would want to handle this transparently. This is useful to
avoid an extra exec() pair in some situations, and will be something we would
want to support for more flexibility in using the Clang libraries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140409 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
47adebef0df6dce752fe9a45e9190e8005b5d07c 22-Sep-2011 Benjamin Kramer <benny.kra@googlemail.com> Add support for CPATH and friends.

This moves the existing code for CPATH into the driver and adds the environment lookup and path splitting there.
The paths are then passed down to cc1 with -I options (CPATH), added after the normal user-specified include dirs.
Language specific paths are passed via -LANG-isystem and the actual filtering is performed in the frontend.

I tried to match GCC's behavior as close as possible

Fixes PR8971.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140341 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
61ab80a8b35e6fe9363e8ef1b3d27209b0e89349 20-Sep-2011 Chad Rosier <mcrosier@apple.com> [driver] Default to arm mode when using the integrated assembler.
rdar://10125227

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140179 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
ae55608a29d61737b7c5390e2d1bb30ab8d5febb 17-Sep-2011 Francois Pichet <pichet2000@gmail.com> As per discussion with Doug Gregor on the IRC channel, introduce a new compiler switch: -fms-compatility.

Microsoft specific tweaking will now fall into 2 categories:

- fms-extension: Microsoft specific extensions that should never change the meaning of an otherwise well formed code. Currently map to LangOptions::Microsoft. (To be clearer, I am planning to change the name to LangOptions::MicrosoftExt).

- fms-compatibility: Really a MSVC emulation mode. Map to LangOptions::MicrosoftMode. Can change the meaning of an otherwise standard conformant program.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139978 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
fba18aa8f2cd1994dc65e8cb9f4be201c560dc0b 16-Sep-2011 Douglas Gregor <dgregor@apple.com> Add an experimental flag -fauto-module-import that automatically turns
#include or #import direcctives of framework headers into module
imports of the corresponding framework module.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139860 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
531dcce3e5f5d5234520df7593e285d7dd007456 15-Sep-2011 Douglas Gregor <dgregor@apple.com> Eliminate the unused -create-module cc1-level option

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139827 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
8ee51ef211bfed9ce04bc93835e19aee014f2fae 14-Sep-2011 Douglas Gregor <dgregor@apple.com> Teach the driver to always pass down a module cache path. If none is
supplied, use something derived from the system's temporary
directory. Depends on LLVM r139725.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139726 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
6e975c4517958bcc11c834336d340797356058db 14-Sep-2011 Douglas Gregor <dgregor@apple.com> For modules, use a hash of the compiler version, language options, and
target triple to separate modules built under different
conditions. The hash is used to create a subdirectory in the module
cache path where other invocations of the compiler (with the same
version, language options, etc.) can find the precompiled modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139662 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
8c7f4bca64d5128311ce50449ae9d2048c2ffea4 13-Sep-2011 Chad Rosier <mcrosier@apple.com> [driver] Add follow up comment for r139551 to ensure the unused option is not
removed in the future.
rdar://10110352 and PR10908

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139602 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
dc3e7255f1a35ca5cf352a40a5952db0e65c7900 13-Sep-2011 Chad Rosier <mcrosier@apple.com> [driver] Ignore the '--' option, rather then fail. Do so to match gcc's
behavior.
rdar://10110352 and PR10908

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139551 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
9a6da6930644b4f2dbe4885b0eb4fc1274ff56a4 12-Sep-2011 Douglas Gregor <dgregor@apple.com> Introduce a cc1-level option to provide the path to the module cache,
where the compiler will look for module files. Eliminates the
egregious hack where we looked into the header search paths for
modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139538 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
13db5cfc4e5f03eb70efe0d227b53b8280f16161 09-Sep-2011 John McCall <rjmccall@apple.com> Treat the weak export of block runtime symbols as a deployment-target
feature akin to the ARC runtime checks. Removes a terrible hack where
IR gen needed to find the declarations of those symbols in the translation
unit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139404 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
oolChain.h
831c6313dfa36f297094cd593a9dd3cb60649362 27-Aug-2011 Douglas Gregor <dgregor@apple.com> Remove the -import-module option. It's no longer useful

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138681 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f43b5e84aa982afacd87a225440ec88a9b66c1a0 27-Aug-2011 Chad Rosier <mcrosier@apple.com> Cleanup r138662 per Ben and David's suggestions, thanks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138670 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
fe87fc73c0091a8d6ba04b7e3b5f144d4a0517a3 26-Aug-2011 Chad Rosier <mcrosier@apple.com> [driver] When generating temporary files allow a prefix to be added. In many
cases we want the prefix to be the original file name less the suffix. For an
input such as test.c to named temporary would be something like test-3O4Clq.o
Part of <rdar://problem/8314451>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138662 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
1b9060553221720152e12981109549e0a1d8e3a1 26-Aug-2011 Chad Rosier <mcrosier@apple.com> [driver] Add -mglobal-merge/-mno-global-merge machine options to enable/disable merging of
globals during codegen.
Fixes <rdar://problem/10017909>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138612 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
b5af843a20e237ad1a13ad66a867e200695b8c8e 26-Aug-2011 Douglas Gregor <dgregor@apple.com> Eliminate the -chained-pch flag and all of the frontend and libclang options associated with it. Chained PCH is the only way to build a PCH file that includes another PCH file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138597 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
467dc88512b4ba4bb16e274ea3771dc1415d31da 26-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce a -cc1 option "-emit-module", that creates a binary module
from the given source. -emit-module behaves similarly to -emit-pch,
except that Sema is somewhat more strict about the contents of
-emit-module. In the future, there are likely to be more interesting
differences.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138595 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
af6fbe42e4e0bbc42e9bf824ae2a24417ae1665f 25-Aug-2011 Chad Rosier <mcrosier@apple.com> 80-column and spacing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138578 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f857186fd1995b34185d063a29b11ad4f948519f 23-Aug-2011 Eric Christopher <echristo@apple.com> Add support for a verifier to the driver. Currently only verifies debug
output on darwin so is hard coded there.

As a note this will need a little bit of refactoring in the class
hierarchy to separate it out for different verifiers based on input type.

Fixes rdar://8256258.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138343 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
ptions.td
2fef11164cbe804f7b808c07757c6f900c08d765 23-Aug-2011 Nico Weber <nicolasweber@gmx.de> enable -fstack-protector on 10.5 for usermode binaries by default.

This matches gcc's behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138324 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
faef9fcb41cff7c2cbafb86d3af47c422ddf3010 15-Aug-2011 Bob Wilson <bob.wilson@apple.com> Make -findirect-virtual-calls and -fterminated-vtables aliases of -fapple-kext.
Outside the driver, they were already treated that way, but the driver was not
giving them the same special treatment as -fapple-kext, e.g., falling back to
llvm-gcc for i386/Darwin kexts. Radar 9868422.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137639 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
cc52a0688f46cd04dd6b4670b304cbe82e3018c0 14-Aug-2011 Nico Weber <nicolasweber@gmx.de> Add support of -x objc-cpp-output, -x objc++-cpp-output to the Driver.

Matches gcc, and is also required for using ccache with clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137563 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
be69f6092668b0586c8729855c01ca2eea22e6fe 13-Aug-2011 Chad Rosier <mcrosier@apple.com> [driver] Refactor a bit to enable a few fixes when generating diagnostics. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137524 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
2b81910618f63e4ce2373c926a26e76b4b91373f 02-Aug-2011 Chad Rosier <mcrosier@apple.com> When the compiler crashes, the compiler driver now produces diagnostic
information including the fully preprocessed source file(s) and command line
arguments. The developer is asked to attach this diagnostic information to a
bug report.
rdar://9575623


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136702 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ompilation.h
river.h
ob.h
65e02fa80e1c185f18e5f81cefc30d75383a7301 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Introduce the "-index-header-map" option, to give special semantics
for quoted header lookup when dealing with not-yet-installed
frameworks. Fixes <rdar://problem/9824020>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136331 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
1fc1de48cdf9a2f241e0f2c7b9e9db2322f1b794 28-Jul-2011 Chad Rosier <mcrosier@apple.com> The -fapple-kext flag was designed to "do the right thing" for building code for
use in KEXTs. However, users/Xcode still need to tweak the linker flags to do
the right thing, and end up using -Xlinker, for example. Instead, have the
driver "do the right thing" when linking when -fapple-kext is present on the
command line, and we should have Xcode use -fapple-kext instead of setting other
flags like -Xlinker -kext or -nodefaultlibs.
rdar://7809940

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136294 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
2d3ba4f5a923a90c3fc290ddfba5e36c2d0a9b46 23-Jul-2011 Chris Lattner <sabre@nondot.org> Move ArrayRef to LLVM.h and eliminate now-redundant qualifiers, patch by Jon Mulder!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135855 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
d7a3ba03f69892aac02e0771eb2e6d1b7b1d1267 20-Jul-2011 Chad Rosier <mcrosier@apple.com> Temporarily revert r135614 while I fix the cmake build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135621 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ompilation.h
river.h
ob.h
2da13b15959365df7edf1ed12a049b599b39c276 20-Jul-2011 Chad Rosier <mcrosier@apple.com> When the compiler crashes, the compiler driver now produces diagnostic information
including the fully preprocessed source file(s) and command line arguments. The
developer is asked to attach this diagnostic information to a bug report.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135614 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ompilation.h
river.h
ob.h
db999aad8a1b9dc265b2e627be334be6580a86a3 20-Jul-2011 Chris Lattner <sabre@nondot.org> remove some now-redundant forward declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135578 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ompilation.h
river.h
8cc488fefb2fb04bc8d5398da29f0182f97934cf 20-Jul-2011 Chris Lattner <sabre@nondot.org> add raw_ostream and Twine to LLVM.h, eliminating a ton of llvm:: qualifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135577 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ompilation.h
river.h
ptTable.h
686775deca8b8685eb90801495880e3abdd844c2 20-Jul-2011 Chris Lattner <sabre@nondot.org> now that we have a centralized place to do so, add some using declarations for
some common llvm types: stringref and smallvector. This cleans up the codebase
quite a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135576 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
rg.h
rgList.h
river.h
ob.h
ption.h
ool.h
oolChain.h
til.h
9594675cc1eb52a054de13c4a21e466643847480 20-Jul-2011 Chris Lattner <sabre@nondot.org> introduce a centralized place to introduce and inject llvm types into the
clang namespace. There are a number of LLVM types that are used pervasively
and it doesn't make sense to keep qualifying them. Start with casting
operators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135574 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
ob.h
ption.h
7ee2049278b98d42709380054eb83f4952af1200 19-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Add some additional driver flags to optionally emit or save the pre-migration ARC errors.

-arcmt-migrate-emit-errors : Emits the pre-migration ARC errors but it doesn't affect anything else
-arcmt-migrate-report-output : Writes out the pre-migration ARC errors to the provided plist file

rdar://9791454

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135491 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
b29a6108b164b183d32d8c14bf5b7492a483c7c9 15-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Switch help text in the CC1 driver from 'instantiation' to 'expansion'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135225 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
48218c60d6b53b7880917d1366ee716dec2145ca 13-Jul-2011 John McCall <rjmccall@apple.com> In debugger mode, make ObjC message sends to unknown selectors return
__unknown_anytype, and rewrite such message sends correctly.

I had to bite the bullet and actually add a debugger support mode for this
one, which is a bit unfortunate, but there really isn't anything else
I could imagine doing; this is clearly just debugger-specific behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135051 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
bb52786da8d055568eef6e5694288c1258bc8c2a 12-Jul-2011 Peter Collingbourne <peter@pcc.me.uk> Implement -MG. Fixes PR9613

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134996 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
69325d5b7cfecf1b3128745efc33612aedf1b8b4 09-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Introduce new '-ccc-arcmt-migrate <path>' ARC migration driver option.

This is a new mode of migration, where we avoid modifying the original files but
we emit temporary files instead.

<path> will be used to keep migration process metadata. Currently the temporary files
that are produced are put in the system's temp directory but we can put them
in the <path> if is necessary.

Also introduce new ARC migration functions in libclang whose only purpose,
currently, is to accept <path> and provide pairs of original file/transformed file
to map from the originals to the files after transformations are applied.

Finally introduce the c-arcmt-test utility that exercises the new libclang functions,
update arcmt-test, and add tests for the whole process.

rdar://9735086.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134844 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
3bd21383f0d788e49af71c5d25255197ddb8a59b 08-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Remove BoostCon-specific code from Clang. FWIW, I'm a fan of things like this living in a separate branch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134649 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
72ac120023abb73f3ff9386e193fed55fa9a96e2 07-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Add -ccc-arcmt-check/-ccc-arcmt-modify driver option aliases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134591 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
256a76e0b0e0c9e65a3122917d553ef10bc84d29 06-Jul-2011 John McCall <rjmccall@apple.com> Call objc_terminate() instead of abort() when a cleanup throws an
exception in Objective-C; in Objective-C++ we still use std::terminate().
This is only available in very recent runtimes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134456 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
bjCRuntime.h
c06e0743431b28c96e0bbe27cc07851d2e0d2681 06-Jul-2011 John McCall <rjmccall@apple.com> Missing header from last commit; accidental change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134455 91177308-0d34-0410-b5e6-96231b3b80d8
bjCRuntime.h
9f084a3166b684573ba49df28fc5792bc37d92e1 06-Jul-2011 John McCall <rjmccall@apple.com> Change the driver's logic about Objective-C runtimes: abstract out a
structure to hold inferred information, then propagate each invididual
bit down to -cc1. Separate the bits of "supports weak" and "has a native
ARC runtime"; make the latter a CodeGenOption.

The tool chain is still driving this decision, because it's the place that
has the required deployment target information on Darwin, but at least it's
better-factored now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134453 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
oolChain.h
bcf6a8025aa50f3f28cfbd0470cf3e8f5cffbab2 05-Jul-2011 Douglas Gregor <dgregor@apple.com> StringRef'ize clang::drive::Option::getName(), from Zach Wheeler!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134418 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
5d9b6bf9de98a33427fc7a3beeca90a3002b4744 29-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Use existing -fcatch-undefined-behavior option,
replacing -freset-local-blocks. // rdar://9227352


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134082 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
95b135b5c677173a2f27e9b150843545abf0d97c 29-Jun-2011 David Chisnall <csdavec@swan.ac.uk> Make ARC support default to true. Please can we stop making Objective-C runtime features part of the platform description? This only makes sense for Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134066 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
1077e420b89c9541396135157f22a1eff6062edf 29-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Under a compiler flag, -freset-local-blocks,
wipe out stack blocks when they go out of scope.
// rdar://9227352


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134045 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
13c4f2144b35bda21746eb60ad90e52a9bd8dcda 21-Jun-2011 Bob Wilson <bob.wilson@apple.com> Fix the default libc++ header search path to be sysrooted. Radar 9639692.

The -cxx-isystem path is not prefixed with the sysroot directory, so it's
not a good way for the driver to set the system default C++ search path.
Instead, add -stdlib as a cc1 option and teach the frontend how to find the
headers. The driver can then just pass -stdlib through to "cc1".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133547 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ee273b3b312642da33dd832125206d30e07fc811 21-Jun-2011 Bob Wilson <bob.wilson@apple.com> Fix cut-and-paste error: --stdlib is an alias for -stdlib, not -std.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133546 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ed798951b46555946c95cb76568ea3cf0b16c9ab 21-Jun-2011 Daniel Dunbar <daniel@zuster.org> Driver: Factor out IsUsingLTO helper function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133542 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
e26bdb91b7e3912ffe895b78a446db94471a59dd 21-Jun-2011 Daniel Dunbar <daniel@zuster.org> IRgen: Add a -fuse-register-sized-bitfield-access option, for testing.
- Changes bit-field access policy to try to use (aligned) register sized accesses.

The idea here is that by using larger accesses we expose more coalescing
potential to the backend when we have situations like adjacent bit-fields in the
same structure (which is common), and that the backend should be smart enough to
narrow the accesses down when no coalescing is done or when it is shown not to
be profitable.

--
$ clang -m32 -O3 -S -o - t.c
_f0: ## @f0
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movb (%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, (%eax)
movb 1(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 1(%eax)
movb 2(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 2(%eax)
movb 3(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 3(%eax)
popl %ebp
ret

$ clang -m32 -O3 -S -o - t.c -Xclang -fuse-register-sized-bitfield-access
_f0: ## @f0
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movl $-2139062144, %ecx ## imm = 0xFFFFFFFF80808080
andl (%eax), %ecx
orl $16843009, %ecx ## imm = 0x1010101
movl %ecx, (%eax)
popl %ebp
ret
--

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133532 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c3b9014c7236a15cf467662264b243a22c420312 21-Jun-2011 Nick Lewycky <nicholas@mxc.ca> Add support for -Wa,--noexecstack when building from a non-assembly file. For
an assembly file it worked correctly, while for a .c file it would given an
error about how --noexecstack is not a supported argument to -Wa.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133489 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
6af966266235cae3287d50f1a10072bc48759ba0 20-Jun-2011 Francois Pichet <pichet2000@gmail.com> Remove more unnecessary #include <llvm/ADT/SmallVector.h>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133418 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
c2e70b46b686c8debb3020891a5593f298b053ae 18-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Remove '-arcmt-modify-in-memory', it turned out less useful than we hoped it would be.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133315 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
7a883e3e1798efdb12f06e4e1b722f9a659dbac3 17-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Add support for -force_load flag, for compat with Apple gcc. rdar://9555962 .



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133218 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f85e193739c953358c865005855253af4f68a497 16-Jun-2011 John McCall <rjmccall@apple.com> Automatic Reference Counting.

Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.

Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133103 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
oolChain.h
74da19fc3a52d7e3005eeb7a7833859da84fd12a 15-Jun-2011 Douglas Gregor <dgregor@apple.com> Introduce a -cc1-level option to turn off related result type
inference, to be used (only) by the Objective-C rewriter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133025 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
4c4efee6d3113f20b41efaeec08934332d2ea40e 13-Jun-2011 Douglas Gregor <dgregor@apple.com> Eliminate the -f[no]objc-infer-related-result-type flags; there's no
reason to allow the user to control these semantics through a flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132919 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
926df6cfabf3eaa4afc990c097fa4619b76a9b57 11-Jun-2011 Douglas Gregor <dgregor@apple.com> Implement Objective-C Related Result Type semantics.

Related result types apply Cocoa conventions to the type of message
sends and property accesses to Objective-C methods that are known to
always return objects whose type is the same as the type of the
receiving class (or a subclass thereof), such as +alloc and
-init. This tightens up static type safety for Objective-C, so that we
now diagnose mistakes like this:

t.m:4:10: warning: incompatible pointer types initializing 'NSSet *'
with an
expression of type 'NSArray *' [-Wincompatible-pointer-types]
NSSet *array = [[NSArray alloc] init];
^ ~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:72:1:
note:
instance method 'init' is assumed to return an instance of its
receiver
type ('NSArray *')
- (id)init;
^

It also means that we get decent type inference when writing code in
Objective-C++0x:

auto array = [[NSMutableArray alloc] initWithObjects:@"one", @"two",nil];
// ^ now infers NSMutableArray* rather than id




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132868 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
7339902e47acacad0d6b911c54ee3aa8cbfac683 04-Jun-2011 Nick Lewycky <nicholas@mxc.ca> Revert r132630. GCC passes everything down, we aren't trying to replicate that.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132637 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f6ff3abc3a7ee63fcf279e68ef802a12d94adf08 04-Jun-2011 Nick Lewycky <nicholas@mxc.ca> GCC passes -z foo directly through to the linker (and yes -z=foo becomes
"-z =foo"). Do the same thing in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132630 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
01ba8545fb6bae2a370606b4f40f0d17eb0a8c6c 02-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Add -fno-gnu89-inline.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132468 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
fb3f4aad0436a9c40e9130598162150890c405b5 02-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Implement -fgnu89-inline. Fixes PR10041.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132460 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
3573fff02a7f021bebdf3c7f59f631eb5dccbd44 25-May-2011 Daniel Dunbar <daniel@zuster.org> Driver: Don't warn about unused PIE arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132020 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
74a63bca21a352319162505dce8310c1d6ed15cd 22-May-2011 David Chisnall <csdavec@swan.ac.uk> Change the default for supporting ObjC GC to true. This shouldn't really be in ToolChain at all, since it's a property of the objc runtime library.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131856 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
c9471b0ff1815ed0149dbfcad0f385ed8648eeb0 21-May-2011 Douglas Gregor <dgregor@apple.com> Introduce the -fdiagnostics-format=xxx option to control how Clang
prints the file, line, and column of a diagnostic. We currently
support Clang's normal format, MSVC, and Vi formats.

Note that we no longer change the diagnostic format based on
-fms-extensions.

Patch by Andrew Fish!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131794 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
46a49391efab20d7a2a1c18f22edb3d76b465252 19-May-2011 Joerg Sonnenberger <joerg@bec.de> Correction for r131662, the GNU as option is --fatal-warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131671 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
d793350dee89688f1cc939096dc60c3bc15c20fe 19-May-2011 Joerg Sonnenberger <joerg@bec.de> Support -fatal-warnings for the assembler frontend


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131662 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
3dc05418538c719fea48b906bfa4febe5296e126 05-May-2011 Nick Lewycky <nicholas@mxc.ca> Preserve the full name of the file, so that '-c -o foo.pic.o' produces
foo.pic.gcno instead of foo.gcno.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130899 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c1598700010cea9364a58a65e967b0b56361b6aa 05-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Change cycle detection to be based off of a warning flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130898 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
5ea4f44e34449a78d6b38aa47c14b527839d7aac 04-May-2011 Nick Lewycky <nicholas@mxc.ca> Record where the GCOV data files should be placed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130866 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
fe57eef44cc80e5bb51e4f484835be08b8d84256 04-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement a better version of delegating constructor cycle detection.

This is more efficient as it's all done at once at the end of the TU.
This could still get expensive, so a flag is provided to disable it. As
an added bonus, the diagnostics will now print out a cycle.

The PCH test is XFAILed because we currently can't deal with a note
emitted in the header and I, being tired, see no other way to verify the
serialization of delegating constructors. We should probably address
this problem /somehow/ but no good solution comes to mind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130836 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
1a584022c86bd0778cf7ad1fbea08c78869cf216 02-May-2011 Eric Christopher <echristo@apple.com> Add the -mstackrealign option which just communicates the need to
force align the stack to the backend.

Fixes rdar://9289631


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130725 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
f24a151d645abc89f94aa58ad59f3131502041b1 30-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Implement -fno-dwarf2-cfi-asm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130616 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
9d609f2b0dd604879f8b284ded1f14ba300e8070 30-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Sketch initial support for a -mios-simulator-version-min= flag
and associated deployment target environment variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130591 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a0fa203f04235cb6d05eeb8cea3392a01aa7571b 30-Apr-2011 Bob Wilson <bob.wilson@apple.com> Add -Oz option and use it to set the inline threshold to 25.
Radar 9333566. Patch by Chad Rosier!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130554 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c69a505cfa318d571ce8a0cd038c8d958585a735 23-Apr-2011 Jay Foad <jay.foad@gmail.com> Remove unused STL header includes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130068 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
f8c247d247f9f7ab2bf4965677e6d056711c99d5 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Move all of the logic for __DEPRECATED to the driver based on comments
from dgregor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130066 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
1cfe3c305c0d5393fd94167808b8f5d96cd65227 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Fix Clang's __DEPRECATED define to be controled by -Wdeprecated. This
matches GCC behavior which libstdc++ uses to limit #warning-based
messages about deprecation.

The machinery involves threading this through a new '-fdeprecated-macro'
flag for CC1. The flag defaults to "on", similarly to -Wdeprecated. We
turn the flag off in the driver when the warning is turned off (modulo
matching some GCC bugs). We record this as a language option, and key
the preprocessor on the option when introducing the define.

A separate flag rather than a '-D' flag allows us to properly represent
the difference between C and C++ builds (only C++ receives the define),
and it allows the specific behavior of following -Wdeprecated without
potentially impacting the set of user-provided macro flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130055 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
50465d1d2f5f6dd3d8e18e2cf7bad4691e5ca6a8 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> There were some frustrating problems with the implementation of
-Wwrite-strings. First and foremost, once the positive form of the flag
was passed, it could never be disabled by passing -Wno-write-strings.
Also, the diagnostic engine couldn't in turn use -Wwrite-strings to
control diagnostics (as GCC does) because it was essentially hijacked to
drive the language semantics.

Fix this by giving CC1 a clean '-fconst-strings' flag to enable
const-qualified strings in C and ObjC compilations. Corresponding
'-fno-const-strings' is also added. Then the driver is taught to
introduce '-fconst-strings' in the CC1 command when '-Wwrite-strings'
dominates.

This entire flag is basically GCC-bug-compatibility driven, so we also
match GCC's bug where '-w' doesn't actually disable -Wwrite-strings. I'm
open to changing this though as it seems insane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130051 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
8387e2a41eef6fa17fb140a18c29b6eee9dd2b8a 23-Apr-2011 Francois Pichet <pichet2000@gmail.com> Add -fdelayed-template-parsing option. Using this option all templated function definitions are parsed at the end of the translation unit only if it is required by an actual instantiation. As such all the symbols of the TU are available during name lookup.

Using this flag is necessary for compatibility with Microsoft template code.
This also provides some parsing speed improvement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130022 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
e8ba8d78a258ec992d3521eebdae8324db777b14 22-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Wire up the -ftest-coverage and -fprofile-arcs flags to .gcno file emission (at
compile time) and .gcda emission (at runtime). --coverage enables both.

This does not yet add the profile_rt library to the link step if -fprofile-arcs
is enabled when linking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129956 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
723b1782460bc448d9d865e9b828c09d26a50964 21-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Alphabetize this one flag, just to pull it out of my patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129941 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
877ded8532736d49b3cda8708cf0e5e9c44a760b 18-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Support -fno-lto.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129712 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7d2b8c1fcc2b707be78b09930a7767477822462f 16-Apr-2011 Douglas Gregor <dgregor@apple.com> Initial work to improve documentation for Clang's diagnostics, from Matthieu Monrocq

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129614 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
riverDiagnostic.h
ptions.td
fc8f0e14ad142ed811e90fbd9a30e419e301c717 15-Apr-2011 Chris Lattner <sabre@nondot.org> fix a bunch of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129559 91177308-0d34-0410-b5e6-96231b3b80d8
ptParser.td
f077c0d4bb1598f9201cdc38592634ca8922da6c 12-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Don't treat -m{abi,arch,cpu,cmodel}= as "driver" options, they don't
modify the driver planning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129396 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a5fc472b353b88be3b4981da946fb01f5a5cc0c6 10-Apr-2011 John McCall <rjmccall@apple.com> Fix a bunch of major problems with __unknown_anytype and properly test
for them. The only major missing feature is references.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129234 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
b8a3e8139b9fe513500c89bbcd9133415654a689 09-Apr-2011 Dylan Noblesmith <nobled@dreamwidth.org> refactor -ccc-gcc-name code

Put the logic for deciding the default name for gcc/g++
in the only place that actually cares about it.

This also pushes an ifdef out of the generic driver code
to a little further down, when the target is actually known.
Hopefully it can be changed into just a runtime check
in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129212 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
49af1f3cedc55726e4a3dd343eb4a8e24eab8439 08-Apr-2011 Evan Cheng <evan.cheng@apple.com> Rename -mtrap_function= to -ftrap_function= since it's now a target neutral options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129153 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b20e442b31287b7e926a118dec36bddc34dbe730 08-Apr-2011 Evan Cheng <evan.cheng@apple.com> Add -mtrap_function=<> option. rdar://9257465

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129145 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
089f872fedb175f7569f24f1dba362ffbc403528 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Don't attempt to forward some Clang-only options to cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129108 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
08c6695f6018fb6cb1a7c7d311a851aa5c233bc0 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Sketch support for -diagnostic-log-file, which still doesn't do anything.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129086 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c8a22b091677c02003880166e5d5767ca8d74b70 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Sketch driver support for a CC_LOG_DIAGNOSTICS options, similar to the
existing CC_PRINT_OPTIONS and CC_PRINT_HEADERS, which can be used to
transparently capture the compiler diagnostics from a build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129082 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
4c8acc9b0158081635e1dabd49304377ae67ca98 05-Apr-2011 Michael J. Spencer <bigcheesegs@gmail.com> Fix spelling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128896 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
832316e9a04242972f4b57281dccb8e4cf5894ea 05-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move Driver::createInvocationFromArgs function to Frontend library to avoid dependency cycle
between libFrontend and libDriver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128852 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
054e4f50e2f1995e91b0cd3c3258aa252785fe3f 04-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Driver::createInvocationFromArgs used to create a CompilerInvocation from command-line args.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128848 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
a6c530868fd8ca54b0a2e00f3a623af72e8dc979 30-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Silence warnings of unkwown -Wlarger-than and -Wframe-larger-than. Fixes rdar://6970318.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128560 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
969323239f16589329d091a2b8ef200fcfe7c9e9 29-Mar-2011 Daniel Dunbar <daniel@zuster.org> Integrated-As: Support -Wa,-L when using the integrated assembler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128433 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
402adc3bc0ddbbb46cb0b8d29812a9c2f605ec4f 29-Mar-2011 Daniel Dunbar <daniel@zuster.org> Frontend/cc1as: Add support for -L.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128432 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
abaca7a8be8e79cc01354676e3bcb26575640311 27-Mar-2011 Chandler Carruth <chandlerc@gmail.com> Add an option to suppress include stack printing on note diagnostics.
These stacks are often less important than those on primary diagnostics.

As the number of notes grows, this becomes increasingly important. The
include stack printing is clever and doesn't print stacks for adjacent
diagnostics from the same file, but when a note is in between a sequence
of errors in a header file, and the notes all refer to some other file,
we end up getting a worst-case ping-pong of include stacks that take up
a great deal of vertical space.

Still, for now, the default behavior isn't changed. We can evaluate user
feedback with the flag.

Patch by Richard Trieu, a couple of style tweaks from me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128371 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
5adb5a84bfb4f2e5f1ea28fdfc6ee1cd9b622c60 27-Mar-2011 Chandler Carruth <chandlerc@gmail.com> Add -f[no-]strict-overflow to the Clang driver. Use it to set the
default for -fwrapv if that flag isn't specified explicitly. We always
prefer an explict setting of -fwrapv when present. Also adds support for
-fno-wrapv to allow disabling -fwrapv even when -fno-strict-overflow is
passed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128353 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7f9fc3f7ce076645cb6aefc99c64d9446caf13d6 23-Mar-2011 Chris Lattner <sabre@nondot.org> switch a few Driver APIs to use llvm::ArrayRef, cleaning up code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128142 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
3c66d30d513106bb794990c5e4ba36a31ac19f15 22-Mar-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Add a more explicit -backend-option flag for passing backend command
line options, instead of leveraging the blanket -mllvm option.
- This allows using the frontend itself without requiring the backend have
those options available (i.e., if the target wasn't built).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128087 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
05e5930166333e382522b942f00d08abc6c0a28e 21-Mar-2011 Joerg Sonnenberger <joerg@bec.de> Memorize presence/absence of -nostdlib in Driver.
Drop program paths on NetBSD (unused). Only include lib dir, if
-nostdlib is absent. Use = to allow --sysroot to work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127995 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
8ab2bdcc4f397e100c684ede8e8ca6e226e1380a 21-Mar-2011 Joerg Sonnenberger <joerg@bec.de> Remember sysroot in Driver. Pass it down to ld for NetBSD, FreeBSD
and DragonFly. Use the --sysroot= form for Linux. Fix handling of =
prefix for -B.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127994 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
207f4d8543529221932af82836016a2ef066c917 18-Mar-2011 Peter Collingbourne <peter@pcc.me.uk> Add support for language-specific address spaces. On top of that,
add support for the OpenCL __private, __local, __constant and
__global address spaces, as well as the __read_only, _read_write and
__write_only image access specifiers. Patch originally by ARM;
language-specific address space support by myself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127915 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
2ed42287b9b88a0bb08ab10e95e306da3f294ba9 18-Mar-2011 Daniel Dunbar <daniel@zuster.org> Lexer: Add extremely limited support for -traditional-cpp, ignoring BCPL
comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127910 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ac0659ae4124156915eddf70e78065df224d34c8 18-Mar-2011 Daniel Dunbar <daniel@zuster.org> Driver: Give SelectTool access to the action inputs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127902 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
32096695c76033a6b0b1747c439f7378a11e8312 18-Mar-2011 John McCall <rjmccall@apple.com> The Darwin kernel does not provide useful guard variable support.
Issue this as an IR-gen error; it's not really worthwhile doing this
"right", i.e. in Sema, because IR gen knows a lot of tricks beyond
what the constant evaluator knows.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127854 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
b0f4b9a558933b307073f7cd7753602f94354ae9 09-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce '-chain-include' option to specify headers that will be converted to chained PCHs in memory
without having to use multiple runs and intermediate files.

Intended for testing & debugging of chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127339 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
65f7165676854bf75494f5b73a620d7237db5d41 07-Mar-2011 Joerg Sonnenberger <joerg@bec.de> Redo part of r127137:
Pass down the correct C->getArgs, but keep it with the original
DerivedArgList type. Slightly adjust the MakeIndex call for the
different base type. This unbreaks the handling of --no-mangle on Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127142 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
e6ec11aa15c7104d57009c6e036bf4ae29c35fb2 07-Mar-2011 Douglas Gregor <dgregor@apple.com> Remove the AST printer (-ast-print-xml), which is too incomplete and
too low-level to actually be useful but is just interesting enough for
people to try to use it (which won't actually work beyond toy examples).

To bring back the AST printer, it needs to be:
- Complete, covering all of C/C++/Objective-C
- Documented, with appropriate Schema against which we can validate
the output
- Designed for C/C++/Objective-C, not Clang's specific ASTs
- Stable across Clang versions
- Well-tested


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127141 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
9ade4ae4fb7ed1fcbd63835d9f8f53052f0657a2 07-Mar-2011 Joerg Sonnenberger <joerg@bec.de> If called as *cpp or *cpp-[^-]*, run only the preprocessor. If no
input is specified, use stdin implicitly. Based on a patch from
Roman Divacky.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127137 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
bbe8e3eff56ac1d79f3668d706536e3cebe28c18 01-Mar-2011 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Be bug compatible with GCC and ignore -pg on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126767 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
cfe9af250f466e7e38becea4428990448ae07737 01-Mar-2011 Roman Divacky <rdivacky@freebsd.org> Implement -mrtd which sets the StdCall calling convention to be the default
one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126756 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
c4d2c9074be6eb2091086eddd6c8f052f3b245c8 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126676 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
344500e3b78b95e2d911f45a64c5364d346ba799 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] The current UninitializedValuesChecker will go away, remove '-warn-uninit-values'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126673 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
15348aeb81285c75b2e92b5bf8d2db3445d147c2 28-Feb-2011 Anders Carlsson <andersca@mac.com> Add a -fcxx-exceptions flag to the frontend, which can be used to enable
C++ exceptions, even when exceptions have been turned off using -fno-exceptions.
Make the -fobjc-exceptions flag do the same thing, but for Objective-C exceptions.

C++ and Objective-C exceptions can also be disabled using -fno-cxx-excptions and
-fno-objc-exceptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126630 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
05357018b2e5e66559ad0ce2147dc1db9af42b9d 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate ArrayBoundCheckerV2 to CheckerV2.

Turns -analyzer-check-buffer-overflows into -analyzer-checker=core.experimental.Overflow

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126609 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
58f2e7c3c3860e410fa3d8252862ef10be7cdc70 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Turn -analyzer-stats into -analyzer-checker=debug.Stats

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126608 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
6dd4dffe1090e820e9b5b25eee8ad3907a1aa679 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove '-analyzer-experimental-checks' flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126607 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
116f3640daee424dfcdbe55e80be5a67476be4b0 25-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Intoduce '-analyzer-checker-help' flag which outputs a list of all available static analyzer checkers.

This is pretty basic for now, eventually checkers should be grouped according to package, hidden checkers should be indicated etc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126454 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
65d39251ff57b8e33cf6d3a7fcc6aa1c6f8cdc68 24-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove '-analyzer-experimental-internal-checks' flag, it doesn't have any checkers associated with it anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126440 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
0761e44550f094633bbe7fd4ae1d79ec456fca69 23-Feb-2011 Anders Carlsson <andersca@mac.com> Add a -fcxx-exceptions flag to clang -cc1. This controls the newly added CXXExceptions flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126300 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e9b801f7633b11b18d357a71442bd003435784e8 22-Feb-2011 Anders Carlsson <andersca@mac.com> Make clang -cc1 disable Objective-C exceptions by default, and add a -fobjc-exceptions flag to turn them on.

Update all tests accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126177 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
2df6647847af283302834dadae5d9dcefa7e0ad4 22-Feb-2011 Joerg Sonnenberger <joerg@bec.de> Bug#8945: Add -cxx-isystem option to specify C++ system directories.
It works like -isystem and the search path keeps -isystem and
-cxx-isystem in order relative to each other. -cxx-isystem is only used
for C++ sources though. Drop the existing -cxx-system-include option for
cc1 as it is now redundant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126167 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
c8da1ecaf58ff41b652dd53331aace948027039b 20-Feb-2011 Oscar Fuentes <ofv@wanadoo.es> New function for tablegenning: clang_tablegen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126093 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
da4b7cf09ebfd4e4098b516081fa9dae2f5c99e0 20-Feb-2011 Anders Carlsson <andersca@mac.com> Add a new ObjCExceptions member variable to LangOptions. This controls whether Objective-C exceptions are enabled or not (they are by default).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126061 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
8ac38d7b5d88d12f454a7cda1275bf429813151d 19-Feb-2011 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Support -Wl, with -Xarch_. This doesn't work naturally because of
the special way we model "linker input" arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126023 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
2d67b90a21c9c1093e6598809c2cbc832919cfe6 17-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Use the new registration mechanism for the debugging info "checks".

The relative checker package is 'debug':

'-dump-live-variables' is replaced by '-analyzer-checker=debug.DumpLiveVars'
'-cfg-view' is replaced by '-analyzer-checker=debug.ViewCFG'
'-cfg-dump' is replaced by '-analyzer-checker=debug.DumpCFG'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125780 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
7dd445ec20e704846cfbdb132e56539280d71311 17-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Use the new registration mechanism on the non-path-sensitive-checkers:

DeadStoresChecker
ObjCMethSigsChecker
ObjCUnusedIvarsChecker
SizeofPointerChecker
ObjCDeallocChecker
SecuritySyntaxChecker

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125779 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
9fb9474c5b267400d4abfbff63c8b39f378235d4 17-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer]
-Introduce CheckerV2, a set of templates for convenient declaration & registration of checkers.
Currently useful just for checkers working on the AST not the path-sensitive ones.
-Enhance CheckerManager to actually collect the checkers and turn it into the entry point for
running the checkers.
-Use the new mechanism for the LLVMConventionsChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125778 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
91a230a15f2aca8f6a8b7fd492525ec372a98e6b 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Eliminate the internal command-line option for viewing inheritance in C++ classes, since it's only really worked for the trivial cases anyway due to lame pseudo-parsing of the class name. The viewInheritance() function is still available for use in the debugger, where this is far more useful

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125762 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c9f2e0f286500c7e747849b3aa9c0e67a4dc90d7 15-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Use the new registration mechanism on the IdempotentOperationChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125611 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
43dee220252ef0b42c5f8a3bb1eca97f84f2565f 14-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Overhauling of the checker registration mechanism.

-Checkers will be defined in the tablegen file 'Checkers.td'.
-Apart from checkers, we can define checker "packages" that will contain a collection of checkers.
-Checkers can be enabled with -analyzer-checker=<name> and disabled with -analyzer-disable-checker=<name> e.g:
Enable checkers from 'cocoa' and 'corefoundation' packages except the self-initialization checker:
-analyzer-checker=cocoa -analyzer-checker=corefoundation -analyzer-disable-checker=cocoa.SelfInit
-Introduces CheckerManager and CheckerProvider. CheckerProviders get the set of checker names to enable/disable and
register them with the CheckerManager which will be the entry point for all checker-related functionality.

Currently only the self-initialization checker takes advantage of the new mechanism.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125503 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
be4c8705e499b55548467eb7adaa23cbc6edfef9 10-Feb-2011 Roman Divacky <rdivacky@freebsd.org> Implement mcount profiling, enabled via -pg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125282 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
17d3fea677753e6e3e82ffe2cbdeccbf5f2e7497 09-Feb-2011 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Wire up -mregparm=.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125201 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
d767d81290288c030f3be0be1d3e62b9c8df51dc 09-Feb-2011 Ted Kremenek <kremenek@apple.com> static analyzer: Further reduce the analyzer's memory usage when analyzing sqlite3 by 7-10% by recylcing "uninteresting" ExplodedNodes.

The optimization involves eagerly pruning ExplodedNodes from the ExplodedGraph that contain
practically no difference between the predecessor and successor nodes. For example, if
the state is different between a predecessor and a node, the node is left in. Only for
the 'environment' component of the state do we not care if the ExplodedNodes are different.
This paves the way for future optimizations where we can reclaim the environment objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125154 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
09982cec0029bc495591067fa89967b6b4d1fa19 08-Feb-2011 Benjamin Kramer <benny.kra@googlemail.com> Allow multiple -B prefixes. Patch by Joerg Sonnenberger.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125111 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
398c610b16728b4398214367dd0effd9d2e61340 04-Feb-2011 Daniel Dunbar <daniel@zuster.org> build: Add support for DISABLE_DEFAULT_STRICT_ALIASING, which does what one
might expect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124848 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
322c29fefe7fa33f03273136eb5f8b7f5b4df7c0 02-Feb-2011 Daniel Dunbar <daniel@zuster.org> clang: Add support for a CC_PRINT_HEADERS environment variable, which mirrors
CC_PRINT_OPTIONS and can be used to get some out-of-band information on header
usage from a build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124751 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
b34d69b9292534c1c574f168f0ac10aea652adca 02-Feb-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Add -header-include-file option, for allowing saving header include
information to a file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124750 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
8e50a96b387dca7525caa8a6add31420dd82a2cd 02-Feb-2011 Benjamin Kramer <benny.kra@googlemail.com> Add NetBSD target support. Patch by Joerg Sonnenberger.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124736 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
6f75550e40a9177db9979fc130ce3ece026b137d 01-Feb-2011 Douglas Gregor <dgregor@apple.com> Basic support for -mms-bitfields, from Carl Norum!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124661 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
418df343bb50802586d20aae3b83e2eb44c6c828 27-Jan-2011 Douglas Gregor <dgregor@apple.com> Separate the access-control diagnostics from other diagnostics that do not have SFINAE behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124441 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
bd5a94e263137dc3ce7c100485626bae025cf58e 26-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Enable the self-init checker under command-line option '-analyzer-check-objc-self-init' which by default
is enabled by the driver for '--analyze'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124266 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
5aa74affa5d61d04c4b034b3722ca41aec0cba6e 25-Jan-2011 Nico Weber <nicolasweber@gmx.de> Add -add-plugin flag, which runs plugins in addition to codegen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124227 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
3176cca2fe2bb9ab061e8e5fc05b4d59403fcf19 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Add support for the --noexecstack option. Fixes PR8762.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124078 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
bc6f0daca4676989116e9c6b8dafeb01ec34252d 11-Jan-2011 Eric Christopher <echristo@apple.com> Add back 122079 so we can ignore the argument some more.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123271 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f84109ee6aeffb09366bd70c8593ce1b7818b1ad 07-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> Update AST reader/writer to handle new AppleKext.
Fix an unexpected hickup caused by exceeding size of
generated table (and a misleading comment). Improve
on help message for -fapple-kext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123003 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
b466d01e464b21832c23eeed90112bc5c26c0236 07-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> Add all options needed to support -fapple-kext. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122987 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
112c3307aaa9ae9ee6ff5c2b4f6a53b1ea3c6f19 04-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> Fold -fobjc-nonfragile-abi2 into -fobjc-nonfragile-abi.
// rdar://8818375



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122831 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c32647d111e516593b9ba242cad7b8ff4016c155 23-Dec-2010 Ted Kremenek <kremenek@apple.com> Add -fobjc-default-synthesized-properties flag
to allow us to explicitly control whether or
not Objective-C properties are default synthesized.
Currently this feature only works when using
the -fobjc-non-fragile-abi2 flag (so there is
no functionality change), but we can now turn
off this feature without turning off all the features
coupled with -fobjc-non-fragile-abi2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122519 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
oolChain.h
c478a1425c055e517169220ea1c1efd857e65f52 23-Dec-2010 Ted Kremenek <kremenek@apple.com> Add WIP prototype of a new buffer overflow
checker based on using raw (symbolic) byte offsets
from a base region.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122469 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
df344dfb663f99184e734f5d14b5fc9b2725aec2 17-Dec-2010 Eric Christopher <echristo@apple.com> Going back to the drawing board with these two awful hacks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122096 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
154f251c6f47c68ba7c19ed1d5fb873de9fdece2 17-Dec-2010 Eric Christopher <echristo@apple.com> Nom nom nom, tasty unused option with an argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122079 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
91252d115bdb6f937192a8dbc86c5abe00101436 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-std=

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120882 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
4400cb8c548a90c472444b57690117563f4be195 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-mad-enable

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120881 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f0840820b4e28fd0cc04d737382811d7372cb832 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-fast-relaxed-math

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120880 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
5f67e13fcdc3c33e9cd5d027bfbb677b726c6f6a 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-unsafe-math-optimizations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120879 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
5d729a3d8eeba59ed97119998f2135ad6d45e876 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-finite-math-only

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120878 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
0982136cb748f4a842141bf199d133126d6be882 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-single-precision-constant

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120877 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
61e07861dd3a70c31f658bad8c4b911994e4933b 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-opt-disable

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120876 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
895fcca55a6d52a71639f2472a6623ab2dd9f628 01-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Driver, Frontend: add CUDA language support

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120544 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
03013fa9a0bf1ef4b907f5fec006c8f4000fdd21 29-Nov-2010 Michael J. Spencer <bigcheesegs@gmail.com> Merge System into Support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120297 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
oolChain.h
f35142413974e9dfe2c5f202084db4bd1c2073e9 24-Nov-2010 John McCall <rjmccall@apple.com> Add -cc1 -ast-dump-xml, an excessively detailed XML dump of the internals
of the ASTs. Only available in assertions builds. No stability guarantee.

This is intended solely as a debugging tool. I'm not sure if the goals
are sufficiently aligned with the XML printer to allow a common
implementation.

Currently just falls back on the StmtDumper to display statements,
which means it doesn't produce valid XML in those cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120088 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
a4c2475961184a4bad6f6f087eeb1038bb784cad 21-Nov-2010 Anders Carlsson <andersca@mac.com> Forward the -fno-elide-constructor argument to clang -cc1. Fixes PR8652.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119915 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
1380a147d4578b619c215b23aa79ce17036d3c46 18-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Rename -Wargument-larger-than -> -Wlarge-by-value-copy
-Improve the diagnostic message
-Add some comments

Suggestions by Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119594 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
3532fdd1db8ff6f353f2a5b215cebe3e0e2ff3c2 18-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-value
or return by-value any POD that is larger than some threshold (default is 64 bytes).

Implements rdar://8548050.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119583 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
fdda17179047ff0b5e28cc777dc89ebc42f083cf 17-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Implement -pie.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119577 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
dc1b76ddfc687c713a55cc9e3e054e9a0de1aa74 07-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Add support for -rdynamic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118384 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c1da981bba867681004004b2d54ec2fdf3c08913 07-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Use ld directly on linux. Changes from the previous try:
*) Try to detect as much as possible from the system itself, not the distro.
This should make it easier to port to a new distro and more likely to
work on a unknown one.
*) The distro enum now doesn't include the arch. Just use the existing
host detection support in LLVM.
*) Correctly handle --sysroot.

A small regression is that now clang will pass bitcode file to the linker.
This is necessary for the gold plugin support to work.

It might be better to detect this at configure/cmake time, but doing it in
c++ first is a lot easier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118382 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
389db16c63eec6ecfa9b235155252d8da766e94e 03-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -working-directory.

When -working-directory is passed in command line, file paths are resolved relative to the specified directory.
This helps both when using libclang (where we can't require the user to actually change the working directory)
and to help reproduce test cases when the reproduction work comes along.

--FileSystemOptions is introduced which controls how file system operations are performed (currently it just contains
the working directory value if set).
--FileSystemOptions are passed around to various interfaces that perform file operations.
--Opening & reading the content of files should be done only through FileManager. This is useful in general since
file operations will be abstracted in the future for the reproduction mechanism.

FileSystemOptions is independent of FileManager so that we can have multiple translation units sharing the same
FileManager but with different FileSystemOptions.

Addresses rdar://8583824.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118203 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
138e66ffa8008b95121580f5459af45487df9803 03-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert while I debug test failures :-(

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118150 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
29a88f441fb9d82cfa898774cf6711e54bcba2ff 03-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Switch clang to run ld directly on linux. I tested this on all the linux
distros listed by running

gcc main.o -o main
g++ main.o -o main
gcc main.o -o main -static
g++ main.o -o main -static
gcc f.o -o f.so -shared
g++ f.o -o f.so -shared

and comparing the ld line with the one created by clang. I also added
-m32/m64 in distros that support it.

While I tested many distros, there will always be more. If you are hit by this
it should be somewhat easy to add your distro. If you are in a hurry, do
revert this, but please inform how to detect you distro and the ld command
lines produced by the above gcc invocations. Most distros have some patches
on gcc :-(

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118149 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
dae4ac4fe56ec60fc93b3e3c9f51e79e682084b9 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Reorganize predefined macros for all Windows targets.

This adds an option to set the _MSC_VER macro without
recompiling. This is very useful when testing compatibility
with the Windows SDK and c++stdlib headers.

-fmsc-version=<version> (defaults to VS2003 (1300))

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116999 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
20249a1af2e462dcafdd6a350f1c7967b264ff25 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116990 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
25b26ebdebe46bb4576247e0c64d1c11410a8e9d 19-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver: Reject -fasm-blocks except on X86 (where we just ignore it, since
passing it is very prevalent in some circles).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116761 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
06205ca78ca2fd4384b237f120ec66614df0d9fc 16-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver: Error on -fno-for-scope, which we have no intention of supporting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116627 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
2a8fe339fbcd92993a0e9568696ba165c2519fba 15-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Again, add '-include-pch' option to the driver, so it can get passed to the cc1 driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116608 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
63d907bc55ccb6abfc57b409cab3cfa7c0d1f38a 15-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r116605, a lot more were committed by mistake.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116606 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
721f38c7f866259e1472af775239a83d8f06f6a8 15-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add '-include-pch' option to the driver, so it can get passed to the cc1 driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116605 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
be570121a6da523020c3b11eb15aba97becb5d2f 15-Oct-2010 Devang Patel <dpatel@apple.com> TBAA = Type Based Alias Analysis


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116599 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
4d5625e15bb215c2241c022df8dc7b04438970c6 15-Oct-2010 Dan Gohman <gohman@apple.com> Wire up the -fstrict-aliasing and -fno-strict-aliasing options
to CodeGenOption flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116530 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
3e78593b1ced32b7e0a97da044213014ee0f6f7c 14-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce command line option -error-on-deserialized-decl that is accompanied by a name
and emits an error if a declaration with this name is deserialized from PCH.

This is for testing, to make sure that we don't deserialize stuff needlessly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116505 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
b972858068d2ea77f72a1e7b1812b196afd6be2e 14-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce command line option -dump-deserialized-decls which is used to print the PCH decls that got deserialized, for testing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116503 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
a9f4f620daf073805b89e893afcdc5eb7a9bdc50 12-Oct-2010 Douglas Gregor <dgregor@apple.com> Eliminate the (de-)serialization of code completion results, now that
libclang does not support out-of-process code completion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116253 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
d3ab63e0f66429abf2a3e4cde889e420e41e8790 12-Oct-2010 Douglas Gregor <dgregor@apple.com> Eliminate -fdiagnostics-binary and all of the infrastructure for
emitting diagnostics in a binary form to be consumed by libclang,
since libclang no longer does any of its work out-of-process, making
this code dead. Besides, this stuff never worked at 100% anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116250 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
9d520c5ae802fc175c61032b289ddd6968e6ddd2 11-Oct-2010 Axel Naumann <Axel.Naumann@cern.ch> Declare argv parameters as const char* const* instead of to char** to clarify that they are not modified, and to allow for string literals as arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116200 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ptTable.h
9a2b9d794bdf349b517ff799170f4409f45d147c 08-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -fshort-enums (rdar://8490496).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116020 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
c69e1cf04323f2e786d40e8a5ba84e77ee1c6827 30-Sep-2010 Devang Patel <dpatel@apple.com> Introduce -flimit-debug-info.
In this experimental mode try avoiding debug info emission for classes as much as possible. The goal is to reduce size of produced debuginfo without reducing quality of debug info in general. This is a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115188 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
9121ba232903ebe61e7bbe14ca294cf0f07dfa96 30-Sep-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added two new command line arguments:
-cfg-add-implicit-dtors - sets CFG::BuildOptions::AddImplicitDtors for AnalysisCosumer to true,
-cfg-add-initializers - sets CFG::BuildOptions::AddInitializers for AnalysisCosumer to true.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115142 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
cf9ce13774dad86f780d84cd41e6bd64c039324a 30-Sep-2010 Tom Care <tom.care@uqconnect.edu.au> Change -analyzer-max-nodes to allow 0 as a parameter. This allows the analyzer to completely analyze a worklist regardless of time taken.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115108 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e830a36053282aadb9603cb8af14a9f5b9c32968 27-Sep-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Teach clang -cc1as to respond to -v.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114863 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
e94db4771856659c12e1f269141cbbc4e55b1c47 24-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -fallow-unsupported which disables some of the eager error'ing we do
to prevent users from trying unsupported stuff. Useful for testing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114749 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
dea63134a51d463cf32f3eec3c359d9215359d69 20-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver/Objective-C: Retool Objective-C ABI flags to be more usable, and actually
document behavior. Will wonders never cease.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114334 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7433fedce98a58341d0f30c2e12e8d53f3bba575 17-Sep-2010 Shantonu Sen <ssen@apple.com> Driver: implement driver automagic support for -lcc_kext

Rewrite linker arguments to use libclang_rt.cc_kext.a
instead of gcc-specific libcc_kext.a

Resolves Radar 7808495


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114193 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
oolChain.h
7f18e67e1b577a50402e8b43508ab2311a5c45b5 17-Sep-2010 David Chisnall <csdavec@swan.ac.uk> Add a -ftrapv-handler= option which allows a handler to invoke instead of simply aborting when a signed operation overflows. This mirrors the (GCC-incompatible) behaviour from clang 1.0 and 1.1 when -ftrapv was specified, but allows the handler to be defined for each compilation unit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114192 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
d829950b2b75d50fca2772a20129323a186993a5 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support -dumpmachine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114155 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
132e35d2f87895d20e7ea146c8c00404b80221a1 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix spelling of AddCXXStdlibLibArgs, which I copy-n-pasto'd.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114147 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
e5a37f48388c7e4cc081f44d13a4910bfa56cd35 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add magic handling for "reserved library names", starting with
-lstdc++. This is the best gross solution for a gross problem.

This issue is that historically, GCC has add -L options to its internally
library directories. This has allowed users and platforms to end up depending on
the layout of GCC's internal library directories.

We want to correct this mistake by eliminating that -L, but this means that
existing libraries which are in the GCC lib dir won't be found. We are going to
handle this by treating those -l names as "reserved", and requiring toolchains
to know how to add the right full path to the reserved library.

The immediately side effect of this is that users trying to use -L to find their
own -lstdc++ will need to start using -nostdlib (which is a good idea
anyway). Another side effect is that -stdlib=libc++ -lstdc++ will now do the
"right" thing, for curious definitions of right.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114144 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
b993f5d93b994b9b0aac6aebae669621744bbed7 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add a toolchain hook for whether the system has native LLVM support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114137 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
3f16c959e30b7e7ba8e4b8d597c313fbe457206d 15-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add a -stdlib= argument which can be used to select the C++ standard
library to use.
- This is currently useful for testing libc++; you can now use 'clang++
-stdlib=libc++ t.cpp' to compile using it if installed.

- In the future could also be used to select other standard library choices if
alternatives become available (for example, to use an alternate C library).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113891 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
oolChain.h
641b98b7b52e0067beaf3978f2a8721e5d16c111 15-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Factor out some code for handling the C++ standard library.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113890 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
52d861ce41ce84d8389495ea78d97bcc962ac5ba 10-Sep-2010 Tom Care <tom.care@uqconnect.edu.au> Added AnalyzerStatsChecker, a path sensitive check that reports visitation statistics about analysis. Running clang with the -analyzer-stats flag will emit warnings containing the information. We can then run a postanalysis script to take this data and give useful information about how much the analyzer missed in a project.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113568 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
80c26f44a6f8d859a2a3babb06bd3ca8d86f2623 09-Sep-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add -cxx-system-include option which can be used to specify an
explicit list for the C++ system include directories at the -cc1 level, as an
alternative to the horrible AddDefaultCPlusPlusIncludePaths().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113505 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
79e9e9dd533de9609ef141449bf50e705fa68fd0 06-Sep-2010 Rafael Espindola <rafael.espindola@gmail.com> Make "-ccc-cxx" option work on Linux.
Patch by nobled.

I also took the opportunity to make the field private since now it is only ready from the
outside.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113138 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
400b607546a8dbfcee3b690f3d0a2fee0ea6480b 03-Sep-2010 Dawn Perchik <dawn@burble.org> Add support for Borland extensions via option -fborland-extensions
(original patch r112791 was reverted due to a bug).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112915 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
d0b4e7c8723c031cd8d743b2ff63943a3d0563ff 02-Sep-2010 Dawn Perchik <dawn@burble.org> Reverting rev 112791 - apparently -fborland-extensions is on all the time?!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112797 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
621a2f36af707747d70b8103bda6f65237fce899 02-Sep-2010 Dawn Perchik <dawn@burble.org> Add support for Borland extensions via option -fborland-extensions


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112791 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
944c42feb4f40735f3767bae59a0547a7b803e1e 28-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Ignore this flag too, Clang doesn't seem to use random numbers internally.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112342 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f7c16d903f11814e2d6780e2a2e189b7a7afc4ed 25-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add basic -H support.
- I didn't implement the GCC "multiple include guard" detection parts, because
it doesn't seem useful or obvious.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111983 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
9db9ad3f084d3c70cff01a10d4fd90901982b37b 24-Aug-2010 Chris Lattner <sabre@nondot.org> Implement -iwithsysroot, an apple extension which is a close cousin of -isystem.
Instead of implementing -isystem, I accidentally implemented this cousin. Next
up is to implement -isystem right.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111966 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
00577ada44c889fbe311d61c51a8da89e65c7c9a 24-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Move Clang "triple" computation routines to method on the
ToolChain. This fixes a potenial bad cast when running Clang on PPC code, since
the tool chain in effect is not a subclass of the Darwin one, but we were
treating it like it was.
- This introduces some gross code duplication, but the right fix for it is to
just move the Driver to start depending on the targets in libBasic, so I am
not planning on fixing it immediately.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111856 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
ff58e3610f4e12094def69eb2d6dcb4330378d8f 21-Aug-2010 Michael J. Spencer <bigcheesegs@gmail.com> Visual Studio tools used on win32 hosts when targeting win32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111748 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
c9c6b904f3fb4f515f7f041b7c49f5e3b7c53bd3 20-Aug-2010 Ted Kremenek <kremenek@apple.com> Update help text for -cc1 -unoptimized-cfg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111615 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
4786c15f4977c7cee98fde3ebdee213dba23848b 19-Aug-2010 Douglas Gregor <dgregor@apple.com> Add machine-parseable Fix-It output as part of diagnostics, under the
flag -fdiagnostics-parseable-fixits, from Eelis van der Weegen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111557 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
e55fd871b0cf3e4ebc708cf46831908d74eab40a 16-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add two options for playing with modules.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111166 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
8071e4212ae08f8014e0c3ae6d18b7388003a5cc 15-Aug-2010 Douglas Gregor <dgregor@apple.com> Extend the code-completion caching infrastructure to include global
declarations (in addition to macros). Each kind of declaration maps to
a certain set of completion contexts, and the ASTUnit completion logic
introduces the completion strings for those declarations if the actual
code-completion occurs in one of the contexts where it matters.

There are a few new code-completion-context kinds. Without these,
certain completions (e.g., after "using namespace") would need to
suppress all global completions, which would be unfortunate.

Note that we don't get the priorities right for global completions,
because we don't have enough type information. We'll need a way to
compare types in an ASTContext-agnostic way before this can be
implemented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111093 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e6674b369070cc9bef0a9e6fcab6aabd9b7924dc 14-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Increase flags to hold all necessary bits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111065 91177308-0d34-0410-b5e6-96231b3b80d8
ptTable.h
1450f265fcc84a7ca64dd9f3b8d4492c5bd55e23 13-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Add a new cc1 option -fix-what-you-can which when combined with the fix-it mode
will apply all fixes even when there were other errors in the file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111020 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
a61e5a2679d8e40de8d98fb96d051df8094f6e99 13-Aug-2010 John McCall <rjmccall@apple.com> Fix the help text on -Wwrite-strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111011 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
caeed1d3a5b366ae8fda5dda9bddc7bbb859c41f 13-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver/OptParser: Add a NoForward flag to prevent forwarding certain options to
GCC.
- Mark -Xclang and -mlinker-version= with it for now, although I am sure there
are more.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111005 91177308-0d34-0410-b5e6-96231b3b80d8
ptParser.td
ptTable.h
ption.h
ptions.td
279b5eb6910d64a293e9c0e2887a05c65d8737d7 13-Aug-2010 John McCall <rjmccall@apple.com> Just disable the hidden-visibility optimization for now by hiding it behind
a -cc1 option. The Darwin linker complains about mixed visibility when linking
gcc-built objects with clang-built objects, and the optimization isn't really
that valuable. Platforms with less ornery linkers can feel free to enable this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110979 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
a77a723489b0cff63bf90f23416e10b8b6fc1f55 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Use the compile time linker version as the default for -mlinker-version,
if detected.
- This is a hack, we really want the linker version at execution time, but we
don't have any infrastructure for getting that. Yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110886 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c176bc6be6f1407e7c6bd062f05a8636ea9a08e3 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -mlinker-version=, which forwards to -target-linker-version.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110872 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
39065a5494613952b4810d1d6b28348cef155e12 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add -target-linker-version, for specifying the version string of the
linker in use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110871 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ba30bbe4e36a30a274da809a11a42f9cdc168e92 10-Aug-2010 Rafael Espindola <rafael.espindola@gmail.com> Run the assembler instead of gcc on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110635 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
f84d409903dd4107c8cef5a08fcfce6e5c21d4de 08-Aug-2010 Eric Christopher <echristo@apple.com> Make -funroll-loops turn on loop unrolling in the optimizer instead
of just ignoring it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110525 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
1fafd1d96419f587763d1b81332d8f476aeace2e 07-Aug-2010 Tom Care <tcare@apple.com> Removed IdempotentOperationChecker from default analysis and returned back to a flag (-analyzer-check-idempotent-operations)
- Added IdempotentOperationChecker to experimental analyses for testing purposes
- Updated test cases to explictly call the checker

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110482 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
7377ed985bb2a529d1abb4ebea88586e5d195d1b 05-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add -mavx and -mno-avx command line support

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110265 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
5fcefd965990899b9093656a5242be5a273d7135 04-Aug-2010 Eric Christopher <echristo@apple.com> Accept and ignore (for now) -funroll-loops.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110190 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
9b823e8e1ccb8a2cb49923bad22a80ca96f41f92 03-Aug-2010 Ted Kremenek <kremenek@apple.com> Add -cc1 option '-unoptimized-cfg' to toggle using a CFG (for static analysis) that doesn't prune CFG edges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110087 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
4180011fb8cef06adec04d30486b1bf3b99aa8b8 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Move HostInfo::lookupTypeForExtension to ToolChain::LookupTypeForExtension.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110024 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
oolChain.h
74edcea3db1f85ba73ad0fede2ed5e2f096cac4b 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Give Build{Universal,}Actions access to the default host tool chain. I
avoided this originally to enforce that the driver actions aren't toolchain
dependent, but it isn't worth the cumbersone additional hostinfo split.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110023 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
2fe238ed293bd4bc27af9beb9fa151fad2146fa8 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add Compilation::addCommand and switch tools to using it, now that we
don't have to deal with nested jobs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110015 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
ool.h
d0b77e1a47580dd9fd621433e9ac41258837a17a 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate PipedJob, which is now unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110014 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
8c631e3b6fb4d838809852e85ba4145be45a221f 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate now unnecessary tool hooks for whether they accept piped input/output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110012 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ool.h
e4341253cc5d9c05c256b90eb3f816d256264ceb 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate now unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110010 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
edf29b00bc1641034b38be92146e15f0625a45d2 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Keep track of a separate "install dir", which is the path where clang
was invoked from (which may not be where the executable itself is).
- This allows having e.g., /Developer/usr/bin/clang be a symlink to some other
location, while still making sure the Driver finds 'as', 'ld', etc. relative
to itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109989 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
fae3b2f4743dad616623c4df2fdb0f5128bd36d9 27-Jul-2010 Douglas Gregor <dgregor@apple.com> Implement -fno-validate-pch at the -cc1 level, which suppresses most
of the usual consistency checks used to determine when a precompiled
header is incompatible with the translation unit it's being loaded
into.

Enable this option when loading a precompiled preamble, because the
preamble loader will be performing all of this checking itself. Enable
the preamble-based test now that it's working.

This option is also useful for debugging Clang's PCH
(<rdar://problem/7532213>).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109475 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f4f6c9db68465b886ec2e596feaa6ecc782395a4 26-Jul-2010 Douglas Gregor <dgregor@apple.com> Introduce basic support for loading a precompiled preamble while
reparsing an ASTUnit. When saving a preamble, create a buffer larger
than the actual file we're working with but fill everything from the
end of the preamble to the end of the file with spaces (so the lexer
will quickly skip them). When we load the file, create a buffer of the
same size, filling it with the file and then spaces. Then, instruct
the lexer to start lexing after the preamble, therefore continuing the
parse from the spot where the preamble left off.

It's now possible to perform a simple preamble build + parse (+
reparse) with ASTUnit. However, one has to disable a bunch of checking
in the PCH reader to do so. That part isn't committed; it will likely
be handled with some other kind of flag (e.g., -fno-validate-pch).

As part of this, fix some issues with null termination of the memory
buffers created for the preamble; we were trying to explicitly
NULL-terminate them, even though they were also getting implicitly
NULL terminated, leading to excess warnings about NULL characters in
source files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109445 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
3d398aa5c2be8919bbc0144bce611c48119bc861 26-Jul-2010 Douglas Gregor <dgregor@apple.com> When LIBCLANG_CODE_COMPLETION_LOGGING is set in the environment, log code-completion command lines to stderr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109395 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
87c300738174924453648c3b2d6f366c8284fac4 26-Jul-2010 Douglas Gregor <dgregor@apple.com> Eliminate the "minimal" and printing parser actions, which only ever
worked for C anyway. Also kills the -cc1 options -parse-noop and
-parse-print-callbacks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109392 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f033f1da4a34f8df6e95e9929dc04ff54bb8fb01 20-Jul-2010 Douglas Gregor <dgregor@apple.com> Introduce a new lexer function to compute the "preamble" of a file,
which is the part of the file that contains all of the initial
comments, includes, and preprocessor directives that occur before any
of the actual code. Added a new -print-preamble cc1 action that is
only used for testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108913 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
0bbad519aa068206f1e158d5073f72a39fbe83c5 19-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change the driver to take the path to the main executable, instead of
taking it in pieces.
- Fixes a problem where the Clang executable path was not initialized properly
on Win32, because sys::Path::getBasename() doesn't do what I always think it
does. Imagine that, a sys::Path interface that is confusing!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108667 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
a001c1ce5fcb669624a5b8e50d0a629d673da901 18-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix a possible use after free.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108659 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
df4ca423ec7d9b62842e112d1b824faa08b64810 16-Jul-2010 Tom Care <tcare@apple.com> Improved false positive rate for the idempotent operations checker and moved it into the default path-sensitive analysis options.
- Added checks for static local variables, self assigned parameters, and truncating/extending self assignments
- Removed command line option (now default with --analyze)
- Updated test cases to pass with idempotent operation warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108550 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
d55519bf1df142246537640b0a7011db81db2b94 15-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Allow -m{ios,macosx}-version-min= to be passed with -Xarch.
- This should be safe, because the driver itself shouldn't need to make
decisions that depend on the deployment target.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108425 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
40228c109e5516c0d3c65832271ee2cca931f102 15-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support 'clang -x ir ...'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108391 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
b9a822639c570b1853c75c235e9d6bad485f9e01 14-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: When re'execing clang, use path to the main executable instead of
looking up Clang in the normal search paths (which may end up finding the wrong
clang).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108346 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
4a7e88978cf646ad10d654020cb00b3877069210 14-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Remove some unused arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108345 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
47e879dfa735f81472a51b1bd69cc4eb9159db39 14-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Pass -pie/-no_pie to the linker when -fpie/-fno-pie and friends
are explicitly given.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108297 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ptions.td
a0068fc64351db9c47916566e3b85ab733cd8d6d 09-Jul-2010 Douglas Gregor <dgregor@apple.com> Introduce -f{no-}spell-checking options to enable/disable
spell-checking. By default, spell-checking is enabled for Clang
(obviously) but disabled in CIndex for performance reasons.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107992 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
d6ac4524cd441808f152f7e10900a8315ea31c08 09-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add a frontend option -chained-pch and don't pass an active PCH reader to the PCH writer if it is not set, preventing creation of chained PCH files. Since the reader is so far unused, effectively no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107936 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
38e317d6dce161b249508686cc67eb7176958762 07-Jul-2010 Chris Lattner <sabre@nondot.org> add driver support for minix, patch by Kees van Reeuwijk
from PR7583


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107788 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
db2fa8a7eb67b1e8f32a590b8e000e1259cff91a 06-Jul-2010 Tom Care <tcare@apple.com> Added a path-sensitive idempotent operation checker (-analyzer-idempotent-operation). Finds idempotent and/or tautological operations in a path sensitive context, flagging operations that have no effect or a predictable effect.

Example:
{
int a = 1;
int b = 5;
int c = b / a; // a is 1 on all paths
}

- New IdempotentOperationChecker class
- Moved recursive Stmt functions in r107675 to IdempotentOperationChecker
- Minor refactoring of SVal to allow checking for any integer
- Added command line option for check
- Added basic test cases

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107706 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
63cbbeecba87b00913c8dfca170f62ec24473365 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: .dSYM suffix should be appended, not replace the existing suffix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107369 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
1ad6648cce57bd187f1853f58fef26cd9bf4934f 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver/IRgen: Add support for -momit-leaf-frame-pointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107367 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
a4d71455f0d418e16cc0c5c5aa55a3bad3494aee 26-Jun-2010 Chris Lattner <sabre@nondot.org> Implement support for -fwrapv, rdar://7221421

As part of this, pull together trapv handling into the same enum.

This also add support for NSW multiplies.

This also makes PCH disagreement on overflow behavior silent, since it
really doesn't matter except for warnings and codegen (no macros get
defined etc).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106956 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
e4eae6a5768357edbed80034cbc4670dde313b4d 23-Jun-2010 Daniel Dunbar <daniel@zuster.org> Support -mios-version-min= as an alias for -miphoneos-version-min=.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106587 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7255a2d997b15beae82e627052fdb1b2474495c2 22-Jun-2010 Chris Lattner <sabre@nondot.org> implement support for -finstrument-functions, patch by Nelson
Elhage!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106507 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
3177aae51a21f61ab483c52f97124bdb707da7f1 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Allow passing -cc1 level arguments to plugins. Patch by Troy Straszheim!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106113 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
7ccecb72cb8e0a77139526bd090cf8c68ba178cd 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Ignore -ffast-math and -f[no-]finite-math-only.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106112 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7cf84d66965a7706004d8590b5af5fe54b85f525 15-Jun-2010 Douglas Gregor <dgregor@apple.com> Implement -fvisibility-inlines-hidden. <rdar://problem/7819834>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106003 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
f78925f633e949f06521d9ffd937019e59f35efc 14-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Dissect -Wl, and -Xlinker arguments to remove --no-demangle, which was a
collect2 option that is passed by some projects (notably WebKit).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105964 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
ptions.td
0e10031ba5d0f9b3e5bc5570f39382d288779ab8 14-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate uses of Arg::getIndex.

Also, fix a memory leak.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105963 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
9d0863b22faef1678eb191bbab7268809be60a96 14-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add DerivedArgList::AddFOOArg helper functions, and switch to using them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105957 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
be21cd0f07726045367861d3882d18ef30f6a30c 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Switch Compilation to return the translated arguments by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105844 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
279c1dbebf37cd128f3c73c70741a6b8c35ad025 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add an explicit argument translation phase to the driver itself. We are going to need this to handle things like -Xassembler, -Xpreprocessor, and -Xlinker which we might have to introspect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105842 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ompilation.h
river.h
oolChain.h
3612bc80fabcdd337f6d1df06e69b38c2c5f5a32 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Get rid of the proxy support in DerivedArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105841 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
785e7963343c91c16e6d7c8f301eee145d06da5b 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change OptTable::ParseArg to take any ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105839 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ptTable.h
ption.h
7e4953e5c60409007545288f14b430bd23d68570 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix arg_iterator typing to reflect that it is really an iterator over Arg*s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105838 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
5edbdcc62098e305cd55654814dcf783a3f3c477 11-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Add an option -fshow-overloads=best|all to limit the number of overload
candidates printed. We default to 'all'. At the moment, 'best' prints only
the first 4 overloads, but we'll improve that over time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105815 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
98b7c5c496dfccb39287b8f7d8f1444594936d10 11-Jun-2010 Charles Davis <cdavis@mines.edu> Add an option to specify the target C++ ABI to the frontend. Use it to
select either the default Itanium ABI or the new, experimental Microsoft ABI.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105804 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ed5d5eea46a6fe7ed22ed97f00a60c16d1f7e7a5 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Also mark -F as RenderJoined, the linker doesn't like "-F FOO" either.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105789 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
482f1c8c4dd6e4a85ecc6f791ad377c58f8632bf 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: -L should be marked as RenderJoined, the linker doesn't like "-L FOO".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105765 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
8a9b18c04ccfb2abcec831f41c6e05f399c48406 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate flags on aliases, they are unnecessary (and unused).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105764 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
3856ab3502676efabceb91fc5ca978810a35aeca 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change Option parsing to always create arguments referring to unaliased
options.
- This matches the intent of the .td files, and will simplify alias handling.
- PR7321.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105763 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
532c1ec307b8689e95896a11ce5ae4661fa9e5d3 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate Arg subclasses, which are now unnecessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105762 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
e375c4a02ac6e18b166a067b8226e15a1ab009e7 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Keep the rendering style in the option, instead of as part of the Arg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105761 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
ption.h
4465a776a56de81211ae4672e5782c6bef075135 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change Arg to just hold the values directly, instead of implicitly
deriving them from the Arg type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105760 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
e5af3b3eef8dd3b2b9516f89825d0f0b4d09c0cf 09-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert "Driver: Change Option parsing to always create arguments referring to
unaliased", this isn't quite right yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105747 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
22685f40dbb458c0ef18f5fec35f4f7cdb0886c9 09-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change Option parsing to always create arguments referring to unaliased
options.
- This matches the intent of the .td files, and will simplify alias handling.
- PR7321.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105744 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
312a8b726e24078d3bd3b2328f9f895d1407cdb7 09-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add an explicit offset to JoinedArg and JoinedAndSeparateArg, so that
they can be independent of the exact option that created them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105739 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
afed099bd2e759efd4bb63fdc525d3445f94cc13 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Makefile: Switch Clang Makefiles to always include the top-level Clang Makefile.
- This eliminates most dependencies on how Clang is installed relative to LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105637 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
0ea22fdfda0558393950cef5db50d050e3eb1e60 08-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Implement -fcaret-diagnostics to undo -fno-caret-diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105597 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6c6424bc0d3b5f080a97b5f6ef4a8d70c38e38f5 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support invoking Clang on .ll or .bc inputs.
- We actually pretend that we have two separate types for LLVM assembly/bitcode because we need to use the standard suffixes with LTO ('clang -O4 -c t.c' should generate 't.o').

It is now possible to do something like:
$ clang -emit-llvm -S t.c -o t.ll ... assorted other compile flags ...
$ clang -c t.ll -o t.o ... assorted other compile flags ...
and expect that the output will be almost* identical to:
$ clang -c t.c -o t.o ... assorted other compile flags ...
because all the target settings (default CPU, target features, etc.) will all be initialized properly by the driver/frontend.

*: This isn't perfect yet, because in practice we will end up running the optimization passes twice. It's possible to get something equivalent out with a well placed -mllvm -disable-llvm-optzns, but I'm still thinking about the cleanest way to solve this problem more generally.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105584 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
ypes.h
be1cc3eec682ca73361edb4109a7969452d3dbeb 04-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Model dsymutil properly, as a separate action/tool kind which is
added as the last output step, instead of just hacking it into the link step.
- Among other things, this fixes dSYM generation when using multiple -arch options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105475 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
6e0f25483b1a801cd1155ea89c2b725feab16332 04-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add an explicit dsymutil action.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105474 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
9929800b8dfced61e9c97dc8d6e71e144ebf8acc 27-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add support for -m[no-]relax-all, and make it the default at -O0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104815 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
4ecc9b73b3716775ed4e09091e300796a9a72378 27-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add clang -cc1 -mrelax-all option, which sets relaxes all instructions when using -integrated-as.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104807 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
d8e8a58ee35ab334ab9d0c2154dca029c1822e8a 25-May-2010 Douglas Gregor <dgregor@apple.com> Only enable code patterns (e.g., try { statements } catch (...) {
statements }) in the code-completion results if explicitly requested.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104637 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
32148cef25570a4fbe3ad0ec497ce3ae2cf1b774 25-May-2010 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Add -emit-codegen-only, for running irgen + codegen but not the
.s printer or .o writer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104623 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c304ba341a7daa88da42faf8f86310b764dd7b6a 22-May-2010 Chandler Carruth <chandlerc@gmail.com> Daniel re-educated me about what Alias does and does not do. Turn that off for
'-fasm' and explicitly map from that flag to -fgnu-keywords in the driver. Turn
off the driver in the lexer test for this madness and add a test to the driver
that the translation actually works.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104428 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
3038204fd8f6ff22082dd18e4b12ed252b75a5e4 22-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add Tool::ShortName, intended to be a human readable name for the tool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104416 91177308-0d34-0410-b5e6-96231b3b80d8
ool.h
c673af7fe67e5db4d10dd414237df247d35dd9d9 20-May-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1as: Add -help, -version, and -mllvm support.

Also, fix output defaulting to match llvm-mc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104246 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.td
41b5b17445ab3bdf957ebd4be6c8670f09a212a8 20-May-2010 Daniel Dunbar <daniel@zuster.org> Driver/MC: Add 'clang -cc1as' integrated assembler tool, currently accepts approximately the same interface as 'llvm-mc'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104239 91177308-0d34-0410-b5e6-96231b3b80d8
C1AsOptions.h
C1AsOptions.td
MakeLists.txt
akefile
03e8ab2947a848fb0ce723dcebb1c19697614307 20-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Move some argument lookup utilities into driver::ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104237 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
6362b893731ccf4480a96527db9e55e04b801503 18-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add option '-analyzer-max-loop', which specifies the maximum
number of times the analyzer will go through a loop.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104007 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
1b71848c5238747ede9650b7907172f8a7e088a5 15-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Make -fverbose-asm the default for platforms where the integrated
assembler defaults to on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103825 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f78cc4360eb4284091d0d38f3055084360f8c753 07-May-2010 Douglas Gregor <dgregor@apple.com> Add a stub frontend action for BoostCon, for next week's workshop.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103258 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
9cf933a67e54bea5475c5027fee2c1cf7365ee05 06-May-2010 Rafael Espindola <rafael.espindola@gmail.com> Handle -ffunction-sections and -fdata-sections in the driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103197 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
7b99d12b4ca67fccdf5090761ba257732e954e75 06-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Make -analyzer-inline-call not a separate analysis. Instead it's a boolean
flag now, and can be used with other analyses. Only turned it on for C++
methods for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103160 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c3d26cc4eea5187ce13ed180b479ff8ef41015a7 05-May-2010 Chris Lattner <sabre@nondot.org> add a new --print-diagnostic-categories option, which causes the driver to
print out all of the category numbers with their description. This is useful
for clients that want to map the numbers produced by
--fdiagnostics-show-category=id to their human readable string form. The
output is simple but utilitarian:

$ clang --print-diagnostic-categories
1,Format String
2,Something Else

This implements rdar://7928193


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103080 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
6fbe8398ba1680ffc5daa7395850ff8765b7905b 04-May-2010 Chris Lattner <sabre@nondot.org> add a new -fdiagnostics-show-category=none/id/name option, giving control
over choice of:

t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat]
t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1]
t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,Format String]

dox to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103056 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
27b0f510d1d4f9ed5668eec1195f04b4a74a4426 04-May-2010 Chris Lattner <sabre@nondot.org> add the ability to associate 'category' names with diagnostics
and diagnostic groups. This allows the compiler to group
diagnostics together (e.g. "Logic Warning",
"Format String Warning", etc) like the static analyzer does.
This is not exposed through anything in the compiler yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103051 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
6c1cb9916e9988dcdd65b9266dbe24afd173427a 04-May-2010 Douglas Gregor <dgregor@apple.com> Introduce a limit on the depth of the macro instantiation backtrace
printed in a diagnostic, similar to the limit we already have on the
depth of the template instantiation backtrace. The macro instantiation
backtrace is limited to 10 "instantiated from:" diagnostics; when it's
longer than that, we'll show the first half, then say how many were
suppressed, then show the second half. The limit can be changed with
-fmacro-instantiation-limit=N, and turned off with N=0.

This eliminates a lot of note spew with libraries making use of the
Boost.Preprocess library.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103014 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
5e2a8ac6599f0c68b14afb2f328ac98b264f770a 29-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add support for -fobjc-abi-version=.
- <rdar://problem/7919678>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102559 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f35f14d474632142280ec1526d16e87706ce6625 27-Apr-2010 Daniel Dunbar <daniel@zuster.org> Add Driver support for -fno-constant-cfstrings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102431 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f643b9b338b797a824447207d7eab5f1187f4f34 24-Apr-2010 Daniel Dunbar <daniel@zuster.org> NeXT: Clean up dispatch method policy selection.
- Replace -cc1 level -fobjc-legacy-dispatch with -fobjc-dispatch-method={legacy,non-legacy,mixed}.

- Lift "mixed" vs "non-mixed" policy choice up to driver level, instead of being buried in CGObjCMac.cpp.

- No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102255 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
oolChain.h
ba5f6eced29937e4e4851a2c0980744768413d66 24-Apr-2010 Nick Lewycky <nicholas@mxc.ca> Teach clang -fixit to modify files in-place, or -fixit=suffix to create new
files with the additional suffix in the middle.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102230 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
33e982bf782d851bfe5767acb1336fcf3419ac6b 22-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Support for -fno-constant-cfstrings option - wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102112 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
575cf3791216c33770ba950430493cdd43099f8f 20-Apr-2010 Douglas Gregor <dgregor@apple.com> Introduce a limit on the depth of the template instantiation backtrace
we will print with each error that occurs during template
instantiation. When the backtrace is longer than that, we will print
N/2 of the innermost backtrace entries and N/2 of the outermost
backtrace entries, then skip the middle entries with a note such as:

note: suppressed 2 template instantiation contexts; use
-ftemplate-backtrace-limit=N to change the number of template
instantiation entries shown

This should eliminate some excessively long backtraces that aren't
providing any value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101882 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
eb5d7b752651283de5abfcc2f91df7227582a08d 17-Apr-2010 Chandler Carruth <chandlerc@gmail.com> Add support for '-fgnu-keywords' and '-fasm' to Clang's driver. They are not
implemented precisely the same as GCC, but the distinction GCC makes isn't
useful to represent. This allows parsing code which uses GCC-specific keywords
('asm', etc.) without parsing in a fully GNU mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101667 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
fb937b8c5f1c5dc9cfd4223b5cae230cc42b0287 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Add a -fno-bitfield-type-align option, for my own testing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101370 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
3f87fb08dd502309960646db01099fb4c1be9a7c 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Add support for -mllvm, which forwards options to the LLVM option parser.
- Note that this is a behavior change, previously -mllvm at the driver level forwarded to clang -cc1. The driver does a little magic to make sure that '-mllvm -disable-llvm-optzns' works correctly, but other users will need to be updated to use -Xclang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101354 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
c09289d104b8e01ecd998e3f08b2b0561049e1dc 13-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add a cc1 option to specify the max number of nodes the analyzer can explore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101120 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
bbea7168326d810eff18dfb8bc43c7790fd55010 13-Apr-2010 Chris Lattner <sabre@nondot.org> add frontend support for -fdata-sections and -ffunction-sections,
patch by Sylvere Teissier!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101108 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
46116ce06ae28e3fc3a34c513f2f63ac02d9a194 10-Apr-2010 Anders Carlsson <andersca@mac.com> Rename -dump-record-layouts to -fdump-record-layouts now that the option behaves like aa flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100943 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
43a9b3263cb0bcb050cc75c15b3e6a8951e6b97a 10-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Ignore -fobjc-gc and -fobjc-gc-only for platforms which don't support them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100930 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
c53e3658e667fed25d428d58204f295209b81d45 09-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100887 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
380509aa107c550d0e77ee2db4069e127709427c 09-Apr-2010 John McCall <rjmccall@apple.com> Argh, I modified the .inc file locally, not the .td.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100881 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
b69eca5d2196c06870d3eeb62d689feebaaa8a4d 08-Apr-2010 Daniel Dunbar <daniel@zuster.org> Fronted: Kill overly specialized RecordLayoutDumper, just make -dump-record-layouts a bit that Sema honors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100747 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
0f0c963f9b7ac6f0176c34d405d48fcb005dfab6 07-Apr-2010 Chris Lattner <sabre@nondot.org> add a new driver-level -ferror-limit=412 option, which causes clang to stop
emitting diagnostics after it has produced that many errors. Give this a
default value of 20 which produces plenty of errors for people to fix before
recompiling but not so many that their entire console scrolls away when the
compiler gets confused. The experience looks like this:

$ clang foo.c
<tons of crap>
foo.c:102:3: error: unknown type name 'somethingbad'
somethingbad x;
^
fatal error: too many errors emitted, stopping now
36 warnings and 20 errors generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100689 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
c100214fdc41a7ea215f75d433eb1cb829fd4330 07-Apr-2010 Chris Lattner <sabre@nondot.org> add clang -cc1 level support for "-ferror-limit 42"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100687 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
60a53f24b160724de0e8dd0e142009981540fd26 06-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add a Tool::hasGoodDiagnostics hook, and use it to simplify logic for
deciding when we need to emit an extra "command failed" diagnostic.
- This also fixes the case where we were emitting that extra diagnostics, even
when using clang w/ the integrated assembler, which has good diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100529 91177308-0d34-0410-b5e6-96231b3b80d8
ool.h
eea12d17ec3527f4f9474571fd3011f3d825c45a 03-Apr-2010 Eric Christopher <echristo@apple.com> Add option and macro definition for AES instructions. Now produces real
assembly for testcases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100253 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
5d93ed3c7a2dae0a8f422747e269963b3ef11d95 01-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add support for a CLANGXX_IS_PRODUCTION build variable, which enable
Clang++ support, even in "Production" mode (for testing purposes).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100119 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
3edbeb78fe5ea7fffea7a94575478cde19e830e0 29-Mar-2010 Chris Lattner <sabre@nondot.org> add support for -MQ flag to quote targets in dependency file,
PR6661, patch by Ori Avtalion!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99821 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
67e170623f51457a8edd045be95db43342424f2e 26-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> No need to specify ${CMAKE_CURRENT_BINARY_DIR}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99622 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
4c2bcad7b843c10fd4a2ffd43da40bfefb4dc8ba 24-Mar-2010 Douglas Gregor <dgregor@apple.com> Implement support for -nostdc++. Fixes PR6446.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99417 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
48ad6094679ca2bf4f3593068e02e7a208c1a73c 22-Mar-2010 Chandler Carruth <chandlerc@gmail.com> Add very limited support for GCC's '-B' flag. This allows us to support unusual
toolchain configurations and is a small step toward FreeBSD support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99159 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.td
4c00fcdf98d3d7c4cb47b64f8b770f8f4bff1357 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support CC_PRINT_OPTIONS, used for logging the compile commands (in -v style) to a file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99054 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
efb0fa9e11f75af51744a6159530ef7cc8efa24a 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> C++: Add support for -fno-use-cxa-atexit.
- So much typing, so little gain...

Also, rename the __cxx_global_initialization function just to match llvm-gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99039 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
365b0bd38964c57f7e9fcace1eaf9877fb3b0485 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Force joining of "-l" "foo", the linker doesn't eat that format.

<rdar://problem/7641151> clang must eat spaces after -l

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99023 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
2758595023c5c7c0495f19260089f975022c50dc 19-Mar-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Kill off -empty-input only, and replace with -init-only which is an
actual action.
- This is easier to use, and more reliable for timing the thing this was
actually meant to be useful for.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98978 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
94dc8f640ebea52241412512ed48601626edbc58 19-Mar-2010 Douglas Gregor <dgregor@apple.com> Optionally store a PreprocessingRecord in the preprocessor itself, and
tie its creation to a CC1 flag -detailed-preprocessing-record.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98963 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
3ddd6e026a173e9519e84e27f8d6aed5473b8b4e 17-Mar-2010 John McCall <rjmccall@apple.com> Make -faccess-control and -fno-access-control driver options.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98703 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
8c6fa84b2e4a30317b7b214a7657cb593d67773b 16-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix forwarding of -fno-lax-vector-conversions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98639 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
4b7a834e0fecddd9eaf1f4567867c718e4eebf50 15-Mar-2010 John McCall <rjmccall@apple.com> Add support for -Wwrite-strings. Patch by Mike M! Fixes PR 4804.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98541 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
32c1a2ae8b31f32e478c8e504ed81db8c8d25713 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Free Action objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98263 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
fd48cb31d409cb1f8e1f119426965e498652e2d1 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Free synthesized derived arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98262 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
9d44023453094832ada2770941e9e4c96ce0e75e 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Free jobs in JobList and PipedJob instances.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98261 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
3a47c4e0a3e8d13ee4fb06cc3a98f9cfa9982400 04-Mar-2010 Chris Lattner <sabre@nondot.org> add TCE target support, patch by Pekka J!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97746 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
d39ebe2d2a24a331b89465191dce061fd9c6b5e4 04-Mar-2010 Eric Christopher <echristo@apple.com> Add in -msse4.1 and -msse4.2 options and continuing a rather
hacky solution for translating. Expanded on comment explaining
the hack a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97714 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
3363b35e518c28b504d4a600dc8cb168324b17d5 28-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Pass '-no-canonical-prefixes' on down to GCC. It's not specific to the Clang
driver and was in fact based on a feature in GCC. =]


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97424 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
43302d4144b5291961aa160d2fe191c09a9d8ad1 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver: Allow driver title (for --help) to be overridden by clients.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97106 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
2a7eb28397148079cbc8e54e8a3871ef01c4f4bc 23-Feb-2010 Blaine Garst <blaine@apple.com> Unconditionally support block introspection data in a new field at the end
of the block descriptor field. This field is the ObjC style @encode
signature of the implementation function, and was to this point
conditionally provided in the block literal data structure. That
provisional support is removed.

Additionally, eliminate unused enumerations for the block literal flags field.
The first shipping ABI unconditionally set (1<<29) but this bit is unused
by the runtime, so the second ABI will unconditionally have (1<<30) set so
that the runtime can in fact distinguish whether the additional data is
present or not.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96989 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
d46f98573ba104eda102dd3224b2dca69f1c6336 19-Feb-2010 John McCall <rjmccall@apple.com> Re-introduce the ctor/dtor alias optimization, this time hidden behind a
command-line option which defaults off.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96649 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
51679c5e4828b8a64953c4f3db162ca963bf7b03 17-Feb-2010 Daniel Dunbar <daniel@zuster.org> PR5803: clang++: Treat untyped 'C' inputs as C++.
- Patch by Andrzej K. Haczewski, with a tweak by me to emit a 'deprecated'
diagnostic when we do this. We'll see what zee users say.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96511 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.h
6dd66ed959b7f60749dd0040507b3f304183a1b6 14-Feb-2010 Ted Kremenek <kremenek@apple.com> Add new static analyzer for checking LLVM coding conventions: -analyzer-check-llvm-conventions

Currently these checks are intended to be largely syntactical, but may get more
sophisticated over time.

As an initial foray into this brave new world, emit a static analyzer warning
when binding a temporary 'std::string' to an 'llvm::StringRef' where the
lifetime of the 'std::string' does not outlive the 'llvm::StringRef'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96147 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
824e19ed926d7aa1296a007d0607ac4437e3c4a9 13-Feb-2010 John McCall <rjmccall@apple.com> Add an option to disable the LLVM verifier pass (which is still always
disabled in NDEBUG builds). The option applies only to -cc1 invocations and is:
-disable_llvm_verifier



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96046 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
8aa79947cbf8f0f3ac82cdd36a823ac1bb53cab4 11-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove noisy semicolon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95872 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
824d7ea07a4e9208925daa6ae9289fb2b39bce9f 11-Feb-2010 Anders Carlsson <andersca@mac.com> Check in the beginnings of my new vtable layout builder idea.

Right now, it's off by default but can be tested by passing -fdump-vtable-layouts to clang -cc1. This option will cause all vtables that will normally be emitted as part of codegen to also be dumped using the new layout code.

I've also added a very simple new vtable layout test case.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95865 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
64952508c2b0c8bffb45c8b410f0af3d2457f59b 11-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -rewrite-objc, which is an interface to clang -cc1 -rewrite-objc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95849 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ypes.def
b2987d159a88ab0ee2e40c884eb4d77b42ab89b6 10-Feb-2010 Daniel Dunbar <daniel@zuster.org> Switch to using -fsjlj-exceptions instead of hard-coding it. Notably, this fixes
calls to the UnwindResumeOrRethrow function for C++/Obj-C exception handling,
for Darwin ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95787 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
73482884560be041d86eccbd7dd5a6918677393b 10-Feb-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Add -fsjlj-exceptions, which requires far too much button pushing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95785 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
412e798941ca64e2e6b084323915fa9aa5f6bdf3 09-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Implement synthesizing properties by default.
This is a non-fragile-abi feature only. Since it
breaks existing code, it is currently placed under
-fobjc-nonfragile-abi2 option for test purposes only
until further notice. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95685 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
9bed8798964d9f07599c2c9199701f86fbc70e20 09-Feb-2010 Douglas Gregor <dgregor@apple.com> Introduce a testbed for merging multiple ASTs into a single AST
context with the AST importer. WIP, still useless but at least it has
a test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95683 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
a508b7de6c5246ab04ed69d0ab4e9977ec1fb4d4 07-Feb-2010 Anders Carlsson <andersca@mac.com> Add support for threadsafe statics, and make them the default (matching gcc).

Daniel, I'd appreciate a review of the driver/cc1 parts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95508 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
565e465c6d0093f1bf8414b2cabdc842022385a9 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-checker-cfref' to '-analyzer-check-objc-mem'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95348 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
7909fc8833e734aac521d7d6945bd823d75150ac 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-objc-missing-dealloc' to '-analyzer-check-objc-missing-dealloc'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95347 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
fa15be4cf95b7ed2d1df583497b16a6f897cf789 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-objc-methodsigs' to '-analyzer-check-objc-methodsigs'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95346 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
2ade536f6815bf6ff128333520232c3b0e701146 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-objc-unused-ivars' to '-analyzer-check-objc-unused-ivars'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95345 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
cd9902bfb79c5c67559360514951714bdafac36e 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-dead-stores' to '-analyzer-check-dead-stores'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95343 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
fb3f893bc58071e548c97a3d667c8ab9b0c38cfb 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-security-syntactic' to '-analyzer-check-security-syntactic'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95342 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
8767cbc475ed96397b6f08617814eeb9cab121bd 03-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -[no-]integrated-as for clang.
- Requires backend support, which only exists for i386--darwin currently.

No 'as' required:
--
ddunbar@ozzy:tmp$ cat t.c
int main() { return 42; }
ddunbar@ozzy:tmp$ clang -m32 -integrated-as t.c


ddunbar@ozzy:tmp$ ./a.out; echo $?
42
ddunbar@ozzy:tmp$
--

The random extra whitespace is how you know its working! :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95194 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ool.h
oolChain.h
da1573f95902a42aa4d11e8f45ab98ec7e27bc28 03-Feb-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Wire up -emit-obj, for emitting object files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95182 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
609508ce95732e7e7010f79c5207613eced7c9cb 01-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Darwin uses -fobjc-legacy-dispatch on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95006 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
984eb8611d9ee46fc6351dee43609f2deed99f3c 01-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Add support for -fobjc-legacy-dispatch, not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95004 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
f22d1fd96d6056a2f271b0f7353b31f47547127b 30-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Use StringRef instead of returning a temporary std::string.

This fixes a really nasty bug in Darwin::getDarwinArchName where we were going
StringRef -> temporary std::string -> StringRef (and return the dead StringRef).
The StringRefs from Triple live as long as the Triple itself, that should be
long enough.

Hopefully 2 of 4 MSVC buildbot failures are gone now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94892 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
d93256e55673a17d18543397ec462416acb13792 28-Jan-2010 Douglas Gregor <dgregor@apple.com> Introduce serialization and deserialization of diagnostic information
so that CIndex can report diagnostics through the normal mechanisms
even when executing Clang in a separate process. This applies both
when performing code completion and when using ASTs as an intermediary
for clang_createTranslationUnitFromSourceFile().

The serialized format is not perfect at the moment, because it does
not encapsulate macro-instantiation information. Instead, it maps all
source locations back to the instantiation location. However, it does
maintain source-range and fix-it information. To get perfect fidelity
from the serialized format would require serializing a large chunk of
the source manager; at present, it isn't clear if this code will live
long enough for that to matter.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94740 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
f7b33749d2a686327b8ae249b8eb1ab44770f54b 27-Jan-2010 Daniel Dunbar <daniel@zuster.org> Support -marm by treating it as an alias for -mno-thumb.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94644 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
5cc025197300c3f323ed572dd0295284a17a6661 27-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Disallow -m{macosx,iphoneos}-version-min as -Xarch arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94636 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
3bd54cc56276c386f4d50940a9fbfcad7a69cb75 25-Jan-2010 Daniel Dunbar <daniel@zuster.org> ASTUnit: Don't check that input files exist when parsing ASTs from the command
line -- they may be remapped (fake) files. This is useful for testing parsing
entirely from memory.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94395 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
225c41706dc0f3682236e351820d339e14390e00 20-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver: Lift clang resource directory computation to the Driver object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93971 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
124fca533d9fef2e3f6359283909bd342b5f5f26 09-Jan-2010 Chris Lattner <sabre@nondot.org> implement -ftabstop=width, patch by Christian Adåker


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93078 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
c31176d5ebbcd407aa512bbd5f717e35da629e7d 08-Jan-2010 Dan Gohman <gohman@apple.com> Use -fno-math-errno by default, and remove the IsMathErrnoDefault
targethook, which is no longer being used. This fixes PR5971.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92987 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
oolChain.h
edcfc411148e81c644a1ff36a9df8a7b08209a23 05-Jan-2010 Nate Begeman <natebegeman@mac.com> Allow clang to pass -x cl through to compiler driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92686 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
49ac8e63a0622ce049e58decab9e844b1e8c7ecd 23-Dec-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove RewriteBlocks. It has been superseded by RewriteObjC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92014 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
1bda434673d3c51a2ba6b412f100ccfcf3e7083f 23-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Drop ToolChain::getHost()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91960 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
f3601388f234f70778e3023018dfe57b64cf4043 23-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: When linking, don't warn about unused arguments which are obviously only
used during compilation.
- There is no easy way to define this group properly, unfortunately, and maybe
this is a losing strategy. For now this is unambiguous more friendly, though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91940 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
a91320b8af7143f7af4c0665ffa62a3b244c0bd9 22-Dec-2009 Daniel Dunbar <daniel@zuster.org> ARM: Honor -mfpu= and set __VFP_FP__ and __ARM_NEON__ "correctly".
- Correctly is in quotes, because we are following what I interpreted as GCC's
intent (which diverges from practice, naturally).
- Also, fix the arch define for arm1136jf-s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91855 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
ee788e70fcd0adf76103b17c78ac658d4ea30c9b 21-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add ToolChain::getDriver() and use it instead of going through the HostInfo
object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91830 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
38b48afd338d494099697d2611e1f45e558e469e 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Rename -mcpu to -target-cpu to match other target options and not alias driver/backend option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91671 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f2d8b9f967a1ab53ee9fdbcc3ac0a4ee0a83a26e 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add -dwarf-debug-flags, which provides a way to embed the cc1 level options used
to compile a translation unit into the debug info for that file.
- Used by parts of Darwin build process to check compiler flags, etc.
- <rdar://problem/7256886> clang does not emit AT_APPLE_flags

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91661 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
oolChain.h
99860173af0b070f93558c26b78bb7ac07820370 17-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> reword the help text of fno_assume_sane_operator_new, following Chris suggestion

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91630 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
8663b180085e9bc7a0a87c80cc3f722efef99e79 16-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix -fdollars-in-identifiers Clang translation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91562 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
fc2844846e91398205fddc71196fe9dda04e105f 16-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> implement PR5654: add -fassume-sane-operator-new, which is enabled by default, and adds the malloc attribute to the global function new() and to the overloaded new operators.

feel free to chage the name to this lengthy argument

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91543 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
feecdf15dc58a5d5e3c77c938b6d5e7deb75d39e 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Forward -isysroot to clang -cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91414 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
8b9adfea5e834eaee0f45d8cc7fb052d68df4a46 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add -resource-dir to clang -cc1, this allows the base directory for compiler
resources (e.g., /usr/lib/clang/1.1) to be passed on the command line instead of
computed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91370 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
9c276ae0f24d4cee8f7954069d4b8eae45d0447d 12-Dec-2009 Mike Stump <mrs@apple.com> Implement runtime checks for undefined behavior. WIP.

This implements a new flag -fcatch-undefined-behavior. The flag turns
on additional runtime checks for:

T a[I];

a[i] abort when i < 0 or i >= I.

Future stuff includes shifts by >= bitwidth amounts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91198 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ptions.td
6feaf57b46f0856127c84b03f3aee5fb51d0262b 12-Dec-2009 Ted Kremenek <kremenek@apple.com> Make using '-fshort-enums' an error until it is actually implemented (changes the ABI, so it is dangerous to not error out if we don't support it). Fixes <rdar://problem/7461006>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91191 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
8ff5b28d6efcffe2251e77634c7edf83a4763344 12-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch to using "clang" "-cc1" instead of "clang-cc".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91174 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e4cb2a4b4ad6b9596f9109945a5b3a87949f375b 09-Dec-2009 Mike Stump <mrs@apple.com> Fix 80-col violation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90976 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
b94ffa4a641b71c7c6155cddc7dc384f8a45c9f1 09-Dec-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Mark -i* options as JoinedOrSeparate, since the driver forwards them
directly and one can write '-includefoo' if one really wants to.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90966 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
87667aafe68c366be57f5afb60428237593da0ed 08-Dec-2009 Daniel Dunbar <daniel@zuster.org> Unbreak clang-cc handling of -msoft-float / -mfloat-abi=, which I borked.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90873 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e3fdca2ee0346a41d9cc5ee417a75e66274216f5 08-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Remove several .c_str() to be forward-compatible with StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90822 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
fc576514d06c46a7cac49500169411d82f38d04b 07-Dec-2009 Ted Kremenek <kremenek@apple.com> Add clang-cc option '-analyzer-opt-analyze-nested-blocks' to treat block literals as an entry point for analyzer checks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90810 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
7ca7987669fcd14d91b4227a9ddcf7fdd8b1f8c2 07-Dec-2009 Rafael Espindola <rafael.espindola@gmail.com> Shorten the help test for -no-canonical-prefixes, put it behind HelpHidden and
claim it in Driver.cpp instead of Tools.cpp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90777 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
8477ee93c9d81d1b5fe321706ff95bcd219c744b 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch -ccc-* options to using the standard options functionality.
- I still want to get rid of them, but manually handling them isn't adding value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90602 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
2658f05caf1c1d86608a46ebc7be0b3bb21fef2a 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> OptTable: Allow option groups to be used to define "help groups", which will
collate the options inside that group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90592 91177308-0d34-0410-b5e6-96231b3b80d8
ptParser.td
ptTable.h
9a242512a8b319cc4df7d050166a1c65bf66abeb 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> OptParser: Add HelpHidden flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90591 91177308-0d34-0410-b5e6-96231b3b80d8
ptParser.td
ptTable.h
0f4c59c3beae302b5a3ecea13f2e257bdaad3188 04-Dec-2009 Rafael Espindola <rafael.espindola@gmail.com> Add gcc's -no-canonical-prefixes option to clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90577 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
f13876fac1eb2d384732779a7709575d4ecf27b6 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> Ignore -fsched-interblock and -freorder-blocks to the ignored -f flags, we have
no plans to support invasive optimization flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90558 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.td
9b5e9ae08defd14441acca1d7d4502b933bf6c5a 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Honor -help and -version when using new style option parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90422 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
b737fb12cbf9617edc5720fba8b6aed118c84771 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> CC1Options: Normalize meta var spellings, and fix a few help texts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90421 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
60e107fb86132fea75b886d2259f4c220334bc5e 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add OptTable::PrintHelp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90420 91177308-0d34-0410-b5e6-96231b3b80d8
ptTable.h
e14b5f5237d0740c2b21c50b2eb41a06e778d820 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 support for -remap-file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90414 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
efba227cc5459554eca466aafe786b5132dcb68c 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 -load option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90413 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
daab7b1016f0a82fefa4f7be6e63c57c06b19ffc 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Command::Creator member variable, which tracks the tool that was
used to create a particular command.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90287 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
3b315264d1a6fa303e20fe0caec306ccafc090de 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CodeGenOptions::{SoftFloat,FloatABI}, and update the all the (far too many) places to use this instead of using the backend -soft-float and -float-abi= options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90127 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
ce6bf1ecdaca15450d8c0424724cc1558b847364 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Allow -triple= as an alias for -triple, -code-compiletion-at= as an alias for -code-completion-at, and spell "-std=" option correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90068 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f219e7c1529fac29e34483667f740b452e5ef9cc 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move LLVM backend options to explicit clang-cc / clang -cc1 options, which we then manually pass to the command line library; eventually the latter grossness should be fixed by a real API when creating the target machine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90063 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
7674352cf3e8f699914a2f739f1ae8c8c3480813 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Change -fsigned-char=0 to -fno-unsigned-char and pass -pic-level using separate args.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90054 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
0ff679f5ddd24a4acbeffc9757a9b2a6e4673c14 26-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing for preprocessor options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89917 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
cdd9686b890ebdc10039ae256ef4c9dfb5ebacb7 25-Nov-2009 Daniel Dunbar <daniel@zuster.org> What the FIXMEs want, the FIXMEs shall have.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89861 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
3b84f5bab9f134741cf4d3c80086009519b6d968 25-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add an arg_iterator, for iterating over a subset of arguments in an ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89860 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ptSpecifier.h
33a33d8abd7a3d49eacc05e40c00b00634bf1ee9 24-Nov-2009 Daniel Dunbar <daniel@zuster.org> Sketch the rest of the clang -cc1 option definitions, aka fun with C-x C-(.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89721 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
21affc089773edc30be43ecb0022a48acdac7093 24-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing of diagnostic options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89716 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
e2814d89025b847ad7363b21e3e053bbae180b54 22-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing of analyzer options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89629 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
1bed0c3a555d9e32de9dead55658b4a28a4d6e03 21-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add clang -cc1 dependency output options parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89508 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
a31100e62f83933432df9092a04e48f9e5561a14 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Pass '-mcpu' 'FOO' instead of '-mcpu=FOO'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89498 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
50a4487683a7e09fb93e8b506181e034241a0ffe 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing of CodeGenOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89464 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
31db76cb2dde031ab3262808ac233889daf7d720 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add parsing for TargetOptions to CompilerInvocation::CreateFromArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89435 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.td
f7b56fa451893699178b17d88644447bd5dbabd3 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing dependency on TableGen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89387 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
a08304a38c2fecd647f41039d2245f0c4cd33504 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move INPUT and UNKNOWN sentinel options into the OptParser.td file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89371 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.h
ptParser.td
ptions.h
f010b26b60f3f51b6fa0335218c9a458ec30cff4 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Sentinel flag to option kinds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89367 91177308-0d34-0410-b5e6-96231b3b80d8
ptParser.td
8adfcff02334455b6f95bc4e1f347204f7c0dd3e 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Sketch .td file and build system goop for OptTable based clang-cc options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89330 91177308-0d34-0410-b5e6-96231b3b80d8
C1Options.h
C1Options.td
MakeLists.txt
akefile
847abaa62883b6c20005bdd3346ebbd44e46dbac 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Factor out OptTable::ParseArgs, for parsing an entire argument vector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89327 91177308-0d34-0410-b5e6-96231b3b80d8
ptTable.h
265e9ef9f3ef30a97790e6e7bbc3c17d97981ca7 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: ArgList doesn't depend on Options.h anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89313 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
a0289fda5b5d67ad49596a5e1f62e1f9db497d06 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Take option ID for {Input,Unknown}Option, to drop dependency on actual options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89312 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
9e1f98260a1842df4bb8e6de0b592a1622dcfdc0 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Introduce OptSpecifier class for protecting access to an option id.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89310 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ptSpecifier.h
ptTable.h
ption.h
e4bdae78c69d2a09ee96619cc5ccf81441674412 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch to using explicit {getLast,has}ArgNoClaim functions instead of taking a Claim argument.
- Most driver code always claims, and bool arguments don't play nice with the overloads.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89308 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
b32aa51ce9b608002a031e8ca682f073e28024cf 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Resolve inconsistency in matching options against options which are
aliases -- just treat this case as an (unchecked) client error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89306 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
64bdce3f02091b0a4e1528d690495970c1249803 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch to using TableGen'erated Options.inc instead of Options.def file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89288 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
akefile
ptParser.td
ptions.def
ptions.h
ptions.td
27e738d0d3f781672a5999d2a9e2827b00a97d0c 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Split OptTable out into OptTable.{h,cpp}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89283 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ptTable.h
ptions.h
a79a2b5bf23d1422eed9be3793186ebbba7532ec 18-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Rework OptTable to have no dependency on the options it manages.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89234 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.h
1d189e187b1bf7d7677aefd7482bcdad29683a0c 18-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Store Option ID field as unsigned to drop dependency on the options
type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89232 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
a4f64805e032fa6a669434ca3f9c04b02f1bbd97 18-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch Options.def to storing flags as a bitmask (instead of mangled
into a string).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89212 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
5e530af5d51572a0ed5dbe50da54bd333840c63d 17-Nov-2009 David Chisnall <csdavec@swan.ac.uk> Added block type introspection support.

As per Fariborz's suggestion, committed now but can be reverted later if the used flag is problematic for Apple.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89134 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
9e5cc6b703b2d0013f13800c2ffbeb3cf85fcfad 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add -fblocks, -stack-protector, and -fobjc-nonfragile-abi defaulting to driver,
instead of using getDefaultLangOptions.
- Remove unused -fobjc-tight-layout while at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89065 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
oolChain.h
77544fde702fdab2a6150ba812ecf04eb1e6eab6 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add driver::types::isObjC predicate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89064 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.h
0be42c44f0199c5023b542d6a6d2e66eb594f27d 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move -fms-extensions defaulting to driver, instead of using getDefaultLangOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89057 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
0f9fed70cea107b3f79df554e38bd8e98d48fe47 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add Diagnostic::Report method for reporting diagnostics without a location.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86760 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
a6fda124bf380479529d6a80b84b62cacd3cb707 05-Nov-2009 John Thompson <John.Thompson.JTSoftware@gmail.com> Adding -fshort-wchar option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86167 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
59876c2713683d1538ca45bb14c2f415862fb716 04-Nov-2009 Tanya Lattner <tonic@nondot.org> Merge constant array and structures. This will create a global variables for arrays and structs that are constant and their initializer is constant. It is on by default but can be disable with the flag -fno-merge-all-constants.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85991 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
8d737cc78cb28f39179d6c7ca00eb5d3cf563129 26-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Rename -nostdclanginc to -nobuiltininc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85116 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
6961fdd661f75b8452f526143b9f60b54e175c9d 06-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Add the -nostdclanginc option to clang (the driver).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83377 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
f44c58563286bb448a72ed9c9af5f21718633230 23-Sep-2009 Daniel Dunbar <daniel@zuster.org> Push "clang-is-production" logic up to tools/driver, and make it hittable by
defining the CLANG_IS_PRODUCTION Makefile variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82583 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
2030d8f46b4226fa99e59389e3ca856a79c27e9a 14-Sep-2009 Daniel Dunbar <daniel@zuster.org> Support -mabi= for clang/ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81734 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
f4aa4f61de7d364364dc94bbf83ff71448a11327 11-Sep-2009 Daniel Dunbar <daniel@zuster.org> Swizzle the target triple based on -mthumb, and update clang-cc to recognize
thumb-foo-bar as an ARM target.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81497 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
cbd1933f83e2332b2d7add10459f80cc4e7eb7bf 11-Sep-2009 Daniel Dunbar <daniel@zuster.org> Initial handling of -m{soft-float,hard-float,float-abi=} for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81471 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
2ba91575905a54f712a7f64304e56002e4882499 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Implement Darwin/ARM behavior for defaulting to -fno-builtin-str{cat,cpy}.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81425 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
5ed34f4c58b6ad4e21038d713c1fae31a6146ff5 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Change Get{File,Program}Path to return an std::string (instead of a sys::Path).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81389 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
oolChain.h
16484afe5ca790d2f9a16650638e54067c037d7d 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> StringRefize ArgList construction of ArgStrings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81385 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
0dcb9a3705743ec972af37f48ead81a0939e3958 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Push bound architecture name into TranslateArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81366 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
4954018954bbc97363eef02d0c83bea19ce9b329 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Push bound architecture name into Compilation::getArgsForToolChain.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81365 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
river.h
1eb4433ac451dc16f4133a88af2d002ac26c58ef 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tabs, and whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
rg.h
rgList.h
ompilation.h
river.h
riverDiagnostic.h
ostInfo.h
ob.h
ption.h
ptions.h
ool.h
79d39f92590cf2e91bf81486b02cd1156d13ca54 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tab characters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81340 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
d7502d0a662b5c299125aba04245aefce67cbc22 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Rename HostInfo::getToolChain to HostInfo::CreateToolChain, and don't recreate
the default tool chain when binding the default architecture.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81279 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
a6046bec7fc835186dde134fb81aa1b7d45cd9f0 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Fix ShouldUseClangCompiler to use llvm::Triple.
- -1 FIXME, and fixes 'clang -arch armv4t ...', for example.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81276 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
d82f8fa53771b454885c546f0fd452a4980b3a3e 04-Sep-2009 Daniel Dunbar <daniel@zuster.org> Tweak darwin::Link::AddLinkArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81021 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
78dbd580a02759bbc408dbefb6754afa71b2c24c 04-Sep-2009 Daniel Dunbar <daniel@zuster.org> Implement darwin::Link::AddDarwinArch for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81020 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
5915fbf310e171c4cd3c2af05e9de360c0fa988a 01-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add driver support for -emit-ast and AST compilation steps.
- <rdar://problem/7185031> Add 'clang' option '-emit-ast'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80678 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
ypes.def
8a5a9aaddb627c0884c2ed8db55cc29fdb601195 31-Aug-2009 David Chisnall <csdavec@swan.ac.uk> Updated GNU runtime non-fragile ABI.
Added -fconstant-string-class= option.
Added __has_feature() test for non-fragile ABI.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80591 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
156c4134fc936c8080ab6f15794da936f815bf8a 27-Aug-2009 Gabor Greif <ggreif@gmail.com> add missing header

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80228 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
e7925a075f110ab21afeae084670a155dea568e3 22-Aug-2009 Edward O'Callaghan <eocallaghan@auroraux.org> Second half of, clang, AuroraUX toolchain support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79713 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
8e9ef0d87dad25f02e5abc6facf528778236115a 05-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Translate -mcmodel=X to -code-model X and pass it to clang-cc. Patch by Pawel Worach!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78190 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
091038cbdeab8933720a4b236ab41590fa02d78a 05-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Add support for the -fno-omit-frame-pointer option. Patch by Roman Divacky!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78188 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
738f8c278da5950d0d4607de2debe0bdfad64185 01-Aug-2009 Mike Stump <mrs@apple.com> Add beginnigs of rtti generation, wire up more of -fno-exceptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77751 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
793007242ba209b68ce14ec7547ac70ee981303a 21-Jul-2009 Daniel Dunbar <daniel@zuster.org> driver: Print --version on stdout, to match gcc.
- Patch by Jean-Daniel Dupas


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76632 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ceb5c5b7f67a30fae305d1d19b478b623e4fbced 14-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Remove -ftraditional option, which gcc doesn't actually support. Make
using -traditional and -traditional-cpp with clang an error because
it's unsupported in clang and causes a significant change in the
semantics of the language.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75690 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
e650c8c3bca2f58cad8ffa8aab63126d26e890cd 07-Jul-2009 Douglas Gregor <dgregor@apple.com> Introduce the notion of "Relocatable" precompiled headers, which are built
with a particular system root directory and can be used with a different
system root directory when the headers it depends on have been installed.
Relocatable precompiled headers rewrite the file names of the headers used
when generating the PCH file into the corresponding file names of the
headers available when using the PCH file.

Addresses <rdar://problem/7001604>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74885 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
df35d7f1916140bfed5ab0bad2d5e2bc62c667e5 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Mark some Compilation members const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74636 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
c88a88f6f7672b6bb831dce9da4acfa0c846975f 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move Compilation::Execute to Driver::ExecuteCompilation.
- The Compilation is just a helper class, it shouldn't have that amount of
logic in it.

- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74634 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
river.h
31c11ebdaab0acfa10e231730ae95e32c0e39e1f 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Improve diagnostics for failed commands.
- Not all tools give good error messages, and sometimes the tool can fail w/o
any error (for example, when signalled).

- We suppress this message when the failing command is the compiler and it
failed normally (exit code == 1), under the assumption that it gave a good
diagnostic.

For example, for a linker failure we now get:
--
ddunbar@lordcrumb:tmp$ clang a.c b.c
ld: duplicate symbol _x in /var/folders/cl/clrOX6SaG+moCeRKEI4PtU+++TI/-Tmp-/cc-bXYITq.o and /var/folders/cl/clrOX6SaG+moCeRKEI4PtU+++TI/-Tmp-/cc-6uK4jD.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
--

For a compiler crash we get:
--
ddunbar@lordcrumb:tmp$ clang t.i
Assertion failed: (CGT.getTargetData().getTypeAllocSizeInBits(STy) == RL.getSize()), function layoutStructFields, file CodeGenTypes.cpp, line 573.
0 clang-cc 0x0000000100f1f1f1 PrintStackTrace(void*) + 38
... stack trace and virtual stack trace follow ...
clang: error: compiler command failed due to signal 6 (use -v to see invocation)
--

But for a regular compilation failure we get the usual:
--
ddunbar@lordcrumb:tmp$ clang c.c
c.c:1:6: error: invalid token after top level declarator
int x
^
1 diagnostic generated.
--

- No test case, not amenable to non-executable testing. :/

- <rdar://problem/6945613>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74629 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
ompilation.h
cae087e164e94e4286c11bf694dd0ff88f295302 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Source argument for Commands to hold the Action which caused a
Command to be generated, to support more advanced diagnostics.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74627 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
f7b8eec37c8c8012fa525c71fb29a58c9f29beef 29-Jun-2009 Daniel Dunbar <daniel@zuster.org> OpenBSD support.
- Patch by Jonathan Gray!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74453 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
45483f7a1b3e57b4603b141bee80596b2d4dd443 28-Jun-2009 Bill Wendling <isanbard@gmail.com> Add stack protector support to clang. This generates the 'ssp' and 'sspreq'
function attributes. There are predefined macros that are defined when stack
protectors are used: __SSP__=1 with -fstack-protector and __SSP_ALL__=2 with
-fstack-protector-all.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74405 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ptions.def
12cfe036d809173a25af0104844d4bb66a92252b 17-Jun-2009 Daniel Dunbar <daniel@zuster.org> Fake support for -print-multi-*
- I think we will eventually need to support this for realz, and some build
processes seem to depend on these options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73581 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
oolChain.h
5e9f35c7cb61aea46f56d46c77cbcf47c0cf28ba 14-Jun-2009 Douglas Gregor <dgregor@apple.com> Update LLVM.

Implement support for C++ Substitution Failure Is Not An Error
(SFINAE), which says that errors that occur during template argument
deduction do *not* produce diagnostics and do not necessarily make a
program ill-formed. Instead, template argument deduction silently
fails. This is currently implemented for template argument deduction
during matching of class template partial specializations, although
the mechanism will also apply to template argument deduction for
function templates. The scheme is simple:

- If we are in a template argument deduction context, any diagnostic
that is considered a SFINAE error (or warning) will be
suppressed. The error will be propagated up the call stack via the
normal means.
- By default, all warnings and errors are SFINAE errors. Add the
NoSFINAE class to a diagnostic in the .td file to make it a hard
error (e.g., for access-control violations).

Note that, to make this fully work, every place in Sema that emits an
error *and then immediately recovers* will need to check
Sema::isSFINAEContext() to determine whether it must immediately
return an error rather than recovering.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73332 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
75eb1d64784946a37fc0b27596e2d92b6cf7033b 08-Jun-2009 Daniel Dunbar <daniel@zuster.org> PR4016: Forward -fno-show-source-location to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73082 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
5a77973d9bc2c9cdbdb7860dcf3ac795abe258ec 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add driver support for -fsigned-char/-funsigned-char.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72930 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
145c6090752187228340edc9a2bec8f6b74841cf 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add a couple of FreeBSD-specific command-line options.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72927 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
a46c71abb1dc2f9758ad1abe3378534fe138e802 04-Jun-2009 Torok Edwin <edwintorok@gmail.com> forward -fno-color-diagnostics to clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72856 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
4e2567d6b1d9d046ca98aa3ab6a6b06ea5ea398b 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> PR4308: Fix support for -m32/-m64 on Linux.

I'll look into cleaning this up a bit as a followup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72794 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
e5280286573d4fe1220cdd66e147b572a05536a8 03-Jun-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support -mllvm; this just forwards options to clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72780 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
ddd1fb674eb54711d2504fe6c7fb9e3d10acff6a 02-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add --shared option.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72716 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
6b3454a219cee5ef36c4668961f93a5c32deab61 26-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR4140: Add the start of a Linux toolchain (basically, just
barely enough to get the given usage of -print-file-name working).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72412 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
34e65770ad6142b033d6cec4f476ed20fb248bf3 22-May-2009 Fariborz Jahanian <fjahanian@apple.com> This patch adds support for sender-aware dispatch in Objective-C for the GNU runtime, when
compiled with -fobjc-sender-dependent-dispatch. This is used in AOP, COP, implementing object
planes, and a few other things.
Patch by David Chisnall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72275 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
e027a4b2399e9b0acfe0f77220c66bbe369067ee 22-May-2009 Daniel Dunbar <daniel@zuster.org> Don't warn about -funit-at-a-time, and reject -fno-unit-at-a-time.
- We could just warn about -fno-unit-at-a-time, but in practice people using it
probably aren't going to get what they want out of clang.

Also, use "clang" specified error for unsupported things instead of driver
unsupported error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72272 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
cb8ab23f7c800b041aeb6fc38c341d1aa0da86bf 22-May-2009 Daniel Dunbar <daniel@zuster.org> (llvm up) Use llvm::Triple for storing target triples.
- This commit has some messy stuff in it to extend string lifetimes, but that
will go away once we switch to using the enum'd Triple interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72243 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
oolChain.h
d8fc0f2e7751cf31cec5c2f3cc6a0b447e9debb3 22-May-2009 Daniel Dunbar <daniel@zuster.org> Add --analyzer-no-default-checks and --analyzer-output options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72238 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
f4e2486145b426e84175c8e34b0f200d74daa98b 19-May-2009 Daniel Dunbar <daniel@zuster.org> Remove -fprintf-source-range-info from the Driver (this was renamed)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72061 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
95a0da7b263777e6f97e5a08b6eb893681a234ba 13-May-2009 Daniel Dunbar <daniel@zuster.org> Driver: Emit an unsupported error on -iframework.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71698 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
17ca3638e852ba81f389e9f896ed0420b52ae606 06-May-2009 Daniel Dunbar <daniel@zuster.org> More x86 target feature support.
- Apologies for the extremely gross code duplication, I want to get
this working and then decide how to get this information out of the
back end.

- This replaces -m[no-]sse4[12] by -m[no-]sse4, it appears gcc
doesn't distinguish them?

- -msse, etc. now properly disable/enable related features.

- Don't always define __SSE3__...

- The main missing functionality bit here is that we don't initialize
the features based on the CPU for all -march options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71117 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
868bd0aa9281929ef50d2e9a8c82a036906f53f5 06-May-2009 Daniel Dunbar <daniel@zuster.org> Improve handling of (X86) target features.
- This is a WIP...

- This adds -march= handling to the driver, and fixes the defaulting
of -mcpu on Darwin (which was using the wrong test).

Instead of handling -m{sse, ...} in the driver, pass them to clang-cc as
-target-feature [+-]name

In clang-cc, communicate with the (clang) target to discover the legal
features of a target, and the features which are enabled based on
-mcpu. This is currently hardcoded just enough to not be a feature
regression, we need to get this information from the backend's
TableGen information somehow.

This is used to construct the full list of features which are being
used, which is in turn used to initialize the predefines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71061 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
63be57a832b2dab70592d1d9b37a5cd9a627356e 06-May-2009 Daniel Dunbar <daniel@zuster.org> Add --analyze-auto.
- Currently just an alias for --analyze, eventually we want to refit
--analyze so that it is less automatic (i.e., does not force plist
output and does not hard code the list of checks).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71056 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ptions.def
d6884a0b90091a063478ec7fa31f6d76c94e4917 04-May-2009 Daniel Dunbar <daniel@zuster.org> Add -fobjc-tight-layout.
- This implements gcc style Objective-C interface layout (I
think). Currently it is always off, there is no functionality
change unless this is passed.

For the curious, the deal is that gcc lays out the fields of a
subclass as if they were part of the superclass. That is, the
subclass fields immediately follow the super class fields instead
of being padded to the alignment of the superclass structure.

- Currently gcc uses the tight layout in 32-bit and 64-bit modes, and
llvm-gcc uses it in 32-bit only, for reasons which aren't clear
yet. We probably want to switch to matching gcc, once this makes it
through testing... my hope is that we can also fix llvm-gcc in
order to maintain compatibility between the compilers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70827 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
08617b1b475e5ae9c61c9b3536cf712283647284 03-May-2009 Daniel Dunbar <daniel@zuster.org> Driver: Treat -m32 and -m64 as "driver-only" arguments.
- In particular, don't forward them to gcc; these participate in the
selection of the tool chain, which should know how to talk to gcc
and be fixed if it doesn't.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70648 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
11e1b40d759a643086f590f6ffbd9d68360bad46 02-May-2009 Daniel Dunbar <daniel@zuster.org> DragonFly ToolChain definition for driver.
- Patch by Alex Hornung!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70635 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
ptions.def
fffd93f38340d4d2ca7ee78a8c91c890b2ff3fa0 01-May-2009 Douglas Gregor <dgregor@apple.com> Implement -fmessage-length=N, which word-wraps diagnostics to N columns.

Also, put a line of whitespace between the diagnostic and the source
code/caret line when the start of the actual source code text lines up
(or nearly lines up) with the most recent line of the diagnostic. For
example, here it's okay for the last line of the diagnostic to be
(vertically) next to the source line, because there is horizontal
whitespace to separate them:

decl-expr-ambiguity.cpp:12:16: error: function-style cast to a builtin
type can only take one argument
typeof(int)(a,5)<<a;

However, here is a case where we need the vertical separation (since
there is no horizontal separation):

message-length.c:10:46: warning: incompatible pointer types initializing 'void
(int, float, char, float)', expected 'int (*)(int, float, short,
float)'

int (*fp1)(int, float, short, float) = f;

This is part one of <rdar://problem/6711348>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70578 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
a3ff202ee4fb21728e930d5d029ba4925129912c 26-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add -std-default= option.
- This can be used to supply a default value for -std=; the idea is
that this can be used in conjunction with CCC_ADD_ARGS or
QA_OVERRIDE_GCC3_OPTIONS to change the default without having to
modify the build system.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70102 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
4df9a664b7a0bfbd065253349cc5ead88b50b9a2 26-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add option for AddAllArgsTranslated to control whether output argument
should be joined or separate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70101 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
182e09240a33c6f1d303deecabec6e0e9c9d109d 21-Apr-2009 Chris Lattner <sabre@nondot.org> rename -fprint-source-range-info -> -fdiagnostics-print-source-range-info.
Temporarily accept both of them, I'll rip out the old one after awhile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69662 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
7695fba30221613b7cf31276456217c41bb90960 19-Apr-2009 Daniel Dunbar <daniel@zuster.org> Forward f[no-]dollars-in-identifiers to clang, when specified.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69549 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
49138fc59eeac2aacd3b7e04c2642180d5baefd7 19-Apr-2009 Daniel Dunbar <daniel@zuster.org> Forward -fno-diagnostics-fixit-info to clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69546 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
df91ef3d6c55692a0236f67b6c6b134a3bf84098 18-Apr-2009 Douglas Gregor <dgregor@apple.com> Preliminary PCH support in the driver

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69410 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
448f5e6c191b40c90a67c48547df420d16f48b96 17-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Added -print-ivar-layout option. No change in functionality
yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69346 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
9e820ee054fefe5422b4db3f681e567a8976747e 16-Apr-2009 Daniel Dunbar <daniel@zuster.org> Pass -fdiagnostics-show-option to clang-cc by default.
- <rdar://problem/6796848> implement -fdiagnostics-show-option


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69276 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
19cbb44e3c4f2181dafa2ab92d3e3a26619b71d9 16-Apr-2009 Chris Lattner <sabre@nondot.org> tblgen is now passing diagnostic group information in the .inc file, ignore it everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69269 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
e5ca82f20860797b5238d0a67f5ed00281370f7a 16-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Remove the majority of -W* options, the driver doesn't
generally need to know about these now we don't have to hold
clang-cc's hand.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69263 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
06ef3c3e9be4923b8e29c8e267b0c56afaa14ff3 16-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forward -W* to clang, it can handle all these itself now.

Remove clang_W_Group and clang_ignored_W_Group.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69261 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
4ac072aceb9c68f7a023050e2ab9ccacb4fe6e5b 15-Apr-2009 Chris Lattner <sabre@nondot.org> Tblgen now passes the default mapping explicitly, instead of having it
be tied to the diag class. This requires an LLVM tree update.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69175 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
c35d71f1e0a0c72fd43a73ddecd408bf43d501de 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add --help-hidden


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69171 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.def
70d3c92820f590b10553da9c96eda24e4325ba34 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: For clang, accept -fsigned-bitfields and reject
-funsigned-bitfields for now (clang defaults to -fsigned-bitfields).
- <rdar://problem/6790309> ER: Support
-fsigned-bitfields/-funsigned-bitfields


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69131 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
7eba5c9df989632c4dcaf13a20798d33d9ba3186 14-Apr-2009 Chris Lattner <sabre@nondot.org> add support for -W[no-]extra-tokens


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69071 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
d82df3ad430397d7f9ef511e7c5157f997c41f53 12-Apr-2009 Chris Lattner <sabre@nondot.org> Implement support for GCC's -dD mode, which dumps -E output *and*
macro definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68884 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
247aaa64f03c259a029205c1494d2a062e5629bd 09-Apr-2009 Chris Lattner <sabre@nondot.org> add driver support for -Wno-trigraphs


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68650 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
9b2ce37922ef34061cf0c193af7ce295a77d9298 08-Apr-2009 Chris Lattner <sabre@nondot.org> implement -imacros support in driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68641 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
3aaf082689d3235937a2e56a60f90fc1b3aebfb2 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forward remaining -f options to clang manually.
- Groups are really just intended to hold inherent structure of the
options, not be abused for individual tool argument translation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68554 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
2ac9fc2ad64e16127df8c60caeea2edfe9a400a2 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Only forward last instance of -mmacosx-version-min= and
-isysroot to clang.
- Don't forward arbitrary -i* options to clang, just the ones we know
about.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68553 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
48d1ef782c8c88066b5febf60f8f456064d7d3f0 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Manually translate a number of -f with no- variants options to
clang.
- We will eventually want some more driver infrastructre for this
probably.

- For now, the clang-cc interface stays relatively the same, but we
don't accept multiple instances anymore, or the [no-] variants
directly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68550 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
9af6668984f1594459a58c381d95272aa7ca7663 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add default for ArgList::hasFlag and simplify implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68549 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
1e23f5f963dd6a3cee43ace77578161798e41e2d 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add 'q' flag for options which shouldn't be reported as unused.
- <rdar://problem/6756295> warning about '-dynamic' argument unused
during compilation seems incorrect


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68535 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
ptions.def
16fd3a9f5159b74bfdd65cf290b4bd091088de91 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: More verbosity reduction.
- Ignore some more -W options and -[fm] options which we can somewhat
safely ignore.

- Recognize that -W is an alias for -Wextra

W: -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wfour-char-constants -Winit-self -Wmissing-format-attribute -Wno-#warnings -Wno-comment -Wno-long-long -Wno-variadic-macros -Wold-style-definition -Wstrict-prototypes -Wunused-parameter

f: -fconstant-cfstrings -fdollars-in-identifiers -finline -finline-functions -fno-inline -fno-keep-inline-functions -fno-strict-aliasing -fobjc-atdefs -fobjc-call-cxx-cdtors -fobjc-new-property -fstack-protector

m: -mconstant-cfstrings -mfix-and-continue


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68487 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
e06dc219a869d73b6c9a398a2dee0aa2d4e2dcf0 04-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle -dumpversion, this is used by some configuration
scripts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68418 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
bf4a6767a8fd4f81df93c55f88b1b4b7142a04d4 04-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add -Qunused-arguments option to suppress driver "unused
arguments" warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68410 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
68fb469aeb19144403e703b825854d08353c8eea 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Explicitly ignore -fpch-preprocess when using clang, we don't
need to do anything special to support this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68403 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ptions.def
93e54836706ba0c4c1bbf23b72e179263f218245 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Reduce Driver verbosity by suppressing unused warning about another
cluster of -W options.

The list: -Waggregate-return -Wbad-function-cast -Wcast-qual
-Wformat-security -Wformat=2 -Wformat -Wmissing-declarations
-Wnewline-eof -Wno-parentheses -Wpacked -Wredundant-decls -Wshadow
-Wsign-compare -Wstrict-overflow= -Wstrict-overflow -Wuninitialized
-Wunknown-pragmas.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68402 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
7cd2e93125e2f3b6ca01b24ed0c3fd7e94683fd9 03-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Implement -fvisibility.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68369 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
035cf8911c2282550411be70f370dfe5d282b5c9 02-Apr-2009 Mike Stump <mrs@apple.com> Remove -ftrapu.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68330 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
5d8b2cf9fd704f6ca5e33525803a65421c0b440e 02-Apr-2009 Mike Stump <mrs@apple.com> Fixup -ftrapv to be more gcc compatible. -ftrapu (for want of a
better name) is the option that SmallTalk can use to intercept all
overflows, including unsigned. I added some testcases so we don't
break anything.

Also included is another patch from David for += and friends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68267 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
78d8a089c8f124ba6f47bb37e2c4a36986f60e23 02-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Allow -ccc-gcc-name to specify the name/path to use when
calling gcc in generic configurations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68260 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
2add47387d39ee6c40dcb0e9f3d51c27ad1e113c 01-Apr-2009 Mike Stump <mrs@apple.com> Add -ftrapv support, patch from David Chisnall; well all except the
clang option code that is and two bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68240 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
7e203b7f5d894b1969765332e35c6a8b4d45556f 01-Apr-2009 Douglas Gregor <dgregor@apple.com> Revert r68221, -ftrapv support, which causes several regressions in
Clang's test suite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68230 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
3fb07bdc32cb301a8438c297fe7d68542a7537b2 01-Apr-2009 Mike Stump <mrs@apple.com> Add -ftrapv support, patch from David Chisnall; well all except the
clang option code that is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68221 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
91e28afe3503893c69afd71877f11e3bf03fa4ce 31-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement basic --help text.
- PR3875.
- <rdar://problem/6615249> [driver] ccc should support some form of
--help


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68148 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.def
febdf7d3858539a3533895bdeb3bd5c083fb087a 31-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add OptTable::getOptionKind.

Also, removed default value for getOptionMetaVar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68146 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.h
c0d12e93ee244534147960334c095a6d6510d0ae 31-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add extra parameters for help text to option definitions.
- Currently unused.

And yes, now may be about the time I want a TableGen backend.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68139 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
ptions.h
cfdee929290b73ae1c4e5896d5cba120bc677661 31-Mar-2009 Steve Naroff <snaroff@apple.com> Add -Wdeprecated-declarations to driver and add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68117 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
8499f3f5ff8d5f95ece8047780030a3daad1b6fa 31-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement -Wmissing-prototypes. Fixes PR3911.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68110 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
757e0dd411c8b6c9c13a310883457a3372b1795a 30-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Implement -Wno-pointer-sign.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68062 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
75358d267256022475371416654b056ad8531cb3 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sketch FreeBSD tool chain.
- Patch by Ed Schouten!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68061 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
cd8e4c44dd068956e9181381be3ee2d49a0fac52 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support -M and -MM.
- Not particularly elegant, but my hand is forced by gcc.

Also, tweak -ccc-print-bindings output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68027 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
ypes.def
478edc295efc560627053e2320bedd2f696ae028 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Track which original arguments an arg is derived from, so that
we can properly claim arguments, even if they have been translated by
the tool chain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68020 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
1c9b7422dceb5ecdc50bad41e7cf4b635bf89c15 27-Mar-2009 Mike Stump <mrs@apple.com> Fixup -fcommon and -fno-common to be more gcc compatible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67863 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
950bedd8a9f00caabd2f1fc6812d70e08103f847 27-Mar-2009 Mike Stump <mrs@apple.com> Fix searching for gcc, we only want executable files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67806 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
oolChain.h
069afd5c8c515ce483fd2f2a91daa355f66ff478 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forward -fno-common to clang.
- <rdar://problem/6710978> ccc/clang-driver ignore -fno-common


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67762 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
d7b88c2cb8986217f164203747d35c8f596e38c2 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Fix a number of option definition mismatches (flags instead of
separate, or vice versa).

Also, fix initialization of LinkingOutput variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67757 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
70c8db1003af49d3627aeef41fcdd7c6c6a7df79 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Print the correct target when printing the version.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67756 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
d73fe9b70c5f6738d004744562287a62831f39bf 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move GetReleaseVersion to static Driver::GetReleaseVersion method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67754 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
524b9fb54564ab8bc437118ed55ee7c9e8c1247d 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::AddAllArgsTranslated; for forwarding options to
tools with the name of the option replace, and arguments rendered
separately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67753 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
f6dd66b7b80e2fb42628df2593b3948149a53a5f 25-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Replace Option::ForwardToGCC by Option::DriverOption (which
matches the flag in Options.def).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67679 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
f3cad36e59a41b5767fe662b5ac8911ee174b801 25-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Prep for tool chain specific argument translation.
- Lift ArgList to a base class for InputArgList and DerivedArgList.

- This is not a great decomposition, but it does embed the
translation into the type system, and keep things efficient for
tool chains that don't want to do any translation.

- No intended functionality change.

Eventually I hope to get rid of tool chain specific translation and
have each tool do the right thing, but for now this is the easiest way
to match gcc precisely (which is good for testing).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67676 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ompilation.h
river.h
ption.h
ptions.h
oolChain.h
337a6271b98c4c183f7eaad1563a75260b4f2871 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67645 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
ypes.def
0f99d2e57d8e3cf2508e7f9f868d41eccdc229c9 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67640 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Move ToolChain::ShouldUseClangCompiler to
Driver::ShouldUseClangCompiler.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67639 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
oolChain.h
b3fd500a1c486e9fb82d82e28828ead025462aeb 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Translate -fverbose-asm for LLVM backend.
- <rdar://problem/6715707> driver should translate -fverbose-asm into
-asm-verbose


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67634 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
fe2e04a979205c1f395b699a24d74adb82bb4833 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67628 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
d3dfdb8d98c39b400894e40ee679c1e7a3a57bf5 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: -r option doesn't take an argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67581 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
a880db0b0fc028abf754c290d921d809eec0518a 23-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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=.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67549 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
b355692a7f9349e9af747b6b444ce56e9228a696 23-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Check that options are ordered properly (outside of
Release-Asserts mode).

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67548 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.h
b0c4df5c4df69a003f26b378eb95961bc7c486e5 23-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement 'missing argument' error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67490 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
ption.h
ptions.h
af96def468042cfbed55a4cc12b1bb917ead4f33 21-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67425 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
9f9768c1ee1242ca0e665a070038b53f1f0c6799 21-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver/clang-fe: Accept -fbuiltin, and forward -f[no-]builtin to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67420 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
e33bea4ef34598e7a4a6a3a117392268998552d4 21-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67418 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
ee51031c3734176d00723054c765538fcffc0984 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add two option overload for AddAllArgValues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67377 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
38dd3d54186cf44ea9d37f463c3f2800ab526b82 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67366 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
ca3459e95f552cfae6c9c5fb4ed161e3a662c25e 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement -print-search-dirs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67362 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
bbafc5c7645e41a52af688ef8f71a28b19fe4326 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Unbreak ToolChain::get{File,Program}Paths (which should return
reference, not copy).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67361 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
4d7a089144f336b11e5e8ce437b3b27bce2b310d 20-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Bindir and Win32 builds work, so switch to .inc files. Leave the .def files in the tree for a day or so longer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67346 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
ceafbc8f55e00345a85d5e6674d3339a45cbbf76 19-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Executing piped jobs with a single command is easy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67295 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
42f7fc23044cc736db77878734258d35ad3dfe66 19-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67291 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
ptions.def
49b98e700e300b8a61b2f7fbb0bb22264e8ec27a 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Execute jobs; no pipe support yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67250 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
e530ad407af4a8904377592bfdb236acd320c6c2 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Cleanup temporary/result files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67248 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
0edefebc10fbc627d55d53936fc66178d1c08da1 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support ToolChain specific path lists to search for files and
programs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67229 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
214399ebd73545dde02b4a45872e7ca9e1d9e742 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Construct temporary file names.
- This is still suboptimal, but should at least be workable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67223 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
1d46033f760ba5fd266ce59fe391fac473f04f52 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Port Clang argument translation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67193 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
18a7f33af877fca8f72cfde00d52f4aef600547f 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add argument translation utilities to ArgList.
- Support things like telling which -ffoo -fno-foo option won, and
forwarding all arguments matching a certain set of options to the
tool.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67189 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
e324ffe33e179f6167d18834e15c48c49e314bb4 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forgot to mark -### as a driver option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67184 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
6d954d788925e6b80077ef379c8eeb028cc31d0e 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add "d" flag to Options.def for options which are completely
handled by driver.
- This is not very precise, we use it to drive the "forward-to-gcc"
predicate, when trying to talk to a generic gcc tool.

- Slightly better than what ccc was doing, and should be good
enough. Platforms which want a robust driver should implement a
proper tool chain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67181 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
ptions.def
871adcf4e41285e3f4c3b62eaa1b2e05b60b92da 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: ConstructJob also needs to know the destination (where to put
its commands).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67179 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
ool.h
24b5560b6ea51b8a260194710468fa060775fc01 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement -### (hard to tell, since we don't actually
construct any jobs).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67177 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
cfcb96f610d6354234e8c33f3a25e340f6cd3a80 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add forwarding methods to underlying list for PipedJob and
JobList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67176 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
456422c7eccee0e74893eb52b7fcd9171b6ea079 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Make Arg::Claimed mutable.
- This is unfortunate but necessary to retain any utility for const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67173 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
d57ac5990d22592665a67a28fc5d39f1155424d3 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Rename Command::Argv to Command::Arguments to make it clearer
that this does not include the implicit first argument (the executable
name).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67172 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
62cf601812e03dd9bc5df42b8ef06a0cdedc38bf 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add a dash of const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67170 91177308-0d34-0410-b5e6-96231b3b80d8
ool.h
47ac7d27c44bd64a7d0fc03d4babc196cf2b8230 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Stub out Tool::ConstructJob.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67169 91177308-0d34-0410-b5e6-96231b3b80d8
ool.h
til.h
10ffa9a4887d9376e3eb3598e40523d1b58773c9 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Ditch Driver::DefaultToolChain, this can vary between compilations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67162 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
river.h
d9c834f6af12ab21d5d4af8150e6fb94eadda043 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Err, didn't mean to commit this part yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67159 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
21549237f14505cfc2a18a06416372a36229d0ce 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move actions into Compilation, and construct the compilation
earlier.

- This gives us a simple ownership model, and allows clients access
to more information should they ever want it.

- We now free Actions correctly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67158 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
river.h
5c3c1d7b494660ba5e8983ee4584622750725ac2 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add -ccc-print-bindings option (for testing); the Python
driver has no corresponding option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67125 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
31b1e5437e7435879fc044afb77ff27096008e72 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add name to Tool (for testing/debugging) and move GCC_* tools
into gcc:: namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67120 91177308-0d34-0410-b5e6-96231b3b80d8
ool.h
670b7f4fe6720e91520ec5a993b33c00058ed77a 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Stub out generic GCC tool selection.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67108 91177308-0d34-0410-b5e6-96231b3b80d8
ool.h
fa0cda430f7324404ddd74f41a3b8f5f749d7ec1 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pass HostInfo reference into ToolChain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67105 91177308-0d34-0410-b5e6-96231b3b80d8
oolChain.h
e504952bc89f79fc9ff54d5641ab30bb07ec435e 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pass Driver reference down into Host info, which will need it
to pass to ToolChains, which may need Driver specific information (for
example, to form search paths).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67102 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ostInfo.h
1fd6c4b8abbbdcbae0e221f35100102112dabff2 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Hide HostInfo implementations.
- Also, normalize arch names a tad and stub out getToolChain
implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67091 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ostInfo.h
cd4e186cdc1db0dcac937eb20afe8b5f5ff1a38d 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add two option form of ArgList::getLastArg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67090 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
441d060838a5797691777dfcc992ff836b73dcd1 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add logic for computing where to put job outputs (pipe,
temporary file, user provided name, derived name).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67088 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
df78a9515c108677ed42c2b982c612362f18c277 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add list of temporary and result files to Compilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67087 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
3494bb1e01eb5f90d4dc9c91b912daf945da4ff5 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add ArgList::MakeArgString and make ArgList::Make* const.
- Slightly strange, but the idea is that the ArgList data structure
is primarily a list of arguments; we want to allow clients to still
add argument strings to an ArgList to avoid worrying about string
lifetimes (or unnecessary string copying).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67086 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
f353c8cc2ee1cc16ff194b399a8d951f707fb129 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67038 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
586dc233bb88f2920c9f3638f69cef0ccd55dced 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Migrate some data into the Compilation; after pipelining
access to most data should go through the current Compilation, not the
Driver (which shouldn't be specialized on variables for a single
compilation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67037 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
river.h
2ba38ba9a18b8ec88e2509fad622eeec01562769 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sketch Tool and ToolChain classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67036 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ool.h
oolChain.h
a1ead48a4e9961c7eb22592310c7e9c30cb56794 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Include Casting header definitions in a few places, add
Action::getInputs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67035 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
ob.h
4abaed07d1b8037870a1c0de75746aa74d56c428 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Fix comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67021 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
8d2554a2c3201aa664cbf2108cf9d57aa0aa4b0a 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Start warning about unused arguments.
- This has a number of current flaws, enabling now to flush out
problems while bringing up other parts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67015 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
8022fd46d45005de63306a7513aece20a1be16ed 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Update ArgList::{hasArg,getLastArg} to optionally claim the
arguments if they exist.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67014 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
e89b6b272f9f3b15afa56a701a4d7a6b1001ed34 14-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Revert the switch to the tablegen diags. It fails for seperate objdir builds and cmake builds, and I have no clue what to do about it. Revisit this after someone with a clue about the build systems has looked at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67009 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
3801d71fbeb6e74a22cdd6a858e10d887bc29c7a 14-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Switch diagnostics from .def to tablegen files. Please validate the Windows build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67007 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
4db938ceb72dbaa5f7b50f6420a72629acbf29eb 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add types::{isAcceptedByClang,isCXX} predicates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66986 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.h
789e220d481371d52bd6265b5c414c5fe277f76b 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add simple Job classes, simple wrappers for information about
what processes to execute during a compilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66985 91177308-0d34-0410-b5e6-96231b3b80d8
ob.h
f40ed17472a39097cc5039ed437445289487c9bf 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Provide food and shelter for Action vtables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66978 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
57b704d8d8f49bcaf856a3e37941d5ac6456eb50 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sprinkle some consts in, stub out BuildJobs method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66968 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
13135a6171e5eb1dd0b10f49305bb757b8f8b20c 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: Forward -fheinous-gnu-extensions to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66915 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
3dbd6c51bcd8a730c3fe58e29d7e0d999a94fa91 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Some minor bug fixes.
- language recognition was recognizing prefixes incorrectly.
- -x none wasn't working.
- test for "can lipo" was backwords.
- missed a '"' in -ccc-print-phases


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66911 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.def
ba1021388e6839b76c8968b931189361c7286674 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support -ccc-print-phases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66888 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
85da0071a4ab7d6f06831d20bad79122d7407df7 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add cast<> support for Action, and some other accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66887 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Complete "pipelining" (building the list of abstract actions
to perform). Still doesn't do anything interesting.
- This code came out much cleaner than in ccc with the reworked
phases & mapping of types to lists of compilation steps (phases) to
perform.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66885 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
7ab25d5c03db34ca5cbca466a4caa224c4879ec6 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add remaining Action classes we need.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66882 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
c1b5fa81a2dfa4fea2e25bf057363658e7b43681 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add types::getNumCompilationPhases, getCompilationPhase to
provide information about what steps should be done for a particular
file type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66881 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.h
b1efcd824cad12284037cbb63e0312d16ac5c95a 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pull Phase info into separate file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66880 91177308-0d34-0410-b5e6-96231b3b80d8
hases.h
3bf8224fa3818b5afab529915018facffcb215ea 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: Forward -fprint-source-range-info to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66879 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
cb881672c2c46142ec1bdfa401c9818ae805db0f 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle "immediate" options.

Also, add some FIXMEs, improve doxygen & comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66857 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ostInfo.h
8b1604ece7bf6dc2ba811cd7d8767557e55e2ec2 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: Mark {dump{machine,specs,version},
print-{multi-{directory,lib,os-directory}, search-dirs} as unsupported
instead of handling separately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66848 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
7517ac00e40da7a0ee4ebf7451e7dc9da74f15d9 13-Mar-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Bring in std::string to fix compilation on GCC 4.3

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66846 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
af61c71137d1f7239d6b9d7425ce083db7ba31df 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Determine which compilation stages to run.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66844 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
ptions.def
2fe63e6adac0b9e5f52bcc3100b545e379417e6e 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add majority of driver-driver implementation.
- Compare to driverdriver.c if bored; not completely fair since the
driver gets a bit more code in other places to handle binding archs
(for Xarch) but not completely unfair either.

Fear not, extra Action classes will have a happy home for their
vtables soon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66817 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
d65bddcbe1385a4de212ecbbdc8919c54b3efeb0 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Introduce ActionList typedef, tweak some constness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66809 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
til.h
9f5ef9426fee383cb42b72cee1d6dc949c8c0189 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add types::canLipoType helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66807 91177308-0d34-0410-b5e6-96231b3b80d8
ypes.h
1e2d081e8073934ddc1198b6556c2e2f51c99eec 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add some HostInfo accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66806 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
bca58cb5100a4fdff63165af6a1742f5160ec73b 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList support for synthesizing arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66805 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
0c562a23a6560b5736077226ab31d6a9a216ccd3 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::getLastArg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66794 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
4ad4b3ebbe5769143389dccfcfadb666a4ba5940 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Use standard Diagnostic interface for diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66786 91177308-0d34-0410-b5e6-96231b3b80d8
river.h
riverDiagnostic.h
53ec55215075c8f4ddd47ca6ed7d382f16beb670 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Start sketching construction of abstract built actions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66783 91177308-0d34-0410-b5e6-96231b3b80d8
ction.h
river.h
e9fba573bd9433b89a12f747f2c4ccfa490a79cb 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add information on Driver input/temporary types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66781 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
ypes.def
ypes.h
644eade617a4e2e665455accf18c455e8d025699 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Option flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66774 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
83293d268ee496a55423566a88a8af5630e22462 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add definitions for all the gcc options the current ccc
understands.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66769 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
b349fccc4a6e416483b0b36b4f74e39787c62344 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Tweak option naming/def:
- Use OPT_ prefix for ids.

- Reference groups and aliases by shortend id (on the theory that
this is more readable).

- Rename the special option ids to more protected names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66767 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
ptions.h
e1495eced887466e235f6a034953adf5ee1e14e6 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Reorder arguments in Options.def so option name is first.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66759 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.def
ptions.h
d8cadd4f250d1b69373fc80477f67375d2c54820 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::hasArg, for testing for the presence of an
argument matching some Option::ID.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66758 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
cf0dd156e7b9d6a70b7290f5af9646859631bd9a 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Option::getId and Option::matches taking an option
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
ption.h
d377522ba694e52128b419c98dabae7086ccf9c6 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add default index (=0) for Arg::getValue and add Arg::claim
(will be used to emit "command line argument unused" diagnostics).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66756 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
f58e44caf071d81c8d38423978cd420c018c69e1 11-Mar-2009 Daniel Dunbar <daniel@zuster.org> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66613 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
bf5fc320c8d772d44768413602dc82fd197552ea 11-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add host info (add new files).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66604 91177308-0d34-0410-b5e6-96231b3b80d8
ostInfo.h
dd98e2cad165ca73c769e4f105a4e47c2216387a 11-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add host info.
- 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
river.h
365c02f65be026f90e67a8e00e7b827cee60e228 10-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle magic -ccc- options.
- 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
river.h
0648262df75d97b464c2be0ed867da3615659785 05-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Basic argument parsing.
- 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
rg.h
river.h
ptions.def
f781c4192ee51a55c08ec53f054284ad1cdb2043 05-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Arg::dump and SeparateArg stubs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66100 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
70a0dbbfbd933c80722549fef2d56de85c32d752 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add OptTable::ParseOneArg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66090 91177308-0d34-0410-b5e6-96231b3b80d8
ptions.h
9358dc8d1edae6f9279647084e768c6da5715f73 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::{append, getArgString}


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66089 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
fb36caee244b9954caf9d4dda73608980e9c45b8 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Stub out Arg implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66088 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
30b055f553ffa50ae5413ecf0f0ac8061c58f475 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Option's need to know their ID.
- 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
ption.h
ptions.h
3e894bc92c3f7e6eaaa49c2ea3871be8ee43a100 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pull intrusive list out of Arg; this isn't going to suffice. I
will make this efficient later (if it even matters)...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66071 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
eec991a7041ce0142dc326c3ebe627119e3cae2e 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Return reference for Arg::getOption().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66070 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
0f9098e093089e935066729ea06bc86c23d9a432 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Option flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66067 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
3c9cc6bfe933766a8b4177a3f69841b2344ec48a 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Tweak Option::accept interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66066 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
1b3bb6efc59a21f794b534078f9ae7e95393f510 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sink Driver/Compilation into clang::driver namespace.
- Add OptTable instance to Driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66063 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
river.h
6ac1e2252b1a16fd8841c4b1af8fe41b820aa41d 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66037 91177308-0d34-0410-b5e6-96231b3b80d8
rgList.h
2c6f6f3c170502c5b810102cf85f05732a2aa9d0 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66028 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
ptions.def
ptions.h
d35e63106d7b4b76275c85c88ee715c4356f2a6b 03-Mar-2009 Daniel Dunbar <daniel@zuster.org> Hush gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65952 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
0258eeeac5ecbc67b6a09e3497f3d593db01903b 03-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sketch Arg & ArgList classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65937 91177308-0d34-0410-b5e6-96231b3b80d8
rg.h
rgList.h
til.h
1eb4e64eed08837b85a375d6a953503daa844f07 03-Mar-2009 Daniel Dunbar <daniel@zuster.org> Sketch Driver Option classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65933 91177308-0d34-0410-b5e6-96231b3b80d8
ption.h
3ede8d0a7d1813f678ccc6011a99a0834b1b6116 02-Mar-2009 Daniel Dunbar <daniel@zuster.org> Stub out some structure for C++ driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65867 91177308-0d34-0410-b5e6-96231b3b80d8
ompilation.h
river.h
e1bd4e6d7c5b13462f83245865f7d9e9b6ea8486 02-Mar-2009 Daniel Dunbar <daniel@zuster.org> Rename lib/Driver (etc) to lib/Frontend in prep for the *actual*
driver taking lib/Driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65811 91177308-0d34-0410-b5e6-96231b3b80d8
ompileOptions.h
nitHeaderSearch.h
anagerRegistry.h
athDiagnosticClients.h
extDiagnosticBuffer.h
extDiagnosticPrinter.h
4b2d3f7bcc4df31157df443af1b80bcaa9b58bba 26-Feb-2009 Douglas Gregor <dgregor@apple.com> Introduce code modification hints into the diagnostics system. When we
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
extDiagnosticPrinter.h
676f0242a86d7652de586cff360c07c4e752035b 20-Feb-2009 Chris Lattner <sabre@nondot.org> map source ranges through macro expansions. Before:

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
extDiagnosticPrinter.h
ebbbb1b211119e13229c487dfc1713e8d1e77a41 20-Feb-2009 Chris Lattner <sabre@nondot.org> refactor, pass ranges down instead of the whole
DiagnosticInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65088 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticPrinter.h
d000c9ec6e1562e5e1eed2236a67fa9848bf8201 19-Feb-2009 Chris Lattner <sabre@nondot.org> standardise on bastardised american spelling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65027 91177308-0d34-0410-b5e6-96231b3b80d8
nitHeaderSearch.h
6858dd3fcc2d3ac6a706a0294be1d3ac51849022 19-Feb-2009 Chris Lattner <sabre@nondot.org> fix a bug introduced in my previous patch: moving clang headers to the
"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
nitHeaderSearch.h
445026698ca8f97ee7320464dedbe0d077b32d16 18-Feb-2009 Chris Lattner <sabre@nondot.org> move llvm backend specific #includes into Backend.cpp instead of Clang.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64872 91177308-0d34-0410-b5e6-96231b3b80d8
ompileOptions.h
a034ba807be38d9166998d68af71226c64c5c8dd 17-Feb-2009 Daniel Dunbar <daniel@zuster.org> Backend: Accept -mcpu and -mattr for use by TargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64798 91177308-0d34-0410-b5e6-96231b3b80d8
ompileOptions.h
b88af81958b4438a04175ea46d3b4c109ad4625e 17-Feb-2009 Chris Lattner <sabre@nondot.org> break down EmitCaretDiagnostic to use more primitive calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64754 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticPrinter.h
94f55784145e7e3f1414b5368d715fa43ca3b273 17-Feb-2009 Chris Lattner <sabre@nondot.org> split caret diagnostic printing out into its own function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64751 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticPrinter.h
b8bf65e342d0872222f7ac10007d2837d7df437f 30-Jan-2009 Chris Lattner <sabre@nondot.org> " Attached is a patch for TextDiagnosticPrinter that adds an optional
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
extDiagnosticPrinter.h
95effa1e2df6db814add998b0495a12bc58b621e 29-Jan-2009 Chris Lattner <sabre@nondot.org> remove two empty files


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63319 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
19e8e2cffc19606d0f44e7c2897cd126ffd3f9b0 29-Jan-2009 Chris Lattner <sabre@nondot.org> next round of diagnostics cleanups, moving some
diags around, eliminating #defines, etc. Patch by
Anders Johnsen!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63318 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
88eccaf06f9d88191723e71bdf5ca68409393be6 29-Jan-2009 Chris Lattner <sabre@nondot.org> Fix -Wimplicit-function-declaration, which required some refactoring and
changes in various diagnostics code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63282 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
500d3297d2a21edeac4d46cbcbe21bc2352c2a28 29-Jan-2009 Chris Lattner <sabre@nondot.org> move library-specific diagnostic headers into library private dirs. Reduce
redundant #includes. Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63271 91177308-0d34-0410-b5e6-96231b3b80d8
riverDiagnostic.h
b9c3f966b103f7cfe8e5e60007c4c8b38f7298eb 27-Jan-2009 Chris Lattner <sabre@nondot.org> Introduce a new PresumedLoc class to represent the concept of a location
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
extDiagnosticPrinter.h
3b4d5e955e819dd3a4bed37ea2e47d6e4cb05274 17-Jan-2009 Chris Lattner <sabre@nondot.org> Rename SourceLocation::getFileID to getChunkID, because it returns
the chunk ID not the file ID. This exposes problems in
TextDiagnosticPrinter where it should have been using the canonical
file ID but wasn't. Fix these along the way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62427 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticPrinter.h
5abf03bbb9e8703d41bd241a4733d930791fd972 27-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add license comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60144 91177308-0d34-0410-b5e6-96231b3b80d8
anagerRegistry.h
22438a8dfe9f2f273c0b1a47f3f80be782ea6f09 27-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add support for pluggable components of static analyzer.
- Creator function pointers are saved in ManagerRegistry.
- The Register* class is used to notify ManagerRegistry new module is
available.
- AnalysisManager queries ManagerRegistry for configurable module. Then it
passes them to GRExprEngine, in turn to GRStateManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60143 91177308-0d34-0410-b5e6-96231b3b80d8
anagerRegistry.h
a03a5b5a84989b1cbd3917b967e8fe64f99cfa80 19-Nov-2008 Chris Lattner <sabre@nondot.org> switch TextDiagnosticPrinter to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59597 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticPrinter.h
0a14eee528a901c16f0e288fbc10a3abc1660d87 18-Nov-2008 Chris Lattner <sabre@nondot.org> This reworks some of the Diagnostic interfaces a bit to change how diagnostics
are formed. In particular, a diagnostic with all its strings and ranges is now
packaged up and sent to DiagnosticClients as a DiagnosticInfo instead of as a
ton of random stuff. This has the benefit of simplifying the interface, making
it more extensible, and allowing us to do more checking for things like access
past the end of the various arrays passed in.

In addition to introducing DiagnosticInfo, this also substantially changes how
Diagnostic::Report works. Instead of being passed in all of the info required
to issue a diagnostic, Report now takes only the required info (a location and
ID) and returns a fresh DiagnosticInfo *by value*. The caller is then free to
stuff strings and ranges into the DiagnosticInfo with the << operator. When
the dtor runs on the DiagnosticInfo object (which should happen at the end of
the statement), the diagnostic is actually emitted with all of the accumulated
information. This is a somewhat tricky dance, but it means that the
accumulated DiagnosticInfo is allowed to keep pointers to other expression
temporaries without those pointers getting invalidated.

This is just the minimal change to get this stuff working, but this will allow
us to eliminate the zillions of variant "Diag" methods scattered throughout
(e.g.) sema. For example, instead of calling:

Diag(BuiltinLoc, diag::err_overload_no_match, typeNames,
SourceRange(BuiltinLoc, RParenLoc));

We will soon be able to just do:

Diag(BuiltinLoc, diag::err_overload_no_match)
<< typeNames << SourceRange(BuiltinLoc, RParenLoc));

This scales better to support arbitrary types being passed in (not just
strings) in a type-safe way. Go operator overloading?!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59502 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticBuffer.h
extDiagnosticPrinter.h
2383b7f6aea2cb2bf2b5bfc0ec730f9354fecbbf 18-Nov-2008 Chris Lattner <sabre@nondot.org> Change the diagnostics interface to take an array of pointers to
strings instead of array of strings. This reduces string copying
in some not-very-important cases, but paves the way for future
improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59494 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticBuffer.h
extDiagnosticPrinter.h
4fc82c84581476cb3adba8d4107ded22851d9c4d 04-Nov-2008 Ted Kremenek <kremenek@apple.com> Hook up the Plist diagnostic client to the driver.
Fix Plist output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58652 91177308-0d34-0410-b5e6-96231b3b80d8
athDiagnosticClients.h
5d866256333fb6115a8a86ac4f89b2ca36e20c70 03-Nov-2008 Ted Kremenek <kremenek@apple.com> Add path diagnostics client for emitting path reports using Plists.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58647 91177308-0d34-0410-b5e6-96231b3b80d8
athDiagnosticClients.h
ad99dbfc1d9178f9f5c415a81ad5bd39bd09d4b6 03-Nov-2008 Ted Kremenek <kremenek@apple.com> Rename 'HTMLDiagnostics.h' to 'PathDiagnosticClients.h'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58646 91177308-0d34-0410-b5e6-96231b3b80d8
TMLDiagnostics.h
athDiagnosticClients.h
8e8f3b7f61548391b675831f350b4ede040dfdce 29-Oct-2008 Daniel Dunbar <daniel@zuster.org> Choose CompileOptions (optimization passes) to match llvm-gcc more
closely.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58361 91177308-0d34-0410-b5e6-96231b3b80d8
ompileOptions.h
70f92436f5828c11ef108463da4473d44e114c28 23-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add -O[0-3s] support (following llvm-gcc).
- Passes match llvm-gcc but many of the switches aren't wired.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58034 91177308-0d34-0410-b5e6-96231b3b80d8
ompileOptions.h
233f74b29b2864d5984e13f3ae10a21404ef82e8 11-Sep-2008 Douglas Gregor <dgregor@apple.com> Add support for expected-note to Clang's -verify option

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56089 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticBuffer.h
8148839c105992f00be9fd23f68f2139a9112ebf 24-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Moved HTMLDiagnostics to lib/Driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55274 91177308-0d34-0410-b5e6-96231b3b80d8
TMLDiagnostics.h
0fca022d77b89100e746f4d659b84ed5b1ee0158 22-Aug-2008 Nico Weber <nicolasweber@gmx.de> Move most of HeaderSearch initialization to libDriver.

For example, adding the default system include paths in clients is now as
simple as

InitHeaderSearch init(headers);
init.AddDefaultSystemIncludePaths(langopts);
init.Realize();



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55174 91177308-0d34-0410-b5e6-96231b3b80d8
nitHeaderSearch.h
7bfaaaecb3113f955db31e8d8a51acffd1bc0c27 10-Aug-2008 Nico Weber <nicolasweber@gmx.de> * Remove isInSystemHeader() from DiagClient, move it to SourceManager
* Move FormatError() from TextDiagnostic up to DiagClient, remove now
empty class TextDiagnostic
* Make DiagClient optional for Diagnostic

This fixes the following problems:

* -html-diags (and probably others) does now output the same set of
warnings as console clang does
* nothing crashes if one forgets to call setHeaderSearch() on
TextDiagnostic
* some code duplication is removed




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54620 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticBuffer.h
extDiagnosticPrinter.h
extDiagnostics.h
aad6953ca1149d44cebadca8839745796bfd524e 09-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Expressive diagnostics-- worth their weight in gold?
(Fixing a spelling error.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54591 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticPrinter.h
fd54ebcaaf9a165846fdfafb32362238458e7f2d 06-Aug-2008 Nico Weber <nicolasweber@gmx.de> add a libDriver, for now only move the text diangostics stuff from Driver to there

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54383 91177308-0d34-0410-b5e6-96231b3b80d8
extDiagnosticBuffer.h
extDiagnosticPrinter.h
extDiagnostics.h