aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/Tools.cpp
AgeCommit message (Collapse)Author
2012-03-21Duplicated code is bad. At least make it consistent.Bob Wilson
The getARMTargetCPU and getLLVMArchSuffixForARM functions exist in both Toolchain.cpp and Tools.cpp. This stuff needs a thorough overhaul. In the meantime, this patch at least makes them consistent. One version had been converted to use StringSwitch, and the other version had new Cortex M-series processors added. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153202 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-19Fix a regression where ':' in CPLUS_INCLUDE_PATH and friends would no longer ↵Nico Weber
separate paths. This regressed in r152583. Also add a test to make sure it doesn't regress again. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153034 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-15[frontend] Fix how the frontend handles -fno-inline. AFAIK clang now matchesChad Rosier
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
2012-03-15Reapply r152745 (reverted in 152765) now that compiler-rt is fixed.David Blaikie
Original commit message: Provide -Wnull-conversion separately from -Wconversion. Like GCC, provide a NULL conversion to non-pointer conversion as a separate flag, on by default. GCC's flag is "conversion-null" which we provide for cross compatibility, but in the interests of consistency (with -Wint-conversion, -Wbool-conversion, etc) the canonical Clang flag is called -Wnull-conversion. Patch by Lubos Lunak. Review feedback by myself, Chandler Carruth, and Chad Rosier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152774 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-15Revert r152745 as it's breaking the internal buildbots.Chad Rosier
Abbreviated commit message: Provide -Wnull-conversion separately from -Wconversion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152765 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-14Provide -Wnull-conversion separately from -Wconversion.David Blaikie
Like GCC, provide a NULL conversion to non-pointer conversion as a separate flag, on by default. GCC's flag is "conversion-null" which we provide for cross compatibility, but in the interests of consistency (with -Wint-conversion, -Wbool-conversion, etc) the canonical Clang flag is called -Wnull-conversion. Patch by Lubos Lunak. Review feedback by myself, Chandler Carruth, and Chad Rosier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152745 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13[driver] Clang should report an error for -faltivec on non-ppc.Chad Rosier
rdar://10963572 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152684 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13Tweak linkage order for solaris.David Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152627 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-12Address some of the concerns by Chandler.Bill Wendling
* s/AddDirectoryList/addDirectoryList/ * Move the call to ::getenv into the function. * FileCheck-ize the testcase. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152583 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-12Have clang pay attention to the LIBRARY_PATH environment variable.Bill Wendling
The LIBRARY_PATH environment variable should be honored by clang. Have the driver pass the directories to the linker. <rdar://problem/9743567> and PR10296. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152578 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10Use VersionTuple to manage macosx versions in the driver. No functionality ↵Benjamin Kramer
change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152504 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09Update comment after r152140. Clarify a bit too.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152441 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08[analyzer] Rework inlining related command line options.Anna Zaks
- 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
2012-03-08Implement -fno-dwarf2-cfi-asm on linux too.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152316 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-06[driver] What was implemented in r152130 was actually -fno-inline-functions, notChad Rosier
-fno-inline. Part of rdar://10972766 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152145 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-06Add new code migrator support for migrating existing Objective-C code to useTed Kremenek
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
2012-03-06Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,Ted Kremenek
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
2012-03-06[driver] Add support for -fno-inline.Chad Rosier
rdar://10972766 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152130 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-01[analyzer] Turn inlining on by default for better testing exposure.Anna Zaks
Fix a test, which was most likely an unintended recursive call. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151848 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-01Add a flag -fthread-sanitizer.Kostya Serebryany
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
2012-02-29Add -C when linking on Solaris so that the error messages are understandable ↵David Chisnall
by actual humans. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151726 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-29[driver] Emit an error when trying to use ARC on macosx earlier than 10.6Argyrios Kyrtzidis
rdar://10459258 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151706 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-28Add -lm by default on Solaris.David Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151653 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-28It turns out -fno-cxa-atexit just produces broken code, so disable it on ↵David Chisnall
Solaris and we'll ship a __cxa_atexit implementation... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151648 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-28Some more Solaris fixes. Now successfully building libc++ on Solaris with ↵David Chisnall
clang (and linking clang against it). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151632 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-18Default to not using __cxa_atexit on Solaris.David Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150883 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16Tweak link order on Solaris so that global ctors work.David Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150696 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Remove the unuseful -fdiagnostics-show-nameDavid Blaikie
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
2012-02-15Add some Solaris include paths and fix a -lgcc_eh that apparently should be ↵David Chisnall
-lgcc_s. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150602 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15First pass at Solaris toolchain support. This version compiles and links helloDavid Chisnall
world on Solaris 11 for both x86 and x86-64 using the built-in assembler and Solaris (not GNU) ld, however it currently relies on a hard-coded GCC location to find crtbegin.o and crtend.o, as well as libgcc and libgcc_eh. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150580 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-10Have the driver pass CPU and target feature information to cc1as.Jim Grosbach
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
2012-02-07Filter a few more options not recognized by gcc. <rdar://problem/10814020>Bob Wilson
These are new options that gcc doesn't recognize so the clang driver needs to remove them when it falls back to invoking gcc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149951 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06Rewrite the debug action handling to take -verify into account.Eric Christopher
Add a quiet option for dwarfdump and move it out of NDEBUG only. Still requires an option as we don't want this on by default. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149894 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06Update the command line here and update the comment, we're just goingEric Christopher
to leave this as a debug only option for now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149890 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-05Basic: import SmallString<> into clang namespaceDylan Noblesmith
(I was going to fix the TODO about DenseMap too, but that would break self-host right now. See PR11922.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149799 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-03Fix -ftrap-function fallout from llvm r145714. <rdar://problem/10799325>Bob Wilson
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
2012-01-30[analyzer] Rename the checker as per Ted's comment. Remove the referenceAnna Zaks
from the driver. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149276 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Remove the ToolTriple logic in NetBSD, which was completely broken byJoerg Sonnenberger
the recent refactoring. All interesting NetBSD release have a GNU as version on i386 that supports --32, so don't bother with the conditional setting of it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149087 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Enable several checkers under --analyze for general testing.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149016 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Delete the driver's HostInfo class. This abstraction just never reallyChandler Carruth
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
2012-01-23Add support for -fno-optimize-sibling-calls. Currently only implemented in theNick Lewycky
X86 backend in LLVM. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148689 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-21[Cygwin] Abandon Cygwin-1.5 and g++-3. Use g++-4.3 and higher on Cygwin-1.7.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148636 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20Reenable DeadStoresChecker under --analyze, and move the ↵Ted Kremenek
IdempotentOperationsChecker to the 'experimental' category. Fixes <rdar://problem/10146347>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148533 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18In the driver, -fmodules enables modules for C/Objective-C but oneDouglas Gregor
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
2012-01-13remove assertions in the Hexagon backend specific clang driverSebastian Pop
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
2012-01-12Adjust set of default checkers.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148055 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-11Fix -mfpu parsing on ARM.Evgeniy Stepanov
- Support gcc-compatible vfpv3 name in addition to vfp3. - Support vfpv3-d16. - Disable neon feature for -mfpu=vfp* (yes, we were emitting Neon instructions for those!). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147943 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-10Add support for the androideabi environment to our triple support, andChandler Carruth
for the arm-linux-androideabi triple in particular. Also use this to do a better job of selecting soft FP settings. Patch by Evgeniy Stepanov. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147872 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-10Add -g to the cc1as flags only if we're dealing with an originalEric Christopher
source file. Otherwise -g -save-temps will error out on the compile of any .c file. Fixes about 4000 of the errors in the clang-tests gdb test suite. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147819 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-10Remove extraneous braces.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147818 91177308-0d34-0410-b5e6-96231b3b80d8