Commit Graph

3829 Commits

Author SHA1 Message Date
Brad Smith 26a0d805f3 Revert r286735 due to test failure
llvm-svn: 286736
2016-11-13 00:16:21 +00:00
Brad Smith 790092b61b Link static PIE programs against rcrt0.o on OpenBSD
Patch by Stefan Kempf.

llvm-svn: 286735
2016-11-12 23:52:03 +00:00
Sylvestre Ledru f017451807 Add support of the next Ubuntu (17.04 - Zesty Zapus)
llvm-svn: 286716
2016-11-12 09:26:30 +00:00
Evgeniy Stepanov 8a2bedbf27 Tread TSan LLVM flags to driver: add TSan controlling flags to clang.
Summary:
New clang flags, all default to true:
-f[no-]sanitize-thread-data-races
-f[no-]sanitize-thread-stack-traces
-f[no-]sanitize-thread-atomics

Reviewers: dvyukov, pcc, eugenis

Subscribers: pcc, cfe-commits

Patch by Alex Shlyapnikov.

Differential Revision: https://reviews.llvm.org/D26461

llvm-svn: 286669
2016-11-11 23:17:36 +00:00
Evgeniy Stepanov da2028b967 [cfi] Enable cfi-icall on ARM and AArch64.
llvm-svn: 286613
2016-11-11 18:49:49 +00:00
Hans Wennborg 95577ce137 clang-cl: Pass /Zc:threadSafeInit through to MSVC with /fallback (PR30948)
llvm-svn: 286324
2016-11-09 00:56:42 +00:00
Samuel Antao 7108bf36b6 Rename the version of ConstructJob for multiple outputs to ConstructJobMultipleOutputs.
It was causing trouble with the GCC bots.

llvm-svn: 285925
2016-11-03 15:41:50 +00:00
Reid Kleckner 2bc03590f6 [asan] Use the dynamic ASan runtime if -shared-libasan is passed
-shared-libasan is likely to be used as a link flag if the user is using
the GCC-style clang driver.

This logic is already tested in clang-cl tests, and the new flag to
exercise it will be covered by asan tests.

llvm-svn: 285820
2016-11-02 15:38:51 +00:00
Malcolm Parsons f76f6507c2 Fix Clang-tidy readability-redundant-string-cstr warnings
Reviewers: aaron.ballman, mehdi_amini, dblaikie

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D26206

llvm-svn: 285799
2016-11-02 10:39:27 +00:00
Elad Cohen 938f516424 [Modules] Add a command line option for loading the clang builtins modulemap.
-fbuiltin-module-map loads the clang builtins modulemap file. (This is
equivalent to -fmodule-map-file=<resource dir>/include/module.modulemap)

Differential Revision: https://reviews.llvm.org/D25767

