[PATCH] D90299: [windows-itanium] handle dllimport/export code paths separately and share with PS4

ben via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 5 16:12:40 PST 2020


bd1976llvm updated this revision to Diff 303285.
bd1976llvm marked an inline comment as done.
bd1976llvm edited the summary of this revision.
bd1976llvm added a comment.

Add tests and prevent SemaTemplate and ItaniumCXXABI code paths from executing for PS4 (for now).

I have had to be a bit more cautious as to which code paths I enable for PS4 (vs the initial diff) as I realised that we need to do more testing downstream to be sure the patches in SemaTemplate and ItaniumCXXABI will work with the propriety schemes that we are currently using. For the SemaTemplate patches I have added an exception for PS4 (that I expect to remove once we have completed further testing) and tests to show that PS4 doesn't follow Windows Itanium here. For the ItaniumCXXABI patches, I have left the patches as specific to Windows Itanium. Those patches handle how dllimport/export interacts with RTTI data; on PS4 we currently have a custom scheme for this. I am hopeful that we can use those patches in the future and I am working on verifying this internally but there is some chance that we might have to use a PS4 specific scheme for this. I also discovered that RTTI dllexport/import tests currently assert with the upstream PS4 target - so I couldn't write tests to show that PS4 doesn't follow the Windows Itanium behaviour here.

There were existing LIT tests covering all of the code paths. I have added a run line with the PS4 triple to the appropriate ones.

The patches in SemaDecl.cpp, SemaDeclAttr.cpp and SemaDeclCXX.cpp are covered by the tests:

- Sema/dllimport.c
- SemaCXX/dllexport.cpp
- SemaCXX/dllimport.cpp
- CodeGenCXX/windows-itanium-dllexport.cpp

The patches in SemaTemplate.cpp are covered by:

- CodeGenCXX/windows-implicit-dllexport-template-specialization.cpp
- CodeGenCXX/windows-itanium-dllexport.cpp

The code changes in ItaniumCXXABI.cpp are covered by:

- CodeGenCXX/windows-itanium-type-info.cpp
- CodeGenCXXwindows-itanium-exceptions.cpp


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

https://reviews.llvm.org/D90299

Files:
  clang/include/clang/Basic/TargetInfo.h
  clang/lib/Sema/SemaDecl.cpp
  clang/lib/Sema/SemaDeclAttr.cpp
  clang/lib/Sema/SemaDeclCXX.cpp
  clang/lib/Sema/SemaTemplate.cpp
  clang/test/CodeGenCXX/dllexport-vtable-thunks.cpp
  clang/test/CodeGenCXX/windows-implicit-dllexport-template-specialization.cpp
  clang/test/CodeGenCXX/windows-itanium-dllexport.cpp
  clang/test/Sema/dllimport.c
  clang/test/SemaCXX/dllexport.cpp
  clang/test/SemaCXX/dllimport.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90299.303285.patch
Type: text/x-patch
Size: 13103 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201106/e5075685/attachment.bin>


More information about the llvm-commits mailing list