aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Action.cpp
AgeCommit message (Collapse)AuthorFilesLines
2025-08-26[HLSL][DirectX] Add the Qdx-rootsignature-strip driver option (#154454)Finn Plummer1-0/+7
This pr adds the `Qstrip-rootsignature` as a `DXC` driver option. To do so, this pr introduces the `BinaryModifyJobClass` as an `Action` to modify a produced object file before its final output. Further, it registers `llvm-objcopy` as the tool to modify a produced `DXContainer` on the `HLSL` toolchain. This allows us to specify the `Qstrip-rootsignature` option to `clang-dxc` which will invoke `llvm-objcopy` with a `--remove-section=RTS0` argument to implement its functionality. Resolves: https://github.com/llvm/llvm-project/issues/150275.
2025-03-07[DXC] Add `-metal` flag to DXC driver (#130173)Chris B1-0/+8
This adds a flag to the DXC driver to enable calling the metal shader converter if it is available to convert the final shader output for metal.
2025-01-30[Clang] Remove ARCMigrate (#119269)Sirraide1-7/+2
In the discussion around #116792, @rjmccall mentioned that ARCMigrate has been obsoleted and that we could go ahead and remove it from Clang, so this patch does just that.
2025-01-06[Driver][SYCL] Add initial SYCL offload compilation support (#117268)Michael Toguchi1-1/+7
Introduces the SYCL based toolchain and initial toolchain construction when using the '-fsycl' option. This option will enable SYCL based offloading, creating a SPIR-V based IR file packaged into the compiled host object. This includes early support for creating the host/device object using the new offloading model. The device object is created using the spir64-unknown-unknown target triple. New/Updated Options: -fsycl Enables SYCL offloading for host and device -fsycl-device-only Enables device only compilation for SYCL -fsycl-host-only Enables host only compilation for SYCL RFC Reference: https://discourse.llvm.org/t/rfc-sycl-driver-enhancements/74092 This is a reland of: https://github.com/llvm/llvm-project/pull/107493
2024-11-15Revert "[Driver][SYCL] Add initial SYCL offload compilation support" (#116381)Aaron Ballman1-7/+1
Reverts llvm/llvm-project#107493 Failing bots include: https://lab.llvm.org/buildbot/#/builders/190/builds/9546 https://lab.llvm.org/buildbot/#/builders/46/builds/7938
2024-11-15[Driver][SYCL] Add initial SYCL offload compilation support (#107493)Michael Toguchi1-1/+7
Introduces the SYCL based toolchain and initial toolchain construction when using the '-fsycl' option. This option will enable SYCL based offloading, creating a SPIR-V based IR file packaged into the compiled host object. This includes early support for creating the host/device object using the new offloading model. The device object is created using the spir64-unknown-unknown target triple. New/Updated Options: -fsycl Enables SYCL offloading for host and device -fsycl-device-only Enables device only compilation for SYCL -fsycl-host-only Enables host only compilation for SYCL RFC Reference: https://discourse.llvm.org/t/rfc-sycl-driver-enhancements/74092
2024-02-21[InstallAPI] Set InstallAPI as a standalone tool instead of CC1 action (#82293)Cyndy Ishida1-7/+0
Installapi has important distinctions when compared to the clang driver, so much that, it doesn't make much sense to try to integrate into it. This patch partially reverts the CC1 action & driver support to replace with its own driver as a clang tool. For distribution, we could use `LLVM_TOOL_LLVM_DRIVER_BUILD` mechanism for integrating the functionality into clang such that the toolchain size is less impacted.
2024-02-13 [clang][InstallAPI] Introduce basic driver to write out tbd files (#81571)Cyndy Ishida1-0/+7
This introduces a basic outline of installapi as a clang driver option. It captures relevant information as cc1 args, which are common arguments already passed to the linker to encode into TBD file outputs. This is effectively an upstream for what already exists as `tapi installapi` in Xcode toolchains, but directly in Clang. This patch does not handle any AST traversing on input yet. InstallAPI is broadly an operation that takes a series of header files that represent a single dynamic library and generates a TBD file out of it which represents all the linkable symbols and necessary attributes for statically linking in clients. It is the linkable object in all Apple SDKs and when building dylibs in Xcode. `clang -installapi` also will support verification where it compares all the information recorded for the TBD files against the already built binary, to catch possible mismatches like when a declaration is missing a definition for an exported symbol.
2023-02-01[HLSL] [Dirver] add dxv as a VerifyDebug JobXiang Li1-0/+7
New option --dxv-path is added for dxc mode to set the installation path for dxv. If cannot find dxv, a warning will be report. dxv will be executed with command line dxv file_name -o file_name. It will validate and sign the file and overwrite it. Differential Revision: https://reviews.llvm.org/D141705
2023-01-11[OpenMP] Adjust phases for AMDGPU offloading for OpenMP in save-temps modeJoseph Huber1-1/+5
Currently, the behaviour of `-save-temps` changes the generated output when offloading to AMDGPU. This is because we only have a single phase and it contains the `-disable-llvm-passes` flags which results in unoptimized bitcode. We need to make sure we generate another phase that produces both the optimized and unoptimized bitcode. There used to be a check that turned these phases into a no-op. But I believe it is more correct to not generate them this way in the first place. Doing this requires a bit of a hack, replacing an already generated phase action, but it should be fine. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D141440
2022-11-18[C++20] [Modules] Remove unmaintained Header ModuleChuanqi Xu1-8/+0
Currently there is a -emit-header-module mode, which can combine several headers together as a module interface. However, this breaks our assumption (for standard c++ modules) about module interface. The module interface should come from a module interface unit. And if it is a header, it should be a header unit. And currently we have no ideas to combine several headers together. So I think this mode is an experimental one and it is not maintained and it is not used. So it will be better to remove them. Reviewed By: Bigcheese, dblaikie, bruno Differential Revision: https://reviews.llvm.org/D137609
2022-09-19[CUDA][HIP] Fix new driver crashing when using -save-temps in RDC-modeJoseph Huber1-0/+13
Previously when using the `clang-offload-packager` we did not pass the active offloading kinds. Then in Clang when we attempted to detect when there was host-offloading action that needed to be embedded in the host we did not find it. This patch adds the active offloading kinds so we know when there is input to be embedded. Reviewed By: tra Differential Revision: https://reviews.llvm.org/D134189
2022-08-27Use llvm::all_equal (NFC)Kazu Hirata1-1/+1
2022-08-26[OpenMP] Deprecate the old driver for OpenMP offloadingJoseph Huber1-8/+0
Recently OpenMP has transitioned to using the "new" driver which primarily merges the device and host linking phases into a single wrapper that handles both at the same time. This replaced a few tools that were only used for OpenMP offloading, such as the `clang-offload-wrapper` and `clang-nvlink-wrapper`. The new driver carries some marked benefits compared to the old driver that is now being deprecated. Things like device-side LTO, static library support, and more compatible tooling. As such, we should be able to completely deprecate the old driver, at least for OpenMP. The old driver support will still exist for CUDA and HIP, although both of these can currently be compiled on Linux with `--offload-new-driver` to use the new method. Note that this does not deprecate the `clang-offload-bundler`, although it is unused by OpenMP now, it is still used by the HIP toolchain both as their device binary format and object format. When I proposed deprecating this code I heard some vendors voice concernes about needing to update their code in their fork. They should be able to just revert this commit if it lands. Reviewed By: jdoerfert, MaskRay, ye-luo Differential Revision: https://reviews.llvm.org/D130020
2022-05-11[Clang] Introduce clang-offload-packager tool to bundle device filesJoseph Huber1-0/+8
In order to do offloading compilation we need to embed files into the host and create fatbainaries. Clang uses a special binary format to bundle several files along with their metadata into a single binary image. This is currently performed using the `-fembed-offload-binary` option. However this is not very extensibile since it requires changing the command flag every time we want to add something and makes optional arguments difficult. This patch introduces a new tool called `clang-offload-packager` that behaves similarly to CUDA's `fatbinary`. This tool takes several input files with metadata and embeds it into a single image that can then be embedded in the host. Reviewed By: tra Differential Revision: https://reviews.llvm.org/D125165
2022-04-29[OpenMP] Make clang argument handling for the new driver more genericJoseph Huber1-5/+10
In preparation for accepting other offloading kinds with the new driver, this patch makes the way we handle offloading actions more generic. A new field to get the associated device action's toolchain is used rather than manually iterating a list. This makes building the arguments easier and makes sure that we doin't rely on any implicit ordering. Reviewed By: yaxunl Differential Revision: https://reviews.llvm.org/D123313
2022-03-21Ensure -extract-api handles multiple headers correctlyDaniel Grumberg1-0/+7
clang -extract-api should accept multiple headers and forward them to a single CC1 instance. This change introduces a new ExtractAPIJobAction. Currently API Extraction is done during the Precompile phase as this is the current phase that matches the requirements the most. Adding a new phase would need to change some logic in how phases are scheduled. If the headers scheduled for API extraction are of different types the driver emits a diagnostic. Differential Revision: https://reviews.llvm.org/D121936
2022-01-31[Clang] Introduce Clang Linker Wrapper ToolJoseph Huber1-0/+8
This patch introduces a linker wrapper tool that allows us to preprocess files before they are sent to the linker. This adds a dummy action and job to the driver stage that builds the linker command as usual and then replaces the command line with the wrapper tool. Depends on D116543 Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D116544
2021-02-08[CUDA][HIP] Add -fuse-cuidYaxun (Sam) Liu1-2/+2
This patch added a distinct CUID for each input file, which is represented by InputAction. clang initially creates an InputAction for each input file for the host compilation. In CUDA/HIP action builder, each InputAction is given a CUID and cloned for each GPU arch, and the CUID is also cloned. In this way, we guarantee the corresponding device and host compilation for the same file shared the same CUID. On the other hand, different compilation units have different CUID. -fuse-cuid=random|hash|none is added to control the method to generate CUID. The default is hash. -cuid=X is also added to specify CUID explicitly, which overrides -fuse-cuid. Reviewed by: Artem Belevich Differential Revision: https://reviews.llvm.org/D95007
2020-06-22Add Statically Linked LibrariesAaron En Ye Shi1-0/+7
Add GNU Static Lib Tool, which supports the --emit-static-lib flag. For HIP, a static library archive will be created and consist of HIP Fat Binary host object with the device images embedded. Using llvm-ar to create the static archive. Also, delete existing output file to ensure a new archive is created each time. Reviewers: yaxunl, tra, rjmccall, echristo Subscribers: echristo, JonChesterfield, scchan, msearles Differential Revision: https://reviews.llvm.org/D78759
2019-10-09[Clang][OpenMP Offload] Add new tool for wrapping offload device binariesSergey Dmitriev1-0/+8
This patch removes the remaining part of the OpenMP offload linker scripts which was used for inserting device binaries into the output linked binary. Device binaries are now inserted into the host binary with a help of the wrapper bit-code file which contains device binaries as data. Wrapper bit-code file is dynamically created by the clang driver with a help of new tool clang-offload-wrapper which takes device binaries as input and produces bit-code file with required contents. Wrapper bit-code is then compiled to an object and resulting object is appended to the host linking by the clang driver. This is the second part of the patch for eliminating OpenMP linker script (please see https://reviews.llvm.org/D64943). Differential Revision: https://reviews.llvm.org/D68166 llvm-svn: 374219
2019-10-08[clang][ifs] Clang Interface Stubs ToolChain plumbing.Puyan Lotfi1-0/+6
Second Landing Attempt: This patch enables end to end support for generating ELF interface stubs directly from clang. Now the following: clang -emit-interface-stubs -o libfoo.so a.cpp b.cpp c.cpp will product an ELF binary with visible symbols populated. Visibility attributes and -fvisibility can be used to control what gets populated. * Adding ToolChain support for clang Driver IFS Merge Phase * Implementing a default InterfaceStubs Merge clang Tool, used by ToolChain * Adds support for the clang Driver to involve llvm-ifs on ifs files. * Adds -emit-merged-ifs flag, to tell llvm-ifs to emit a merged ifs text file instead of the final object format (normally ELF) Differential Revision: https://reviews.llvm.org/D63978 llvm-svn: 374061
2019-10-03Revert 373538 and follow-ups 373549 and 373552.Nico Weber1-6/+0
They break tests on (at least) macOS. llvm-svn: 373556
2019-10-02[clang][ifs] Clang Interface Stubs ToolChain plumbing.Puyan Lotfi1-0/+6
This patch enables end to end support for generating ELF interface stubs directly from clang. Now the following: clang -emit-interface-stubs -o libfoo.so a.cpp b.cpp c.cpp will product an ELF binary with visible symbols populated. Visibility attributes and -fvisibility can be used to control what gets populated. * Adding ToolChain support for clang Driver IFS Merge Phase * Implementing a default InterfaceStubs Merge clang Tool, used by ToolChain * Adds support for the clang Driver to involve llvm-ifs on ifs files. * Adds -emit-merged-ifs flag, to tell llvm-ifs to emit a merged ifs text file instead of the final object format (normally ELF) Differential Revision: https://reviews.llvm.org/D63978 llvm-svn: 373538
2019-01-19Update the file headers across all of the LLVM projects in the monorepoChandler Carruth1-4/+3
to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636
2018-09-15[modules] Driver support for precompiling a collection of files as a singleRichard Smith1-0/+14
action. llvm-svn: 342305
2018-08-28[HIP] Fix output file extensionYaxun Liu1-1/+1
OffloadBundlingJobAction constructor accepts a list of JobAction as inputs. The host JobAction is the last one. The file type of OffloadBundlingJobAction should be determined by the host JobAction (the last one) instead of the first one. Since HIP emits LLVM bitcode for device compilation, device JobAction has different file type as host Job Action. This bug causes incorrect output file extension for HIP. This patch fixes it by using the last input JobAction (host JobAction) to determine file type of OffloadBundlingJobAction. Differential Revision: https://reviews.llvm.org/D51336 llvm-svn: 340873
2018-05-08[HIP] Add hip offload kindYaxun Liu1-0/+9
There are quite differences in HIP action builder and action job creation, which justifies to define a separate offload kind. Differential Revision: https://reviews.llvm.org/D46471 llvm-svn: 331811
2018-03-20[Driver] Fix some Clang-tidy modernize and Include What You Use warnings; ↵Eugene Zelenko1-22/+16
other minor fixes (NFC). llvm-svn: 328044
2016-10-28Fix MSVC "not all control paths return a value" warningSimon Pilgrim1-0/+2
Add unreachable after enum switch statement llvm-svn: 285390
2016-10-27[Driver][OpenMP] Add support to create jobs for unbundling actions.Samuel Antao1-5/+8
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[Driver][OpenMP] Add support to create jobs for bundling actions.Samuel Antao1-0/+17
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[Driver][OpenMP] Update actions builder to create unbundling action when ↵Samuel Antao1-0/+10
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[Driver][OpenMP] Update actions builder to create bundling action when ↵Samuel Antao1-0/+7
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[Driver][OpenMP] Create tool chains for OpenMP offloading kind.Samuel Antao1-0/+4
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-07Rename variable to not use C++ reserved name (leading underscore + capital) ↵Mehdi Amini1-2/+2
(NFC) llvm-svn: 283616
2016-10-07Fix MSVC build: requires namespace in front of StringRef (NFC)Mehdi Amini1-1/+1
llvm-svn: 283615
2016-10-07Turn ArchName/BoundArch in Driver from raw pointer to StringRef (NFC)Mehdi Amini1-1/+1
llvm-svn: 283605
2016-07-16Remove extra semi-colon. Fixes warning and Werror bots.Eric Christopher1-1/+1
llvm-svn: 275655
2016-07-15Attempt to fix breakage caused by r275645 for Windows bots.Samuel Antao1-1/+1
llvm-svn: 275650
2016-07-15[CUDA][OpenMP] Create generic offload actionSamuel Antao1-9/+208
Summary: This patch replaces the CUDA specific action by a generic offload action. The offload action may have multiple dependences classier in “host” and “device”. The way this generic offloading action is used is very similar to what is done today by the CUDA implementation: it is used to set a specific toolchain and architecture to its dependences during the generation of jobs. This patch also proposes propagating the offloading information through the action graph so that that information can be easily retrieved at any time during the generation of commands. This allows e.g. the "clang tool” to evaluate whether CUDA should be supported for the device or host and ptas to easily retrieve the target architecture. This is an example of how the action graphs would look like (compilation of a single CUDA file with two GPU architectures) ``` 0: input, "cudatests.cu", cuda, (host-cuda) 1: preprocessor, {0}, cuda-cpp-output, (host-cuda) 2: compiler, {1}, ir, (host-cuda) 3: input, "cudatests.cu", cuda, (device-cuda, sm_35) 4: preprocessor, {3}, cuda-cpp-output, (device-cuda, sm_35) 5: compiler, {4}, ir, (device-cuda, sm_35) 6: backend, {5}, assembler, (device-cuda, sm_35) 7: assembler, {6}, object, (device-cuda, sm_35) 8: offload, "device-cuda (nvptx64-nvidia-cuda:sm_35)" {7}, object 9: offload, "device-cuda (nvptx64-nvidia-cuda:sm_35)" {6}, assembler 10: input, "cudatests.cu", cuda, (device-cuda, sm_37) 11: preprocessor, {10}, cuda-cpp-output, (device-cuda, sm_37) 12: compiler, {11}, ir, (device-cuda, sm_37) 13: backend, {12}, assembler, (device-cuda, sm_37) 14: assembler, {13}, object, (device-cuda, sm_37) 15: offload, "device-cuda (nvptx64-nvidia-cuda:sm_37)" {14}, object 16: offload, "device-cuda (nvptx64-nvidia-cuda:sm_37)" {13}, assembler 17: linker, {8, 9, 15, 16}, cuda-fatbin, (device-cuda) 18: offload, "host-cuda (powerpc64le-unknown-linux-gnu)" {2}, "device-cuda (nvptx64-nvidia-cuda)" {17}, ir 19: backend, {18}, assembler 20: assembler, {19}, object 21: input, "cuda", object 22: input, "cudart", object 23: linker, {20, 21, 22}, image ``` The changes in this patch pass the existent regression tests (keeps the existent functionality) and resulting binaries execute correctly in a Power8+K40 machine. Reviewers: echristo, hfinkel, jlebar, ABataev, tra Subscribers: guansong, andreybokhanko, tcramer, mkuron, cfe-commits, arpith-jacob, carlo.bertolli, caomhin Differential Revision: https://reviews.llvm.org/D18171 llvm-svn: 275645
2016-07-06[CUDA] Add missing namespace qualification on CudaArch in Action.cpp.Justin Lebar1-1/+1
Fix build breakage with MSVC. llvm-svn: 274689
2016-07-06[CUDA] Add utility functions for dealing with CUDA versions / architectures.Justin Lebar1-34/+2
Summary: Currently our handling of CUDA architectures is scattered all around clang. This patch centralizes it. A key advantage of this centralization is that you can now write a C++ switch on e.g. CudaArch and get a compile error if you don't handle one of the enum values. Reviewers: tra Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D21867 llvm-svn: 274681
2016-07-06[CUDA] Add support for CUDA 8 and sm_60-62.Justin Lebar1-0/+3
Summary: Also add sm_32, which was missing. Reviewers: tra Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D21778 llvm-svn: 274680
2016-01-14[CUDA] Invoke ptxas and fatbinary during compilation.Justin Lebar1-1/+1
Summary: Previously we compiled CUDA device code to PTX assembly and embedded that asm as text in our host binary. Now we compile to PTX assembly and then invoke ptxas to assemble the PTX into a cubin file. We gather the ptx and cubin files for each of our --cuda-gpu-archs and combine them using fatbinary, and then embed that into the host binary. Adds two new command-line flags, -Xcuda_ptxas and -Xcuda_fatbinary, which pass args down to the external tools. Reviewers: tra, echristo Subscribers: cfe-commits, jhen Differential Revision: http://reviews.llvm.org/D16082 llvm-svn: 257809
2016-01-12[CUDA] Add explicit mapping from sm_XX to compute_YY.Justin Lebar1-2/+24
Summary: This is used by D16082 when it invokes fatbinary. Reviewers: tra Subscribers: cfe-commits, jhen, echristo Differential Revision: http://reviews.llvm.org/D16097 llvm-svn: 257530
2016-01-11[CUDA] Reject values for --cuda-gpu-arch that are not of the form /sm_\d+/.Justin Lebar1-1/+9
Reviewers: tra Subscribers: cfe-commits, jhen, echristo Differential Revision: http://reviews.llvm.org/D16079 llvm-svn: 257413
2016-01-11Move ownership of Action objects into Compilation.Justin Lebar1-53/+32
Summary: This makes constructing Action graphs which are DAGs much simpler. It also just simplifies in general the ownership semantics of Actions. Depends on D15910. Reviewers: echristo Subscribers: klimek, cfe-commits Differential Revision: http://reviews.llvm.org/D15911 llvm-svn: 257407
2015-11-17[CUDA] use -aux-triple to pass target triple of opposite side of compilationArtem Belevich1-7/+4
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 llvm-svn: 253385
2015-09-22Augmented CudaHostAction to carry device-side triple.Artem Belevich1-2/+4
Differential Revision: http://reviews.llvm.org/D12893 llvm-svn: 248298