From 76e9ab018c24eaed0bc83c83cf72bc4542e5f1ad Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 6 Dec 2021 13:49:10 +1000 Subject: [PATCH] optimizer: restore previous ABI. The change in commit 4ac8e5e541ea992dc6f44a4d4eb065a8fe0888ec Author: Greg Fischer 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()); } -Optimizer::PassToken CreateAggressiveDCEPass(bool preserve_interface) { +Optimizer::PassToken CreateAggressiveDCEPass() { return MakeUnique( - MakeUnique(preserve_interface)); + MakeUnique(false)); +} + +Optimizer::PassToken CreateAggressiveDCEPassPreserveInterface() { + return MakeUnique( + MakeUnique(true)); } Optimizer::PassToken CreateRemoveUnusedInterfaceVariablesPass() { -- 2.33.1