Commit Graph

2016 Commits

Author SHA1 Message Date
Hans Wennborg d6fdc583ab clang-cl: Make /W4 imply -Wall -Wextra (PR25563)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253582 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-19 17:49:59 +00:00
Bradley Smith f541bc67f4 [ARM] Support +feature targeting in -mcpu/-march
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253471 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-18 16:33:48 +00:00
Douglas Katzman 11a671a08f [Myriad]: insert -L paths into linker cmd only when they exist.
Differential Revision: http://reviews.llvm.org/D14754

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253467 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-18 16:24:46 +00:00
Douglas Katzman 419abc9995 [Myriad]: -nostdlib implies -nostartfiles
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253390 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 22:33:34 +00:00
Artem Belevich 2a6c10f5d8 [CUDA] Make CUDA compilation usable by default.
Currently clang requires several additional command
line options in order to enable new features needed
during CUDA compilation. This patch makes these
options default.

* Automatically include cuda_runtime.h if we've found
  a valid CUDA installation.
* Disable automatic CUDA header inclusion during unit tests.
* Added test case for command line construction.
* Enabled target overloads and relaxed call checks that are
  needed in order to include CUDA headers.
* Added CUDA-7.5 installation path to the CUDA installation search list.
* Define __CUDA__ macro to indicate CUDA compilation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253389 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 22:28:55 +00:00
Artem Belevich 7211791943 [CUDA] added include paths for both sides of CUDA compilation.
In order to compile a CUDA file clang must be able to find
include files for both both host and device.

This patch passes AuxToolchain to AddPreprocessingOptions and
uses it to add include paths for the opposite side of compilation.

We also must be able to find CUDA include files. If the driver
found CUDA installation, it adds appropriate include path
to CUDA headers. This can be disabled with '-nocudainc'.

- Added include paths for the opposite side of compilation.
- Added include paths to detected CUDA installation.
- Added -nocudainc to prevent adding CUDA include path.
- Added test cases to verify new functionality.

Differential Revision: http://reviews.llvm.org/D13170

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253386 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 22:28:46 +00:00
Artem Belevich 556fea86b4 [CUDA] use -aux-triple to pass target triple of opposite side of compilation
Clang needs to know target triple for both sides of compilation so that
preprocessor macros and target builtins from both sides are available.

This change augments Compilation class to carry information about
toolchains used during different CUDA compilation passes and refactors
BuildActions to use it when it constructs CUDA jobs.

Removed DeviceTriple from CudaHostAction/CudaDeviceAction as it's no
longer needed.

Differential Revision: http://reviews.llvm.org/D13144

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253385 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 22:28:40 +00:00
Douglas Katzman f418a27719 Use !hasArg with two options instead of !hasArg && !hasArg.
Thereby fixing a warning about failure to claim all args.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253372 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 20:28:07 +00:00
Douglas Katzman 5417ea0ce8 Add trivial utility to append -L arguments to linker step. NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253350 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 17:41:23 +00:00
Douglas Katzman 124e904edd [Myriad]: pass the 'std=' option to moviCompile
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253213 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-16 15:38:40 +00:00
Rafael Espindola 5b7eec804c Update for the gnu flavor being renamed to old-gnu.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253191 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-16 09:12:12 +00:00
Yaron Keren 4f60e73bd8 Make the mingw toolchain accept 'ld' and 'lld' only as values to -fuse-ld.
Post-commit suggestion by Filipe Cabecinhas.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253161 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-15 08:06:27 +00:00
Justin Bogner 2615c4a4ab Revert "[AArch64] Unconditionally pass subtarget feature reserve-x18 on Darwin."
This reverts r243310, which is redundant as of r253102.

Conflicts:
	lib/Driver/Tools.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253104 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-13 23:07:31 +00:00
Akira Hatanaka 89b2048244 Add support for driver option -mno-ms-bitfields.
This option is used to cancel -mms-bitfields on the command line.

rdar://problem/15898553


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252912 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 17:21:22 +00:00
Vasileios Kalintiris 6cbd42c5de Re-recommit: Add support for the new mips-mti-linux toolchain.
Last time, this caused two Windows buildbots and a single ARM buildbot to fail.
I XFAIL'd the failing test on win32,win64 machines in order to see if the ARM
buildbot complains again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252901 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 15:26:54 +00:00
Joerg Sonnenberger cf22e53990 Use the generic Sparc CPU handling for Linux, FreeBSD and OpenBSD, too.
This currently changes the default toward the more historic -Av8/-Av9,
but as discussed with James Y Knight, consistency is for now more
important than figuring out which default CPU each OS should be using.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252571 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-10 00:40:29 +00:00
Joerg Sonnenberger 26f8a3c655 Use the normal switch over getArch() approach and not a long if chain.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252562 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-10 00:23:12 +00:00
Joerg Sonnenberger 6116fc0887 Reorganise CPU handling for Sparc. When using -mcpu=v9 and co, __sparcv8
is not defined for 32bit mode, but __sparcv9 is. Pass down the correct
-target-cpu flags to the backend, so that instruction restrictions are
applied correctly. Pass down the correct -A flag when not using IAS.
The latter is limited to NetBSD targets in this commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252545 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-09 23:39:45 +00:00
Renato Golin 2afc87e217 [EABI] Add Clang support for -meabi flag
The -meabi flag to control LLVM EABI version.

Without '-meabi' or with '-meabi default' imply LLVM triple default.
With '-meabi gnu' sets EABI GNU.
With '-meabi 4' or '-meabi 5' set EABI version 4 and 5 respectively.

A similar patch was introduced in LLVM.

Patch by Vinicius Tinti.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252463 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-09 12:40:41 +00:00
John McCall 57c6d436f0 After some discussion, promote -fobjc-weak to a driver option.
rdar://problem/23415863

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252187 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-05 19:19:56 +00:00
Eugene Zelenko 8a76d2e3bd Fix some Clang-tidy modernize warnings, other minor fixes.
Differential revision: http://reviews.llvm.org/D14311


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252081 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-04 21:37:17 +00:00
Aaron Ballman 9e2aa8e15a Silence "enumeral and non-enumeral type in conditional expression" warning; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252047 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-04 14:43:43 +00:00
Teresa Johnson 9a8bffc6b1 Clang format a few prior patches (NFC)
I had clang formatted my earlier patches using the wrong style.
Reformatted with the LLVM style.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251813 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-02 18:03:12 +00:00
Tim Northover 4f3b7565cd Disable SjLj exceptions for watchOS
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251709 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-30 16:30:41 +00:00
Tim Northover 9605ec4bd7 Watch and TV OS: wire up basic ABI choices
This sets the mostly expected Darwin default ABI options for these two
platforms. Active changes from these defaults for watchOS are in a later patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251708 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-30 16:30:36 +00:00
Tim Northover 56c5241273 Support watchOS and tvOS driver options
This patch should add support for almost all command-line options and
driver tinkering necessary to produce a correct "clang -cc1"
invocation for watchOS and tvOS.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251706 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-30 16:30:27 +00:00
Vasileios Kalintiris df2a595cc3 Revert "[mips] Add support for the new mips-mti-linux toolchain."
This reverts commits r251633. I'll investigate the test failure off trunk in
order to keep the buildbots clean.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251698 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-30 11:28:39 +00:00
Renato Golin 4f4b142134 Revert "Try to run and investigate the mips-mti-linux.c test failure on ARM buildbots."
This reverts commit r251695. Debug is meant to be done off tree, not use the buildbots
experiments. I'll help investigate this problem off trunk.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251696 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-30 11:12:36 +00:00
Vasileios Kalintiris 6d07a67d27 Try to run and investigate the mips-mti-linux.c test failure on ARM buildbots.
This should be a NFC for every toolchain other than mips-mti-linux (where we
print the list of directories searched for crt files). It will soon be
reverted once we hit the clang-cmake-armv7-a15-selfhost-neon buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251695 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-30 10:35:38 +00:00
Vasileios Kalintiris 938b22a8b3 [mips] Add support for the new mips-mti-linux toolchain.
The original commit in r249137 added the mips-mti-linux toolchain. However,
the newly added tests of that commit failed in few buildbots. This commit
re-applies the original changes but XFAILs the test file which caused
the buildbot failures. This will allow us to examine what's going wrong
without having to commit/revert large changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251633 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-29 15:33:53 +00:00
Saleem Abdulrasool 0e6de21771 Driver: CrossWindows sanitizers link support
Add the required libraries to the linker invocation when building with
sanitizers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251600 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-29 03:36:45 +00:00
Saleem Abdulrasool ed571a8fac Driver: inline some small arrays
Use an initializer list to remove a couple of small static arrays.  NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251599 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-29 03:36:42 +00:00
Benjamin Kramer ea62bd9c83 Put global classes into the appropriate namespace.
Most of the cases belong into an anonymous namespace. No functionality
change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251514 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-28 13:54:16 +00:00
Saleem Abdulrasool 3e66583b18 Driver: support -fuse-ld= on cross windows
Update the linker selection to support the `-fuse-ld=` option for selecting a
linker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251493 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-28 04:45:58 +00:00
Daniel Sanders 83c707824a [mips] Separated mips specific -Wa options, so that they are not checked on other platforms.
Summary: This is a follow on to post review comments on revision r248276.

