summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Tools.cpp
Commit message (Collapse)AuthorAgeFilesLines
* If a .syms file is available alongside a sanitizer runtime, pass it to theRichard Smith2013-03-231-3/+14
| | | | | | | | 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%). llvm-svn: 177783
* <rdar://problem/13477190> Give the Clang module cache directory some ↵Douglas Gregor2013-03-211-1/+2
| | | | | | | | | | structure, so it's easier to find. We now put the Clang module cache in <system-temp-directory>/org.llvm.clang/ModuleCache. Perhaps some day there will be other caches under <system-temp-directory>/org.llvm.clang>. llvm-svn: 177671
* Split ubsan runtime into three pieces (clang part):Richard Smith2013-03-201-11/+27
| | | | | | | | | | | | | | | | | | | | | | | | * libclang_rt-san-* is sanitizer_common, and is linked in only if no other sanitizer runtime is present. * libclang_rt-ubsan-* is the piece of the runtime which doesn't depend on a C++ ABI library, and is always linked in. * libclang_rt-ubsan_cxx-* is the piece of the runtime which depends on a C++ ABI library, and is only linked in when linking a C++ binary. This change also switches us to using -whole-archive for the ubsan runtime (which is made possible by the above split), and switches us to only linking the sanitizer runtime into the main binary and not into DSOs (which is made possible by using -whole-archive). The motivation for this is to only link a single copy of sanitizer_common into any binary. This is becoming important now because we want to share more state between multiple sanitizers in the same process (for instance, we want a single shared output mutex). The Darwin ubsan runtime is unchanged; because we use a DSO there, we don't need this complexity. llvm-svn: 177605
* Fix redundant comparison in gcc::Common::ConstructJob.Hans Wennborg2013-03-201-1/+1
| | | | | | | | | | We were checking "Arch == llvm::Triple::x86_64 || Arch == llvm::Triple::x86_64", but the rhs should actually check for powerpc64. Found while experimenting with a potential new Clang warning. llvm-svn: 177496
* [ASan] Make -fsanitize=address always imply -fsanitize=init-orderAlexey Samsonov2013-03-191-8/+0
| | | | llvm-svn: 177391
* Objective-C modern translator. Don't put line infoFariborz Jahanian2013-03-181-1/+5
| | | | | | | | into the pre-preprocessed file to be passed to modern translator when compiling in no debug mode. // rdar://13138170 llvm-svn: 177311
* Pass an ArgList to every toolchain constructor. Remove the useIntegratedAsRafael Espindola2013-03-181-3/+3
| | | | | | argument. llvm-svn: 177301
* Inline ShouldUseIntegratedAssembler and move the documentation toRafael Espindola2013-03-181-10/+3
| | | | | | useIntegratedAs. llvm-svn: 177300
* Refactor a bit of duplicated code to useIntegratedAs.Rafael Espindola2013-03-181-3/+2
| | | | llvm-svn: 177299
* Make sure to use same EABI version for external assembler as for integrated as.Anton Korobeynikov2013-03-181-0/+1
| | | | | | Patch by Andrew Turner! llvm-svn: 177252
* [ASan] Make -fsanitize=address imply -fsanitize=init-order (if the latter is ↵Alexey Samsonov2013-03-141-0/+8
| | | | | | not explicitly disabled). llvm-svn: 177061
* [driver] Only enable -fmodules-autolink if we are using the integrated ↵Ted Kremenek2013-03-121-10/+13
| | | | | | | | assembler. Fixes <rdar://problem/13289240> llvm-svn: 176897
* Revert "Disallow using -fmodules with -no-integrated-as."Ted Kremenek2013-03-121-14/+2
| | | | | | | Per comment from Benjamin Kramer, this isn't portable (yet). I'll come up with a better fix. llvm-svn: 176876
* Disallow using -fmodules with -no-integrated-as.Ted Kremenek2013-03-111-2/+14
| | | | | | | | | | | | | Modules enables features such as auto-linking, and we simply do not want to support a matrix of subtly enabled/disabled features depending on whether or not a user is using the integrated assembler. It isn't clear if this is the best place to do this check. For one thing, these kind of errors are not caught by the serialized diagnostics. Fixes <rdar://problem/13289240> llvm-svn: 176826
* Add flags for additional control over coverage generation. Pick the versionNick Lewycky2013-03-071-2/+9
| | | | | | | | | 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. llvm-svn: 176617
* Add ARM v6m, v7m, and v7em architectures for Cortex-M series processors.Bob Wilson2013-03-041-5/+7
| | | | | | <rdar://problem/11314476> llvm-svn: 176458
* Tidy up lists of Cortex-A series processors, adding entries for A7.Bob Wilson2013-03-041-3/+5
| | | | | | Also fix a missing entry for cortex-r5 in one copy of getLLVMArchSuffixForARM. llvm-svn: 176457
* Check for warnings in a bunch of the linker invocations, and add oneChandler Carruth2013-03-041-2/+2
| | | | | | | | | | | with both -static-libgcc and -static on the commandline. Fix a warning in the latter case due to a backwards short circuiting || operator in the driver. No real functionality changed here, just allows the driver to properly consume -static-libgcc when -static is also specified. llvm-svn: 176429
* [Mips] Add two new aliases for MIPS ABI names 32 (means o32 abi) and 64Simon Atanasyan2013-02-271-16/+12
| | | | | | | (means n64 abi) to improve compatibility with GNU tools. Patch by Jia Liu <proljc@gmail.com>. llvm-svn: 176187
* [Sanitizer] Change driver behavior when linking with -fsanitize=thread and ↵Alexey Samsonov2013-02-271-49/+33
| | | | | | -fsanitize=memory. TSan/MSan also provide their versions of new/delete and should use the same strategy as ASan. Share the code that sets linker flags for all sanitizers. llvm-svn: 176178
* Propagate the split dwarf file information through into the backendEric Christopher2013-02-221-3/+4
| | | | | | | | | and through to the debug info in the module. In order to make the testcase a bit more efficient allow the filename to go through compilation for compile and not assemble jobs and turn off the extract for cases where we don't create an object. llvm-svn: 175935
* Driver: Pass down the -march setting down to -cc1as on x86 too.Benjamin Kramer2013-02-221-0/+14
| | | | | | | The assembler historically didn't make use of any target features, but this has changed when support for old CPUs that don't support long nops was added. llvm-svn: 175919
* Split out the command handling for split debug info, we're goingEric Christopher2013-02-221-28/+39
| | | | | | | | | 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. llvm-svn: 175916
* Comment parsing: add CommentOptions to allow specifying custom comment block ↵Dmitri Gribenko2013-02-221-0/+3
| | | | | | | | | | | | | | | | 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. llvm-svn: 175892
* Add -fbracket-depth=N, analogous to -ftemplate-depth= and -fconstexpr-depth=,Richard Smith2013-02-221-0/+5
| | | | | | | | | | | 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. llvm-svn: 175855
* Make sure we only use the output file as a base for debug splittingEric Christopher2013-02-221-1/+1
| | | | | | if we're compiling. llvm-svn: 175851
* Make logic smaller.Eric Christopher2013-02-221-7/+4
| | | | llvm-svn: 175839
* Don't pass -split-dwarf= to the backend unless we're on linux forEric Christopher2013-02-211-1/+3
| | | | | | now. llvm-svn: 175814
* Remove the SplitDebug action and replace with a set of commandsEric Christopher2013-02-211-37/+49
| | | | | | | in the compilation setup. Note that this doesn't currently work for -no-integrated-as. llvm-svn: 175813
* Respect -fno-canonical-prefixes when deciding where to generate .gcno and .gcdaNick Lewycky2013-02-211-3/+7
| | | | | | files. llvm-svn: 175706
* [Sanitizer] If -fsanitize-blacklist= option is not explicitly specified, ↵Alexey Samsonov2013-02-191-0/+8
| | | | | | make Clang look for the default sanitizer-specific blacklist in the resource directory. llvm-svn: 175505
* More grammar.Eric Christopher2013-02-191-1/+1
| | | | llvm-svn: 175492
* Add support for -fvisibility-ms-compat.John McCall2013-02-191-3/+13
| | | | | | | | | | | | | | | 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 llvm-svn: 175480
* Unify some "kernel or kext" conditionals.Eric Christopher2013-02-181-5/+3
| | | | llvm-svn: 175414
* Add a comment.Eric Christopher2013-02-181-0/+1
| | | | llvm-svn: 175412
* Clean up comment.Eric Christopher2013-02-181-1/+1
| | | | llvm-svn: 175411
* Grammar.Eric Christopher2013-02-181-1/+1
| | | | llvm-svn: 175410
* Use -mno-implicit-float by default for kernel/kext code. <rdar://13177960>Bob Wilson2013-02-101-4/+12
| | | | | | | | | | | Apple's kernel engineers have been expecting this behavior even though we've never implemented it before, as far as I can tell. In recent months, clang has gotten better at using vector instructions to optimize memcpy-like operations, and that has exposed problems when vector/floating-point instructions are used in kexts that don't support that. This behavior also matches what Apple's GCC did for PowerPC targets. llvm-svn: 174838
* Recognize -mno-implicit-float option for x86 as well as ARM. <rdar://13180731>Bob Wilson2013-02-101-1/+2
| | | | | | | | | For x86 targets, we've been using the -msoft-float option to control passing the no-implicit-float option to cc1. Since the -mno-implicit-float option is now accepted by the driver, this just makes it work for x86 the same as it does for ARM targets. llvm-svn: 174836
* Form the default -fmodules-cache-path= properly.Douglas Gregor2013-02-071-1/+3
| | | | llvm-svn: 174674
* Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for ↵Douglas Gregor2013-02-071-17/+19
| | | | | | consistency. llvm-svn: 174645
* Introduce -fmodules-ignore-macro=NNN to ignore a macro when building/loading ↵Douglas Gregor2013-02-071-0/+3
| | | | | | | | | | | | | | | | | | | | | 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>. llvm-svn: 174560
* Driver and option support for -gsplit-dwarf. This is a part ofEric Christopher2013-02-051-6/+49
| | | | | | the DWARF5 split dwarf proposal. llvm-svn: 174349
* Add some missing PPC cpusBill Schmidt2013-02-011-0/+13
| | | | llvm-svn: 174215
* Add -mqpx and -mno-qpx feature flags to toggle use of the PPC QPX vector ↵Hal Finkel2013-02-011-0/+5
| | | | | | | | instruction set I've renamed the altivec test to ppc-features (because now there is more than one feature to test). llvm-svn: 174204
* Add PPC A2Q core and BG/Q preprocessor definitionsHal Finkel2013-02-011-0/+1
| | | | | | The a2q core is the variant of the a2 core used on the BG/Q supercomputers. llvm-svn: 174151
* Enable -fno-altivec, -mno-altivec for PowerPC.Bill Schmidt2013-02-011-0/+6
| | | | | | | | | | | 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. llvm-svn: 174140
* Add support for AArch64 target.Tim Northover2013-01-311-0/+5
| | | | | | | | | | | | | In cooperation with the LLVM patch, this should implement all scalar front-end parts of the C and C++ ABIs for AArch64. This patch excludes the NEON support also reviewed due to an outbreak of batshit insanity in our legal department. That will be committed soon bringing the changes to precisely what has been approved. Further reviews would be gratefully received. llvm-svn: 174055
* [ubsan] Implement the -fcatch-undefined-behavior flag using a trappingChad Rosier2013-01-291-0/+32
| | | | | | | | | | | 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. llvm-svn: 173848
* Print warning instead of error if optional ASan features are enabled w/o ↵Alexey Samsonov2013-01-281-6/+9
| | | | | | specifying -fsanitize=address llvm-svn: 173670
OpenPOWER on IntegriCloud