yaxunl added a comment.

In D120132#3350020 <https://reviews.llvm.org/D120132#3350020>, @tra wrote:

> In D120132#3349936 <https://reviews.llvm.org/D120132#3349936>, @yaxunl wrote:
>
>> Users may use clang driver to compile HIP program and C++ program with one 
>> clang driver invocation, e.g.
>>
>>   clang --offload-arch=gfx906 a.hip b.cpp
>>
>> Clang driver will create job actions for a.hip and b.cpp separately. The job 
>> actions for a.hip have HIP offload kind. The job actions for b.cpp have 
>> 'none' offload kind.
>>
>> Only job actions having HIP offload kind should have HIP include paths, 
>> otherwise, even if clang driver is used for compiling one single C++ 
>> program, it will add HIP include path.
>
> Are you saying that clang driver would pick HIP toolchain for the C++ 
> compilation? It does not make sense. It that were the case we would be 
> risking picking up C++ toolchain for the HIP compilation, too and that would 
> obviously not work at all.
>
> AFAICT, clang certainly does not add CUDA include paths to C++ compilations 
> passed to the top-level invocation. I believe this should work for HIP, too. 
> Search for cuda-11.5 below:
>
>   # bin/clang++ --cuda-path=$HOME/local/cuda-11.5.0 -### -c a.cu b.cc
>   
>   clang version 15.0.0
>   Target: x86_64-unknown-linux-gnu
>   Thread model: posix
>   InstalledDir: /usr/local/home/tra/work/llvm/build/release+assert+zapcc/bin
>    "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/bin/clang-15" 
> "-cc1" "-triple" "nvptx64-nvidia-cuda" "-aux-triple" 
> "x86_64-unknown-linux-gnu" "-S" "-disable-free" "-clear-ast-before-backend" 
> "-main-file-name" "a.cu" "-mrelocation-model" "static" "-mframe-pointer=all" 
> "-fno-rounding-math" "-fno-verbose-asm" "-no-integrated-as" "-aux-target-cpu" 
> "x86-64" "-fcuda-is-device" "-mllvm" "-enable-memcpyopt-without-libcalls" 
> "-mlink-builtin-bitcode" 
> "/usr/local/home/tra/local/cuda-11.5.0/nvvm/libdevice/libdevice.10.bc" 
> "-target-feature" "+ptx75" "-target-sdk-version=11.5" "-target-cpu" "sm_35" 
> "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" 
> "-fno-dwarf-directory-asm" "-resource-dir" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0" 
> "-internal-isystem" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0/include/cuda_wrappers"
>  "-include" "__clang_cuda_runtime_wrapper.h" "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11" 
> "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11"
>  "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward" 
> "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11" 
> "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11"
>  "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward" 
> "-internal-isystem" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0/include"
>  "-internal-isystem" "/usr/local/include" "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include" 
> "-internal-externc-isystem" "/usr/include/x86_64-linux-gnu" 
> "-internal-externc-isystem" "/include" "-internal-externc-isystem" 
> "/usr/include" "-internal-isystem" 
> "/usr/local/home/tra/local/cuda-11.5.0/include" "-internal-isystem" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0/include"
>  "-internal-isystem" "/usr/local/include" "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include" 
> "-internal-externc-isystem" "/usr/include/x86_64-linux-gnu" 
> "-internal-externc-isystem" "/include" "-internal-externc-isystem" 
> "/usr/include" "-fdeprecated-macro" "-fno-autolink" 
> "-fdebug-compilation-dir=/usr/local/home/tra/work/llvm/build/release+assert+zapcc"
>  "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcxx-exceptions" 
> "-fexceptions" "-fcolor-diagnostics" "-cuid=fce3a17633fb941f" 
> "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o" "/tmp/a-8486d3/a-sm_35.s" "-x" "cuda" 
> "a.cu"
>    "/usr/local/home/tra/local/cuda-11.5.0/bin/ptxas" "-m64" "-O0" 
> "--gpu-name" "sm_35" "--output-file" "/tmp/a-7c357d/a-sm_35.o" 
> "/tmp/a-8486d3/a-sm_35.s"
>    "/usr/local/home/tra/local/cuda-11.5.0/bin/fatbinary" "-64" "--create" 
> "/tmp/a-c46038.fatbin" "--image=profile=sm_35,file=/tmp/a-7c357d/a-sm_35.o" 
> "--image=profile=compute_35,file=/tmp/a-8486d3/a-sm_35.s"
>    "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/bin/clang-15" 
> "-cc1" "-triple" "x86_64-unknown-linux-gnu" "-target-sdk-version=11.5" 
> "-aux-triple" "nvptx64-nvidia-cuda" "-emit-obj" "-mrelax-all" 
> "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" 
> "-main-file-name" "a.cu" "-mrelocation-model" "static" "-mframe-pointer=all" 
> "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" 
> "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" 
> "-tune-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" 
> "-debugger-tuning=gdb" 
> "-fcoverage-compilation-dir=/usr/local/home/tra/work/llvm/build/release+assert+zapcc"
>  "-resource-dir" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0" 
> "-internal-isystem" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0/include/cuda_wrappers"
>  "-include" "__clang_cuda_runtime_wrapper.h" "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11" 
> "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11"
>  "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward" 
> "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11" 
> "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11"
>  "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward" 
> "-internal-isystem" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0/include"
>  "-internal-isystem" "/usr/local/include" "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include" 
> "-internal-externc-isystem" "/usr/include/x86_64-linux-gnu" 
> "-internal-externc-isystem" "/include" "-internal-externc-isystem" 
> "/usr/include" "-internal-isystem" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0/include"
>  "-internal-isystem" "/usr/local/include" "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include" 
> "-internal-externc-isystem" "/usr/include/x86_64-linux-gnu" 
> "-internal-externc-isystem" "/include" "-internal-externc-isystem" 
> "/usr/include" "-internal-isystem" 
> "/usr/local/home/tra/local/cuda-11.5.0/include" "-fdeprecated-macro" 
> "-fdebug-compilation-dir=/usr/local/home/tra/work/llvm/build/release+assert+zapcc"
>  "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcxx-exceptions" 
> "-fexceptions" "-fcolor-diagnostics" "-fcuda-include-gpubinary" 
> "/tmp/a-c46038.fatbin" "-cuid=fce3a17633fb941f" "-faddrsig" 
> "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o" "a.o" "-x" "cuda" "a.cu"
>    "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/bin/clang-15" 
> "-cc1" "-triple" "x86_64-unknown-linux-gnu" "-emit-obj" "-mrelax-all" 
> "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" 
> "-main-file-name" "b.cc" "-mrelocation-model" "static" "-mframe-pointer=all" 
> "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" 
> "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" 
> "-tune-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" 
> "-debugger-tuning=gdb" 
> "-fcoverage-compilation-dir=/usr/local/home/tra/work/llvm/build/release+assert+zapcc"
>  "-resource-dir" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0" 
> "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11" 
> "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11"
>  "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward" 
> "-internal-isystem" 
> "/usr/local/home/tra/work/llvm/build/release+assert+zapcc/lib/clang/15.0.0/include"
>  "-internal-isystem" "/usr/local/include" "-internal-isystem" 
> "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include" 
> "-internal-externc-isystem" "/usr/include/x86_64-linux-gnu" 
> "-internal-externc-isystem" "/include" "-internal-externc-isystem" 
> "/usr/include" "-fdeprecated-macro" 
> "-fdebug-compilation-dir=/usr/local/home/tra/work/llvm/build/release+assert+zapcc"
>  "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcxx-exceptions" 
> "-fexceptions" "-fcolor-diagnostics" "-faddrsig" 
> "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o" "b.o" "-x" "c++" "b.cc"

If any input file is HIP program, clang driver will use HIP offload kind for 
all inputs. This behavior is similar as cuda-clang. Therefore if any input file 
is HIP program, HIP include path is added for each input file compilation. I 
think this is acceptable.

However, when there is only C++ input file, clang driver should not add HIP or 
CUDA include path. The current patch breaks that. That's why I think it needs 
change.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D120132/new/

https://reviews.llvm.org/D120132

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to