Patch by Scott Egerton.

Reviewers: vkalintiris, dsanders

Subscribers: joerg, rengolin, cfe-commits

Differential Revision: http://reviews.llvm.org/D13100


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251430 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-27 18:04:42 +00:00
John McCall abdd82457f Define weak and __weak to mean ARC-style weak references, even in MRC.
Previously, __weak was silently accepted and ignored in MRC mode.
That makes this a potentially source-breaking change that we have to
roll out cautiously.  Accordingly, for the time being, actual support
for __weak references in MRC is experimental, and the compiler will
reject attempts to actually form such references.  The intent is to
eventually enable the feature by default in all non-GC modes.
(It is, of course, incompatible with ObjC GC's interpretation of
__weak.)

If you like, you can enable this feature with
  -Xclang -fobjc-weak
but like any -Xclang option, this option may be removed at any point,
e.g. if/when it is eventually enabled by default.

This patch also enables the use of the ARC __unsafe_unretained qualifier
in MRC.  Unlike __weak, this is being enabled immediately.  Since
variables are essentially __unsafe_unretained by default in MRC,
the only practical uses are (1) communication and (2) changing the
default behavior of by-value block capture.

As an implementation matter, this means that the ObjC ownership
qualifiers may appear in any ObjC language mode, and so this patch
removes a number of checks for getLangOpts().ObjCAutoRefCount
that were guarding the processing of these qualifiers.  I don't
expect this to be a significant drain on performance; it may even
be faster to just check for these qualifiers directly on a type
(since it's probably in a register anyway) than to do N dependent
loads to grab the LangOptions.

rdar://9674298

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251041 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-22 18:38:17 +00:00
Xinliang David Li 37bc78dc7a clang driver toolchain refactoring
In this patch, the file static method addProfileRT is
moved to be a virtual member function of base ToolChain class.
This allows derived toolchain to override the default behavior
easily and make it consistent with Darwin toolchain (a TODO was
added for this refactoring - now removed). A new helper method
is also introduced to test if instrumentation profile option
is turned on or not.

Differential Revision: http://reviews.llvm.org/D13326


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250994 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-22 06:15:31 +00:00
Douglas Katzman 2ca27de5f3 [Myriad]: Always add -L paths even if -nostdlib is set.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250932 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-21 19:33:54 +00:00
Dimitry Andric 08ead09cfb Support linking against OpenMP runtime on FreeBSD.
Summary:
Similar to rL248426 (which was a followup to rL248379 and rL248424), add the
required libraries for OpenMP on the linker command line, and update the test
case.

Reviewers: emaste, theraven, joerg

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D13822

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250657 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-18 13:32:20 +00:00
Craig Topper f112eacb43 Make a bunch of static arrays const.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250647 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-18 05:29:26 +00:00
Filipe Cabecinhas 390d9b3e92 PS4: Make sure to add the sanitizer runtime before any linker input
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250514 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-16 15:07:48 +00:00
Teresa Johnson b30376f1ca Recommit "Clang support for -flto=thin."
This recommits r250398 with fixes to the tests for bot failures.

Add "-target x86_64-unknown-linux" to the clang invocations that
check for the gold plugin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250455 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 20:35:53 +00:00
Teresa Johnson 681157a8a9 Revert "Clang support for -flto=thin." (bot failures)
Rolling this back for now since there are a couple of bot failures on
the new tests I added, and I won't have a chance to look at them in detail
until later this afternoon. I think the new tests need some restrictions on
having the gold plugin available.

This reverts commit r250398.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250402 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 13:41:51 +00:00
Teresa Johnson 7128e301f9 Clang support for -flto=thin.
Summary:
Add clang support for -flto=thin option, which is used to set the
EmitFunctionSummary code gen option on compiles.

Add -flto=full as an alias to the existing -flto.

Add tests to check for proper overriding of -flto variants on the
command line, and convert grep tests to FileCheck.

Reviewers: dexonsmith, joker.eph

Subscribers: davidxl, cfe-commits

Differential Revision: http://reviews.llvm.org/D11908

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250398 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 13:08:13 +00:00
Douglas Katzman 34847ba18a Remove unnecessary braces in single-line 'if'.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250363 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 04:10:40 +00:00
Filipe Cabecinhas 5d7c81cfa5 Bring back r250262: PS4 toolchain
There was a minor problem with a test. Sorry for the noise yesterday.

This patch adds missing pieces to clang, including the PS4 toolchain
definition, added warnings, PS4 defaults, and Driver changes needed for
our compiler.

A patch by Filipe Cabecinhas, Pierre Gousseau and Katya Romanova!

Differential Revision: http://reviews.llvm.org/D13482

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250293 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-14 12:25:43 +00:00
Sean Silva 00a91779d6 Revert-to-green r250262 (PS4 toolchain patch)
It is breaking llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast
e.g. http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/1362

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250273 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-14 06:45:07 +00:00
Ekaterina Romanova fb7d1d842e I took care of the build problem in the commit 250252.
Resubmitting the patch. 

This patch adds missing pieces to clang, including the PS4 toolchain
definition, added warnings, PS4 defaults, and Driver changes needed for
our compiler.

A patch by Filipe Cabecinhas, Pierre Gousseau and Katya Romanova!

Differential Revision: http://reviews.llvm.org/D13482



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250262 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-14 01:09:02 +00:00
Ekaterina Romanova 08b6d449b7 reverting my patch, cause build problems
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250257 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-14 00:03:20 +00:00
Ekaterina Romanova 1254d89521 This patch adds missing pieces to clang, including the PS4 toolchain
definition, added warnings, PS4 defaults, and Driver changes needed for
our compiler.

A patch by Filipe Cabecinhas, Pierre Gousseau and Katya Romanova!

Differential Revision: http://reviews.llvm.org/D13482



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250252 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-13 23:40:02 +00:00
Douglas Katzman 96497ca976 Always pass a -dwarf-version argument to integrated as.
This removes the default of 3 hidden in the assembler previously.

Fixes breakage caused by r249655, reported by vsukharev.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250173 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-13 16:22:51 +00:00
Saleem Abdulrasool cc4221bf16 Support Debug Info path remapping
Add support for the `-fdebug-prefix-map=` option as in GCC.  The syntax is
`-fdebug-prefix-map=OLD=NEW`.  When compiling files from a path beginning with
OLD, change the debug info to indicate the path as start with NEW.  This is
particularly helpful if you are preprocessing in one path and compiling in
another (e.g. for a build cluster with distcc).

Note that the linearity of the implementation is not as terrible as it may seem.
This is normally done once per file with an expectation that the map will be
small (1-2) entries, making this roughly linear in the number of input paths.

Addresses PR24619.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250094 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 20:21:08 +00:00
Douglas Katzman c3966abdb3 [Myriad]: put libstdc++ and libc in the right order
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249893 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 20:26:20 +00:00
Evgeniy Stepanov 9304fa7ea0 Use Triple.isAndroid() where possible.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249751 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 21:21:44 +00:00
Reid Kleckner 041cfae0d5 [clang-cl] Make /EHs turn on C++ EH once again
C++ exceptions are still off by default, which is similar to how C++
cleanups are off by default in MSVC.

If you use clang instead of clang-cl, exceptions are also still off by
default. In the future, when C++ EH is proven to be stable, we may flip
the default for that driver to be consistent with other platforms.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249704 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 17:29:07 +00:00
Benjamin Kramer 1b55f2b329 [Driver] Use Twine instead of itostr. NFC.
No need to construct temporary std::strings here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249676 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 10:31:17 +00:00
Douglas Katzman 24825ee43c Use itostr(), not std::to_string() because of Android.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249658 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 05:25:03 +00:00
Douglas Katzman adbb8c2aef Stop messing with the 'g' group of options in CompilerInvocation.
With this change, most 'g' options are rejected by CompilerInvocation.
They remain only as Driver options. The new way to request debug info
from cc1 is with "-debug-info-kind={line-tables-only|limited|standalone}"
and "-dwarf-version={2|3|4}". In the absence of a command-line option
to specify Dwarf version, the Toolchain decides it, rather than placing
Toolchain-specific logic in CompilerInvocation.

Also fix a bug in the Windows compatibility argument parsing
in which the "rightmost argument wins" principle failed.

Differential Revision: http://reviews.llvm.org/D13221

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249655 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 04:24:12 +00:00
Benjamin Kramer 032169da0a [VFS] Port driver tool chains to VFS.
There are still some loose ends here but it's sufficient so we can detect
GCC headers that are inside of a VFS.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249556 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-07 15:48:01 +00:00
Alexandros Lamprineas 7fd54c31fe The Driver does not set the +strict-align flag when targeting
[ARM] armv6m + netbsd. Tests are misssing for armv6m + darwin as well.

Differential Revision: http://reviews.llvm.org/D13217

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249308 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 12:45:10 +00:00
Vasileios Kalintiris c73b622cce Remove support for the mips-mti-linux toolchain.
There are two remaining buildbot failures that we'll have to
investigate before submitting this again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249298 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 10:34:46 +00:00
Vasileios Kalintiris f99078cf0e Re-commit "Add support for the new mips-mti-linux toolchain."
r249137 added support for the new mips-mti-linux toolchain. However,
the new tests of that commit, broke some buildbots because they didn't use
the correct regular expressions to capture the filename of Clang & LLD.

This commit re-applies the changes of r249137 and fixes the tests in
r249137 in order to match the filenames of the Clang and LLD executable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249294 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 09:12:36 +00:00
Saleem Abdulrasool e1cb12fa9b Add -f[no-]declspec to control recognition of __declspec as a keyword
In versions of clang prior to r238238, __declspec was recognized as a keyword in
all modes.  It was then changed to only be enabled when Microsoft or Borland
extensions were enabled (and for CUDA, as a temporary measure).  There is a
desire to support __declspec in Playstation code, and possibly other
environments.  This commit adds a command-line switch to allow explicit
enabling/disabling of the recognition of __declspec as a keyword.  Recognition
is enabled by default in Microsoft, Borland, CUDA, and PS4 environments, and
disabled in all other environments.

Patch by Warren Ristow!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249279 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-04 17:51:05 +00:00
Saleem Abdulrasool a049f0b610 Driver: follow WoA ABI recommendations
The Windows on ARM ABI recommends that FPO be disabled.  This is since the
Windows on ARM ABI uses the FP for fast stack walking.  By paying the slight
cost of the loss of registers, a much faster backtrace is possible by using the
frame pointer since the pdata need not be consulted.  Furthermore, even if pdata
is not available, you can still more easily reconstruct the stack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249227 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-03 03:39:28 +00:00
Douglas Katzman fa376cc400 [Myriad]: Accept '-nostdlib' option
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249166 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-02 18:39:08 +00:00
Bruno Cardoso Lopes fd64a76785 [DarwinDriver] Reapply: Use -lto_library to specify the path for libLTO.dylib
Reapply r248935.

Usually, when using LTO with a clang installation newer than the
system's one, there's a libLTO.dylib version mismatch and LTO fails. One
solution to this is to make ld point to the right libLTO.dylib by
changing DYLD_LIBRARY_PATH.

However, ld64 supports specifying the complete path to the desired
libLTO.dylib through the -lto_library option. This commit adds support
for the clang driver to use this option whenever it's capable of finding
a libLTO.dylib in clang's installed library directory. This way, we
don't need to rely on DYLD_LIBRARY_PATH nor get caught by version
mismatches.

Differential Revision: http://reviews.llvm.org/D13117

rdar://problem/7363476

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249143 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-02 15:10:33 +00:00
Vasileios Kalintiris 775b9abf2f Revert "Add support for the new mips-mti-linux toolchain."
This reverts commit r249137 because it broke the Windows buildbots and
a Linux buildbot for LLD.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249141 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-02 15:00:55 +00:00
Douglas Katzman 46dc49705f Fix bogus comment.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249138 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-02 14:41:38 +00:00
Vasileios Kalintiris a8f984d5ed Add support for the new mips-mti-linux toolchain.
Summary:
This new toolchain uses primarily LLVM-based tools, eg. compiler-rt, lld,
libcxx, etc. Because of this, it doesn't require neither an existing GCC
installation nor a GNU environment. Ideally, in a follow-up patch we
would like to add a new --{llvm|clang}-toolchain option (similar to
--gcc-toolchain) in order to allow the use of this toolchain with
independent Clang builds. For the time being, we use the --sysroot
option just to test the correctness of the paths generated by the
driver.

Reviewers: atanasyan, dsanders, rsmith

Subscribers: jfb, tberghammer, danalbert, srhines, dschuff, cfe-commits

Differential Revision: http://reviews.llvm.org/D13340

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249137 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-02 14:38:23 +00:00
Vasileios Kalintiris 0d32e7d952 Allow a ToolChain to compute the path of a compiler-rt's component.
Summary:
This patch moves getCompilerRT() from the clang::driver::tools namespace to
the ToolChain class. This is needed for multilib toolchains that need to
place their libraries in Clang's resource directory with a layout that is
different from the default one.

Reviewers: atanasyan, rsmith

Subscribers: tberghammer, danalbert, srhines, cfe-commits

Differential Revision: http://reviews.llvm.org/D13339

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249030 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-01 16:54:58 +00:00
Bruno Cardoso Lopes a284baa10f Revert "[DarwinDriver] Use -lto_library to specify the path for libLTO.dylib"
Revert r248932. Bots complaining about new warnings where they shouldn't.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248935 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-30 20:11:02 +00:00
Bruno Cardoso Lopes a2ed8c0526 [DarwinDriver] Use -lto_library to specify the path for libLTO.dylib
Usually, when using LTO with a clang installation newer than the
system's one, there's a libLTO.dylib version mismatch and LTO fails. One
solution to this is to make ld point to the right libLTO.dylib by
changing DYLD_LIBRARY_PATH.

However, ld64 supports specifying the complete path to the desired
libLTO.dylib through the -lto_library option. This commit adds support
for the clang driver to use this option whenever it's capable of finding
a libLTO.dylib in clang's installed library directory. This way, we
don't need to rely on DYLD_LIBRARY_PATH nor get caught by version
mismatches.

Differential Revision: http://reviews.llvm.org/D13117

rdar://problem/7363476

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248932 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-30 19:55:07 +00:00
Douglas Katzman e9134a5e3f Alias "-ggdbN" to "-gN" options, fixing some incompatibilities.
* assembling from a .s file mistook -ggdb0 for -g
* -ggdb1 is supposed to mean basically -g1, not -gN for N>1

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248912 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-30 15:55:59 +00:00
Saleem Abdulrasool 33307a3cd9 Driver: support ARM/HF on a single toolchain
ARM EABI adds target attributes to the object file.  Amongst the attributes that
are emitted is the VFP argument passing (Hard vs Soft).  The linker is
responsible for checking these attributes and erroring on mismatches.  This
causes problems for the compiler-rt builtins when targeting both hard and
soft.  Because both of these options name the builtins compiler-rt component
the same (libclang_rt.builtins-arm.a or libclang_rt.builtins-arm-android).  GCC
is able to get away with this as it does one target per toolchain.  This
changes the naming convention for the ARM compiler-rt builtins to differentiate
between HF and Soft.  Although this means that compiler-rt may be duplicated, it
enables supporting both variants from a single toolchain.  A similar approach is
taken by the Darwin toolchain, naming the library to differentiate between the
calling conventions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248649 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-26 03:26:44 +00:00
Greg Bedwell fc7ebbf512 Revert "This patch adds missing pieces to clang, including the PS4 toolchain definition, added warnings, PS4 defaults, and Driver changes needed for our compiler."
This reverts commit r248546 to get our bot green again while we discuss the best way forward.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248578 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-25 16:11:00 +00:00
Ekaterina Romanova 41604ec4c1 This patch adds missing pieces to clang, including the PS4 toolchain
definition, added warnings, PS4 defaults, and Driver changes needed for
our compiler.

A patch by Filipe Cabecinhas, Pierre Gousseau and Katya Romanova!

Differential Revision: http://reviews.llvm.org/D11279



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248546 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 22:06:52 +00:00
Benjamin Kramer d408bb64af Drop useless const in for-range loops.
StringRefs always point to immutable memory so the const doesn't add value
here. Also quiets clang's -Wrange-loop-analysis which warns about the implicit
copying.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248496 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 14:48:49 +00:00
Daniel Sanders f138c78edd [mips] Relax -mnan=2008 acceptance to permit MIPS32R2 and MIPS64R2.
Summary:
Strictly speaking, the MIPS*R2 ISA's should not permit -mnan=2008 since this
feature was added in MIPS*R3. However, other toolchains permit this and we
should do the same.

Reviewers: atanasyan

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D13057

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248481 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 10:22:17 +00:00
Vladimir Sukharev a638ce2afc [ARM] Follow-up to fix crash "-target arm -mcpu=generic", without "-march="
Fix of dangling StringRef after temporary std::string is destroyed

Follow-up to: http://reviews.llvm.org/rL248479

Reviewers: alexfh

Subscribers: cfe-commits



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248480 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 10:06:44 +00:00
Vladimir Sukharev 0aace7a99c [ARM] Follow-up to fix crash "-target arm -mcpu=generic", without "-march="
Fix of dangling StringRef after temporary std::string is destroyed

Follow-up to: http://reviews.llvm.org/rL248370

Reviewers: alexfh

Subscribers: cfe-commits



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248479 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 09:55:08 +00:00
Joerg Sonnenberger fb5a0360b1 Support linking against OpenMP runtime on NetBSD.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248426 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 20:11:00 +00:00
Joerg Sonnenberger 80deb58759 Push OpenMP linker flags after linker input on Darwin. Don't add any
libraries if -nostdlib is specified. Test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248424 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 20:07:56 +00:00
Joerg Sonnenberger b4bac0831b Refactor library decision for -fopenmp support from Darwin into a
function for sharing with other platforms.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248379 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 14:06:52 +00:00
John Brawn 9dcbcab85c Add -fplugin=name.so option to the driver
This translates to -load name.so in the cc1 command. We can't name the driver
option -load, as that means "link against oad", so instead we follow GCC's lead
and name the option -fplugin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248378 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 13:55:40 +00:00
Vladimir Sukharev 575a21a977 [ARM] Fix crash "-target arm -mcpu=generic", without "-march="
An assertion hit has been fixed for cmdlines like

$ clang --target=arm-linux-gnueabi -mcpu=generic hello.c

Related to: http://reviews.llvm.org/rL245445

Reviewers: rengolin

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D13013



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248370 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 09:29:32 +00:00
Daniel Sanders 309886d909 [mips] Added support for using the command line options -Wa,-msoft-float and -Wa,-mhard-float.
Patch by Scott Egerton.

Reviewers: vkalintiris, dsanders

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D12600


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248276 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-22 13:52:32 +00:00
Craig Topper dd28883f11 Don't pass StringRefs around by const reference. Pass by value instead per coding standards. NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248137 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 00:20:04 +00:00
Saleem Abdulrasool 87cea1fd73 Driver: alter the getARMFloatABI signature
This changes getARMFloatABI to use the ToolChain and Args instead of Driver,
Args, Triple.  Although this pushes the Triple calculation/parsing into the
function itself, it enables the use of the function for a future change.  The
reason to sink the triple calculation here is to avoid threading the Triple
through multiple layers in a future change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248095 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-19 20:40:16 +00:00
Saleem Abdulrasool e93fbf3055 Driver: tweak ARM target feature calculation
Rather than using re-calculating the effective triple, thread the already
calculated value down into AddARMTargetArgs.  This avoids both recreating the
triple, as well as re-parsing the triple as it was already done in the previous
frame.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248094 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-19 18:19:44 +00:00
Saleem Abdulrasool 5c9ee3a97f Driver: avoid unnecessary string ops
Use an enumeration for the Floating Point ABIs supported on MIPS.  This is
replicating the ARM change to avoid string based tracking of the floating point
ABI.  NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248083 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-19 04:33:38 +00:00
Saleem Abdulrasool c507b4076c Driver: avoid unnecessary string based operations
Use an enumeration and change the use of the FloatABI from a string to the
enumeration.  This avoids the use of string values to represent an enumeration.
NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247967 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-18 05:32:23 +00:00
Douglas Katzman c8cabd545c [Shave]: Drive sparc-myriad-elf-ld directly rather than via gcc.
Differential Revision: http://reviews.llvm.org/D12541

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247924 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-17 19:56:40 +00:00
Piotr Padlewski ac87852f57 Emiting llvm.invariant.group.barrier when dynamic type changes
For more goto:
http://lists.llvm.org/pipermail/cfe-dev/2015-July/044227.html

http://reviews.llvm.org/D12312

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247723 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-15 21:46:47 +00:00
Rafael Espindola 7d8d0667a1 [Solaris] Default to -fno-cxa-finalize.
There is no __cxa_finalize symbol available on recent Solaris OS
versions, so we need this flag to make non trivial C++ programs run.

Also stop looking for cxa_finalize.o, since it won't be there.

Patch by Xan López!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247634 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-14 23:21:31 +00:00
Gabor Horvath 87498c8ee9 [Static Analyzer] Turn on some nullability checks by default.
Differential Revision: http://reviews.llvm.org/D12858



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247614 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-14 20:34:06 +00:00
Douglas Katzman 39cd18c57a Driver should forward at most one gdwarf-N flag to cc1as.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247611 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-14 20:31:28 +00:00
Rafael Espindola 4094cbc6af [Solaris] Add -lc also when linking shared libraries
This is actually needed, otherwise libc won't be added at all. For
instance when building libclang.so all the libc symbols won't be
found, with ld warning about libc being an "implicit dependency".

Patch by Xan López!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247603 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-14 19:30:53 +00:00
Douglas Katzman 572aaf1e47 [Shave]: pass -isystem dirs and "-Wa," args to moviAsm
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247474 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-11 21:13:46 +00:00
Akira Hatanaka 218bc14fa5 Record function attribute "stackrealign" instead of using backend option
-force-align-stack.

Also, make changes to the driver so that -mno-stack-realign is no longer
an option exposed to the end-user that disallows stack realignment in
the backend.

Differential Revision: http://reviews.llvm.org/D11815


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247451 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-11 18:55:09 +00:00
Richard Smith e8c9862f42 [modules] Don't load files specified by -fmodule-file= when modules are
disabled. (We still allow this via -cc1 / -Xclang, primarily for testing.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247384 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-11 03:58:07 +00:00
Reid Kleckner abd4ffe16c [Driver] Use UniversalCRT on Windows if available
Summary:
With Visual Studio 2015 release, a part of runtime library was extracted
and now comes with Windows Kits. This patch enables clang to use
Universal CRT library if  %INCLUDE or %LIB environment varaibles are not
specified.

See also https://llvm.org/bugs/show_bug.cgi?id=24741

Patch by Igor Kudrin

Reviewers: zturner, hans, rnk

Subscribers: ruiu, cfe-commits

Differential Revision: http://reviews.llvm.org/D12695

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247362 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-11 00:09:39 +00:00
Alexey Bataev dcc54531b6 [OPENMP] Generate threadprivates as TLS variables by default.
If target supports TLS all threadprivates are generated as TLS. If target does not support TLS, use runtime calls for proper codegen of threadprivate variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247273 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-10 12:06:58 +00:00
Douglas Katzman 121239861a [Shave]: add a -MT option to moviCompile if there wasn't one
Differential Revision: http://reviews.llvm.org/D12622

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247052 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-08 19:29:55 +00:00
Dan Gohman ff7b957464 [WebAssembly] Initial WebAssembly support in clang
This implements basic support for compiling (though not yet assembling
or linking) for a WebAssembly target. Note that ABI details are not yet
finalized, and may change.

Differential Revision: http://reviews.llvm.org/D12002


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246814 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 22:51:53 +00:00
Daniel Sanders 639a364a05 [mips] Added support for choosing between traps and breaks in the integrated assembler macros.
Summary: The command line options for these are -Wa,--trap and -Wa,--break.

Patch by Scott Egerton.

Reviewers: vkalintiris, dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D11676


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246765 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 12:58:39 +00:00
Oliver Stannard 7b8d166854 [ARM] Allow passing/returning of __fp16 arguments
The ACLE (ARM C Language Extensions) 2.0 allows the __fp16 type to be
used as a functon argument or return type (ACLE 1.1 did not).

The current public release of the AAPCS (2.09) states that __fp16 values
should be converted to single-precision before being passed or returned,
but AAPCS 2.10 (to be released shortly) changes this, so that they are
passed in the least-significant 16 bits of either a GPR (for base AAPCS)
or a single-precision register (for AAPCS-VFP). This does not change how
arguments are passed if they get passed on the stack.

This patch brings clang up to compliance with the latest versions of
both of these specs.

We can now set the __ARM_FP16_ARGS ACLE predefine, and we have always
been able to set the __ARM_FP16_FORMAT_IEEE predefine (we do not support
the alternative format).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246764 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 12:40:58 +00:00
Oliver Stannard 4880d582bd Revert 246755 as it breaks buildbots
Original commit message:
[ARM] Allow passing/returning of __fp16 arguments

The ACLE (ARM C Language Extensions) 2.0 allows the __fp16 type to be
used as a functon argument or return type (ACLE 1.1 did not).

The current public release of the AAPCS (2.09) states that __fp16 values
should be converted to single-precision before being passed or returned,
but AAPCS 2.10 (to be released shortly) changes this, so that they are
passed in the least-significant 16 bits of either a GPR (for base AAPCS)
or a single-precision register (for AAPCS-VFP). This does not change how
arguments are passed if they get passed on the stack.

This patch brings clang up to compliance with the latest versions of
both of these specs.

We can now set the __ARM_FP16_ARGS ACLE predefine, and we have always
been able to set the __ARM_FP16_FORMAT_IEEE predefine (we do not support
the alternative format).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246760 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 11:46:24 +00:00
Oliver Stannard 2998469baf [ARM] Allow passing/returning of __fp16 arguments
The ACLE (ARM C Language Extensions) 2.0 allows the __fp16 type to be
used as a functon argument or return type (ACLE 1.1 did not).

The current public release of the AAPCS (2.09) states that __fp16 values
should be converted to single-precision before being passed or returned,
but AAPCS 2.10 (to be released shortly) changes this, so that they are
passed in the least-significant 16 bits of either a GPR (for base AAPCS)
or a single-precision register (for AAPCS-VFP). This does not change how
arguments are passed if they get passed on the stack.

This patch brings clang up to compliance with the latest versions of
both of these specs.

We can now set the __ARM_FP16_ARGS ACLE predefine, and we have always
been able to set the __ARM_FP16_FORMAT_IEEE predefine (we do not support
the alternative format).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246755 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 09:34:53 +00:00
Douglas Katzman fbd2901a30 Remove inadvertent debug output from prior change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246715 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 21:18:10 +00:00
Douglas Katzman 740dd7fc7c Use new utility function to clean leading junk from pathnames. NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246714 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 21:14:53 +00:00
Douglas Katzman ad51310219 [Shave]: pass through more clang options to moviCompile
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246652 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 13:42:43 +00:00
Rafael Espindola ce8ac555c9 Stop hardcoding GCC paths in crt/ld.so lookup.
This patch refactors the code to use the GCC installation detector
(modified so that it works in Solaris), and uses
ToolChain::GetFilePath everywhere once it works.

Patch by Xan López <xan@igalia.com>!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246473 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-31 19:17:51 +00:00
Chandler Carruth a9262e954a Update for several APIs in LLVM that now use StringRefs rather than
const char pointers. In turn, push this through Clang APIs as well,
simplifying a number of bits of code that was handling the oddities of
nullptrs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246375 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-30 07:51:18 +00:00
Chandler Carruth b2f21554da Update for API change in LLVM: ARMTargetParser class is just the ARM
namespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246368 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-30 02:16:36 +00:00
Sylvestre Ledru f0862b4488 Support Debian s390x multiarch paths
Summary: Patch by Steven Chamberlain <steven@pyro.eu.org>

Reviewers: uweigand

Differential Revision: http://reviews.llvm.org/D12430

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246295 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-28 12:26:09 +00:00
Adrian Prantl 7bbf57e36a Add a -gmodules option to the driver and a -dwarf-ext-refs to cc1
to enable the use of external type references in the debug info
(a.k.a. module debugging).

The driver expands -gmodules to "-g -fmodule-format=obj -dwarf-ext-refs"
and passes that to cc1. All this does at the moment is set a flag
codegenopts.

http://reviews.llvm.org/D11958

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246192 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-27 19:46:20 +00:00
Akira Hatanaka 6b46f883be [ARM] Error out if float-ab=hard and abi=apcs-gnu on macho platforms.
Error out if -mfloat-abi=hard or -mhard-float is specified on the command
line and the target ABI is APCS. Previously clang issued no warnings or
errors and just passed the option to the backend, which had no effect on
code generation for targets using APCS.

This commit corrects the patch commited in r245866, which didn't take into
account the fact that not all darwin targets use APCS.

rdar://problem/22257950

http://reviews.llvm.org/D12344


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246054 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-26 19:00:11 +00:00
Akira Hatanaka a50f1763b0 Revert r245866.
This commit was causing buildbot failures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245871 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-24 20:30:57 +00:00
Akira Hatanaka e35de8288e [ARM] Error out on apple darwin platforms if float-abi is "hard".
Error out if the user tries to use float-abi="hard" since it isn't
supported on darwin platforms. Previously clang issued no warnings or
erros and just passed the option to the backend, which had no effect on
code generation for targets using apcs.

rdar://problem/22257950

Differential Revision: http://reviews.llvm.org/D12155


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245866 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-24 19:50:35 +00:00
James Y Knight 2163e6004d Stop treating -static as overriding -fPIC: they are distinct.
For some reason, clang had been treating a command like:
 clang -static -fPIC foo.c
as if it should be compiled without the PIC relocation model.

This was incorrect: -static should be affecting only the linking
model, and -fPIC only the compilation.

This new behavior also matches GCC.

This is a follow-up from a review comment on r245447.

Differential Revision: http://reviews.llvm.org/D12208

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245667 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-21 04:14:55 +00:00
Evgeniy Stepanov ba9bf87ed9 Revert r245344.
That change is causing strange test failures on Fedora 22 (PR24503),
and it does not have any effect with Gold linker anyway (PR15823,
https://sourceware.org/bugzilla/show_bug.cgi?id=18859).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245619 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-20 21:47:16 +00:00
Douglas Katzman 7cb05e8039 [Sparc] Add '-EL' when invoking gcc to link little-endian binaries.
Differential Revision: http://reviews.llvm.org/D12201

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245595 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-20 18:32:26 +00:00
Aaron Ballman 41edf4ec73 Silence a "not all control paths return a value" warning; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245562 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-20 13:31:16 +00:00
James Y Knight 7b4b02675a Properly pass through the PIC mode to the integrated assembler when
doing assembly-only, and unify the Driver's PIC argument parsing.

On a few architectures, parsing of assembly files annoyingly depends
on whether PIC is enabled or not. This was handled for external 'as'
already (passing -KPIC), but was missed for calls to the standalone
internal assembler.

The integrated-as.s test needed to be modified to not expect
-fsanitize=address to be unused, as now fsanitize *IS* used for
assembly, since -fsanitize=memory can sometimes imply -fPIE, which the
assembler needs to know (gack!!).

Differential Revision: http://reviews.llvm.org/D11845

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245447 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-19 15:12:02 +00:00
Vladimir Sukharev 2b7ae4f81e [ARM] Proper generic cpus handling
"generic" cpu was wrongly handled as exact real CPU name of ARMv8.1A architecture.

This has been fixed, now it is abstract name, suitable for any arch.

Reviewers: rengolin

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D11640


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245445 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-19 14:50:18 +00:00
Alexey Bataev 932ae974a7 [OPENMP] Link libomp.lib on Windows
Adds libomp.lib for -fopenmp=libomp and libiomp5md.lib for -fopenmp=libiomp5 on Windows
Differential Revision: http://reviews.llvm.org/D11932


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245414 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-19 04:49:01 +00:00
Evgeniy Stepanov f254fc49ce [sanitizer] Add -lutil to static runtime link flags.
This is needed to prevent breakage of -Wl,-as-needed link when
interceptors for functions in libutil are added. See PR15823.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245344 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-18 20:36:11 +00:00
James Y Knight 17af55fb42 Tiny cleanup: move some Triple variables up to the top of the
function, and remove a duplicate var.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245154 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-15 03:45:25 +00:00
John Brawn 4b12a3a5a2 [Driver] Fix handling of -fbuiltin/-fcommon when combined with -mkernel
-mkernel enables -fno-builtin and -fno-common by default, but allows -fbuiltin
and -fcommon to override that. However "-fbuiltin -fno-builtin" is treated the
same as "-fbuiltin" which is wrong, so fix that. Also fixes similar behaviour
when -fno-common is default.

Differential Revision: http://reviews.llvm.org/D11459


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244437 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-10 11:11:28 +00:00
Yaron Keren 14d62ae679 Teach mingw toolchain driver to properly emit static or dynamic linking of ligcc.
Implemented in MinGW::Linker::AddLibGCC since AddLibgcc is a logic puzzle even
before adding one more boolean. A first step towards simplification of AddLibgcc
would be to factor out the Android AddLibgcc code into its own routine.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244407 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-09 00:24:07 +00:00
Diego Novillo e1c5733de6 Add -fno-coverage-mapping flag.
This new flag allows the user to disable a previous instance of
-fcoverage-mapping, if needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244170 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 23:27:40 +00:00
Diego Novillo 41544940b4 Add flags to disable profile generation.
This patch adds flags -fno-profile-instr-generate and
-fno-profile-instr-use, and the GCC aliases -fno-profile-generate and
-fno-profile-use.

These flags are used in situations where users need to disable profile
generation or use for specific files in a build, without affecting other
files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244153 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 21:49:51 +00:00
Reid Kleckner 9579b106d6 Add -gcodeview and -gdwarf to control which type Clang emits
Summary:
By default, 'clang' emits dwarf and 'clang-cl' emits codeview.  You can
force emission of one or both by passing -gcodeview and -gdwarf to
either driver.

Reviewers: dblaikie, hans

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D11742

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244097 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 18:51:13 +00:00
Douglas Katzman 8312a2e12f Claim arguments that belong to 'clang_ignored_gcc_optimization_f_Group'
This seems preferable to printing two warnings per unsupported option-
one warning about not supporting it, and one about not using it.
It also makes the '-Wno-' option do what you mean.

Differential Revision: http://reviews.llvm.org/D11766

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244079 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 18:03:47 +00:00
Douglas Katzman 1b3a539a70 [SHAVE] Pass all -f, -g, -O, -W options through directly to moviCompile.
Differential Revision: http://reviews.llvm.org/D11581

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243878 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-03 14:34:22 +00:00
David Blaikie d50fd8aa0d Split DWARF: Allow -gmlt/-gsplit-dwarf to override rather than complement each other
It doesn't make any sense to enable -gmlt with -gsplit-dwarf, since
-gmlt is designed for on-line symbolication (and -gsplit-dwarf normally
emits all the -gmlt data into the .o anyway - so there's nothing to
split out except redundant/duplicate info).

With this change they override each other, -gmlt -gsplit-dwarf is the
same as -gsplit-dwarf and -gsplit-dwarf -gmlt is the same as -gmlt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243694 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-30 21:42:22 +00:00
Renato Golin 4fbead8a5e [ARM] Allow setting the generic features for native cpus
Copying the already existing code for x86 to ARM to set the correct CPU
features when using -mcpu=native. We can already detect the CPU name
but we were not setting the correct feature bits.

Moving fpu/hwdiv down to make sure they override whatever we set the
default to be.

No tests because this is native detection, and not all ARM-enabled builds
will hapen at a specific CPU, or even ARM. I have tested locally and it
works as expected.

Fixes PR12794.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243656 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-30 16:40:17 +00:00
Ulrich Weigand 8b1a0203ec Add support for System z vector language extensions
The z13 vector facility has an associated language extension,
closely modeled on AltiVec/VSX.  The main differences are:

- vector long, vector float and vector pixel are not supported

- vector long long and vector double are supported (like VSX)

- comparison operators return a vector rather than a scalar integer

- shift operators behave like the OpenCL shift operators

- vector bool is only supported as argument to certain operators;
  some operators allow mixing a bool with a non-bool vector 

This patch adds clang support for the extension.  It is closely modelled
on the AltiVec support.  Similarly to the -faltivec option, there's a
new -fzvector option to enable the extensions (as well as an -mzvector
alias for compatibility with GCC).  There's also a separate LangOpt.

The extension as implemented here is intended to be compatible with
the -mzvector extension recently implemented by GCC.

Based on a patch by Richard Sandiford.

Differential Revision: http://reviews.llvm.org/D11001



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243642 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-30 14:08:36 +00:00
Douglas Katzman 4998493239 Use the AddAllArgs overload which accepts an ArrayRef of OptSpecifier.
Differential Revision: http://reviews.llvm.org/D11599

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243552 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-29 18:39:14 +00:00
Akira Hatanaka d7f4cbb43f [AArch64] Pass subtarget feature "+strict-align".
This commit changes the driver to save subtarget feature "+strict-align"
to the IR instead of using backend option "aarch64-strict-align". This is
needed for LTO.

rdar://problem/21529937

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243518 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-29 14:25:58 +00:00
Akira Hatanaka 036f393cf9 [ARM] Pass subtarget feature "+strict-align".
This commit changes the driver to save subtarget feature "+strict-align" to the
IR instead of using backend option "arm-strict-align". This is needed for LTO.

Also, move the logic in ARM backend that was deciding whether strict alignment
should be forced to the front-end.

rdar://problem/21529937

http://reviews.llvm.org/D11472

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243489 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-28 22:26:45 +00:00
Chih-Hung Hsieh 9ec907c078 Add -femulated-tls flag to select the emulated TLS model.
This will be used for old targets like Android that do not
support ELF TLS models.

Differential Revision: http://reviews.llvm.org/D10524


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243441 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-28 16:27:56 +00:00
Alexandros Lamprineas 63bd83cc6b Use TargetParser to parse -mhwdiv command line option in Driver.
Change-Id: I2ebc40f77af75ec6b43ce8364d6d5a1d29988bd6
Phabricator: http://reviews.llvm.org/D11501

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243398 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-28 09:08:03 +00:00
Renato Golin 985185b16c [ARM] Implement -Wa,-mfpu and friends for assemblers
This patch allows Clang to pass on -Wa,-mfpu, -Wa,-mhwdiv and
-Wa,-mcpu to the integrated assembler (via target-features), but
-march is still not being passed, but validated.

In case the command line has both -mxxx and -Wa,-mxxx, we warn
that the naked one will not be used in assembler mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243353 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-27 23:44:45 +00:00
Renato Golin a83035ec20 [ARM] Changes to Arch/CPU handling to help with -Wa,-mfpu etc. (nfc)
To be able to handle -Wa, options in the assembler (ClangAs), we need to
make the handling of options based on the value of the options, not direct
Arguments from the list, since the list is immutable.

No functional change in this patch, but this allows validating of -Wa,-mfpu
and friends in the same way we validate -mfpu and friends, *just* for the
assembler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243352 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-27 23:44:42 +00:00
Akira Hatanaka 3e0535eabb [AArch64] Unconditionally pass subtarget feature reserve-x18 on Darwin.
After r243308, the front-end is responsible for checking the target OS and
passing reserve-x18 if the target is Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243310 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-27 19:29:04 +00:00
Douglas Katzman 4fe5acf720 Rename {Hexagon,NaCl}_TC to {Hexagon,NaCl}ToolChain respectively. NFC
Also rename XCore (the toolchain) to XCoreToolChain since XCore is
also a namespace for its tools.

Differential Revision: http://reviews.llvm.org/D10609

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243279 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-27 16:53:08 +00:00
Renato Golin 90cbf30ef1 Setting ARM dynamic linker name from commandline
Currently trigger to select hard-float linker is only based of -gnueabihf
appearing in target triplet, but we should also select it when hardfloat
is requested via cmdline.

Patch by Khem Raj.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243262 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-27 09:56:37 +00:00
David Majnemer 4562db24b3 [clang-cl] Handle -O correctly
We had multiple bugs here:
- We didn't support multiple optimization options in one argument.
  e.g. -O2y-
- We didn't correctly expand -O[12dx] to their respective options.
- We treated -O1 as clang -O1 instead of clang -Os.
- We treated -Ox as clang -O3 instead of clang -O2.  In fact, cl's -Ox
  option is *less* powerful than cl's -O2 option despite -Ox described
  as "Full Optimization".

This fixes PR24003.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243261 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-27 07:32:11 +00:00
David Majnemer 96a43cf07e [clang-cl] Add fallback support for /Zl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243207 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-25 06:07:59 +00:00
Akira Hatanaka c870493a19 [AArch64] Pass subtarget feature "+reserve-x18" instead of passing backend
option "-aarch64-reserve-x18".

This change is needed since backend options do not make it to the backend
when doing LTO and are not capable of changing the behavior of code-gen
passes on a per-function basis.

rdar://problem/21529937

Differential Revision: http://reviews.llvm.org/D11462


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243185 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-25 00:18:00 +00:00
David Majnemer 7acbe3f9c1 [clang-cl] Implement support for the /Zl flag
The flag allows users to specify that they do not want the object file
to have any implicit /defaultlib directives.

This fixes PR24236.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243097 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-24 06:49:13 +00:00
Renato Golin b33750c50c [Compiler-RT] Remove dependency on libgcc_s/eh
Currently, for --rtlib=compiler-rt on GNU systems, we're assuming
that one has libgcc_s and libgcc_eh as low-level libraries, which
when used in conjunction with -lunwind or -lc++abi, breaks that
assumption.

My original fix was wrong, and this patch reverts it to prepare for
a new flag to choose the unwinder/C++ libraries. For the time being,
people can use "-lgcc_s -lgcc_eh" or "-lunwind -lc++abi" or any
combination they need explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243025 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-23 17:24:41 +00:00
Reid Kleckner fe716e557b [mingw] Add support for -rtlib option and -stdlib option to the mingw driver
Now clang should be able to use compiler-rt and libc++ on mingw.

Based on a patch by Martell Malone.

Differential Revision: http://reviews.llvm.org/D11237

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242905 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-22 16:01:38 +00:00
Renato Golin 69756a8a5c Pass -I options to integrates and external assemblers
Fixes PR21000.

Patch by Artem Belevich.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242904 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-22 15:32:36 +00:00
Akira Hatanaka c2e7bae2f2 [ARM] Pass subtarget feature "+reserve-r9" instead of passing backend
option "-arm-reserve-r9".

This recommits r242736, which had to be reverted because the llvm-side
change that was committed in r242737 caused the number of subtarget
features to go over the limit of 64.

This change is needed since backend options do not make it to the backend
when doing LTO and are not capable of changing the behavior of code-gen
passes on a per-function basis.

rdar://problem/21529937

Differential Revision: http://reviews.llvm.org/D11319


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242755 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-21 01:41:08 +00:00
Akira Hatanaka dc9de2d1a5 Revert r242736.
r242737 caused builds to fail with the following error message, so I'm
reverting the clang side change too:

error:Too many subtarget features! Bump MAX_SUBTARGET_FEATURES.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242741 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-20 23:53:02 +00:00
Akira Hatanaka dfc9065566 [ARM] Pass subtarget feature "+reserve-r9" instead of passing backend
option "-arm-reserve-r9".
        
This change is needed since backend options do not make it to the backend
when doing LTO and are not capable of changing the behavior of code-gen
passes on a per-function basis.

rdar://problem/21529937

Differential Revision: http://reviews.llvm.org/D11319


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242736 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-20 23:20:53 +00:00
Artem Belevich c2ab93aeca Fixed style issues pointed out by Justin Bogner.
Differential Revision: http://reviews.llvm.org/D11273

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242698 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-20 20:02:54 +00:00
Gabor Ballabas 9de1936315 Allow case-insensitive values for -mtune for AArch64 target in line with GCC.
GCC allows case-insensitive values for -mcpu, -march and -mtune options.
This patch implements the same behaviour for the -mtune option for the AArch64 target.

Differential Revision: http://reviews.llvm.org/D10563


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242663 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-20 11:28:20 +00:00
Tom Stellard e218034adf Driver/ToolChain/AMDGPU: Attempt to fix buildbots after r242601
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242602 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-18 02:11:07 +00:00
Tom Stellard 6d3eda0e90 Driver: Add AMDGPU toolchain
Summary:
This is a minimal toolchain, which sets the integrated assembler as default,
and uses lld for linking.

Reviewers: arsenm, mcrosier

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D10700

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242601 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-18 01:49:05 +00:00
Steven Wu 8d9f241210 Fix -save-temp when using objc-arc, sanitizer and profiling
Currently, -save-temp will cause ObjCARC optimization to be dropped,
sanitizer pass to run early in the pipeline, and profiling
instrumentation to run twice.
Fix the issue by properly disable all passes in the optimization
pipeline when generating bitcode output and parse some of the Language
Options even when the input is bitcode so the passes can be setup
correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242565 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-17 20:09:56 +00:00
Petar Jovanovic f76b90d2c3 [Mips] Set mips64r6 as default CPU for MIPS64 Android
Change default CPU for MIPS64 Android. Now it is mips64r6.

Differential Revision: http://reviews.llvm.org/D11294


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242522 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-17 12:57:30 +00:00
Justin Bogner a5899c86b6 Driver: Determine file names for crash reports more reliably
Guessing which file name to replace based on the -main-file-name
argument to -cc1 is flawed. Instead, keep track of which arguments are
inputs to each command.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242504 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-17 03:35:54 +00:00
Akira Hatanaka cd0f3da09c [ARM] Pass subtarget feature "+no-movt" instead of passing backend option
"-arm-use-movt=0".
        
This change is needed since backend options do not make it to the backend
when doing LTO and are not capable of changing the behavior of code-gen
passes on a per-function basis.

rdar://problem/21529937

Differential Revision: http://reviews.llvm.org/D11025


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242368 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-16 00:43:00 +00:00
Reid Kleckner 6ee7a0968c [clang-cl] Disable C++ exceptions a different way
Rather than making -fexceptions a core option that enables C++ EH in
clang-cl, users can use the '-Xclang -fexceptions -Xclang
-fcxx-exceptions' flag set. We weren't going to expose -fexceptions in
clang-cl in the long run, so this way we don't add and then remove a
flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242176 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-14 18:16:48 +00:00
Yaron Keren 41095bc72a Add support for -fuse-ld= in the mingw toolchain driver.
We will still default to ld until such a time lld become a 
stable release. lld supports arm NT under the machine name "thumb2pe".

http://reviews.llvm.org/D11088

Patch by Martell Malone
Reviewed by Reid Kleckner



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242121 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-14 05:23:34 +00:00
Artem Belevich da2d19c6cd [cuda] Driver changes to compile and stitch together host and device-side CUDA code.
NOTE: reverts r242077 to reinstate r242058, r242065, 242067
        and includes fix for OS X test failures.

  - Changed driver pipeline to compile host and device side of CUDA
    files and incorporate results of device-side compilation into host
    object file.

  - Added a test for cuda pipeline creation in clang driver.

  New clang options:
  --cuda-host-only   - Do host-side compilation only.
  --cuda-device-only - Do device-side compilation only.

  --cuda-gpu-arch=<ARCH> - specify GPU architecture for device-side
    compilation. E.g. sm_35, sm_30. Default is sm_20. May be used more
    than once in which case one device-compilation will be done per
    unique specified GPU architecture.

  Differential Revision: http://reviews.llvm.org/D9509

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242085 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-13 23:27:56 +00:00
Samuel Antao fcf87ff162 [OpenMP] Add TLS-based implementation for threadprivate directive.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242080 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-13 22:54:53 +00:00
Rafael Espindola c5920d0289 This reverts commit r242058, r242065, r242067.
The tests were failing on OS X.

Revert "[cuda] Driver changes to compile and stitch together host and device-side CUDA code."
Revert "Fixed regex to properly match '64' in the test case."
Revert "clang/test/Driver/cuda-options.cu REQUIRES clang-driver, at least."

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242077 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-13 22:26:30 +00:00
Artem Belevich 05f39953d6 [cuda] Driver changes to compile and stitch together host and device-side CUDA code.
- Changed driver pipeline to compile host and device side of CUDA
    files and incorporate results of device-side compilation into host
    object file.

  - Added a test for cuda pipeline creation in clang driver.

  New clang options:
  --cuda-host-only   - Do host-side compilation only.
  --cuda-device-only - Do device-side compilation only.

  --cuda-gpu-arch=<ARCH> - specify GPU architecture for device-side
    compilation. E.g. sm_35, sm_30. Default is sm_20. May be used more
    than once in which case one device-compilation will be done per
    unique specified GPU architecture.

  Differential Revision: http://reviews.llvm.org/D9509

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242058 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-13 20:21:06 +00:00
Reid Kleckner 4cda45a64b Disable C++ EH by default for clang-cl and MSVC environments
We don't need any more bug reports from users telling us that MSVC-style
C++ exceptions are broken. Developers and adventurous users can still
test the existing functionality by passing along -fexceptions to either
clang or clang-cl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241952 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-10 22:25:44 +00:00
Eric Christopher 473abe5237 Refactor PPC ABI handling to accept and silently ignore -mabi=altivec.
All of the ABIs we support are altivec style anyhow and so the option
doesn't make much sense with the modern ABIs. We could make this a more
noisy ignore, but it would break builds for projects that just pass
it along by default because of historical reasons.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241925 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-10 18:25:54 +00:00
Diego Novillo a1bd00dc2d Factor PGO and coverage flag processing out of Clang::ConstructJob
The function is massively large and GCC is emitting stack overflow
errors when building it (stack, as counted by the compiler, grows to
more than 16Kb).

The new flag processing logic added in r241825 took it over the limit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241918 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-10 18:00:07 +00:00
Daniel Jasper 2e8f7e9423 Re-use a single SmallString instance to reduce the stack frame size
In certain builds (msan), this can otherwise exceed the stack frame
limit set for certain environments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241894 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-10 08:25:54 +00:00
Diego Novillo 9b5c02e4fa Add GCC-compatible flags -fprofile-generate and -fprofile-use.
This patch adds support for specifying where the profile is emitted in a
way similar to GCC. These flags are used to specify directories instead
of filenames. When -fprofile-generate=DIR is used, the compiler will
generate code to write to <DIR>/default.profraw.

The patch also adds a couple of extensions: LLVM_PROFILE_FILE can still be
used to override the directory and file name to use and -fprofile-use
accepts both directories and filenames.

To simplify the set of flags used in the backend, all the flags get
canonicalized to -fprofile-instr-{generate,use} when passed to the
backend. The decision to use a default name for the profile is done
in the driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241825 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-09 17:23:53 +00:00
Petar Jovanovic 335cc9e22d [MIPS] Add support for direct-to-nacl in Clang
For Mips direct-to-nacl, the goal is to be close to le32 front-end and
use Mips32EL backend. This patch defines new NaClMips32ELTargetInfo and
modifies it slightly to be close to le32. It also adds necessary parts,
inline with ARM and X86.

Differential Revision: http://reviews.llvm.org/D10739


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241678 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-08 13:07:31 +00:00
Akira Hatanaka 37f3a94e95 Add a comment to explain how the decision to pass feature "+long-calls" is made.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241568 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-07 08:28:42 +00:00
Akira Hatanaka 51c58cc298 [ARM] Pass subtarget feature "+long-calls" instead of passing backend option
"-arm-long-calls".

This change allows using -mlong-calls/-mno-long-calls for LTO and enabling or
disabling long call on a per-function basis.

rdar://problem/21529937

Differential Revision: http://reviews.llvm.org/D9414


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241565 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-07 06:42:05 +00:00
Yaron Keren 40ed9998a7 Support -pthread in mingw toolchain.
"-pthread" appends -lpthread after the object files list passed to the linker.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241485 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-06 18:52:19 +00:00
Teresa Johnson 0cef88b2d8 Resubmit "Pass down the -flto option to the -cc1 job" (r239481)
The patch is the same except for the addition of a new test for the
issue that required reverting the dependent llvm commit.

--Original Commit Message--

Pass down the -flto option to the -cc1 job, and from there into the
CodeGenOptions and onto the PassManagerBuilder. This enables gating
the new EliminateAvailableExternally module pass on whether we are
preparing for LTO.

If we are preparing for LTO (e.g. a -flto -c compile), the new pass is not
included as we want to preserve available externally functions for possible
link time inlining.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241467 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-06 16:23:00 +00:00
Yaron Keren 99d997e97a Support mingw-w64 and mingw.org toolchains at any install location.
No more hardcoded paths: clang will use -sysroot as gcc root location if
provided. Otherwise, it will search for gcc on the path. If not found it
will use the driver installed location.

 http://reviews.llvm.org/D5268

Patch by Ruben Van Boxem, Martell Malone, Yaron Keren.
Reviewed by Reid Kleckner.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241241 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 04:45:27 +00:00
Peter Collingbourne 3b090ab87c Make getArchNameForCompilerRTLib return the right thing on 32-bit Windows. Fixes the tests there.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241228 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 02:07:43 +00:00
Peter Collingbourne 939db77413 Driver: add support for linking the UBSan runtime library on Windows.
On Windows the user may invoke the linker directly, so we might not have an
opportunity to add runtime library flags to the linker command line. Instead,
instruct the code generator to embed linker directive in the object file
that cause the required runtime libraries to be linked.

We might also want to do something similar for ASan, but it seems to have
its own special complexities which may make this infeasible.

Differential Revision: http://reviews.llvm.org/D10862

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241225 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 01:48:12 +00:00
Reid Kleckner 11fd95dc82 [clang-cl] Use /arch: to set the base target CPU
The main effect of this change is that /arch:IA32 will use i386 as the
CPU, while clang-cl will continue to default to pentium4 (aka SSE2 plus
the usual other features).

/arch:AVX and /arch:AVX2 will also now enable the other features
available in sandybridge and haswell respectively, which is consistent
with MSDN.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241077 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-30 16:32:04 +00:00
Douglas Katzman 474f8bc148 More range-based for loops. NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240984 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-29 19:12:56 +00:00
Douglas Katzman 4b79c45a24 Comment fixes. NFC.
- Hexagon options were physically next to to ones that had a
  preceding comment saying "Double dash options", which they aren't.

- The 'ld' tool classes are named Linker, not Link.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240980 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-29 18:42:16 +00:00
Douglas Katzman e9bb2d1882 clang-format some of the files in lib/Driver. NFC
Nothing was hand edited afterward except a few literal strings
and comments that were poorly broken.

Differential Revision: http://reviews.llvm.org/D10689

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240791 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-26 15:47:46 +00:00
Douglas Katzman bd1134d7d4 Use more range-based for loops
Differential Revision: http://reviews.llvm.org/D10738

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240674 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-25 18:51:37 +00:00
Douglas Katzman ffe58864d3 Pedantically rename all Tool subclasses to be nouns, not verbs. NFC
Classes in Tools.h inherit ultimately from Tool, which is a noun,
but subclasses of Tool were named for their operation, such as "Compile",
wherein the constructor call "Compile(args...)" could be misconstrued
as actually causing a compile to happen.

Likewise various other methods were not harmonious with their effect,
in that "BuildLinker()" returned a "new namespace::Link(...)"
instead of a "new namespace::Linker(...)" which it now does.

Exceptions: Clang and ClangAs are un-renamed. Those are their rightful names.
And there is no particulary great way to name the "Lipo-er" and a few others.

Differential Revision: http://reviews.llvm.org/D10595

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240455 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-23 20:42:09 +00:00
Jim Grosbach a0e0967f2d Driver: Pass -I options to cc1as for .include search paths.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240432 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-23 18:20:13 +00:00
Alexander Kornienko 8ca7705aa3 Revert r240270 ("Fixed/added namespace ending comments using clang-tidy").
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240353 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-22 23:07:51 +00:00
Alexander Kornienko ac58acc7f2 Fixed/added namespace ending comments using clang-tidy. NFC
The patch is generated using this command:

  $ tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \
      -checks=-*,llvm-namespace-comment -header-filter='llvm/.*|clang/.*' \
      work/llvm/tools/clang

To reduce churn, not touching namespaces spanning less than 10 lines.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240270 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-22 09:47:44 +00:00
Alexey Samsonov 340eaaf2d3 [CFI] Require -flto instead of implying it.
Summary:
This is unfortunate, but would let us land http://reviews.llvm.org/D10467,
that makes ToolChains responsible for computing the set of sanitizers
they support.

Unfortunately, Darwin ToolChains doesn't know about actual OS they
target until ToolChain::TranslateArgs() is called. In particular, it
means we won't be able to construct SanitizerArgs for these ToolChains
before that.

This change removes SanitizerArgs::needsLTO() method, so that now
ToolChain::IsUsingLTO(), which is called very early, doesn't need
SanitizerArgs to implement this method.

Docs and test cases are updated accordingly. See
https://llvm.org/bugs/show_bug.cgi?id=23539, which describes why we
start all these.

Test Plan: regression test suite

Reviewers: pcc

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D10560

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240170 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-19 19:57:46 +00:00
Douglas Katzman 68aba8bade Add nominal support for 'shave' target.
This change passes through C and assembler jobs to Movidius tools by
constructing commands which are the same as ones produces by the examples
in the SDK. But rather than reference MV_TOOLS_DIR to find tools,
we will assume that binaries are installed wherever the Driver would
find its native tools. Similarly, this change assumes that -I options
will "just work" based on where SDK headers get installed, rather than
baking into the Driver some magic paths.

Differential Revision: http://reviews.llvm.org/D10440

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240134 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-19 14:55:19 +00:00
Gabor Ballabas b5892a68e2 Allow case-insensitive values for -march for AArch64 target in line with GCC.
GCC allows case-insensitive values for -mcpu, -march and -mtune options.
This patch implements the same behaviour for the -march option for the AArch64 target.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240019 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-18 14:23:12 +00:00
Toma Tabacu ddd46efad4 [mips] Don't propagate -mfpxx by default if soft/single float were also set.
Summary:
If the driver is only given -msoft-float/-mfloat-abi=soft or -msingle-float,
we should refrain from propagating -mfpxx, unless it was explicitly given on the
command line.

Reviewers: atanasyan, dsanders

Reviewed By: atanasyan, dsanders

Subscribers: cfe-commits, mpf

Differential Revision: http://reviews.llvm.org/D10387

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239818 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-16 13:54:13 +00:00
Richard Smith 1991fe29ae [modules] Rename -fmodule-maps to -fimplicit-module-maps (and likewise for
-fno-module-maps). The old names are preserved for compatibility.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239792 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-16 00:20:23 +00:00
Richard Smith 6e03dd94ce [modules] Simplify -cc1 interface for enabling implicit module maps.
We used to have a flag to enable module maps, and two more flags to enable
implicit module maps. This is all redundant; we don't need any flag for
enabling module maps in the abstract, and we don't usually have -fno- flags for
-cc1. We now have just a single flag, -fimplicit-module-maps, that enables
implicitly searching the file system for module map files and loading them.

The driver interface is unchanged for now. We should probably rename
-fmodule-maps to -fimplicit-module-maps at some point.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239789 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-16 00:08:24 +00:00