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