mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-11-27 13:50:07 +00:00
4717d24e24
During the compact IDs optimization pass, the result IDs of some basic blocks can change. In spite of this, GetPreservedAnalyses indicated that the CFG was preserved. But the CFG relies on the basic blocks having the same IDs. Simply removing this flag resolves the issue by preventing the CFG check. Also Removes combinators and namemap preserved analyses from compact IDs pass.
43 lines
1.3 KiB
C++
43 lines
1.3 KiB
C++
// Copyright (c) 2017 Google Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#ifndef LIBSPIRV_OPT_COMPACT_IDS_PASS_H_
|
|
#define LIBSPIRV_OPT_COMPACT_IDS_PASS_H_
|
|
|
|
#include "ir_context.h"
|
|
#include "module.h"
|
|
#include "pass.h"
|
|
|
|
namespace spvtools {
|
|
namespace opt {
|
|
|
|
// See optimizer.hpp for documentation.
|
|
class CompactIdsPass : public Pass {
|
|
public:
|
|
const char* name() const override { return "compact-ids"; }
|
|
Status Process(ir::IRContext*) override;
|
|
|
|
// Return the mask of preserved Analyses.
|
|
ir::IRContext::Analysis GetPreservedAnalyses() override {
|
|
return ir::IRContext::kAnalysisInstrToBlockMapping |
|
|
ir::IRContext::kAnalysisDominatorAnalysis |
|
|
ir::IRContext::kAnalysisLoopAnalysis;
|
|
}
|
|
};
|
|
|
|
} // namespace opt
|
|
} // namespace spvtools
|
|
|
|
#endif // LIBSPIRV_OPT_COMPACT_IDS_PASS_H_
|