Commit a4f553fc authored by Huber, Joseph's avatar Huber, Joseph
Browse files

[libc] Fix using the `libcgpu.a` for NVPTX in non-LTO builds

CUDA requires a PTX feature to be compiled generally, because the
`libcgpu.a` archive contains LLVM-IR we need to have one present to
compile it. Currently, the wrapper fatbinary format we use to
incorporate these into single-source offloading languages has a special
option to provide this. Since this was not present in the builds, if the
user did not specify it via `-foffload-lto` it would not compile from
CUDA or OpenMP due to the missing PTX features. Fix this by passing it
to the packager invocation.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D154864
parent 5942ae86
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -184,8 +184,14 @@ function(_build_gpu_objects fq_target_name internal_target_name)

      # Append this target to a list of images to package into a single binary.
      set(input_file $<TARGET_OBJECTS:${gpu_target_name}>)
      if("${gpu_arch}" IN_LIST all_nvptx_architectures)
        string(REGEX MATCH "\\+ptx[0-9]+" nvptx_ptx_feature ${nvptx_options})
        list(APPEND packager_images
             --image=file=${input_file},arch=${gpu_arch},triple=${gpu_target_triple},feature=${nvptx_ptx_feature})
      else()
        list(APPEND packager_images
             --image=file=${input_file},arch=${gpu_arch},triple=${gpu_target_triple})
       endif()
      list(APPEND gpu_target_names ${gpu_target_name})
    endforeach()