intel / llvm

Intel staging area for llvm.org contribution. Home for Intel LLVM-based projects.
Other
1.21k stars 727 forks source link

#include "" broke subsequent #include_next #10661

Open Alexandr-Konovalov opened 1 year ago

Alexandr-Konovalov commented 1 year ago
C:\Users\akonoval\src\include_hext>clang++.exe -v -I include\oneapi\dpl\stdpar -I include -O0 -g -w -S test.cpp
clang version 17.0.0 (https://github.com/intel/llvm 1a5e53216b009177c73dfd6d644a5c016b71b552)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Users\akonoval\sycl_workspace\llvm\build\bin
 (in-process)
 "C:\\Users\\akonoval\\sycl_workspace\\llvm\\build\\bin\\clang++.exe" -cc1 -triple x86_64-pc-windows-msvc19.36.32537 -S -disable-free -clear-ast-before-backend -main-file-name test.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -gno-column-info -gcodeview -debug-info-kind=constructor -v "-fcoverage-compilation-dir=C:\\Users\\akonoval\\src\\include_hext" -resource-dir "C:\\Users\\akonoval\\sycl_workspace\\llvm\\build\\lib\\clang\\17" -I "include\\oneapi\\dpl\\stdpar" -I include "-IC:\\Users\\akonoval\\src\\oneTBB\\include" -I. -internal-isystem "C:\\Users\\akonoval\\sycl_workspace\\llvm\\build\\lib\\clang\\17\\include" -internal-isystem "C:\\Users\\akonoval\\src\\oneTBB\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\VC\\Tools\\MSVC\\14.36.32532\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\VC\\Tools\\MSVC\\14.36.32532\\ATLMFC\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\VC\\Auxiliary\\VS\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\VC\\Tools\\MSVC\\14.36.32532\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\VC\\Tools\\MSVC\\14.36.32532\\ATLMFC\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\VC\\Auxiliary\\VS\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" -O0 -w -fdeprecated-macro "-fdebug-compilation-dir=C:\\Users\\akonoval\\src\\include_hext" -ferror-limit 19 -fmessage-length=120 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.36.32537 -std=c++14 -fdelayed-template-parsing -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -o test.s -x c++ test.cpp
clang -cc1 version 17.0.0 based upon LLVM 17.0.0git default target x86_64-pc-windows-msvc
ignoring duplicate directory "C:\Users\akonoval\src\oneTBB\include"
  as it is a non-system directory that duplicates a system directory
ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\include"
ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\ATLMFC\include"
ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\include"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt"
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt"
#include "..." search starts here:
#include <...> search starts here:
 include\oneapi\dpl\stdpar
 include
 .
 C:\Users\akonoval\sycl_workspace\llvm\build\lib\clang\17\include
 C:\Users\akonoval\src\oneTBB\include
 C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\include
 C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\ATLMFC\include
 C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\include
 C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt
 C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um
 C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared
 C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt
 C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt
End of search list.
In file included from test.cpp:1:
In file included from include\oneapi\dpl\stdpar\algorithm:16:
In file included from include\oneapi\dpl\stdpar\oneapi/dpl/algorithm:16:
In file included from include\oneapi/dpl/algorithm:19:
In file included from include\oneapi/dpl/stdpar/internal/algorithm_impl.h:19:
include\oneapi\dpl\stdpar/oneapi/dpl/execution:16:15: fatal error: 'oneapi/dpl/execution' file not found
   16 | #include_next <oneapi/dpl/execution>
      |               ^~~~~~~~~~~~~~~~~~~~~~
1 error generated.

If #include "" replaced with #include <>, #include_next functionality is restored.

$ diff -u include/oneapi/dpl/stdpar/internal/algorithm_impl.h.fixed  include/oneapi/dpl/stdpar/internal/algorithm_impl.h
--- include/oneapi/dpl/stdpar/internal/algorithm_impl.h.fixed   2023-08-02 16:05:00.759781400 +0200
+++ include/oneapi/dpl/stdpar/internal/algorithm_impl.h 2023-08-02 16:04:57.704476600 +0200
@@ -16,6 +16,6 @@
 #ifndef _ONEDPL_STDPAR_INTERNAL_ALGORITHM_IMPL_H
 #define _ONEDPL_STDPAR_INTERNAL_ALGORITHM_IMPL_H

-#include <oneapi/dpl/execution>
+#include "oneapi/dpl/execution"

 #endif // _ONEDPL_STDPAR_INTERNAL_ALGORITHM_IMPL_H

Environment:

Only Windows affected, same version under Linux is not affected. clang version 17.0.0 (https://github.com/intel/llvm 1a5e53216b009177c73dfd6d644a5c016b71b552) Target: x86_64-pc-windows-msvc Thread model: posix

Please find the reproducer attached include_next.zip

0x12CC commented 1 month ago

@Alexandr-Konovalov, could you please provide a small reproducer along with instructions on how to reproduce the error? I'm not able to reproduce the issue using the headers you've attached.

Alexandr-Konovalov commented 1 month ago

Interesting. I build fresh llvm from the sources and the error is with us.

The instruction is to unpack the include_next.zip attachment, set LIB and PATH as described in GetStartedGuide, change current directory to newly created include_next directory and run gogo.bat.

clang version 19.0.0git (https://github.com/intel/llvm 9bb2b343de3308994892961b0b48838ce7f2e91d)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Users\akonoval\sycl_workspace\llvm\build\bin
Build config: +unoptimized, +assertions
 (in-process)
 "C:\\Users\\akonoval\\sycl_workspace\\llvm\\build\\bin\\clang++.exe" -cc1 -triple x86_64-pc-windows-msvc19.39.33521 -S -disable-free -clear-ast-before-backend -main-file-name test.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -gno-column-info -gcodeview -debug-info-kind=constructor "-fdebug-compilation-dir=C:\\Users\\akonoval\\src\\include_next" "-object-file-name=C:\\Users\\akonoval\\src\\include_next\\test.s" -v "-fcoverage-compilation-dir=C:\\Users\\akonoval\\src\\include_next" -resource-dir "C:\\Users\\akonoval\\sycl_workspace\\llvm\\build\\lib\\clang\\19" -I "include\\oneapi\\dpl\\stdpar" -I include -internal-isystem "C:\\Users\\akonoval\\sycl_workspace\\llvm\\build\\lib\\clang\\19\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\VC\\Tools\\MSVC\\14.39.33519\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\VC\\Tools\\MSVC\\14.39.33519\\atlmfc\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\cppwinrt" -O0 -w -fdeprecated-macro -ferror-limit 19 -fmessage-length=120 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.39.33521 -std=c++14 -fskip-odr-check-in-gmf -fdelayed-template-parsing -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -o test.s -x c++ test.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-pc-windows-msvc
#include "..." search starts here:
#include <...> search starts here:
 include\oneapi\dpl\stdpar
 include
 C:\Users\akonoval\sycl_workspace\llvm\build\lib\clang\19\include
 C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.39.33519\include
 C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.39.33519\atlmfc\include
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\ucrt
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\winrt
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\cppwinrt
End of search list.
In file included from test.cpp:1:
In file included from include\oneapi\dpl\stdpar\algorithm:16:
In file included from include\oneapi\dpl\stdpar\oneapi/dpl/algorithm:16:
In file included from include\oneapi/dpl/algorithm:19:
In file included from include\oneapi/dpl\stdpar/internal/algorithm_impl.h:19:
include\oneapi\dpl\stdpar\oneapi/dpl/execution:16:15: fatal error: 'oneapi/dpl/execution' file not found
   16 | #include_next <oneapi/dpl/execution>
      |               ^~~~~~~~~~~~~~~~~~~~~~
1 error generated.