86 lines
3.7 KiB
Diff
86 lines
3.7 KiB
Diff
|
From 76e9ab018c24eaed0bc83c83cf72bc4542e5f1ad Mon Sep 17 00:00:00 2001
|
||
|
From: Dave Airlie <airlied@redhat.com>
|
||
|
Date: Mon, 6 Dec 2021 13:49:10 +1000
|
||
|
Subject: [PATCH] optimizer: restore previous ABI.
|
||
|
|
||
|
The change in
|
||
|
commit 4ac8e5e541ea992dc6f44a4d4eb065a8fe0888ec
|
||
|
Author: Greg Fischer <greg@lunarg.com>
|
||
|
Date: Wed Sep 15 12:38:34 2021 -0600
|
||
|
|
||
|
Add preserve_interface mode to aggressive_dead_code_elim (#4520)
|
||
|
|
||
|
Broke the C++ ABI for spirv-tools shared libraries on Linux, for not a great reason.
|
||
|
|
||
|
Restore the previous ABI.
|
||
|
---
|
||
|
include/spirv-tools/optimizer.hpp | 3 ++-
|
||
|
source/opt/optimizer.cpp | 17 +++++++++++------
|
||
|
2 files changed, 13 insertions(+), 7 deletions(-)
|
||
|
|
||
|
diff --git a/include/spirv-tools/optimizer.hpp b/include/spirv-tools/optimizer.hpp
|
||
|
index 21059cbe..a0314b5f 100644
|
||
|
--- a/include/spirv-tools/optimizer.hpp
|
||
|
+++ b/include/spirv-tools/optimizer.hpp
|
||
|
@@ -519,7 +519,8 @@ Optimizer::PassToken CreateDeadInsertElimPass();
|
||
|
// interface are considered live and are not eliminated. This mode is needed
|
||
|
// by GPU-Assisted validation instrumentation, where a change in the interface
|
||
|
// is not allowed.
|
||
|
-Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface = false);
|
||
|
+Optimizer::PassToken CreateAggressiveDCEPass();
|
||
|
+Optimizer::PassToken CreateAggressiveDCEPassPreserveInterface();
|
||
|
|
||
|
// Creates a remove-unused-interface-variables pass.
|
||
|
// Removes variables referenced on the |OpEntryPoint| instruction that are not
|
||
|
diff --git a/source/opt/optimizer.cpp b/source/opt/optimizer.cpp
|
||
|
index e74db26f..d5534d08 100644
|
||
|
--- a/source/opt/optimizer.cpp
|
||
|
+++ b/source/opt/optimizer.cpp
|
||
|
@@ -419,22 +419,22 @@ bool Optimizer::RegisterPassFromFlag(const std::string& flag) {
|
||
|
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>());
|
||
|
}
|
||
|
|
||
|
-Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface) {
|
||
|
+Optimizer::PassToken CreateAggressiveDCEPass() {
|
||
|
return MakeUnique<Optimizer::PassToken::Impl>(
|
||
|
- MakeUnique<opt::AggressiveDCEPass>(preserve_interface));
|
||
|
+ MakeUnique<opt::AggressiveDCEPass>(false));
|
||
|
+}
|
||
|
+
|
||
|
+Optimizer::PassToken CreateAggressiveDCEPassPreserveInterface() {
|
||
|
+ return MakeUnique<Optimizer::PassToken::Impl>(
|
||
|
+ MakeUnique<opt::AggressiveDCEPass>(true));
|
||
|
}
|
||
|
|
||
|
Optimizer::PassToken CreateRemoveUnusedInterfaceVariablesPass() {
|
||
|
--
|
||
|
2.33.1
|
||
|
|