llvm-svn: 285548
2016-10-31 08:21:54 +00:00
Mehdi Amini b2461ce33a Fix clang installed path to handle case where clang is invoked through a symlink
This code path is used when generating the path to libLTO.dylib, which
is passed to the linker as `-lto_library'.
Without this, if clang is invoked through a symlink, libLTO is
searched in a path relative to where the symlink is instead of
where clang is actually installed.

Fix PR30811.

Patch by: Jack Howarth

Differential Revision: https://reviews.llvm.org/D26116

llvm-svn: 285525
2016-10-30 23:26:13 +00:00
Richard Smith 2680bc9951 Factor finding of libc++ include path out of building -cc1 arguments.
llvm-svn: 285500
2016-10-29 17:28:48 +00:00
Simon Pilgrim 3315a6a662 Fix MSVC "not all control paths return a value" warning
Add unreachable after enum switch statement

llvm-svn: 285390
2016-10-28 10:09:35 +00:00
Samuel Antao 3b7e38b450 [Driver][OpenMP] Add support to create jobs for unbundling actions.
Summary:
This patch adds the support to create jobs for the `OffloadBundlingAction` which will invoke the `clang-offload-bundler` tool to unbundle input files.

Unlike other actions, unbundling actions have multiple outputs. Therefore, this patch adds the required changes to have a variant of `Tool::ConstructJob` with multiple outputs. 

The way the naming of the results is implemented is also slightly modified so that the same action can use a different offloading prefix for each use by the different offloading actions. 

With this patch, it is possible to compile a functional OpenMP binary with offloading support, even with separate compilation.

Reviewers: echristo, tra, jlebar, ABataev, hfinkel

Subscribers: mkuron, whchung, mehdi_amini, cfe-commits, Hahnfeld, andreybokhanko, arpith-jacob, carlo.bertolli, caomhin

Differential Revision: https://reviews.llvm.org/D21857

llvm-svn: 285326
2016-10-27 18:14:55 +00:00
Samuel Antao 7cab8f1466 [Driver][OpenMP] Add support to create jobs for bundling actions.
Summary: This patch adds the support to create a job for the `OffloadBundlingAction` which will invoke the `clang-offload-bundler` tool.

Reviewers: echristo, tra, jlebar, ABataev, hfinkel

Subscribers: whchung, mehdi_amini, cfe-commits, Hahnfeld, andreybokhanko, arpith-jacob, carlo.bertolli, caomhin

Differential Revision: https://reviews.llvm.org/D21856

llvm-svn: 285325
2016-10-27 18:04:42 +00:00
Samuel Antao fab4f37ef7 [Driver][OpenMP] Update actions builder to create unbundling action when necessary.
Summary:
Each time that offloading support is requested by the user and the input file is not a source file, an action `OffloadUnbundlingAction` is created to signal that the input file may contain bundles, so that the proper tool is then invoked to attempt to extract the components of the bundle. This patch adds the logic to create that action in offload action builder.

The job creation for the new action will be proposed in a separate patch.

Reviewers: echristo, tra, jlebar, ABataev, hfinkel

Subscribers: whchung, mehdi_amini, cfe-commits, Hahnfeld, andreybokhanko, arpith-jacob, carlo.bertolli, caomhin

Differential Revision: https://reviews.llvm.org/D21853

llvm-svn: 285324
2016-10-27 18:00:51 +00:00
Samuel Antao 69d6f31f74 [Driver][OpenMP] Update actions builder to create bundling action when necessary.
Summary:
In order to save the user from dealing with multiple output files (for host and device) while using separate compilation, a new action `OffloadBundlingAction` is used when the last phase is not linking. This action will then result in a job that uses the proposed bundling tool to create a single preprocessed/IR/ASM/Object file from multiple ones.

The job creation for the new action will be proposed in a separate patch.

Reviewers: echristo, tra, jlebar, ABataev, hfinkel

Subscribers: whchung, mehdi_amini, cfe-commits, Hahnfeld, andreybokhanko, arpith-jacob, carlo.bertolli, caomhin

Differential Revision: https://reviews.llvm.org/D21852

llvm-svn: 285323
2016-10-27 17:50:43 +00:00
Samuel Antao 31fef98993 [Driver][OpenMP] Add logic for offloading-specific argument translation.
Summary:
This patch includes support for argument translation that is specific of a given offloading kind. Additionally, it implements the translation for OpenMP device kinds in the gcc tool chain.

With this patch, it is possible to compile a functional OpenMP application with offloading capabilities with no separate compilation.

Reviewers: echristo, tra, jlebar, rsmith, ABataev, hfinkel

Subscribers: whchung, mehdi_amini, cfe-commits, Hahnfeld, andreybokhanko, arpith-jacob, carlo.bertolli, caomhin

Differential Revision: https://reviews.llvm.org/D21848

llvm-svn: 285320
2016-10-27 17:39:44 +00:00
Samuel Antao 59efaede56 [Driver][OpenMP] Build jobs for OpenMP offloading actions for targets using gcc tool chains.
Summary:
This patch adds logic to create jobs for OpenMP offloading actions by:
 - tuning the jobs result information to use the offloading prefix even for (device) linking actions.
 - replacing the device inputs of the host linking jobs by a linker script that embed them in the right sections.

Reviewers: echristo, tra, jlebar, rsmith, ABataev, hfinkel

Subscribers: mkuron, whchung, mehdi_amini, cfe-commits, Hahnfeld, andreybokhanko, arpith-jacob, carlo.bertolli, caomhin

Differential Revision: https://reviews.llvm.org/D21847

llvm-svn: 285319
2016-10-27 17:31:22 +00:00
Samuel Antao 28c4f18bfe [Driver][OpenMP] Add specialized action builder for OpenMP offloading actions.
Summary:
This patch adds a new specialized action builder to create OpenMP offloading actions. The specialized builder is added to the action builder already containing the CUDA specialized builder.

OpenMP offloading dependences between host and device actions (expressed with OffloadActions) are different that what is used for CUDA:
 - Device compile action depends on the host compile action - the device frontend extracts the information about the declarations that have to be emitted by looking into the metadata produced by the host frontend.
 - The host link action depends on the device link actions - the device images are embedded in the host binary at link time.

Reviewers: echristo, tra, rsmith, jlebar, ABataev, hfinkel

Subscribers: mkuron, whchung, mehdi_amini, cfe-commits, Hahnfeld, andreybokhanko, arpith-jacob, carlo.bertolli, caomhin

Differential Revision: https://reviews.llvm.org/D21845

llvm-svn: 285314
2016-10-27 17:08:03 +00:00
Samuel Antao 39f9da2a87 [Driver][OpenMP] Create tool chains for OpenMP offloading kind.
Summary: This patch adds new logic to create the necessary tool chains to support offloading for OpenMP. The OpenMP related options are checked and the tool chains created accordingly. Diagnostics are emitted in case the options are illegal or express unknown targets.

Reviewers: echristo, tra, jlebar, rsmith, ABataev, hfinkel

Subscribers: whchung, mkuron, mehdi_amini, cfe-commits, Hahnfeld, arpith-jacob, carlo.bertolli, caomhin

Differential Revision: https://reviews.llvm.org/D21843

llvm-svn: 285311
2016-10-27 16:38:05 +00:00
Samuel Antao 9c9d9cdcf8 [Driver][CUDA][OpenMP] Reimplement tool selection in the driver.
Summary:
This creates a tool selector in the driver that replaces the existing one. The goal is to better organize the code and make the selector easier to scale, in particular in the presence of offload actions that can be collapsed. 

The current implementation became more confusing when the support for offloading actions was added. This concern was expressed by Eric in http://reviews.llvm.org/D9888.

This patch does not add new testing, it preserves the existing functionality.

Reviewers: echristo, tra, jlebar, rsmith, ABataev, hfinkel

Subscribers: whchung, guansong, mkuron, mehdi_amini, cfe-commits, Hahnfeld, andreybokhanko, caomhin, arpith-jacob, carlo.bertolli

Differential Revision: https://reviews.llvm.org/D21840

llvm-svn: 285307
2016-10-27 16:29:20 +00:00
Dean Michael Berris f469cb9045 [XRay] Check in Clang whether XRay supports the target when -fxray-instrument is passed
Summary:
Added the code which explicitly emits an error in Clang in case
`-fxray-instrument` is passed, but XRay is not supported for the
selected target.

Reviewers: rsmith, aaron.ballman, rnk, dberris

Differential Revision: https://reviews.llvm.org/D24799

llvm-svn: 285266
2016-10-27 04:56:14 +00:00
Samuel Antao 10e905c2e9 Remove check for -o option in offloading actions builder.
This check is also present when jobs are built, so the offloading builder check is not needed anymore.

llvm-svn: 285264
2016-10-27 01:08:58 +00:00
Samuel Antao 5b1a89a33b Fix bug when compiling CUDA code with -emit-llvm and -o.
In this case the device code is not injected into an host action and therefore the 
user should get an error as -o can't be used when generating two outputs.

llvm-svn: 285263
2016-10-27 00:53:34 +00:00
Mehdi Amini 5ee58d3860 Unconditionally pass `-lto_library` to the linker on Darwin
We're only doing it with -flto currently, however it never "hurt"
to pass it, and users that are linking without -flto can get in
trouble if one of the dependency (a static library for instance)
contains bitcode.

Differential Revision: https://reviews.llvm.org/D25932

llvm-svn: 285254
2016-10-26 23:23:08 +00:00
Douglas Katzman 1e04e46c7a [Myriad] Find libc++ adjacent to libstdc++
llvm-svn: 285140
2016-10-25 23:02:30 +00:00
Stephen Hines fa2412b2e7 Use linker flag --fix-cortex-a53-843419 on Android ARM64 compilation.
Summary:
This is only forced on if there is no non-Cortex-A53 CPU specified as
well. Android's platform and NDK builds need to assume that the code can
be run on Cortex-A53 devices, so we always enable the fix unless we know
specifically that the code is only running on a different kind of CPU.

Reviewers: cfe-commits

Subscribers: aemerson, rengolin, tberghammer, pirama, danalbert

Differential Revision: https://reviews.llvm.org/D25761

llvm-svn: 285127
2016-10-25 21:44:35 +00:00
Michal Gorny 91cc4a6503 [Driver] Disable OpenSUSE rules for OpenSUSE/SLES 10 and older
Disable the OpenSUSE rules for OpenSUSE versions older than 11 as they
are incompatible with the old binutils on that distribution.

Differential Revision: https://reviews.llvm.org/D24954

llvm-svn: 285076
2016-10-25 15:33:32 +00:00
Michal Gorny bd449c27d5 [Driver] Support obtaining active toolchain from gcc-config on Gentoo
Support using gcc-config to determine the correct GCC toolchain location
on Gentoo. In order to do that, attempt to read gcc-config configuration
form [[sysroot]]/etc/env.d/gcc, if no custom toolchain location is
provided.

Differential Revision: https://reviews.llvm.org/D25661

llvm-svn: 285074
2016-10-25 15:07:41 +00:00
Pavel Labath 183e3f8b78 Adjust for TimePoint interface change in llvm: D25730. NFC
llvm-svn: 284964
2016-10-24 10:59:13 +00:00
Bruno Cardoso Lopes de9cab942b [Driver][Darwin] Pass -no_deduplicate to ld64
Recent versions of ld64 run a deduplicate pass, which is on by default.
Disable the pass by using -no_deduplicate in certain condition and
enhance total compile time.

rdar://problem/25455336

llvm-svn: 284798
2016-10-21 01:49:14 +00:00
Michal Gorny 16f37c30a3 [Driver] Refactor DetectDistro() parameters to take VFS ref only. NFC
Refactor the DetectDistro() function to take a single vfs::FileSystem
reference only, instead of Driver and llvm::Triple::ArchType.
The ArchType parameter was not used anyway, and Driver was only used to
obtain the VFS.

Aside to making the API simpler and more transparent, it makes it
easier to add unit tests for the function in the future -- since
the tests would need only to provide an appropriate VFS.

Differential Revision: https://reviews.llvm.org/D25819

llvm-svn: 284774
2016-10-20 20:45:40 +00:00
Michal Gorny 0a2cd96e05 [Driver] Parse Debian version as integer when possible. NFC
Replace the string matching for /etc/debian_version with split
integer/string matching algorithm. When the file contains 'major.minor'
version number, parse the major version as integer and use a switch
clause to match it. Otherwise, attempt 'codename/sid' matching using
a StringSwitch.

Differential Revision: https://reviews.llvm.org/D25696

llvm-svn: 284770
2016-10-20 20:13:35 +00:00
Sriraman Tallam 165a8845f8 New clang option -mpie-copy-relocations to use copy relocations for PIE builds.
Differential Revision: https://reviews.llvm.org/D19996

llvm-svn: 284638
2016-10-19 20:24:06 +00:00
Douglas Katzman 69d7cf0d41 [Myriad] Find libc++ headers next to clang binary
llvm-svn: 284617
2016-10-19 17:30:40 +00:00
Petr Hosek b406388e5f [Driver] Use stem rather than filename for executable name
When comparing the linker name in Fuchsia driver, use stem rather
than filename to get the name of the linker becase on Windows, the
filename will have an extension.

Differential Revision: https://reviews.llvm.org/D25700

llvm-svn: 284430
2016-10-17 22:02:53 +00:00
Adrian Prantl d50d56c774 Driver/Darwin: Set the DWARF version based on the deployment target.
System utilities such as atos only support DWARF 4 on OS X 10.11+ and
iOS 9+. We thus want to enable DWARF 4 only if the deployment target
has a recent enough operating system version and use DWARF 2 for older
systems.

<rdar://problem/28766743>

llvm-svn: 284416
2016-10-17 19:36:18 +00:00
Michal Gorny 9e1b6e108e [Driver] Use VFS to perform all distribution checks
Use the VFS provided by D.getVFS() for all distribution checks,
including those performing read of the release file. Requested
by @bruno on D24954.

Differential Revision: https://reviews.llvm.org/D25641

llvm-svn: 284403
2016-10-17 18:07:15 +00:00
Adrian Prantl c5751a8378 Fix a typo.
llvm-svn: 284400
2016-10-17 17:41:51 +00:00
Krzysztof Parzyszek 50fd615f54 Reapply r284383. The test failures were due to a missing dir in test/
llvm-svn: 284392
2016-10-17 15:30:10 +00:00
Krzysztof Parzyszek d45a60449b Revert r284383, while I figure out how to reproduce the failures locally
llvm-svn: 284389
2016-10-17 14:47:29 +00:00
Krzysztof Parzyszek cdcd403bc2 Return correct path from HexagonToolChain::getHexagonTargetDir
This problem was exposed by r284129, causing clang-hexagon-elf to fail
clang tests.

llvm-svn: 284383
2016-10-17 13:23:41 +00:00
David L Kreitzer d397ea4d6f Define Contiki OS toolchain
Patch by Michael LeMay

Differential revision: http://reviews.llvm.org/D19854

llvm-svn: 284278
2016-10-14 20:44:33 +00:00
Ed Maste 55633f7682 Revert r284256 due to test failure
llvm-svn: 284259
2016-10-14 18:20:12 +00:00
Ed Maste aaa44fe5cd Link static PIE programs against rcrt0.o on OpenBSD
Patch by Stefan Kempf.

Differential Revision:	https://reviews.llvm.org/D22130

llvm-svn: 284256
2016-10-14 17:59:53 +00:00
Teresa Johnson 9c6e5566dd Pass -ffunction-sections/-fdata-sections along to gold-plugin
Summary:
These options need to be passed to the plugin in order to have
an effect on LTO/ThinLTO compiles.

Reviewers: mehdi_amini, pcc

Subscribers: jfb, dschuff, mehdi_amini, cfe-commits

Differential Revision: https://reviews.llvm.org/D24644

llvm-svn: 284140
2016-10-13 18:05:53 +00:00
Sjoerd Meijer ee3c7e0d42 Guard flag –fdenormal-fp-math with –fno-fast-math.
This allows disabling the FP options with just one flag (-fno-fast-math).

Differential Revision: https://reviews.llvm.org/D25479

llvm-svn: 284121
2016-10-13 13:22:01 +00:00
Mike Edwards f4bab7eb66 Revert - When optimizing for size, enable loop rerolling by default
This reverts r283685 as it is causing test failures on Green Dragon.

llvm-svn: 283950
2016-10-11 22:09:13 +00:00
Justin Lebar 49ec14692a [CUDA] Re-land support for <complex> (r283683 and r283680).
These were reverted in r283753 and r283747.

The first patch added a header to the root 'Headers' install directory,
instead of into 'Headers/cuda_wrappers'.  This was fixed in the second
patch, but by then the damage was done: The bad header stayed in the
'Headers' directory, continuing to break the build.

We reverted both patches in an attempt to fix things, but that still
didn't get rid of the header, so the Windows boostrap build remained
broken.

It's probably worth fixing up our cmake logic to remove things from the
install dirs, but in the meantime, re-land these patches, since we
believe they no longer have this bug.

llvm-svn: 283907
2016-10-11 17:36:03 +00:00