retain compat with both ABIs

This commit is contained in:
Dave Airlie 2021-12-10 05:41:47 +10:00
parent 0ec993d4ab
commit 46a9055740
2 changed files with 16 additions and 45 deletions

View File

@ -1,4 +1,4 @@
From 76e9ab018c24eaed0bc83c83cf72bc4542e5f1ad Mon Sep 17 00:00:00 2001 From 449c00f9b32ffb71be7e8274871e1f383b046ca2 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com> From: Dave Airlie <airlied@redhat.com>
Date: Mon, 6 Dec 2021 13:49:10 +1000 Date: Mon, 6 Dec 2021 13:49:10 +1000
Subject: [PATCH] optimizer: restore previous ABI. Subject: [PATCH] optimizer: restore previous ABI.
@ -15,11 +15,11 @@ Broke the C++ ABI for spirv-tools shared libraries on Linux, for not a great rea
Restore the previous ABI. Restore the previous ABI.
--- ---
include/spirv-tools/optimizer.hpp | 3 ++- include/spirv-tools/optimizer.hpp | 3 ++-
source/opt/optimizer.cpp | 17 +++++++++++------ source/opt/optimizer.cpp | 5 +++++
2 files changed, 13 insertions(+), 7 deletions(-) 2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/include/spirv-tools/optimizer.hpp b/include/spirv-tools/optimizer.hpp diff --git a/include/spirv-tools/optimizer.hpp b/include/spirv-tools/optimizer.hpp
index 21059cbe..a0314b5f 100644 index 21059cbe..d9c511af 100644
--- a/include/spirv-tools/optimizer.hpp --- a/include/spirv-tools/optimizer.hpp
+++ b/include/spirv-tools/optimizer.hpp +++ b/include/spirv-tools/optimizer.hpp
@@ -519,7 +519,8 @@ Optimizer::PassToken CreateDeadInsertElimPass(); @@ -519,7 +519,8 @@ Optimizer::PassToken CreateDeadInsertElimPass();
@ -28,58 +28,26 @@ index 21059cbe..a0314b5f 100644
// is not allowed. // is not allowed.
-Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface = false); -Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface = false);
+Optimizer::PassToken CreateAggressiveDCEPass(); +Optimizer::PassToken CreateAggressiveDCEPass();
+Optimizer::PassToken CreateAggressiveDCEPassPreserveInterface(); +Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface);
// Creates a remove-unused-interface-variables pass. // Creates a remove-unused-interface-variables pass.
// Removes variables referenced on the |OpEntryPoint| instruction that are not // Removes variables referenced on the |OpEntryPoint| instruction that are not
diff --git a/source/opt/optimizer.cpp b/source/opt/optimizer.cpp diff --git a/source/opt/optimizer.cpp b/source/opt/optimizer.cpp
index e74db26f..d5534d08 100644 index e74db26f..32a3d01e 100644
--- a/source/opt/optimizer.cpp --- a/source/opt/optimizer.cpp
+++ b/source/opt/optimizer.cpp +++ b/source/opt/optimizer.cpp
@@ -419,22 +419,22 @@ bool Optimizer::RegisterPassFromFlag(const std::string& flag) { @@ -764,6 +764,11 @@ Optimizer::PassToken CreateLocalMultiStoreElimPass() {
RegisterPass(CreateSimplificationPass());
RegisterPass(CreateDeadBranchElimPass());
RegisterPass(CreateBlockMergePass());
- RegisterPass(CreateAggressiveDCEPass(true));
+ RegisterPass(CreateAggressiveDCEPassPreserveInterface());
} else if (pass_name == "inst-desc-idx-check") {
RegisterPass(CreateInstBindlessCheckPass(7, 23, true, true));
RegisterPass(CreateSimplificationPass());
RegisterPass(CreateDeadBranchElimPass());
RegisterPass(CreateBlockMergePass());
- RegisterPass(CreateAggressiveDCEPass(true));
+ RegisterPass(CreateAggressiveDCEPassPreserveInterface());
} else if (pass_name == "inst-buff-oob-check") {
RegisterPass(CreateInstBindlessCheckPass(7, 23, false, false, true, true));
RegisterPass(CreateSimplificationPass());
RegisterPass(CreateDeadBranchElimPass());
RegisterPass(CreateBlockMergePass());
- RegisterPass(CreateAggressiveDCEPass(true));
+ RegisterPass(CreateAggressiveDCEPassPreserveInterface());
} else if (pass_name == "inst-buff-addr-check") {
RegisterPass(CreateInstBuffAddrCheckPass(7, 23));
- RegisterPass(CreateAggressiveDCEPass(true));
+ RegisterPass(CreateAggressiveDCEPassPreserveInterface());
} else if (pass_name == "convert-relaxed-to-half") {
RegisterPass(CreateConvertRelaxedToHalfPass());
} else if (pass_name == "relax-float-ops") {
@@ -764,9 +764,14 @@ Optimizer::PassToken CreateLocalMultiStoreElimPass() {
MakeUnique<opt::SSARewritePass>()); MakeUnique<opt::SSARewritePass>());
} }
-Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface) {
+Optimizer::PassToken CreateAggressiveDCEPass() { +Optimizer::PassToken CreateAggressiveDCEPass() {
return MakeUnique<Optimizer::PassToken::Impl>( + return MakeUnique<Optimizer::PassToken::Impl>(
- MakeUnique<opt::AggressiveDCEPass>(preserve_interface));
+ MakeUnique<opt::AggressiveDCEPass>(false)); + MakeUnique<opt::AggressiveDCEPass>(false));
+} +}
+ +
+Optimizer::PassToken CreateAggressiveDCEPassPreserveInterface() { Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface) {
+ return MakeUnique<Optimizer::PassToken::Impl>( return MakeUnique<Optimizer::PassToken::Impl>(
+ MakeUnique<opt::AggressiveDCEPass>(true)); MakeUnique<opt::AggressiveDCEPass>(preserve_interface));
}
Optimizer::PassToken CreateRemoveUnusedInterfaceVariablesPass() {
-- --
2.33.1 2.33.1

View File

@ -7,7 +7,7 @@
Name: spirv-tools Name: spirv-tools
Version: 2021.4 Version: 2021.4
Release: 2%{?gitrel}%{?dist} Release: 3%{?gitrel}%{?dist}
Summary: API and commands for processing SPIR-V modules Summary: API and commands for processing SPIR-V modules
License: ASL 2.0 License: ASL 2.0
@ -90,6 +90,9 @@ Development files for %{name}
%{_libdir}/pkgconfig/SPIRV-Tools.pc %{_libdir}/pkgconfig/SPIRV-Tools.pc
%changelog %changelog
* Fri Dec 10 2021 Dave Airlie <airlied@redhat.com> - 2021.4-3.20211110.git21e3f68
- Retain compat with both ABIs
* Mon Dec 06 2021 Dave Airlie <airlied@redhat.com> - 2021.4-2.20211110.git21e3f68 * Mon Dec 06 2021 Dave Airlie <airlied@redhat.com> - 2021.4-2.20211110.git21e3f68
- Restore previous ABI - Restore previous ABI